作者实现了 Agent Firewall,用细粒度加密签名权限替代二元 API Key,支持生命周期追踪与即时撤销,防止密钥泄露后的全面失控。
AI Agent 现在无处不在。它们预订航班、发送邮件、处理支付、访问你的代码库。但这里有个没人问的问题:
谁授权了哪个 Agent 可以做什么?
大多数人在用 API key。API key 是二进制的——要么有,要么没有。如果你的财务 Agent 的 key 泄露了,别人就能把你的账户掏空。如果你的代码审查 Agent 被攻破,它可以推送恶意提交。没有中间地带。
我在构建 Agent 原型时不断撞上这堵墙。所以我做了点东西来解决它。
Agent Firewall 是一个面向 AI Agent 的能力型安全层。它提供细粒度的、密码学签名的权限,并附带完整的生命周期追踪。
不再给 Agent 一个能解锁一切的 key,而是给它一个 capability:
from agent_firewall import FirewallSDK
sdk = FirewallSDK(
revocation_store_path="revocations.db",
lifecycle_store_path="lifecycle.db",
)
capability = sdk.issue(
private_key=private_key,
agent="finance-agent",
capability="payments.send",
constraints={
"amount_max": 100,
"expires_at": "2026-08-30T00:00:00Z"
},
)
这个 Agent 现在可以发送支付——但只能低于 100 美元,而且只在 8 月 30 日之前有效。如果你撤销这个 capability,它立即失效。如果有人重放旧请求,它会被拒绝。
| API Keys | Capabilities |
|---|---|
| 无内置过期机制 | 默认带时间限制 |
| 不能被衰减(缩小权限而不增加权限) | 可以衰减(收窄权限) |
| 不可单独撤销 | 完整生命周期:ISSUED → USED → REVOKED → EXPIRED |
| 无生命周期追踪 | 可单独撤销 |
Agent Firewall 中的每个 capability 都有明确的生命周期:
ISSUED → DELEGATED → ATTENUATED → USED → REPLAYED → REVOKED → DENIED → EXPIRED
这不仅仅是日志——这是安全状态。你可以查询一个 capability 是否被使用、重放或撤销。你可以把自己的 capability 委托给另一个 Agent,同时降低其权限(你的财务 Agent 将 payments.send 的 amount_max=50 委托给一个子 Agent)。你也可以自己衰减它。
在 v0.8 中,这一切都会持久化到 SQLite。重启你的服务,撤销注册表和生命周期历史依然存在。
Agent Firewall 不只是一个库——它是一个边界层。
HTTP 边界:将传入请求映射到 capability 命名空间。
POST /payments/refund
↓
http.POST.payments.refund
MCP 边界:在执行前授权 Model Context Protocol 工具调用。
两种边界都验证 capability,将其绑定到 Agent 身份,检查约束条件,并在允许执行前应用重放保护。
六个月前,我在为大学作业构建 COVID 检测模型。标准的本科生 ML 内容。
然后我开始玩 AI Agent——LangChain、CrewAI、AutoGen——不断遇到同样的问题:这些 Agent 默认情况下权力太大了。API key 不关心是谁在调用、它在做什么,或者它什么时候应该停止工作。
所以我深入研究了能力型安全——这是操作系统研究中的一个模型,权限是不可伪造的 token,可以委托和衰减。我构建了 Agent Firewall,就是为了把这个模型带到 Agent 时代。
它现在有 1438 个通过的测试,包括对抗性回归覆盖。它有架构文档和威胁模型。昨天,我发布了 v0.8,带有 SQLite 支持的生命周期持久化。
v1.0 是下一个里程碑。我将冻结 API,完成完整文档,让它成为生产就绪。目标很简单:
每个调用工具的 AI Agent 都应该有一个理解谁、什么、什么时候的授权层。
查看仓库:github.com/Shubhbhangoo/agent-firewall/tree/v0.8
如果你在构建调用工具的 Agent——支付、API、数据库、任何东西——我很想听到你的反馈。提一个 issue,开一个 PR,或者告诉我你现在的授权设置是什么样的。
我是 Shubh,一个刚毕业的 CS 学生,正在为 Agent 时代构建安全基础设施。关注我一起发布 v1.0 及以后的内容。