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 当设置为 1true(不区分大小写)时,布尔标志为 true。当设置 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的逻辑或。
报告的有效级别根据最终的三项能力组合得出。不匹配任何预设的组合(例如 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 命令报告是否已设置。

配置目录覆盖

设置后,从 <path>/policy.json 读取 policy.json,从 <path>/rules/ 读取用户范围的 rulebook 配置,并从同一目录树读取 rulebook lock 和缓存。这适用于沙箱或非标准 HOME 设置,例如智能体使用与 shell 不同的主目录运行时。
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 时,将完全跳过检查:没有注册表轮询,没有缓存写入,也没有 UPDATE_AVAILABLE: 行。它不会影响 doctor 和仪表板运行的单独更新检查。

检查你的活动配置

运行 status 进行快速检查,或运行 doctor 获取完整报告:
doctor 报告的 Environment 部分列出每个变量、变量值、默认行为,以及正在使用的旧 SAFETY_NET_* 名称。两个命令的完整语法和输出见 CLI 命令;Claude Code 中的概览指示器见状态行
最后修改于 2026年8月12日