← Back to getcrawdad.dev

Trust Center

Crawdad is built to protect AI agents in adversarial environments. This page describes how we protect you and your data.

Security Overview

Crawdad is a local security tool for teams deploying autonomous AI agents. The sidecar runs entirely on your machine. Only signed metering packets (event counts, Ed25519-signed, sequence-numbered) transmit upstream. Raw prompts, responses, action parameters, and PII never leave your machine. This is enforced by architecture, not policy — even Crawdad as a company cannot see your content. The system is implemented in Rust for memory safety; 1,201 tests across 17 crates.

Five architectural invariants are property-tested over 1,000,000 iterations on every release by the crawdad-zk-verify crate. A standalone getcrawdad/zk-verify MIT reproducer is on the roadmap so any operator can confirm the invariants against a running sidecar independently.

Reproducible Detection Benchmark

Crawdad's detection claims are reproducible. The AndrewSispoidis/contemporary-agent-attacks repository contains 497 attacks across 13 categories, 1,172 benign samples across 4 categories, and a tool-agnostic benchmark runner — licensed CC-BY 4.0 so any operator, researcher, or competing vendor can run it against any classifier.

Current Crawdad v0.10.0 result on the public corpus: 99.80% detection, 0% false-positive rate, F1 99.90%. 12 of 13 attack categories at 100% (the remaining other bucket at 98.57%). Zero false positives across all four negative categories: hand-curated, conversational, developer messages, and security-discussion.

Reproduce it:

git clone https://github.com/AndrewSispoidis/contemporary-agent-attacks
cd contemporary-agent-attacks
python3 benchmark/run.py --adapter adapters.crawdad --tool crawdad-v0.10.0

The benchmark runner accepts adapters for any tool exposing an HTTP scan endpoint — see CONTRIBUTING.md for submission guidelines.

Per-Agent Isolation — Trust System v1.0

Every agent that talks to Crawdad runs at one of four trust levels: Autonomous (full L1–L6 detection, L7 skipped, no restrictions), Monitored (full L1–L7, default for new agents), Restricted (full pipeline + active per-tool-call restrictions), Quarantined (all requests return HTTP 403 before detection runs).

Scope of v1.0. What ships: per-agent attribution, the four levels, automatic escalation with the rules above, auto-recovery, default restrictions on entry to Restricted, audited transitions. What's roadmap: fleet-wide policy hierarchy, cross-device trust sync, industry policy templates.

Remote Control Plane — Security Controls

Crawdad v0.10.0 ships a remote control plane that lets operators monitor agents and change trust levels from a paired phone. The plane is built so zero-knowledge still holds — the relay sees only encrypted blobs and opaque device IDs — and a layered set of controls bounds what a paired device (or a compromised one) can do.

NIST 800-53 alignment. Relevant controls: AC-2 (account management — paired device lifecycle), AC-3 (access enforcement — signature + scope checks), AC-7 (unsuccessful logon attempts — rate limits), AU-2/AU-3 (auditable events — every accepted command audited), IA-2 (identification & authentication — Ed25519 per-device), SC-8 (transmission confidentiality — AES-256-GCM relay), SC-13 (cryptographic protection — Ed25519 + AES-GCM), SI-4 (system monitoring — local kill switch + audit trail).

Mobile Investigate modal showing detection metadata only — no prompts, no content
Zero-knowledge proof in the UI itself: tapping Investigate on an alert shows only detection metadata — time, agent, category, pattern, severity, verdict. No prompt text. No response text. No tool arguments. There is no “view content” button, because there is no content for the phone to read.

Protection Mode Auth Boundary

Mode-changing endpoints (/api/v1/mode and /api/v1/mode/unpause) are mounted only on the management API and are not reachable from the proxy data path. A prompt-injection payload that arrives through traffic on the provider proxy ports cannot trigger a mode change or pause. Mode changes from a paired mobile device are signed and audited. Pause does not unquarantine quarantined agents — quarantine state is independent of mode. Allow-Always rules continue to apply at every mode.

Forensic logging continues at every mode. When a detection would have blocked but is suppressed by Reduced or Paused mode, an audit_events row is recorded with action_taken="suppressed_by_mode" and a detail JSON containing the layer, category, protection_mode at time of event, and agent identity. The spec promise — "audit log gets fuller, never thinner, when protection is reduced" — holds.

Data Storage

Access Controls

Audit Logging

Incident Response

Compliance

Penetration Testing

Responsible Disclosure

If you discover a security vulnerability in Crawdad, please report it through the contact form at getcrawdad.dev. We commit to a 24-hour initial response and will work with you to understand and resolve the issue before any public disclosure. We do not pursue legal action against good-faith security researchers.

Contact

For security questions, vulnerability reports, or compliance inquiries: