policy.json 和环境变量读取配置。模式开关使用 CC_SAFETY_NET_* 前缀;在注明之处,不带 CC_ 前缀的旧 SAFETY_NET_* 名称仍作为旧别名保留。请在启动智能体之前,在 shell 或智能体的启动环境中设置这些变量。
本页列出各变量,并说明它们如何与 policy.json 组合。各级别阻止的内容见模式,策略文件的完整约定见策略。
安全级别
这三个预设展开为同样的三项能力:
fail_closed、paranoid_rm 和 paranoid_interpreters。每个预设阻止什么、每项能力改变什么,见模式。
除 standard、strict、paranoid 以外的任何值都会被忽略,policy.json 中配置的级别保持不变。被拒绝的值始终会输出到 stderr,无需任何调试标志:
能力开关
这些是旧版的单项能力标志。每个标志都只能开启对应能力,假值不会将其关闭。如需关闭预设已启用的能力,请在 policy.json 中使用safety.overrides。
本表中的其他标志都只能收紧保护,只有
CC_SAFETY_NET_WORKTREE 例外:它启用 worktree 模式,在已确认的 linked worktree 内放宽本地丢弃类的 Git 规则。
布尔标志设为 1 或 true(不区分大小写)时视为真。设置了 CC_SAFETY_NET_* 名称时以它为准;只有在带前缀的名称不存在时,才会读取 SAFETY_NET_* 别名。
优先级
策略和环境按固定顺序组合:- 预设。
policy.json中的safety.level提供继承而来的能力默认值。该字段不存在时,预设为standard。 CC_SAFETY_NET_LEVEL。 有效基础级别取策略级别与环境级别中较高的一个。环境可以提高级别,但绝不会降低。safety.overrides.*。 接着,policy.json中显式的能力覆盖会开启或关闭fail_closed、paranoid_rm或paranoid_interpreters。- 能力开关。
CC_SAFETY_NET_STRICT、CC_SAFETY_NET_PARANOID、CC_SAFETY_NET_PARANOID_RM和CC_SAFETY_NET_PARANOID_INTERPRETERS这几个标志最后应用,而且是单调的:每个标志只会把对应能力强制为true,没有一个能关闭能力。 - worktree 模式是
workflow.worktree_mode与CC_SAFETY_NET_WORKTREE的逻辑 OR。
paranoid_rm 而关闭 fail_closed,会报告为 custom。
destructive_command_protection.overrides 中的单条规则条目会叠加在能力推导出的状态之上。灾难性规则始终强制执行,上述任何设置都无法将其禁用。
审计范围
all(默认值,也是未设置该变量时的行为)会同时记录允许和阻止的命令决策。blocked只记录拒绝,可减少日志中保留的数据。- 此设置永远不会抑制拒绝记录。
- 其他任何值都会回退为只记录拒绝,
doctor会将其报告为警告项environment.audit-scope-invalid。
调试输出
CC_SAFETY_NET_DEBUG 不会改变记录哪些决策。记录范围由 CC_SAFETY_NET_AUDIT_SCOPE 决定。在排查某条命令为何被允许或提交缺陷报告时,可以使用它。doctor 命令会报告它是否已设置。
配置目录覆盖
设置后,
policy.json 从 <path>/policy.json 读取,用户范围的 rulebook 配置从 <path>/rules/rule.json 读取,用户范围的每个 rulebook 从 <path>/rules/<rulebook-name>/rulebook.json 读取。它适用于沙箱或非标准 HOME,例如智能体运行时使用的主目录与你的 shell 不同。
该覆盖只影响用户范围。项目策略文件和项目 rulebook 配置按项目目录解析,不受影响。
CC_SAFETY_NET_HOME 不会改变审计日志的位置。审计根目录单独解析,推导方式见审计日志的布局。更新检查选择退出
rule doc 通常最多每 24 小时检查一次是否有新版本:它轮询 https://registry.npmjs.org/cc-safety-net/latest,把结果缓存到 $HOME/.cc-safety-net/update-check.json,并在存在更新版本时向 stderr 打印一行 UPDATE_AVAILABLE:。这次轮询是 CLI 在 rule doc 期间发出的唯一一个出站网络请求。
设置了 CC_SAFETY_NET_NO_UPDATE_CHECK 时,该检查会被完全跳过:不轮询 registry,不写缓存,也不会有 UPDATE_AVAILABLE: 行。它不影响 doctor 和仪表板运行的那个独立更新检查。
检查当前生效的配置
快速查看用status,完整报告用 doctor:
doctor 报告的 Environment 部分会列出每个变量、当前值、默认行为,以及正在使用的旧 SAFETY_NET_* 名称。两个命令的完整语法和输出见 CLI 命令。Claude Code 的概览指示器见状态行。