explain --json 的 ruleId 字段中给出下面的某个规则 ID。
本页列出每个内置规则 ID、它阻止的内容以及生效条件。你可以据此从阻止消息中查找规则,并决定是否关闭它。各规则的边界和示例见被阻止的命令,destructive_command_protection schema 见策略,添加自己的规则见自定义规则。
共有 59 条已注册规则。其中 6 条是灾难性规则,无法关闭。其余所有规则都接受单条规则的覆盖。
允许某条内置规则
对每条非灾难性规则,都是同样的三个步骤:-
获取规则 ID。它会打印在阻止消息中;也可以对那条命令本身运行
explain,并读取ruleId: -
在
policy.json的destructive_command_protection.overrides中添加该 ID,值为"off"。用户文件适用于所有项目,项目文件.cc-safety-net/policy.json只适用于一个项目。请合并到你已有的文件中;下面是一个完整示例: -
再次用
explain确认。该命令的判定变为 allowed,status会列出这条覆盖。
"on" 则相反,会启用你的安全级别未启用的规则,例如 standard 模式下的 rm.recursive-force-paranoid。针对特定路径豁免递归删除,请使用 destructive_command_protection.allow_paths,见允许路径。未注册的 ID 会被 policy check 拒绝。
灾难性规则
有 6 条规则被标记为灾难性规则。它们忽略destructive_command_protection.enabled: false,也忽略 "off" 覆盖,因此在任何策略下、任何安全级别都会阻止。它们涵盖用 rm、find 和 PowerShell 递归删除 / 或主目录,以及删除 Git 元数据。下表中以 灾难性 标出。
如何阅读表格
生效条件说明哪个安全级别或能力会启用该规则。所有级别指 standard、strict 和 paranoid。与某项能力绑定的规则在该能力开启时生效,无论它是由安全级别还是由safety.overrides 条目开启的。示例是触发该规则的最短命令;各边界的具体位置见被阻止的命令参考。