用途
Safety Net 是一个 PreToolUse 钩子插件,在命令执行前进行拦截和分析,阻止具有破坏性的 git 与文件系统命令。它的目标是在命令真正运行前提供一道安全防线,避免不可逆的数据丢失或危险操作。
主要能力
- 在命令执行前分析并阻止可能删除未提交工作、强制推送、递归删除文件、清空 stash 等操作。
- 支持的拦截示例包括:
git reset --hard、git checkout -- .、git push --force、rm -rf /、git stash clear、bash -c "rm -rf /"、python -c 'os.system("rm -rf /")'等。 - 运行在权限规则之前,提供通配符无法匹配的语义级命令分析。
- 可分析多层 shell 包装器(最多 5 层)。
- 可分析解释器单行命令,如 Python、Node.js、Ruby、Perl 等。
- 提供严格模式、偏执模式和工作树模式等附加保护。
- 支持自定义规则,可定义阻止或允许的规则,自定义规则会覆盖内置规则。
- 支持状态栏集成,展示插件当前状态。
- 支持密钥脱敏,可自动从日志中隐藏敏感信息。
- 支持审计日志和诊断命令,便于排查与追踪。
使用方式
可通过各工具的插件安装方式安装。Claude Code 使用 /plugin marketplace add kenryu42/cc-marketplace、/plugin install safety-net@cc-marketplace、/reload-plugins;OpenCode 在 ~/.config/opencode/opencode.json 中加入 {"plugin": ["cc-safety-net"]};Gemini CLI 使用 gemini extensions install https://github.com/kenryu42/gemini-safety-net;GitHub Copilot CLI 使用 /plugin install kenryu42/copilot-safety-net,安装后需重启;Codex 需在 ~/.codex/config.toml 启用 plugin_hooks = true,再添加 marketplace 并安装。可通过 bunx cc-safety-net --statusline 集成状态栏,通过 bunx cc-safety-net --diagnose 查看状态,通过 bunx cc-safety-net --explain "命令" 解释命令被阻止或允许的原因。
适用场景
适用于在编码代理或命令行代理中防止误操作造成代码丢失或环境破坏的场景,例如避免误执行 git reset --hard、误强制推送、误递归删除重要目录等。也适合团队通过自定义规则限制发布、生产部署或数据库操作等敏感命令。
限制
插件信息中未提供价格、收费方式、平台兼容性限制或性能数据。默认阻止规则之外的行为需通过自定义规则配置,且嵌套 shell 包装器分析深度为 5 层。部分功能模式(严格、偏执、工作树)需要手动启用。