跳转到主要内容
CC Safety Net 从 policy.json、rule.json 以及本页列出的 CC_SAFETY_NET_* 环境变量读取设置。请在启动智能体之前,在 shell 或智能体的启动环境中设置这些变量。环境变量可以提高安全级别,但绝不会降低它。 在表格注明之处,不带 CC_ 前缀的旧 SAFETY_NET_* 名称仍然可用。各级别阻止的内容见模式,策略文件见策略。

配置存放位置

项目路径相对于智能体会话运行所在的目录,参见配置工作目录。 当智能体运行时使用的主目录与你的 shell 不同时(例如在沙箱中),CC_SAFETY_NET_HOME 就派上用场。它只移动用户范围,项目文件始终按项目解析。它也不移动审计日志,审计日志的移动方法见审计日志。 CC Safety Net 只保护 policy.json 不被智能体修改。rule.json 和 rulebook 是普通文件,智能体可以编辑。

安全级别

每个预设开启三项能力中的若干项:fail_closed、paranoid_rm 和 paranoid_interpreters。各项能力阻止什么,见模式。 其他任何值都会被忽略,级别沿用 policy.json 中的设置,并且 stderr 上始终会打印以下警告:
空值视为未设置,不打印警告。

能力开关

这些旧版单项能力开关只能开启对应能力,假值不会关闭它。如需把能力关到预设以下,请在 policy.json 中使用 safety.overrides。 开关设为 1 或 true(不区分大小写)即为开启。设置了 CC_SAFETY_NET_* 名称时以它为准;只有带前缀的名称不存在时,CC Safety Net 才读取 SAFETY_NET_* 别名。

优先级

CC Safety Net 按固定顺序组合策略和环境:
  1. 预设。 policy.json 中的 safety.level 提供继承的能力默认值。该字段不存在时,预设为 standard。
  2. CC_SAFETY_NET_LEVEL。 生效基础级别取策略级别与环境级别中较高的一个。环境可以提高级别,但绝不会降低。
  3. safety.overrides.*。 接着,policy.json 中显式的能力覆盖可以把 fail_closed、paranoid_rm 或 paranoid_interpreters 设为 true 或 false。
  4. 能力开关。 CC Safety Net 最后应用 CC_SAFETY_NET_STRICT、CC_SAFETY_NET_PARANOID、CC_SAFETY_NET_PARANOID_RM 和 CC_SAFETY_NET_PARANOID_INTERPRETERS。这些开关是单调的:每个都只会把对应能力强制设为 true,没有一个能关闭能力。
  5. Worktree 模式是 workflow.worktree_mode 与 CC_SAFETY_NET_WORKTREE 的逻辑 OR。
报告的生效级别由最终的能力值推导而来。不匹配任何预设的组合报告为 custom,例如开启 paranoid_rm 而关闭 fail_closed。 destructive_command_protection.overrides 中的单条规则条目叠加在能力设定的状态之上。灾难性规则始终生效,上述任何设置都无法关闭它们。

项目策略的削弱

不设置该开关时,项目的 safety.overrides 条目可以关闭 CC_SAFETY_NET_LEVEL 开启的能力,因为覆盖在级别之后应用(上面的第 3 步)。能力开关最后应用,因此项目文件无法关闭它们。该开关丢弃哪些字段,见忽略项目策略的削弱。

审计范围

审计日志始终记录拒绝。无效值的行为见审计范围。

调试输出

排查某条命令为何被允许,或提交缺陷报告时可以使用它。它不会改变审计日志记录的内容。

关闭更新检查

它不影响 doctor 和仪表板运行的更新检查。打印的提示见 rule doc 更新提示。

检查当前生效的配置

status 显示生效级别和存在的问题。doctor 的 Environment 部分列出每个变量、它的值,以及正在使用的旧 SAFETY_NET_* 名称。
最后修改于 2026年10月22日