2026年6月28日 1 分钟阅读

Cerberus 场景聚焦:用本地安全网关给 AI Agent 的每一次工具调用加一道锁

tinyash 0 条评论

一个让人后背发凉的场景

假设你在生产环境跑着 Claude Code 或 Codex,它正奉命执行一个自动化任务。AI 读到了一篇文档,文档里建议先检查 ~/.ssh/id_rsa 是否存在——Agent 照做了,还顺手把文件内容传给了某个外部服务。这不是入侵,是你的 Agent 被提示注入利用了。等你发现的时候,密钥已经在别人手里了。

这不是耸人听闻。AI 编码 Agent 的本质就是「把机器钥匙交给一个自主行动的程序」——它执行 shell 命令、读写文件、发送网络请求,而且是以毫秒级的速度,在你喝杯咖啡的工夫就能跑完几十步操作。一个 rm -rf、一个不经意的 git push、一次 .env 泄露,都在 Agent 的一次工具调用中完成,而传统的安全方案根本跟不上这种节奏。

这个问题怎么解?Cerberus 给出了一个答案:在 Agent 的工具调用边界上,装一个本地安全网关。

痛点对比:Agent 安全的三条路

维度传统 EDR/杀毒软件手动 review 所有操作Cerberus 本地安全网关
检测粒度文件/进程级,看不到 Agent 的工具调用零漏报,但人根本跟不上 Agent 的速度工具调用级,PreToolUse 全拦截
响应速度秒/分钟级依赖人类反应(分钟/小时)毫秒级,在工具执行前完成判定
上下文感知无,只看单个系统事件完整但有认知负担看完整会话状态 + 4 维度风险分
秘密泄露检测依赖已知签名人能发现但发现时已晚上下文匹配 + 编码变体检测
本地部署部分支持N/A完全本地,无外部 API
终端体验弹出系统警报打断工作流原生 Agent 权限提示,不离开终端

传统的安全方案要么粒度太粗(看不到 Agent 的工具调用),要么速度太慢(等人工发现时早就出事了)。Cerberus 的设计选择非常聪明:它把自己放在 Agent 和操作系统之间,在工具调用的边界上做安全和判定。

快速上手:5 分钟装好安全网关

Cerberus 的安装出奇简单:

npm i -g @cerberussec/core

然后把它接入 Claude Code:

cerberus init                # 默认为 Claude Code,项目级

启动网关和仪表盘:

cerberus engine              # 打开 http://127.0.0.1:9000/

完成。现在你用 Claude Code 执行的每一次工具调用,都会先经过 Cerberus 的安全检查。终端里该做什么还做什么——阻止或放行都在 Claude Code 的原生权限提示中完成,完全不需要切窗口。

核心功能拆解

1. 四信号风险引擎:不是在查毒,是在判案

Cerberus 的核心是一个聚合四个信号的风险引擎。每次工具调用触发前,它会计算:

信号检测对象判定逻辑
Policy(策略)命令白名单/黑名单rm -rf 直接 BLOCK;cat ~/.ssh/* 触发 HITL
Behavioral(行为)调用模式连续高频写 ~/.aws/credentials → 异常行为分↑
Content(内容)工具结果中的秘密检测 base64/hex/url 编码的密钥变体
Injection(注入)工具结果中的对抗内容启发式分类器(可选 DeBERTa 模型升级)

四个信号加权汇总成一个风险分,而绝对禁止的操作(如 chmod 777 *)有一个硬性下限,不会被其他低分信号稀释。

2. 秘密泄露检测:抓到的是”正在出去”的密钥

这个设计的精妙之处在于执行时序。Cerberus 的 PreToolUse 拦截了工具调用的请求,PostToolUse 才是秘密检测的战场——当一个工具调用返回了结果,Cerberus 检测该结果中是否出现了之前上下文中的秘密(如 .env 文件内容),并记录”会话污染状态”。当下一个工具调用试图将含秘密的数据发出去时,PreToolUse 的 Content 信号会把这个调用截停。

这意味着 Cerberus 不是在看文件里有没有秘密,而是在看键盘按下去之前的内容匹配——它知道 .env:4 的密钥已经加载进了上下文,所以当 outbound 网络请求携带了该密钥(原始、base64、hex 或 url 编码)时,它会在请求发出前拦住。而且秘密值永远不会写入日志或磁盘。

3. 两种审批模式,适用于不同的 Agent 工作流

Cerberus 支持 terminaldashboard 两种审批模式。默认是 terminal

  • BLOCK:终端直接拒绝,Claude Code 显示被拦截原因,可自动打开调查页面
  • HITL(人工参与):Claude Code 的原生权限提示,附带 Cerberus 的判定理由——你在终端里 approve/deny
  • AUDIT:静默记录到风险时间线,不在终端显示
  • ALLOW:完全放行,无提示

如果需要集中管理审批,改成 AG_APPROVAL_SURFACE=dashboard 模式,HITL 调用会挂起在引擎的 socket 上,等你在 Web 仪表盘上操作:

cerberus pending              # 列出待审批的调用
cerberus approve          # 放行
cerberus deny             # 拒绝

4. 取证仪表盘:像回放录像一样追查 Agent 的每一步

Web 仪表盘(http://127.0.0.1:9000/)的 Replay 功能是让我眼前一亮的设计。它能按时间线重放整个 Agent 会话的每次工具调用,标注每个调用的风险因子——是策略违规、行为异常、内容携带秘密还是注入检测触发。这比看日志追查有效率得多。

横向对比

特性CerberusPrompt Guard (Meta)系统级 HIDS
安装复杂度npm i -g + cerberus init需集成到推理管道部署 agent 在每台机器
检测面PreToolUse + PostToolUse 全链路只检测 prompt 注入系统调用级,无 Agent 语义
审批回传原生 Agent 权限提示
许可证Apache-2.0Llama 社区许可各异
Agent 适配Claude Code / Codex / Cursor / Cline通用推理层

Cerberus 的独特定位在于它不是替换传统安全方案,而是填补了Agent 工具调用边界这个空白——传统方案看不见这个层面,而 Cerberus 正好卡在那个位置。

注意事项

  • 看得到工具调用,看不到 LLM prompt:这是设计决策不是缺陷。Cerberus 抓的是提示注入的利用阶段(工具调用携带恶意载荷外传),而不是注入本身。所以它不能防御数据管道污染和 RAG 中毒。
  • 秘密检测高置信但不是 100%:新型秘密格式、跨多次调用的分片编码,都在已知局限之内。
  • Codex CLI 没有原生 ask 接口:需要用 AG_APPROVAL_SURFACE=dashboard 模式,审批从仪表盘进行。
  • 仅支持 macOS / Linux:Cline adapter 明确标注 macOS/Linux only。
  • 当前 v0.1.0:项目还很新(1 star),但 README 非常详尽且架构设计成熟,值得关注。

总结

Cerberus 解决的是一个真实且迫切的问题:AI 编码 Agent 正在变得强大、自主、快速——但安全控制的”无人环路”也越来越明显。Cerberus 的方案不是在 Agent 外面加围墙,而是在它每次伸手做事之前,放一个能看懂上下文的安全检查站。对于已经在生产环境使用 Claude Code 或 Codex 的团队,这个本地安全网关值得一试。

相关链接

发表评论

你的邮箱地址不会被公开,带 * 的为必填项。