现在用 Coding Agent 写代码,最吓人的不是它写错一个函数,而是它太自信。
你本来只是让它“清理一下临时文件”,它反手想来一句 rm -rf;你让它“回滚这个改动”,它可能把半天的工作区一起抹掉;更麻烦的是,有些 agent 在排查问题时会顺手读 .env、SSH key、云厂商配置,读完还把上下文送进模型请求里。
项目说明文件、AGENTS.md、系统提示词当然有用,但它们本质上还是软约束。今天这个项目 CC Safety Net,做的是另一件事:在 AI 真正执行工具调用之前,加一道会拦人的硬闸。
开源项目简介
CC Safety Net 是一个开源的 coding agent 安全钩子,项目地址是 kenryu42/cc-safety-net。它会接到 agent 的 PreToolUse / hook 调用,分析即将执行的 shell 命令或文件访问,再决定放行还是阻止。
它的定位很具体:拦危险命令、拦密钥文件访问、留下本地审计记录。它不是新的编程 agent,也不是把所有 agent 都装进云端沙箱的控制台,更不是“装了就绝对安全”的保险箱。
目前它支持 Claude Code、Codex、Gemini CLI、GitHub Copilot CLI、Kimi Code、OpenCode、Pi、Cursor、Amp Code、Antigravity CLI、Hermes Agent、OpenClaw 等多种 agent CLI。官方 v2.0.0 版本把安装器、策略引擎、密钥保护、审计日志和本地 GUI 都重新整理了一遍,所以它不是一个只拦 rm -rf 的小脚本。

几个核心亮点
第一,它看的是命令语义,不只是字符串。
简单的黑名单很容易绕过:换个 flag 顺序、套一层 bash -c、塞进 python -c,字符串匹配就开始犯傻。CC Safety Net 的思路是把命令解析成更稳定的表示,再识别“这件事到底想干什么”。例如安全的新建分支可以放行,但破坏工作区的 git checkout -- file、git reset --hard、git clean -f、递归删除危险路径,会被当成高风险动作处理。
第二,密钥文件不是让 agent 随便看的资料。
很多人会低估这一点:AI agent 读文件太方便了。CC Safety Net 内置规则会阻止内容级访问 SSH keys、.env、AWS / kube / Docker / gcloud 配置,以及一些 coding CLI 自己的凭据存储。它覆盖 shell 命令和部分文件工具,而不只是 Bash。
第三,它有不同强度的模式。
默认的 standard 适合日常开发,重点拦可识别的危险 Git 和文件系统命令;strict 会对更难判断的动态命令更保守;paranoid 则会进一步限制项目内的递归删除和解释器 one-liner。换句话说,它允许你按仓库风险调节摩擦,而不是一上来把 agent 变成什么都不能做。
第四,它承认自己不是沙箱。
这一点反而让我更信任。CC Safety Net 官方文档说得很清楚:它阻止的是工具调用执行前的危险动作,不负责完整进程隔离、网络出口控制或操作系统级权限。一个可写工作区沙箱仍然可能允许 git reset --hard 这类“在允许路径内造成破坏”的行为;CC Safety Net 和沙箱是互补关系,不是互相替代。
怎么用
最快的方式是先装通用安装器:
npx -y cc-safety-net@latest install它会交互式帮你选择已经安装的 agent CLI。你也可以针对单个工具安装,例如:
npx -y cc-safety-net@latest install --codex
npx -y cc-safety-net@latest install --claude-code
npx -y cc-safety-net@latest install --opencode
npx -y cc-safety-net@latest install --cursor装完之后建议跑一次:
npx cc-safety-net doctordoctor 会检查 hook 是否接上、阻断自测是否通过、策略是否有效、当前模式和版本状态。想看某条命令为什么被拦,可以用:
npx cc-safety-net explain "git reset --hard"如果你已经在用多个 agent,我建议先从一个高价值仓库试起,不要一口气全局拉到 paranoid。先让它在真实工作流里拦几次危险命令,再根据误报调整规则。它还提供本地 GUI:
npx cc-safety-net gui这适合不想手改策略文件的人。
简短判断
CC Safety Net 的价值,不在于让 AI 编程“更聪明”,而在于承认 AI 编程已经到了需要安全带的阶段。
如果你只是偶尔让 agent 写一小段脚本,它可能显得有点重。但如果你已经让 Claude Code、Codex、OpenCode、Cursor 之类工具直接改仓库、跑命令、查配置,那这类执行前拦截就很现实:它不能替你做安全架构,却能挡住一批最不值得发生的事故。
我尤其喜欢它把边界写清楚:不是万能防护,不替代沙箱,不保证覆盖所有 PowerShell/远端执行场景。但只要你把 agent 当成会动手的自动化工具,而不是聊天窗口,给它加一道硬刹车就不算多余。
每天挑一个真正有用的开源项目或开发者工具,少讲概念,多讲怎么用。
项目地址:https://github.com/kenryu42/cc-safety-net
官方文档:https://ccsafetynet.com/docs
夜雨聆风