跳转到主要内容
先运行 npx cc-safety-net status 查看判定,再运行 npx cc-safety-net doctor 查看完整报告,大多数问题在这一步就能看出来。然后在下文中找到对应的症状。

先运行诊断

status 输出 ready 或 degraded、生效的保护,并为每个未解决的问题各列一行。doctor 检查每个智能体的集成,运行阻止功能自检,校验规则和 policy.json,并检查更新。见 status 和 doctor。

命令未经检查就执行

本应被阻止的命令没有任何提示就执行了,说明你的智能体的集成缺失、被禁用或没有加载。
1

运行 doctor

npx cc-safety-net doctor 会报告每个智能体的集成状态,并指出它读取的配置文件。
2

重新运行安装

重新运行为单个智能体安装中对应智能体的安装命令,它会修复缺失或被禁用的托管条目。如果它报告无法识别的配置或文件,请按提示处理,不要覆盖该文件。
3

检查各智能体特有的原因

参照下表。
4

重启智能体

做出任何更改后,重新加载或重启智能体会话。

每条命令执行前都要等几秒

正常的检查远不到 1 秒。几秒的延迟来自 npx 解析包,而不是分析本身。Antigravity CLI、Cursor、Devin CLI、Factory Droid、Grok Build、Hermes Agent 和 Kimi Code 的全局 hook 每次调用都运行 npx -y cc-safety-net。Claude Code 插件运行的是捆绑的副本,不受此影响。
缓存预热后,第一条命令应在几百毫秒内完成。如果只有带 --prefer-offline 的那次很快,说明 npx 在等待 npm 注册表,这是网络或代理问题。否则,用 npm cache verify 修复膨胀或损坏的 npm 缓存。

破坏性命令执行了,没有被阻止

多数情况是文档中写明的允许行为,或者实际安全级别比你以为的低。按顺序检查:
  1. 运行 npx cc-safety-net explain "<the command>"。它会显示检查过的规则、生效的安全级别,以及在该级别下关闭的规则。
  2. 如果级别是 standard,该命令可能属于 standard 的放宽范围。命令可能带有对抗性时,请使用 strict 或 paranoid。
  3. 在 Claude Code 中,可能是你自己批准了它。见 Claude Code 何时改为询问而不是阻止。
  4. 该命令可能是有意允许的,例如工作目录内的 rm -rf。见被阻止的命令。
  5. CC Safety Net 丢弃了某个规则来源时,npx cc-safety-net status 会显示 degraded,该来源的拒绝规则随之失效。见配置恢复。
  6. status 中的 Project policy 区块列出了项目 policy.json 在本项目中放宽的内容。见报告的削弱。
  7. 命令经由 CC Safety Net 不会展开的代理运行。用 npx -y cc-safety-net rule wrapper add <command> 声明该代理。
  8. 你的智能体可能没有覆盖那个工具或目录。见各智能体的限制。
如果以上都无法解释,请以公开的 GitHub issue 报告覆盖缺口。描述命令的形式,不要提供可直接使用的 payload。想立即阻止它,添加一条自定义规则。

需要的命令被阻止了

消息中会写明规则。运行 npx cc-safety-net explain "<the command>" 查看它为什么匹配,然后按允许被阻止的命令关闭该规则或放行某个路径。其他做法:
  • 在 linked git worktree 中,开启 worktree 模式,放宽本地丢弃类规则。
  • 改用更安全的变体。git push --force-with-lease 和 git clean -n 是允许的。
  • 在智能体之外自己运行该命令。

拒绝消息

每一项都引用了智能体收到的消息原文。所有 ID 都列在固定拒绝 ID 中。

命令超出派生命令工作量上限

没有规则匹配。命令嵌套了太多派生命令,例如 find -exec、xargs 或包装器内的 shell 单行命令。没有任何设置可以提高这个上限,请把它拆成更简单的命令。

命令超出安全分析上限

没有规则匹配。命令中的路径、shell 函数或嵌套 heredoc 太多,无法分析。没有任何设置可以提高这个上限,请简化或拆分命令。

分析意外失败

阻止是内部故障造成的,与你的命令无关,改写命令解决不了问题。请按收集诊断信息并报告问题中的步骤报告。

收到的工具调用格式错误

