COMSPEC 和 PATHEXT 解析 cmd.exe 或 PowerShell。安装命令和交互式选择器还会解析 npm 在 Windows 上以 .cmd shim 形式安装的智能体 CLI,因此 install --codex 等命令能够找到它们。
Hermes Agent 和 OpenClaw 集成仅支持 macOS 和 Linux。它们使用 POSIX 主目录路径 ~/.hermes 和 ~/.openclaw,不支持 Windows 路径。
开始前请安装 Node.js 18 或更高版本。示例使用 npx 运行 CLI 子命令。
使用 cc-safety-net install <target-flag> 安装一个集成,使用 cc-safety-net uninstall <target-flag> 删除它,使用 cc-safety-net update 刷新所有已安装的集成。
交互式安装
不带目标参数运行安装程序,以在计算机上检测到的编码 CLI 中进行交互式多选:Space 选择目标,Enter 确认,u 改为更新每个已安装的集成,q 或 Esc 取消且不做任何更改。@latest 限定符很重要:不带版本的 cc-safety-net 规范可能从 npx 缓存重新运行旧副本,而不是当前版本,因此本页的每条安装、卸载和更新命令都固定该限定符。
以相同方式删除集成:
ccsn:
npx 运行使用完整的 cc-safety-net 名称。
更新已安装的集成
要原地刷新每个已安装的集成,请运行:update 检测计算机上已安装的集成(包括已禁用的集成),并以更新模式重新运行每个集成的安装路径。找不到智能体 CLI 的集成会报告为 skipped;如果没有安装任何集成,命令会要求你先运行 cc-safety-net install。在交互式安装程序中按 u 会运行相同更新。
update 也是主要版本之间的升级路径。在 v1 安装上运行它会将每个已安装的集成迁移到当前 v2 版本。如果你在 v1 内联配置中定义了自定义规则,请完成旧配置迁移。然后运行 npx cc-safety-net doctor,确认运行时为 ready。
安装指定智能体
对于脚本化非交互安装,请传入一个且只能传入一个目标参数。传入零个或多个目标参数都会报错。在交互式终端中,不带目标参数会启动安装选择器。
所有安装命令都是幂等的:在已配置的智能体上再次运行是安全的,并且只会留下一个托管项。
Amp Code 安装
cc-safety-net.ts 的形式发布到你账户托管的 Amp Personal Plugins 仓库。个人插件跟随你的账户随处生效,因此也保护在远程计算机上执行的线程,例如 Amp Orb。
安装需要 amp CLI 和已登录的账户:它先运行 amp plugins repositories --json 查找你可写的 Personal Plugins 仓库;缺少 CLI 或未登录会停止安装,并提示运行 amp login。然后它将 user-plugins 克隆到一次性临时检出目录,写入 cc-safety-net.ts,以工具身份 cc-safety-net 提交(并关闭提交签名,避免你的全局 git 配置阻塞安装),再推送。重新运行命令会原地更新已发布的构件。
安装还会将你的用户策略文件快照嵌入已发布的构件。运行时只有在没有策略文件的计算机上(例如 Orb 的空主目录)才应用该快照;计算机上存在的策略文件(即使无效)总是优先。如果你的策略文件不存在或无法解析,安装会发布不含快照的构件。快照不包含审计保留期、用户 rulebook 和项目范围策略;策略修改会随下一次 install --amp 或 update 发布。
cc-safety-net.ts。
安装、更新或卸载后,请重启 Amp 或运行
plugins: reload,使更改生效。cc-safety-net.ts 是符号链接、不是普通文件,或不含 CC Safety Net 托管标头,安装和卸载都拒绝修改它。请在仓库中删除它,然后重新运行命令。
早期版本会将插件复制到本地文件 ~/.config/amp/plugins/cc-safety-net.ts。残留的本地条目会遮蔽个人插件,因此安装会在发布后删除托管的本地副本;当本地条目不是托管副本时,安装会失败:
Antigravity CLI 安装
~/.gemini/config/hooks.json 中写入托管的 PreToolUse 项,对每次 run_command 工具调用运行 npx -y cc-safety-net hook --agy-cli。
由于 hook 通过 npx 运行,安装会先从 npm 缓存的 _npx 目录删除所有缓存的 cc-safety-net 副本(如果设置了 $npm_config_cache,则使用该目录;否则 macOS 和 Linux 使用 ~/.npm,Windows 使用 %LOCALAPPDATA%\npm-cache),以便 hook 解析到当前版本。卸载不会修改缓存。
/cc-safety-net skill,以便在 Antigravity CLI 中交互式编写规则:
Claude Code 安装
kenryu42/cc-marketplace 添加 cc-marketplace,并安装 cc-safety-net@cc-marketplace 插件;如果已有已禁用的副本,则会将其启用。
/plugin,转到 Marketplaces,选择 cc-marketplace,然后启用 auto-update。
该插件调用共享的 Coding CLI hook:
cc-safety-net hook --coding-cli(短参数 -cc)。这是规范参数名称,并与 Codex 插件共享。hook --claude-code 仅作为旧别名受支持,请勿在新配置中使用。Codex 安装
kenryu42/cc-marketplace 添加 cc-marketplace,并安装 cc-safety-net@cc-marketplace 插件。
信任 hook
Codex 不会运行不受信任的 hook。启动 Codex,打开 /hooks,选择 cc-safety-net PreToolUse hook,然后按 t 信任它。
信任后,如果 hook 仍未运行,请确认
~/.codex/config.toml(或 $CODEX_HOME/config.toml)已启用插件 hook 支持:Cursor 安装
~/.cursor/hooks.json 中写入托管的 preToolUse 项:
failClosed 表示 hook 无法产生判定时,Cursor 会拒绝工具调用。
由于 hook 通过 npx 运行,安装会先清除 npm _npx 缓存中缓存的 cc-safety-net 副本,以便 hook 解析到当前版本;卸载不会修改缓存。缓存位置见 Antigravity CLI 部分。
Gemini CLI 安装
https://github.com/kenryu42/gemini-safety-net 安装 Gemini Safety Net 扩展;如果已有已禁用的副本,则会重新启用它。Gemini CLI 不是 cc-marketplace 插件,其扩展位于自己的仓库中,扩展 id 为 gemini-safety-net。
GitHub Copilot CLI 安装
cc-marketplace,安装 cc-safety-net@cc-marketplace 插件;如果该插件在 ~/.copilot/settings.json 的 enabledPlugins 中明确禁用,则会将其设置为 true。
安装或删除插件后,请重启 Copilot CLI,使更改生效。
~/.copilot/hooks 下的用户 hook 文件要求 0.0.422 或更高版本。插件会为你处理此问题;如果你手动配置 hook 并遇到问题,请运行 npx cc-safety-net doctor。它会报告检测到的 Copilot 版本和受支持的 hook 来源。
Hermes Agent 安装
__init__.py 和 plugin.yaml)写入 $HERMES_HOME/plugins/cc-safety-net/(未设置 HERMES_HOME 时为 ~/.hermes/plugins/cc-safety-net/),然后运行 hermes plugins enable cc-safety-net --no-allow-tool-override。仅有文件不会生效:Hermes 只在自己的配置将用户插件列为已启用时加载它,因此即使文件已是最新版本,安装也会运行启用命令。
由于插件通过 npx 调用 shell,安装会先清除 npm _npx 缓存中缓存的 cc-safety-net 副本,以便插件解析到当前版本;卸载不会修改缓存。缓存位置见 Antigravity CLI 部分。
安装、更新或卸载后,请重启 Hermes,使更改生效。
pre_tool_call 时,插件通过 JSON stdin 将工具调用发送到 npx -y cc-safety-net hook --hermes-agent(短参数 -ha),超时为 30 秒。它保护 terminal、read_file、write_file 和 patch 工具;其他 Hermes 工具不会转发。该插件采用故障时拒绝:当 npx 缺失、分析无法启动、超时、以非零状态退出或返回无法读取的输出时,会用明确消息阻止工具调用,而不是让其通过。
hermes plugins disable cc-safety-net。Hermes 只能解析仍在磁盘上的插件,而保持启用的配置项会自动加载将来同名的任何插件。如果 hermes CLI 失败或缺失,仍会删除文件,并显示警告,说明 Hermes 配置中可能仍列有 cc-safety-net。卸载还会删除 Python __pycache__ 字节码目录,并且仅在插件目录中没有其他内容时回收该目录。
如果插件目录是符号链接或不是普通目录,安装和卸载都拒绝修改它;如果托管文件是符号链接、不是普通文件或不含 CC Safety Net 托管标头,也会拒绝覆盖或删除。请自行移动或删除它,然后重新运行命令。
此集成仅支持 macOS 和 Linux。
Kimi Code 安装
Kimi Code 支持两种安装方法:写入 Kimi Code 配置的全局 hook,或从 Kimi Code 内部安装的原生 Kimi Code 插件。在交互式终端中,install --kimi-code(或在交互式安装程序中选择 Kimi Code)会打开一个单选提示,询问使用哪种方法:立即安装全局 hook,或打印原生插件的步骤。在非交互式会话中,该参数直接安装全局 hook,因此脚本和 CI 流水线不会卡在提示上。update 不变。
两种方法下 Kimi Code hook 都是故障时放行:当 hook 进程无法启动、崩溃或超时时,Kimi Code 会允许该工具调用。
~/.kimi-code/config.toml(或 $KIMI_CODE_HOME/config.toml)中写入 [[hooks]] 块,对每次 PreToolUse Bash 调用运行 npx -y cc-safety-net hook --kimi-code。
由于 hook 通过 npx 运行,安装会先清除 npm _npx 缓存中缓存的 cc-safety-net 副本,以便 hook 解析到当前版本;卸载不会修改缓存。缓存位置见 Antigravity CLI 部分。
/reload 或开始新会话。插件声明一个 PreToolUse Bash hook,以 30 秒超时运行 node ./dist/bin/cc-safety-net.js hook --kimi-code,与全局 hook 使用相同的适配器。
当全局 hook 已配置时,交互式安装程序中的 Kimi Code 行保持可选,并标注 (global hook installed);打印的插件步骤会额外显示警告:仅在插件生效之后运行 cc-safety-net uninstall --kimi-code。两个 hook 同时运行的短暂重叠只会重复拒绝消息,而两者都未生效的空窗期会让你失去保护。
可以选择安装 /cc-safety-net skill,以便在 Kimi Code 中交互式编写规则:
OpenClaw 安装
openclaw plugins install <packaged plugin dir> --force,再运行 openclaw plugins enable cc-safety-net;打包的插件目录包含在 npm 软件包中。然后,它运行 openclaw plugins inspect cc-safety-net --runtime --json,验证插件确实已加载:运行时损坏的已启用插件可以干净地安装,但随后不提供任何保护,因此状态不是 loaded 时安装会失败,并指示你运行 openclaw plugins inspect cc-safety-net --runtime 查看详情。
由于 --force 会覆盖(卸载时会删除)占用 cc-safety-net 扩展 id 的内容,两条命令都会先检查扩展目录是否只包含 CC Safety Net 托管插件或完全不存在,否则拒绝运行。请移动或删除该目录,然后重新运行命令。
安装、更新或卸载后,请重启 OpenClaw Gateway,使更改生效。如果
openclaw.json 设置了 plugins.allow,其中也必须列出 cc-safety-net。如果 allowlist 遗漏它,即使插件已启用也不会加载。exec 工具注册 before_tool_call 处理程序,OpenClaw 的文件工具不受保护。每次 exec 调用都会依据智能体的 workspace 目录进行分析;如果无法解析该 workspace、workdir 解析到其外部,或调用指定的执行 host 不是 auto 或 gateway(例如 sandbox 或 node),插件会故障时拒绝。
设置 OPENCLAW_STATE_DIR 时,OpenClaw 状态目录使用该值;否则使用 OPENCLAW_CONFIG_PATH 所在目录;再否则使用 ~/.openclaw。设置 OPENCLAW_CONFIG_PATH 时,配置文件使用该值;否则使用状态目录中的 openclaw.json。安装和 doctor 按相同顺序解析路径,因此移动位置的 OpenClaw 安装不会被误报为不存在。
此集成仅支持 macOS 和 Linux。
OpenCode 安装
~/.cache/opencode/packages/cc-safety-net@latest,再运行 opencode plugin -g -f cc-safety-net@latest。
~/.config/opencode/opencode.json(或 .jsonc)的 plugin 数组中删除 cc-safety-net,并再次清除缓存的软件包。
安装或更新后,请重启 OpenCode,以从刷新的缓存加载插件。
Pi 安装
pi install npm:cc-safety-net;如果 Pi 设置固定了会禁用 CC Safety Net 的 extensions 过滤器,则会在 ~/.pi/agent/settings.json 中清除该过滤器。
bash 工具和自定义 Shell 工具(例如 pi-grok-cli),解析每次调用的工作目录,并注册用于管理 rulebook 的 /cc-safety-net 内置命令。详情见集成架构。
从旧插件标识符迁移
当前插件标识符在适用的所有位置都是cc-safety-net@cc-marketplace。早期版本的两个标识符仍可能出现在现有计算机上:
你不需要手动删除它们。运行该智能体的正常安装命令,迁移会作为其中一部分完成。不要在新配置中使用旧标识符。
验证安装
安装后,请运行 doctor 命令,确认 CC Safety Net 已正确连接,并按预期阻止命令:doctor 会对每个受支持的智能体运行完整健康检查,包括 hook 集成、确认阻止有效的自检、自定义规则验证、活动模式标志、近期活动、系统版本和更新检查。有关每项检查和可用参数,请参阅 doctor 命令参考。
如果任何检查失败,输出会包含问题说明和建议的修复方法。