Policy-enforced firewall for AI agent tool calls
Project description
agentfirewall
Policy-enforced firewall for AI agent tool calls. Intercepts, evaluates, and audits every tool invocation against a YAML security policy.
Part of the AgentSec suite -- open-source security primitives for AI agents.
Install
pip install agentsec-firewall
Premium: Get enterprise security policies, advanced secret detection, and webhook alerting at zazmatt.gumroad.com/l/kjwwhn
Quick Start
# 1. Initialize policy and audit log
agentfirewall init
# 2. Install hooks into Claude Code
agentfirewall install
# 3. Done -- every tool call is now checked against .agentfirewall/policy.yaml
How It Works
Tool Call (e.g. Bash "rm -rf /")
|
v
+-----------+
| PreToolUse | <-- Claude Code hook reads stdin JSON
| Hook |
+-----+-----+
|
v
+-----------+
| Interceptor| <-- Evaluates against policy.yaml
| .check() | Scans params for secrets
+-----+-----+
|
+----+----+
| |
ALLOW DENY ---------> exit 2 (blocks tool call)
| + JSON reason to stdout
v
Tool Executes
|
v
+-----------+
| PostToolUse| <-- Logs execution to audit.jsonl
| Hook |
+-----------+
Policy Reference
Policies are YAML files at .agentfirewall/policy.yaml:
version: "1.0"
name: "my-policy"
description: "Custom security policy"
default_action: log # allow | deny | log | alert
rules:
- name: allow-read-operations
tools: ["Read", "Glob", "Grep"] # fnmatch patterns
action: allow
reason: "Read operations are safe"
- name: block-dangerous-bash
tools: ["Bash"]
resources: ["rm -rf *", "sudo *"] # resource patterns
action: deny
reason: "Dangerous shell commands blocked"
- name: alert-mcp-tools
tools: ["mcp__*"] # wildcards supported
action: alert
reason: "MCP tool calls flagged for review"
- name: log-all-writes
tools: ["Write", "Edit"]
action: log
reason: "File modifications logged"
Actions:
allow-- permit the tool calldeny-- block the tool call (exit code 2)log-- permit but log to audit trailalert-- permit, log, and fire webhook alert
CLI Reference
| Command | Description |
|---|---|
agentfirewall init |
Create .agentfirewall/ with default policy and audit log |
agentfirewall install |
Add PreToolUse/PostToolUse hooks to .claude/settings.local.json |
agentfirewall uninstall |
Remove agentfirewall hooks from settings |
agentfirewall validate |
Validate policy YAML and print rule summary |
agentfirewall audit |
Query audit log (supports --tail, --tool, --action filters) |
agentfirewall scan [PATH] |
Run security scanner on project files |
Python API
from agentfirewall import Interceptor, PolicyViolationError
from agentsec_core.schemas import PolicyAction
# From a policy file
interceptor = Interceptor(policy_path=".agentfirewall/policy.yaml")
# Check a tool call (returns PolicyDecision, never raises)
decision = interceptor.check("Bash", {"command": "rm -rf /"})
if decision.action == PolicyAction.DENY:
print(f"Blocked: {decision.reason}")
# Check and raise on deny
try:
interceptor.check_or_raise("Bash", {"command": "rm -rf /"})
except PolicyViolationError as e:
print(f"Violation: {e.decision.reason}")
# Decorator pattern
@interceptor.wrap("data_export")
def export_data(**kwargs):
... # Only runs if policy allows
Free vs Premium
| Feature | Free (OSS) | Premium |
|---|---|---|
| YAML policy enforcement | Yes | Yes |
| PreToolUse / PostToolUse hooks | Yes | Yes |
| Audit log (JSONL) | Yes | Yes |
| Secret scanning (23 patterns) | Yes | Yes |
| Enterprise policy templates | -- | Yes |
| Webhook alerts (Slack, Discord) | -- | Yes |
| PII/GDPR filtering rules | -- | Yes |
| Priority support | -- | Yes |
Requirements
- Python 3.11+
- agentsec-core >= 0.1.0
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file agentsec_firewall-0.1.1.tar.gz.
File metadata
- Download URL: agentsec_firewall-0.1.1.tar.gz
- Upload date:
- Size: 11.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4cfd2dfa9fb76a398535329835950399504ad68dea4b47f1f95a96592aa54108
|
|
| MD5 |
46303532229694e6c69d7a756b268163
|
|
| BLAKE2b-256 |
6a4c6065a467f502150dcd4e813de05063968ccc2f460583abccd09bf0f8448b
|
File details
Details for the file agentsec_firewall-0.1.1-py3-none-any.whl.
File metadata
- Download URL: agentsec_firewall-0.1.1-py3-none-any.whl
- Upload date:
- Size: 9.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
08abe075569be317271c30742aefb4152233f3e48f25d89eed138ef7730daf27
|
|
| MD5 |
c4181188151eed0058112eefd4e14984
|
|
| BLAKE2b-256 |
c0eb612f845bf10c822ab90963133a777ce39626ff3f87425d0b774b67f71755
|