The first open-source Agent Application Firewall (AAF)

Your agent keeps full power.
You keep full control.

Snapper hooks into your AI agent's tool pipeline and evaluates every action before it executes. Approve sensitive operations from Telegram or Slack. Keep PII in an encrypted vault the agent never touches. Source available, free for noncommercial use.

terminal
# Install and start Snapper git clone https://github.com/jmckinley/snapper.git cd snapper && ./setup.sh # Auto-detect your agent, register, and apply security profile python scripts/snapper-cli.py init # That's it. Snapper is protecting your agent.
Supported agents — auto-detected, one-command setup
OpenClaw
Claude Code
Cursor
Windsurf
Cline
Custom

The problem

Today, AI agents can run any command, fill payment forms, access credential files, and install plugins — with zero oversight.

Today you either trust the agent completely and accept the risk, or restrict it so heavily it can barely function.

The solution

Snapper eliminates the tradeoff. Your agent keeps its full capabilities. You approve what matters from your phone or desktop.

Snapper hooks into your agent's tool pipeline and evaluates every action against configurable rules — before it executes. Sensitive operations route to Telegram or Slack for human approval. Your PII lives in an encrypted vault the agent never touches. The result: full agent power with full human control.

Six things no one else does

Snapper enables full agent capability instead of restricting it.

🔐

PII Vault

Your credit cards, addresses, and SSNs live in Fernet-encrypted storage. The agent only sees tokens like {{SNAPPER_VAULT:a7f3b2c1e4d5f6a8...}}. When it fills a payment form, you get a Telegram or Slack notification showing masked values, the destination, and the dollar amount. Approve from your phone or desktop.

AES-128-CBC + HMAC-SHA256 · HKDF · 30s TTL · domain-locked tokens
📱

Telegram & Slack Command Center

Approve actions, manage rules, test commands, control your PII vault, and hit the emergency kill switch — all from your phone or desktop. Choose Telegram (inline buttons) or Slack (slash commands + Block Kit). When a sensitive action fires, you get a rich notification with [Approve] / [Deny] buttons. Five seconds, done.

Telegram: /block · /vault · /test · /rules · /pii  |  Slack: /snapper-block · /snapper-vault · /snapper-test
🛡️

Defense in Depth

15 rule types with a fail-closed engine. Blocks reverse shells, RCE, destructive commands, credential access, and 341+ malicious skills from the ClawHavoc campaign. Scans every tool call for raw PII across 30+ patterns. No rules = deny. Errors = deny.

CVE-2026-25253 · CVE-2026-25157 · CVE-2026-24891

Adaptive Trust Scoring

Agents earn autonomy through consistent good behavior. Violations reduce trust, which tightens rate limits. Score ranges from 0.0 to 1.0 and directly affects what the agent can do.

🔍

Raw PII Interception

Even if the agent finds PII by reading a file or scraping a website, Snapper catches it. 30+ regex patterns scan every tool call for credit cards, SSNs, emails, API keys, and more — across US, UK, Canada, and Australia formats.

📊

Audit & Observability

Immutable, BRIN-indexed audit trail. Every security event logged with request correlation IDs, agent context, and full JSON details. Activity timeline, filterable log viewer, and exportable stats.

How it works

Snapper hooks into the PreToolUse pipeline. Every tool call is evaluated before execution.

AI Agent wants to run a command / fill a form / install a skill │ ▼ Hook intercepts (PreToolUse — auto-installed) │ ▼ Snapper evaluates (15 rule types · priority-sorted · fail-closed) │ ├── ALLOW → agent proceeds (vault tokens resolved) ├── DENY → blocked, Telegram/Slack alert sent └── APPROVAL → Telegram/Slack notification with [Approve] / [Deny] → agent pauses, polls for your decision → on approve: vault tokens decrypted, 30s TTL, one read

How Snapper compares

Different tools solve different problems at different layers. Snapper is the only open-source tool at the agent-internet boundary that enables full capability.

Snapper LlamaFirewall Cloudflare Radware GitHub
Snapper-Unique
Encrypted PII Vault
HITM via Telegram/Slack
Raw PII Interception (DLP)~
Domain-Locked Vault Tokens
Malicious Skill Blocking
Adaptive Trust Scoring
Emergency Kill Switch
Architecture
LayerAgent boundaryInside agentEdge networkPlatformDomain list
PhilosophyEnableRestrictRestrictRestrictRestrict
Open Source
Self-Hosted~
Fail-Closed Design
Multi-Agent (5+)~~
Note: Snapper and LlamaFirewall are complementary, not competitive. LlamaFirewall operates inside the agent (prompt injection, CoT auditing, code analysis). Snapper operates at the boundary between the agent and the outside world. Use both for defense in depth.
15
Rule types
665
Tests (unit + E2E)
341+
Malicious skills blocked
30+
PII detection patterns
6
Agents supported
50+
CVEs mitigated

Security & trust

Snapper is a security tool — so we hold ourselves to the same standard we enforce on agents. Here's how we protect the project and our users.

Vulnerability Disclosure

Report security issues privately via GitHub Security Advisories. We acknowledge reports within 72 hours and follow a 90-day coordinated disclosure timeline.

No Security Guarantee

Snapper enhances your security posture but does not guarantee complete protection. No security tool can. You are responsible for your own configuration, risk assessment, and compliance. See TERMS.md.

Source Available, As-Is

Snapper is provided "as is" without warranty of any kind under the PolyForm Noncommercial License. Free for personal use, research, education, and nonprofits. Commercial use requires a separate license. Full terms in the repository.

Contributor Verification

All contributions require a Developer Certificate of Origin (DCO) sign-off, certifying that contributors have the right to submit their code and agree to the project's license terms.

Get started in 5 minutes

Docker, one command, and your agent is protected. Free for noncommercial use.

git clone https://github.com/jmckinley/snapper.git && cd snapper && ./setup.sh