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 缓存。
破坏性命令执行了,没有被阻止
多数情况是文档中写明的允许行为,或者实际安全级别比你以为的低。按顺序检查:- 运行
npx cc-safety-net explain "<the command>"。它会显示检查过的规则、生效的安全级别,以及在该级别下关闭的规则。 - 如果级别是
standard,该命令可能属于 standard 的放宽范围。命令可能带有对抗性时,请使用 strict 或 paranoid。 - 在 Claude Code 中,可能是你自己批准了它。见 Claude Code 何时改为询问而不是阻止。
- 该命令可能是有意允许的,例如工作目录内的
rm -rf。见被阻止的命令。 - CC Safety Net 丢弃了某个规则来源时,
npx cc-safety-net status会显示degraded,该来源的拒绝规则随之失效。见配置恢复。 status中的Project policy区块列出了项目policy.json在本项目中放宽的内容。见报告的削弱。- 命令经由 CC Safety Net 不会展开的代理运行。用
npx -y cc-safety-net rule wrapper add <command>声明该代理。 - 你的智能体可能没有覆盖那个工具或目录。见各智能体的限制。
需要的命令被阻止了
消息中会写明规则。运行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 单行命令。没有任何设置可以提高这个上限,请把它拆成更简单的命令。
命令超出安全分析上限
分析意外失败
收到的工具调用格式错误
tool-call.malformed。智能体带上完整参数重新发送即可,无需报告。
会话的工作目录无法使用
拒绝消息指向请求的工作目录
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。命令照常运行,但该来源的规则不再生效。
- 运行
npx cc-safety-net doctor。它会指出被拒绝的文件和原因。 - 运行
npx -y cc-safety-net rule list,查看每个范围加载了哪些来源和 rulebook。编辑的若是另一个名称下的 rulebook,改动不会生效;rule.json中的overrides条目也可能关闭了某条规则。 - 每次修复后运行
npx -y cc-safety-net rule verify。仍有错误时它会报告该错误并失败,而不是报告成功。 - 如果用过旧版的
.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 拒绝了某个配置文件,改用回退配置。它绝不会因此拒绝普通工作。- 运行
npx cc-safety-net doctor。config.runtime-degraded诊断项会指出出问题的文件和修复方法。 - 修复该文件,或运行
npx -y cc-safety-net rule update把缺失的远程来源落盘,然后运行npx -y cc-safety-net rule verify。 - 手动修复
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。