智能体发送的调用没有工具名、命令为空,或工作目录参数为空,因此没有可检查的内容。ID 为 tool-call.malformed。智能体带上完整参数重新发送即可,无需报告。

会话的工作目录无法使用

会话启动时所在的目录已不存在,因此 CC Safety Net 拒绝每一次调用。常见原因是删掉了某个 git worktree。会话目录位于工作区根目录之外时,也会收到类似的消息。请从工作区内一个存在的目录重启智能体。

拒绝消息指向请求的工作目录

某次调用请求在 CC Safety Net 无法使用的目录中运行,例如 Amp Code 的 dir、OpenCode 的 workdir 或 Kimi Code 的 cwd。另一种变体会说该目录在会话的工作区之外。会话本身仍可继续。请让调用指向工作区内一个存在的目录,或先创建缺失的目录,然后重试。各智能体如何确定工作目录,见其对应页面。

Claude Code 询问“could not verify this command”

提示的开头是 CC Safety Net could not verify this command,而不是 BLOCKED by CC Safety Net。此时还没有阻止任何东西,批准提示就会运行该命令。见 Claude Code 何时改为询问而不是阻止。

只有用户可以应用策略提案

智能体试图运行 policy apply,而这项拒绝无法覆盖。请在终端中自己运行 npx cc-safety-net policy apply <file>。见智能体不能运行 policy apply。

自定义规则未生效

规则来源未通过校验时,CC Safety Net 会丢弃它,status 显示 degraded。命令照常运行,但该来源的规则不再生效。
  1. 运行 npx cc-safety-net doctor。它会指出被拒绝的文件和原因。
  2. 运行 npx -y cc-safety-net rule list,查看每个范围加载了哪些来源和 rulebook。编辑的若是另一个名称下的 rulebook,改动不会生效;rule.json 中的 overrides 条目也可能关闭了某条规则。
  3. 每次修复后运行 npx -y cc-safety-net rule verify。仍有错误时它会报告该错误并失败,而不是报告成功。
  4. 如果用过旧版的 .safety-net.json 或 ~/.cc-safety-net/config.json,运行 npx -y cc-safety-net rule migrate。doctor 会把未迁移的文件报告为 config.legacy-ignored。
文件位置见配置存放位置,所有失败情形见配置恢复。

policy 或 rule 命令提示该路径是用户配置

你在存放用户 .cc-safety-net/ 的目录(通常是主目录)中运行了项目范围的 policy 命令或会写入文件的 rule 命令。rule 命令对 rule.json 会打印同样的消息。请加上 --global 改用用户范围,或切换到项目目录。见 policy 写入哪个文件。

status 显示 degraded

CC Safety Net 拒绝了某个配置文件,改用回退配置。它绝不会因此拒绝普通工作。
  1. 运行 npx cc-safety-net doctor。config.runtime-degraded 诊断项会指出出问题的文件和修复方法。
  2. 修复该文件,或运行 npx -y cc-safety-net rule update 把缺失的远程来源落盘,然后运行 npx -y cc-safety-net rule verify。
  3. 手动修复 policy.json。多数被拒绝的部分会回退到更严格的默认值,但无效的 safety.level 会回退到 standard,从而降低你的保护。
见配置恢复。

doctor 报告 rulebook lock 和缓存遗留文件

config.v2-leftovers 诊断项仅供参考,所有规则都照常执行。运行 npx -y cc-safety-net rule sync(用户范围加 --global)即可迁移并删除这些文件。见 rule sync。

Claude Code 中不显示状态行

确认 ~/.claude/settings.json 中有设置 Claude Code 状态行中的 statusLine 条目。然后在终端中运行它的命令,例如 npx -y cc-safety-net statusline --claude-code。命令在终端里失败的话,状态行就会保持空白。

更新没有生效

update 会刷新所有已安装的集成。请保留 @latest,因为不带版本的 cc-safety-net 可能运行较旧的缓存副本。用 npx cc-safety-net --version 检查结果。对 Claude Code,也可以开启自动更新。见 update。

收集诊断信息并报告问题

JSON 输出包含你的环境、版本、hook 配置和自检结果。其中有绝对路径和项目名称,粘贴前请先阅读分享跟踪之前。报告提交到哪里,见选择公开或私密报告。
最后修改于 2026年10月23日