Skip to main content
policy 检查并应用策略提案,即写有你想要的策略设置的 JSON 文件。policy check 校验提案并打印它会带来的改动。policy apply 在你于终端中确认后写入提案,只有人才能运行它。
策略文件包含哪些字段、各字段的作用,见策略。

policy 子命令和选项

policy 写入哪个文件

policy 写入项目中的 .cc-safety-net/policy.json。带 --global 时改为写入你的用户策略文件。 不带 --global 时,两个子命令都不会在存放用户 .cc-safety-net/ 的目录下运行,因为用户配置目录不是项目。它们打印以下错误并退出 1:

policy 差异报告

在 apply 写入任何内容之前,两个子命令都会打印相同的报告:
带 --global 时,第一行为 Scope: user (<path>)。没有任何改动时,差异只有一行 No changes.。某一侧没有值时显示为 (unset)。check 打印完差异就结束,退出 0。

项目范围差异比较的内容

项目范围下,差异比较的是改动前后的生效策略。生效策略由用户策略与项目文件合并而成,因此差异显示的是会话实际运行的级别,而不是文件本身的内容。提案不设置 safety.level 时,级别恢复为从用户策略继承的值。用户范围下,差异比较的是用户策略文件本身,不打印 Effective policy 标题。

policy 报错

未知选项或子命令、缺少文件、多余的参数,都会在打印差异之前向 stderr 打印错误并退出 1。审计设置只属于用户范围,因此含 audit 段的项目提案同样会失败:

用 policy apply 应用策略

apply 要求 stdin 和 stdout 都是交互式终端。否则它打印需要你自己运行的命令(你传了 --global 时也会带上),并退出 1。
在终端中,apply 会询问 Apply this policy to <path>? [y/N] 。
  • 只有 y 或 yes(不区分大小写)算确认。确认后写入文件,打印 Policy applied: <path>,并退出 0。
  • 其他任何回答或输入结束都视为拒绝。拒绝时打印 Cancelled; nothing was written. 并退出 0。
应用到项目时只写入提案设置的字段,提案未设置的字段继续从用户策略继承。
没有 --yes,也没有非交互模式。应用提案的唯一方式,就是在终端里回答这个提示。

智能体不能运行 policy apply

智能体运行 policy apply 时,CC Safety Net 会以固定 ID guard.policy-apply 阻止它。policy check 仍然允许,因此智能体可以起草提案并把差异展示给你。参见智能体运行 cc-safety-net policy apply。
最后修改于 2026年10月22日