Skip to main content
破坏性命令保护是命令分析阶段,用于阻止可能销毁未提交的工作、已暂存的更改、远程历史、其他数据或整个磁盘的命令。每次阻止都会在阻止消息、审计日志explain --jsonruleId 字段中给出下面的某个规则 ID。 本页列出每个内置规则 ID、它阻止的内容以及生效条件。你可以据此从阻止消息中查找规则,并决定是否关闭它。各规则的边界和示例见被阻止的命令destructive_command_protection schema 见策略,添加自己的规则见自定义规则 共有 59 条已注册规则。其中 6 条是灾难性规则,无法关闭。其余所有规则都接受单条规则的覆盖。

允许某条内置规则

对每条非灾难性规则,都是同样的三个步骤:
  1. 获取规则 ID。它会打印在阻止消息中;也可以对那条命令本身运行 explain,并读取 ruleId
  2. policy.jsondestructive_command_protection.overrides 中添加该 ID,值为 "off"。用户文件适用于所有项目,项目文件 .cc-safety-net/policy.json 只适用于一个项目。请合并到你已有的文件中;下面是一个完整示例:
  3. 再次用 explain 确认。该命令的判定变为 allowed,status 会列出这条覆盖。
覆盖会关闭整条规则,而不是只放行某一条命令。"on" 则相反,会启用你的安全级别未启用的规则,例如 standard 模式下的 rm.recursive-force-paranoid。针对特定路径豁免递归删除,请使用 destructive_command_protection.allow_paths,见允许路径。未注册的 ID 会被 policy check 拒绝。

灾难性规则

有 6 条规则被标记为灾难性规则。它们忽略 destructive_command_protection.enabled: false,也忽略 "off" 覆盖,因此在任何策略下、任何安全级别都会阻止。它们涵盖用 rmfind 和 PowerShell 递归删除 / 或主目录,以及删除 Git 元数据。下表中以 灾难性 标出。

如何阅读表格

生效条件说明哪个安全级别或能力会启用该规则。所有级别指 standard、strict 和 paranoid。与某项能力绑定的规则在该能力开启时生效,无论它是由安全级别还是由 safety.overrides 条目开启的。示例是触发该规则的最短命令;各边界的具体位置见被阻止的命令参考。

Git 规则

文件系统规则

PowerShell 规则

执行规则

最后修改于 2026年9月17日