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 按固定顺序组合策略和环境:- 预设。
policy.json中的safety.level提供继承的能力默认值。该字段不存在时,预设为standard。 CC_SAFETY_NET_LEVEL。 生效基础级别取策略级别与环境级别中较高的一个。环境可以提高级别,但绝不会降低。safety.overrides.*。 接着,policy.json中显式的能力覆盖可以把fail_closed、paranoid_rm或paranoid_interpreters设为true或false。- 能力开关。 CC Safety Net 最后应用
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。
custom,例如开启 paranoid_rm 而关闭 fail_closed。
destructive_command_protection.overrides 中的单条规则条目叠加在能力设定的状态之上。灾难性规则始终生效,上述任何设置都无法关闭它们。
项目策略的削弱
不设置该开关时,项目的
safety.overrides 条目可以关闭 CC_SAFETY_NET_LEVEL 开启的能力,因为覆盖在级别之后应用(上面的第 3 步)。能力开关最后应用,因此项目文件无法关闭它们。该开关丢弃哪些字段,见忽略项目策略的削弱。
审计范围
审计日志始终记录拒绝。无效值的行为见审计范围。
调试输出
排查某条命令为何被允许,或提交缺陷报告时可以使用它。它不会改变审计日志记录的内容。
关闭更新检查
它不影响
doctor 和仪表板运行的更新检查。打印的提示见 rule doc 更新提示。
检查当前生效的配置
status 显示生效级别和存在的问题。doctor 的 Environment 部分列出每个变量、它的值,以及正在使用的旧 SAFETY_NET_* 名称。