开发与工程 command-guardrailsgit-safetycli-hookbash-parsingsecuritycodex

CC Safety Net —— AI 编码代理的安全网

在 AI 编码代理执行破坏性 Git 和文件系统命令、访问敏感文件之前,及时拦截并阻止它们。

FollowAgents 评估 · FARS-2.1
谨慎使用
63/ 100 五分制 3.2 / 5
1 2 3 4 5 6
1信任安全17 / 29 · 2.9/5

证据显示:工具以PreToolUse钩子运行,拦截破坏性命令,默认fail-closed,有审计日志和秘密自动编辑。扣分:用户确认机制未明确(仅信任钩子),回滚能力未提及,发布者身份未验证。

2可靠稳定9 / 14 · 3.2/5

证据显示:有CI、测试、构建脚本,依赖单一(shell-quote),错误消息有测试覆盖。扣分:未验证实际运行,依赖可用性未完全确认。

3适用触发12 / 18 · 3.3/5

证据显示:支持多平台、多代理,有模式配置,触发精确性通过语义分析。扣分:环境适配细节未完全验证。

4规范维护12 / 18 · 3.3/5

证据显示:有README、安装说明、文档链接、MIT许可证、版本号、变更日志生成脚本。扣分:维护责任未明确,发布者未验证。

5有效结果9 / 13 · 3.5/5

证据显示:提供doctor和explain命令,输出可用,边际价值高(防止数据丢失)。扣分:成本效益未量化。

6证据核验4 / 8 · 2.5/5

证据显示:README声明与代码测试一致,有测试覆盖。扣分:跨来源验证不足,仅依赖单一仓库。

证据充分度: 评估于 2026年8月9日 审查版本 9fa3c5bdd927
上游仓库在本次评估后已有新提交;当前评分仍对应所示审查版本,可能尚未覆盖最新改动。
使用前请注意
  • 发布者身份未验证,需谨慎信任。
  • 用户确认机制不明确,可能影响安全性。
  • 回滚能力未提及,数据丢失风险需注意。
查看完整评分方法 →

这个 Agent 能做什么,适合哪些场景?

CC Safety Net 是一个 PreToolUse 钩子,可防止 AI 编码代理运行危险的命令,例如 `rm -rf`、`git reset --hard` 或 `git push --force`。它通过语义解析命令,而非简单的字符串匹配,因此标志位重排、shell 包装器或解释器单行代码都无法绕过。支持 Claude Code、Codex、Gemini CLI、GitHub Copilot CLI、Kimi Code、OpenCode 和 Pi,覆盖 Windows、macOS 和 Linux。它采用默认失败-关闭策略,即使输入畸形或配置无效,也会阻止命令执行。它提供审计日志、自定义规则(通过规则文件)以及严格和偏执等可选模式。安装方式因代理而异,包括插件市场或 `npx` ,并可通过 `npx cc-safety-net doctor` 进行诊断。

作为运行前钩子,拦截 Bash 调用。底层使用 @clack/prompts 之类的组件(虽未明确,但通过交互式提示推断)进行交互式确认。核心逻辑通过语义分析命令:区分 git checkout -b feature(安全)和 git checkout -- file(破坏性)。递归分析 bash -csh -c 等 shell 包装器层,并检测 python -cnode -e 等解释器单行代码中的破坏性代码。默认情况下阻止命令,并记录到 ~/.cc-safety-net/logs/<session_id>.jsonl。支持通过环境变量(如 CC_SAFETY_NET_STRICT=1)启用严格模式、偏执模式和工作树模式。提供 CLI 命令 npx cc-safety-net doctornpx cc-safety-net explain

  1. 开发者在自己的机器上使用 Claude Code,希望防止代理意外执行 rm -rf ~/git checkout -- 导致未提交工作丢失。
  2. 使用 Codex 的团队希望强制执行安全策略,即便代理尝试通过包装器或标志位重排来绕过简单命令阻止,也能拦截破坏性命令。
  3. 使用 Kimi Code 或 OpenCode 的开发者,希望通过单一工具实现跨所有 CLI 代理的一致防护。
  4. 在 Windows 上使用 AI 编码代理的开发者,需要路径比较和命令解析均能正确处理 \cmd.exe 的用户。
  5. 希望通过严格模式强制阻止不可解析命令,并增加偏执模式以确保安全,即使正在积极使用代理的开发者也适用。

