Skip to main content
CC Safety Net 从 policy.json 和环境变量读取配置。模式开关使用 CC_SAFETY_NET_* 前缀;在注明之处,不带 CC_ 前缀的旧 SAFETY_NET_* 名称仍作为旧别名保留。请在启动智能体之前,在 shell 或智能体的启动环境中设置这些变量。 本页列出各变量,并说明它们如何与 policy.json 组合。各级别阻止的内容见模式,策略文件的完整约定见策略

安全级别

这三个预设展开为同样的三项能力:fail_closedparanoid_rmparanoid_interpreters。每个预设阻止什么、每项能力改变什么,见模式 standardstrictparanoid 以外的任何值都会被忽略,policy.json 中配置的级别保持不变。被拒绝的值始终会输出到 stderr,无需任何调试标志:
报告出来的值会截断为前 40 个字符。空值视为未设置,不会产生警告。

能力开关

这些是旧版的单项能力标志。每个标志都只能开启对应能力,假值不会将其关闭。如需关闭预设已启用的能力,请在 policy.json 中使用 safety.overrides 本表中的其他标志都只能收紧保护,只有 CC_SAFETY_NET_WORKTREE 例外:它启用 worktree 模式,在已确认的 linked worktree 内放宽本地丢弃类的 Git 规则。 布尔标志设为 1true(不区分大小写)时视为真。设置了 CC_SAFETY_NET_* 名称时以它为准;只有在带前缀的名称不存在时,才会读取 SAFETY_NET_* 别名。

优先级

策略和环境按固定顺序组合:
  1. 预设。 policy.json 中的 safety.level 提供继承而来的能力默认值。该字段不存在时,预设为 standard
  2. CC_SAFETY_NET_LEVEL 有效基础级别取策略级别与环境级别中较高的一个。环境可以提高级别,但绝不会降低。
  3. safety.overrides.* 接着,policy.json 中显式的能力覆盖会开启或关闭 fail_closedparanoid_rmparanoid_interpreters
  4. 能力开关。 CC_SAFETY_NET_STRICTCC_SAFETY_NET_PARANOIDCC_SAFETY_NET_PARANOID_RMCC_SAFETY_NET_PARANOID_INTERPRETERS 这几个标志最后应用,而且是单调的:每个标志只会把对应能力强制为 true,没有一个能关闭能力。
  5. worktree 模式workflow.worktree_modeCC_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 的概览指示器见状态行
最后修改于 2026年8月31日