Skip to main content

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 call
  • deny -- block the tool call (exit code 2)
  • log -- permit but log to audit trail
  • alert -- 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

Get Premium -- $10

Requirements

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

agentsec_firewall-0.1.1.tar.gz (11.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

agentsec_firewall-0.1.1-py3-none-any.whl (9.1 kB view details)

Uploaded Python 3

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

Hashes for agentsec_firewall-0.1.1.tar.gz
Algorithm Hash digest
SHA256 4cfd2dfa9fb76a398535329835950399504ad68dea4b47f1f95a96592aa54108
MD5 46303532229694e6c69d7a756b268163
BLAKE2b-256 6a4c6065a467f502150dcd4e813de05063968ccc2f460583abccd09bf0f8448b

See more details on using hashes here.

File details

Details for the file agentsec_firewall-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for agentsec_firewall-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 08abe075569be317271c30742aefb4152233f3e48f25d89eed138ef7730daf27
MD5 c4181188151eed0058112eefd4e14984
BLAKE2b-256 c0eb612f845bf10c822ab90963133a777ce39626ff3f87425d0b774b67f71755

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page