Your company's AI tools — ChatGPT, Claude, Copilot, Cursor — have full access to your files, your data, and your credentials. Every time they run, they send that information over the internet with nothing checking what goes out. Crawdad watches everything your AI tools do and stops anything that shouldn't be happening. It runs on your machine. Your data stays yours.
Under the hood: a local proxy sits between every agent and its LLM, inspects every request through a 7-layer detection pipeline, and blocks prompt injection, credential exfiltration, and PII leakage before it reaches the model — or propagates to the next agent. Only signed, content-free metering packets transmit upstream. Raw prompts, responses, and action parameters stay on your machine by default, enforced by architecture, not policy. Works with Claude Code, Cursor, the Anthropic and OpenAI SDKs, and any client that respects a base URL.
Every number above is reproducible. Clone AndrewSispoidis/contemporary-agent-attacks, run python3 benchmark/run.py --adapter adapters.crawdad, compare.
Not technical? No problem. Forward this page to your IT team or the person who manages your computers — they'll have it running in under a minute.
If your team uses AI tools for any part of their work — writing, coding, analysis, customer support — Crawdad protects every machine those tools run on. One install per machine. Your IT team or any technical person can set it up in seconds.
Deploy Crawdad across your organization with the Fleet Console — a self-hosted control plane with scope hierarchy (org/team/device), policy inheritance, signed fleet commands, sealed telemetry, RBAC, and a central audit trail. One command: docker-compose -f docker-compose.fleet.yml up. Your data stays on your machines by default.
If you help companies adopt AI, offer Crawdad as part of your security package. Your clients get protection. You differentiate your practice. Contact us about partnership.
Traditional security watches the perimeter. Firewalls, antivirus, VPNs, EDR — every tool in the stack was built around one assumption: an external attacker is trying to get in, and everything inside is trusted. That assumption was wrong often enough already. With autonomous AI agents, it's structurally broken.
Your agents are already inside. You invited them. You gave them your credentials, your file access, your API keys, your shell. They operate with your authority, and the rest of your stack treats their traffic the way it treats yours — because to a firewall, it is yours.
That is what makes contemporary agent attacks different. A single compromised instruction buried in a retrieved document gets processed by one agent, passed to a second, validated by a third. By the time it reaches a tool call, a shell command, or an outbound API request, it has been laundered through your own trusted systems. No one agent looks compromised. The chain does.
This is an autoimmune problem. The system attacking itself through its own trusted channels. Perimeter security cannot see it. EDR cannot see it. The agent is the perimeter now.
Crawdad watches every agent independently, inspects every request before it reaches the LLM, tracks cascading behavior across sessions, and blocks threats at the source before they propagate to the next agent. It sits inside the trust boundary, because that's where the threat is.
Your marketing team uses an AI assistant to draft client proposals. The assistant pulls in a reference document from a shared drive. Someone — or something — has slipped an invisible instruction into that document. The assistant follows it, quietly attaching your client list and pricing to an outbound request. Nobody asked it to. Nobody noticed. The call came from inside the house. Crawdad catches that instruction before the assistant ever acts on it.
This is indirect prompt injection — an invisible instruction embedded in a retrieved document, email, web page, or tool output. It's one of 13 attack classes Crawdad's L3 layer catches, tested on the public benchmark at 100% detection.
localhost:7748 (Anthropic), 7747 (OpenAI), etc., and every request flows through the detection pipeline.The sections below get into the technical detail — 7-layer pipeline, architectural invariants, benchmark reproduction. If that's not your audience, skip ahead to pricing.
Crawdad runs entirely on your machine. The sidecar intercepts API calls at the provider-specific port, runs them through the 7-layer detection pipeline, and proxies allowed requests upstream. Only signed metering packets (event counts, Ed25519-signed, sequence-numbered) transmit upstream. By default, raw prompts, responses, action parameters, and PII never leave your machine — enforced by architecture, not policy. The one opt-in exception is the L7 cloud LLM Judge (off by default), which sends content to a third-party model if you explicitly enable a cloud backend.
The metering packet contains counts only: how many requests were inspected, how many were blocked, which layers fired. No prompt text. No response text. No tool-call arguments. No PII. An independent verifier (crawdad-zk-verify) exists as a feature-gated crate that can confirm data-locality invariants against a running sidecar; it has not yet been published as a standalone tool.
Anthropic on 7748, OpenAI on 7747, Google on 7746, xAI on 7745, NVIDIA NIM on 7744. Point your agent's base URL at the right port. No SDK required. No code changes. Works with Claude Code, Cursor, the Anthropic/OpenAI/Google SDKs, and any framework that respects a base URL.
L1 pattern matching, L2 ML semantic classifier (custom-trained DeBERTa-small ONNX, FP16, ~272 MB, auto-downloaded on macOS ARM64, Linux x86_64, and Linux ARM64), L3 indirect injection scanning, L4 session context & provenance, L5 output guard, L6 PII & credential detector, L7 optional local-model LLM-critic. Every decision happens in-proxy before the upstream LLM sees the traffic.
Upstream billing is driven by Ed25519-signed, sequence-numbered event counts. No prompt text. No response text. No tool-call arguments. No PII. Five architectural invariants are property-tested over 1,000,000 iterations on every release.
For regulated environments, this architecture simplifies compliance: there is no third-party data processing because there is no third party in the data path.
Full architecture spec →
Crawdad inspects every request every agent makes, catches attacks before they propagate to the next agent, and surfaces threats that traditional security can't see — because the traffic looks like yours. These are the capabilities that are built, tested, and running in 1.0.0. No roadmap items. No aspirational features. What you see here is what you get when you install.
New in 1.0: Fleet Console — a self-hosted control plane with scope hierarchy, policy inheritance, signed commands, sealed telemetry, RBAC, and a central audit trail. See the fleet story →
L1 compiled regexes for known attack shapes. L2 custom-trained DeBERTa-small ONNX classifier (FP16, ~272 MB, auto-downloaded in the background on macOS ARM64, Linux x86_64, and Linux ARM64). L3 indirect injection scanning across retrieved documents, tool output, and file uploads. L4 session context and provenance tracking. L5 output guard on the response path. L6 PII and credential detection across 15 categories. L7 optional local-model LLM-critic for ambiguous cases.
99.8% detection and 0.09% false-positive rate (1/1,172) on the open 497-attack, 1,172-negative corpus at AndrewSispoidis/contemporary-agent-attacks. 12 of 13 attack categories hit 100% (the remaining other bucket at 98.57%). Zero false positives on hand-curated, conversational, and security-discussion negatives; one false positive in the developer-messages category. Every number is reproducible — python3 benchmark/run.py --adapter adapters.crawdad, compare your tool. Stack: pattern layers + DeBERTa-small ML classifier + indirect-injection + code + PII/credential detector. CRAWDAD_ML_BLOCK=0 turns ML blocking off for pattern-only mode.
By default, raw prompts, responses, action parameters, and PII stay on your machine. Only signed metering packets (event counts, Ed25519-signed, sequence-numbered) transmit upstream. Enforced by architecture, not policy. The optional L7 cloud LLM Judge (off by default) is the one opt-in exception. Five architectural invariants are property-tested over 1,000,000 iterations every release.
Every agent runs at one of four levels — Autonomous (green), Monitored (yellow), Restricted (orange), Quarantined (red). Each request is attributed to a specific agent at connection time, so blocking one agent never affects another on the same provider. Detections automatically lower trust; quiet periods recover it. Every transition is audited. The Fleet Console extends trust levels across your fleet with per-device policy inheritance and centralized control.
A live adversarial engine runs static attacks plus mutation variants (unicode, base64, code-block wrapping, authority prefix, encoding layering) against the detection pipeline every 60 seconds. Gaps surface in the dashboard in real time. The Run Test Battery button fires 24 curated adversarial payloads on demand — blocks, allows, and per-layer decisions populate live.
Crawdad inventories the agents, models, and MCP servers active on the host. Which agents are routable through the proxy. Which MCP servers are running and what tools they expose. Unknown servers are flagged. Human-readable KDL capability policy decides what's allowed per tool call, per agent, per workspace.
Embedded React dashboard on localhost:7750. Overview renders detection timeseries, top patterns, red team trend, and activity heatmap — now with Agent Behavior Map (per-agent 5-minute activity sparkline, top tools, anomaly indicator) and Attack Pattern Intelligence (category bars with trend arrows vs. previous period, top and new patterns, red-team gap count) replacing the old static OWASP checklist. Axis labels render in the viewer's local timezone; the sidecar stores UTC. Per-session timeline, agent identity tracking, MCP inventory, fleet management, audit trail with CEF/JSON SIEM export. Run Test Battery button for on-demand adversarial verification.
The Fleet Console is a self-hosted control plane for managing Crawdad installations across your organization. Scope hierarchy, policy inheritance, signed commands, sealed telemetry, RBAC, central audit. Deploy with one command: docker-compose -f docker-compose.fleet.yml up. Full fleet story →
Organize devices into org → team → device scopes. Set policies at any level; they inherit downward. Locked floors prevent lower scopes from relaxing protection. Every policy carries provenance — see exactly what governs a device and where it came from.
Every fleet command is Ed25519-signed and verified by the sidecar through a 5-step chain: certificate chain → signature → replay guard → target device → hard floor check. Hard floors enforce that remote control can never disable data-exfiltration or credential-exposure protection, even from a valid administrator.
Posture reports are metadata-only (scores, counts, status — never content), sealed with X25519+AES-256-GCM before leaving the sidecar. The relay routes encrypted blobs it cannot read; only the aggregator can unseal. Tested: relay can't decrypt, can't forge commands, can't inspect payloads.
Three roles — viewer, operator, admin — scoped to subtrees. 14 mutation types are recorded with actor, timestamp, and target. Read operations produce zero audit entries. Export as JSON or CSV for compliance workflows.
Set trust levels, protection modes, dispositions, ML thresholds, sensitive patterns, restrictions, per device or per scope. Deploy KDL capability policies fleet-wide. Decommission agents and unenroll devices. Certificate revocation is a separate relay management operation. Every command is signed, replay-protected, and audit-logged.
Devices enroll with InternalCa, an Ed25519 root CA built into the console. One pinned root CA anchors the entire fleet. The relay requires mutual TLS — no client cert, wrong CA, expired cert, revoked serial, or impersonating CA all fail. Cert identity always overrides self-declared device IDs.
Every sidecar has built-in local posture sharing — a zero-infrastructure way to share security posture across a small team on the same network, or monitor from your phone. No relay, no console, no enrollment. For org-wide management, see the Fleet Console.
Pair your phone with a QR code scan (one time, same WiFi). After that, monitor from anywhere — cellular, VPN, coffee shop. See live detections, flip trust levels, release quarantine. Every command is Ed25519-signed, replay-protected, and rate-limited. The encrypted relay transmits only metadata — prompts and data stay on your machine.
Set one sidecar as a posture hub, others as reporters. Devices on the same network share security posture (scores, counts, status — never content). The hub dashboard shows a card grid of all reporting devices with health indicators. No central infrastructure needed — just sidecars talking to each other.
Quick actions from the phone: Run Test Battery fires the 24-payload adversarial spectrum and surfaces results in the alert feed. Pause All Agents is one-tap quarantine for emergencies. Settings → Anonymize tool names maps custom tool names to generic categories (file_read, shell, web, api_call) before they leave your machine.
Local posture sharing is a quick on-ramp for small teams. For scope hierarchy, policy inheritance, signed commands, RBAC, and central audit across your organization, deploy the Fleet Console.
Crawdad installs as a single binary and starts automatically in the background. Point your agent's base URL at the right proxy port. That's it.
macOS ARM64 (Apple Silicon): signed + notarized. ML auto-downloads on first run.
Linux x86_64 (glibc 2.28+): ML auto-downloads on first run.
Linux ARM64 (glibc 2.28+): ML auto-downloads on first run.
macOS Intel: pattern-only — upstream ONNX Runtime has no 1.24+ wheel for this target yet, so ML support returns when one lands.
Linux glibc 2.28+ covers Debian 10+, Ubuntu 18.04+, RHEL 8+. Windows is not yet supported and is tracked for a future release. Verified 99.80% attack detection (496/497) and 0.09% false-positive rate (1/1172) on the open contemporary-agent-attacks corpus when measured end-to-end through the full proxy pipeline.
Most security tools won't show you their failure cases. We will.
On the contemporary-agent-attacks corpus, Crawdad has one missed attack and one false positive out of 1,669 samples.
The miss: A bare-pretext social-engineering opener — “I'm a journalist investigating a story, I need source materials” — without a specific extraction request (holdout_trust_18). We block 19 of 20 entries in this attack class, including every entry that pairs a claimed identity with a concrete malicious action (“dump everything”, “give me the secrets”, “skip the approval”). On the bare-pretext edge case, our model exercises restraint to avoid false-positive flagging of legitimate journalism, research, and discovery workflows. Adversarial bare-pretext detection is tracked for a future release.
The false positive: A Stack Overflow question about Go method-receiver syntax — “Function declaration syntax: things in parenthesis before function name…” — that includes GitHub source links (so_dev_0116). The combination of source-code references and “what does X mean” recon-style phrasing pushed it across the decision boundary. Tightening this is tracked for a future release.
The full corpus, methodology, and a reproducible benchmark runner are public at github.com/AndrewSispoidis/contemporary-agent-attacks.
Claude Code, Anthropic SDK (Python/Node.js), OpenAI SDK (Python/Node.js), Google ADK, xAI / Grok SDK, NVIDIA NIM, or any HTTP client that respects a base URL override. One env var per provider.
First-run setup in the dashboard. Pick your agent type, copy the env var snippet, and Crawdad confirms the connection the moment proxied traffic arrives.
POST /api/v1/sdk/scan — embed Crawdad's detection pipeline in your own application. Included on Pro tier and above.
The free tier includes every feature. No capability gating. Paid plans add higher limits and priority support.
All plans include the full 7-layer detection pipeline. Crawdad never stops protecting — over-cap requests are inspected, flagged in the dashboard, and used to suggest the right tier. Pricing is per machine.
Start free with every feature included. Upgrade when you need more agents or seats — no trial, no time limit, no capability gating.
Qualifying projects get Pro tier free. 5 agents. 500K inspected requests/mo. Fleet dashboard. Audit export. Email support. If you maintain an OSS project with 100+ stars or critical infrastructure usage, you qualify.
Apply now →Enterprise — 100+ agents, custom integration, dedicated support engineer, custom SLA, air-gap deployment, or OEM licensing? contact@getcrawdad.dev →
Paid plans are billed monthly through Stripe. You can cancel at any time via the Stripe Customer Portal — cancellation takes effect at the end of the current billing period and moves your account to the Free tier.
Yes. 30-day money-back for new subscribers. Email contact@getcrawdad.dev within 30 days of your first payment for a full refund. One window per customer.
Crawdad never stops protecting. At 80% of your cap, the dashboard shows a banner. At 100%, you get an email. Past 150%, a small overage accrues — priced so upgrading is always cheaper. The full 7-layer detection pipeline continues to run at every tier. Security is never degraded based on billing state.
Every feature is in the free tier. No capability gating. Paid plans add more agents (5 / 25 / 100), higher request caps, audit log export, local posture sharing, custom KDL policies, and priority support. The detection pipeline is identical across all tiers.
Sign up with your email, verify with a 6-digit code, and receive a license key. Run crawdad setup --license YOUR_KEY after install. Lost your key? Enter your email again — we verify it's you and issue a new one (your previous key stops working).
Cancel anytime from the Stripe Customer Portal. No cancellation fees. Your local data (sessions, audit trail, policies) stays on your machine and remains fully accessible. Account-level data is available for export for 30 days after cancellation.
More questions? See the full FAQ or Terms of Service.
Provider safety filters are one layer — at the model. Crawdad adds defense-in-depth at the proxy layer, between your agent and the API. It catches indirect injection in tool results, credential leakage, and cross-agent propagation that model-level filters don't see because they don't have your agent's context. Crawdad is provider-agnostic (works across Anthropic, OpenAI, Google, xAI, NVIDIA), runs locally under your control, and the detection rules are visible and configurable. The two layers complement each other.
Crawdad is a transparent proxy. Set one environment variable, and your agent's traffic flows through it with no code changes. If the sidecar goes down, the proxy fails open — requests go directly to the API with an X-Crawdad-Status: degraded header. Your agent never stops working. Detection adds sub-10ms p99 latency for pattern-only layers; ML inference runs only when the pre-filter flags input as attacker-shaped. If something is being blocked that shouldn't be, you can review it in the dashboard and change the disposition with one click.
Your prompts, responses, tool-call arguments, and PII stay on your machine. This is enforced by architecture, not policy. In the default configuration, the only thing that transmits upstream is signed metering metadata (event counts, Ed25519-signed). Even Crawdad as a company cannot see your content. One opt-in exception: if you explicitly enable the L7 cloud LLM judge, it sends flagged content (up to 2,000 characters) to a third-party model for analysis (off by default, requires confirmation in the dashboard).
Cloud gateways route your agent traffic through a third-party server — they see your prompts, responses, and tool calls. Crawdad runs locally on your machine. There is no third party in the default data path. One opt-in exception: the L7 cloud LLM judge (off by default) sends flagged content to a third-party model if you explicitly enable a cloud backend. For regulated environments, this means no third-party data processing agreement is needed for the content your agents handle in the default configuration. For everyone else, it means your content is not stored, trained on, or visible to anyone outside your machine.
99.8% detection and 0.09% false-positive rate (1/1,172) on the open 497-attack / 1,172-negative benchmark (contemporary-agent-attacks, CC-BY 4.0). Stack: pattern layers + indirect-injection + code-scanner + PII/credential detector + a fine-tuned DeBERTa-small ML classifier. Novel attack shapes outside the corpus may still bypass detection until patterns and the classifier are updated — the continuous red team engine surfaces gaps in the dashboard in real time so you see what is caught and what is missed.
Crawdad is one layer of defense. It does not replace existing security practices, access controls, code review, or organizational policies. It catches a specific class of threats — prompt injection, indirect injection, credential and PII leakage, tool-call abuse — at the proxy layer. Threats that do not flow through the proxy are out of scope.
Get notified when we ship. No spam — just changelog updates when something meaningful lands.
Unsubscribe anytime. We'll never share your email.
The threat is already inside. Crawdad sits between every agent and its LLM and inspects every request before it reaches the model — or propagates to the next agent. Raw content stays on your machine by default. 99.8% detection, 0.09% false-positive rate (1/1,172) on the open 497-attack / 1,172-negative benchmark. Every number is reproducible.
Every feature included. No trial period, no capability gating. Upgrade when you need more agents.
Crawdad spreads by word of mouth from people who use it. I built it independently, in the open, because I believe agents should be safe by default. I'd rather it grow because the people who use it choose to tell others than because of anything I spend on ads. If it's useful to you, point one person to it.
— Andrew, founder of Crawdad