AI开源软件工具

Fence 1.0发布:用语义理解拦截AI编程Agent的危险操作,不再靠黑名单

2026年7月8日3 次阅读
Codex支持

Fence 1.0发布:用语义理解拦截AI编程Agent的危险操作,不再靠黑名单

AI编程Agent越来越强,但一个被注入指令误导的Agent可以执行rm -rf ~、泄露密钥、建立持久后门——而现有的"防护"只是字符串黑名单,轻松绕过。Fence 1.0.0用语义解析替代字符串匹配,在命令执行前判断意图,近零误报,已支持Claude Code和Codex。

问题:AI Agent的"手"太长,现有护栏太弱

AI编程Agent拥有你的用户权限,可以执行任意shell命令。这意味着一个被prompt injection误导的Agent,或者一个理解错误的Agent,能做出灾难性操作:删除你的文件、把AWS密钥发给外部URL、在crontab里植入持久后门。

目前社区流传的"guardrails"方案,本质上是字符串黑名单——匹配rm -rf这样的子串。问题很明显:

  • 轻松绕过rm -fr、先写脚本再执行、用变量拼接路径,黑名单根本拦不住
  • 误报太多rm -rf node_modulesgit push --force-with-lease这些日常操作也被拦,用户干脆关掉防护
  • 覆盖面窄:只盯删除命令,不管密钥泄露、网络外传等风险

Fence怎么工作:语义解析,不是字符串匹配

Fence的核心思路是解析命令结构、判断意图,而不是匹配字符串。

同样的"删除用户目录"意图,不管写成rm -rf ~rm -fr ~rm -r -f ~还是sudo rm -rf $HOME,Fence都能识别为危险操作并拦截。而rm -rf node_modulesnpm install这些日常命令则静默放行。

Fence采用三级决策机制:

  • Block(阻断):意图明确危险,直接拦截,Agent收到拒绝通知
  • Ask(确认):操作可能合法也可能危险,弹出确认提示
  • Allow(放行):日常操作,静默通过

一个关键设计:即使在auto-accept或--dangerously-skip-permissions模式下,Fence的拦截依然生效。因为Fence的hook在Agent的权限系统之前运行——在你最需要护栏的时候,它是唯一还在站岗的。

核心设计原则

失败开放:如果Fence解析不了某个命令,命令照常执行。一个护栏绝不能因为自身故障而卡住它要保护的Agent。

Agent中立:一套规则包,适配多个Agent。目前支持Claude Code和Codex,Cursor和Gemini在计划中。你不需要为每个Agent学一套不同的防护配置。

开发者可控fence uninstall干净卸载,只移除init添加的hook,不碰其他配置。觉得不好用,走人就是。

安装和使用

安装很简单,macOS和Linux都支持:

```bash

Homebrew(macOS推荐)

brew install hoophq/tap/fence

npm

npm install -g @hoophq/fence

```

初始化:

```bash

全局启用(写入~/.claude/settings.json)

fence init --global

仅当前项目

fence init

Codex支持

fence init codex

```

启动Claude Code后,聊天窗口会出现🚧 Fence is guarding this session…的提示。当Agent尝试执行危险操作时,Fence会拦截并显示哪条规则触发了拦截。

想测试某个命令会被如何判定?用fence check

```bash

fence check "rm -rf ~" # → deny

fence check "rm -rf node_modules" # → allow

```

防护场景举例

阻止删除用户目录:Agent被误导执行rm -rf ~,Fence在命令执行前拦截,Agent收到拒绝通知后放弃操作。

阻止密钥泄露:Agent尝试cat ~/.aws/credentials | curl ...,即使没有网络传输(只是cat),Fence也会阻止密钥进入模型上下文。

阻止prompt注入攻击:一个文件里藏着隐藏指令,诱导Agent执行危险操作。Fence不仅拦截命令,还会告诉你注入来源在哪里。

确认不可逆操作git push --force、历史重写等操作,Fence弹出确认而非直接放行。

当前限制

  • 平台:仅支持macOS和Linux。Windows原生暂不支持(WSL可用),团队正在跟进。
  • Agent覆盖:目前适配Claude Code和Codex。Cursor、Gemini等在路线图中。
  • 版本:v1.0.0是首次正式版,生产环境建议先在测试项目中验证。

总结

Fence解决的是AI编程Agent的一个真实痛点:Agent权限太大,现有防护太弱。它用语义理解替代字符串匹配,在保持近零误报的同时,覆盖了黑名单方案无法应对的绕过方式。对于已经在日常使用Claude Code或Codex的开发者,Fence是一个值得装上的安全网——尤其是你习惯用auto-accept模式的时候。

Fence开源在GitHub上,MIT协议,由hoop.dev(YC W21)团队开发。

*来源:[GitHub](https://github.com/hoophq/fence) · [Release v1.0.0](https://github.com/hoophq/fence/releases/tag/v1.0.0) · [Hacker News讨论](https://news.ycombinator.com/item?id=48821039)*

参考来源