Observed since 20 Oct, 22:01 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
Firewall for AI coding agents. Intercepts Bash/Read/Write/Edit, blocks outbound HTTP, asks humans via Slack/Telegram for risky ops. Works with Claude Code, Cursor, Continue.dev, Aider, and GitHub Actions.
AgentGate sits between AI coding agents (Claude Code, Cursor, Continue.dev, Aider, Gemini CLI, OpenAI Codex) and your machine. It intercepts every Bash / Read / Edit / Write call, applies a policy, scans outgoing HTTP for data-exfiltration patterns, and asks a human via Telegram / Discord / Slack when the call is risky.
| Without AgentGate | With AgentGate |
|---|---|
Agent can rm -rf / with no warning | Deny rules block destructive ops before they run |
| Agent can leak API keys to pastebin.com | DLP scanner rejects outgoing bodies containing sk-ant-… |
| Agent can fetch arbitrary URLs | Allowlist / blocklist of domains |
| No record of what the agent did | Tamper-evident SQLite audit chain, optionally Ed25519-signed |
| Prompt-injection payloads slip through | 28+ injection patterns scanned on every request |
pip install agentgate-firewall
agentgate doctor # check pre-requisites
agentgate init # write a starter policy.yaml
agentgate start # launch the proxy on :18790
Then install the Claude Code / Cursor / Aider hook:
agentgate install-hook # Claude Code
agentgate install-cursor-hook # Cursor
agentgate install-continue-hook # Continue.dev
agentgate install-aider-hook # Aider
agentgate install-gemini-hook # Gemini CLI
agentgate install-codex-hook # OpenAI Codex CLI
version: 1
default: deny
rules:
# Read access to dotfiles is OK
- id: allow-read-configs
match: {tool: Read, file_glob: "~/.config/*"}
action: allow
# Block destructive Bash commands
- id: deny-rm-rf
match: {tool: Bash, command_regex: "rm\\s+-[rf]+.*"}
action: deny
reason: "Recursive delete blocked"
# Allow `kubectl apply` but require human approval
- id: ask-kubectl-apply
match: {tool: Bash, command_regex: "kubectl apply.*"}
action: ask
# CEL-lite `when` conditions
- id: deny-rm-elsewhere
match: {tool: Bash, command_regex: "rm -rf.*"}
action: deny
when: 'event.cwd != "/srv"'
# Rate-limit noisy rules
- id: ask-deploy
match: {tool: Bash, command_regex: "kubectl apply.*"}
action: ask
rate_limit: {capacity: 5, refill_per_sec: 0.1}
network:
allowed_domains:
- "*.github.com"
- "*.anthropic.com"
- "registry.npmjs.org"
require_https: true
| Command | Purpose |
|---|---|
agentgate start | Run the mitmproxy-based intercept proxy |
agentgate scan | Static security scanner for AI agent configs |
agentgate audit | Read the audit log |
agentgate audit verify | Verify the SHA-256 audit chain |
agentgate receipts verify | Verify Ed25519-signed receipts |
agentgate coverage | Dead-rule + uncovered-tool report |
| `agentgate env add | use |
agentgate policy test | Replay events against a policy (dry-run) |
agentgate doctor | Pre-flight health check |
policy.evaluate().when — gate matches on event fields (event.cwd != "/srv").ignore previous instructions, role overrides, etc.).| Agent | Hook | Install |
|---|---|---|
| Claude Code | PreToolUse → JSON | agentgate install-hook |
| Cursor | beforeShellExecution | agentgate install-cursor-hook |
| Continue.dev | beforeCommand etc. | agentgate install-continue-hook |
| Aider | pre-commit adapter | agentgate install-aider-hook |
| Gemini CLI | BeforeTool | agentgate install-gemini-hook |
| OpenAI Codex CLI | Before hook | agentgate install-codex-hook |
See CONTRIBUTING.md. Run agentgate doctor first to
verify your environment.
Apache 2.0 — see LICENSE.
Download counts and popularity will appear here as the collector receives them.
| Version | Published | Direct dependencies | Open version |
|---|---|---|---|
| 0.14.0 | 15 Aug 2026 | 5 |
This describes our collected data; it is not a security assessment.
Observed since 20 Oct, 22:01 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package:59b597cd8fb690f3424957b48b9d9707660f825524965943fae96c571116d9e9