这个 Agent 有哪些优点和局限?

优点
  • 语义分析能识别命令意图,而不只是匹配字符串,从而区分安全与危险的 git checkoutrm 用法。
  • 支持多个代理 CLI(Claude Code、Codex、Gemini CLI 等),且跨 Windows、macOS、Linux 可用。
  • 默认失败-关闭、严格模式、偏执模式、自定义规则文件以及审计日志,提供细致的安全策略控制。
  • 通过 npx cc-safety-net explaindoctor 提供诊断与追踪,便于理解安全行为。
局限
  • 仅作为 PreToolUse 钩子工作,因此仅适用于支持此类钩子的代理,不适用于所有 AI 工具。
  • 安装需按代理分别进行,且首次安装流程复杂(例如 Codex 需要 TUI 操作,OpenCode 有缓存问题)。
  • 运行需要 Node.js 18+,可能引入额外依赖。
  • 旧版自定义规则不会自动迁移,需要手动命令,否则命令会保持被阻止(失败-关闭)。
  • 依赖网络来获取 GitHub 规则文件(如果通过 URL 引用),且每个代理需要单独安装。

如何安装或部署这个 Agent?

需要 Node.js 18 或更高版本。各代理安装方式不同:
- Codex:在 ~/.codex/config.toml 中启用 plugin_hooks,添加市场 codex plugin marketplace add kenryu42/cc-marketplace,然后在 TUI 中通过 /plugins/hooks 安装并信任钩子。
- Claude Code:运行 /plugin marketplace add kenryu42/cc-marketplace,然后运行 /plugin install safety-net@cc-marketplace,接着运行 /reload-plugins
- Gemini CLI:gemini extensions install https://github.com/kenryu42/gemini-safety-net
- GitHub Copilot CLI:/plugin install kenryu42/copilot-safety-net
- Kimi Code:npx -y cc-safety-net hook install --kimi-code,可选运行 npx skill add kenryu42/cc-safety-net
- OpenCode:opencode plugin -g cc-safety-net
- Pi:pi install npm:cc-safety-net

如何使用这个 Agent?

安装后,钩子会自动拦截 Bash 调用。正常使用 AI 代理即可;当执行破坏性命令时会被阻止。可通过 npx cc-safety-net doctor 验证安装并运行自检,通过 npx cc-safety-net explain "git reset --hard" 查看命令如何被分析。可选地,设置环境变量(例如 CC_SAFETY_NET_STRICT=1)启用严格模式。旧版自定义规则(.safety-net.json 等)已不再加载,需运行 npx -y cc-safety-net rule migrate 迁移。

这个 Agent 与同类方案有什么区别?

与沙箱相比,沙箱允许工作区内的破坏性命令(如 git reset --hardrm -rf .),而 CC Safety Net 会主动阻止这些操作,因此两者可叠加使用。

常见问题

使用需要付费吗?
该项目采用 MIT 许可证,可免费使用和修改。
如何让代理执行破坏性命令?
项目采用失败-关闭策略,无法绕过;如需允许某些命令,需通过自定义规则文件(位于用户或项目范围)添加例外。
哪些命令会被阻止?
例如 rm -rfgit reset --hardgit push --forcegit stash cleargit clean -ffind -deleteddmkfsshred 等,即使通过 shell 包装器或解释器单行代码包装也会被阻止。
与其他代理兼容吗?
目前明确支持 Claude Code、Codex、Gemini CLI、GitHub Copilot CLI、Kimi Code、OpenCode 和 Pi,其他代理可能不支持。

对比同类 Agent

用同一套 FARS 评审,横向比较这个 Agent 所属的短名单。

相关 Agents