信任边界
主边界:命令来源到执行环境
核心信任边界位于 AI 编码智能体和主机 shell 之间。CC Safety Net 是此边界的门卫。- 不可信侧:AI 智能体生成的命令字符串。这些字符串可能有敌意,因为提示注入、上下文混淆或对抗性指令可能操纵智能体,使其生成破坏性命令。
- 执行侧:命令原本会在其中执行的主机 shell。
次级边界
四个次级边界从外部来源进入 CC Safety Net。每个来源都必须先验证,才能影响分析。各安全级别的保证
Standard、strict 和 paranoid 是三个 preset,为fail_closed、paranoid_rm 和 paranoid_interpreters 三项能力提供默认值。各级别的保证不同。
启用机密保护时,安全级别不会放宽已匹配敏感内容的访问,也不会放宽用户配置的 deny path 及其后代。灾难性保护始终执行,包括递归删除根目录或用户主目录、破坏性更改受保护 Git 元数据,以及破坏性更改规范用户
policy.json。
配置恢复边界
配置是信任边界,不是 kill switch。无效配置会解析为两种运行时状态之一,且绝不会仅因无效而拒绝普通工作。ready:每个活动来源都已通过验证。degraded:一个候选来源被拒绝,并由安全内容替代:无法验证的规则来源被丢弃,不提供任何规则;发生 drift 或无效的本地 rulebook 继续使用通过 digest 验证的缓存;重复 rulebook 名保留第一次声明;无法读取的策略文件回退到可挽救的策略或内置保护默认值。
rule.json 会恢复其中 overrides 原本禁用的内置规则。一个例外有明确范围和记录:transparent_wrappers 位于 rule.json,因此无法读取某个作用域的 rule.json 会减少该作用域内置分析可以展开的包装命令。系统不会因此 allowlist 任何命令或路径,因为配置失败本身不造成拒绝。
策略文件保护和 Git 元数据保护在加载配置快照之前评估,因此它们在两种状态下完全相同,并且不带配置元数据。
每种失败、对应 fallback 和恢复命令的完整约定见配置恢复。
Fail-closed 执行
当分析自身无法完成时,fail-closed 适用于该次工具调用,例如分析器意外失败、输入无法解析或达到资源限制。它不描述无效配置的处理方式。1
Hook 入口点
Hook 适配器用 try/catch 包装分析调用。如果分析抛出错误,hook 会发出含 “failed closed” 原因的 deny 判定,而不会让命令继续。所有基于 stdin hook 的智能体都适用:Antigravity CLI、Claude Code、Cursor、Gemini CLI、GitHub Copilot CLI 和 Kimi Code。
2
插件和扩展入口点
Amp Code、OpenCode、OpenClaw 和 Pi 进程内集成使用相同模式:捕获分析错误并再次作为阻止消息返回,使平台把命令视为已拒绝。Codex 以插件安装,但运行共享 stdin hook 入口点,因此属于上一步。Hermes Agent 叠加两层:其托管 Python 插件调用相同 stdin hook(
cc-safety-net hook --hermes-agent),并在分析无法完成时自行阻止,包括缺少 npx、无法解析工作目录或 Hermes 会话记录、spawn 失败、30 秒超时、非零分析器退出码,或无法读取输出。各智能体使用的模型见集成架构。3
格式错误或超大的工具输入
不可信递归工具输入限制为 64 个对象层级、10,000 个已访问值、10,000 个 own key、每个字符串 1 MiB,以及字符串数据总计 4 MiB。Hook stdin 原始字节上限为 8 MiB。超过任何边界都会拒绝调用。
4
解析器资源耗尽
输入超过 131,072 个 UTF-16 code unit、超过 16,384 个 word,或嵌套超过 64 层时,会被拒绝,而不会进行不完整分析。另有 16,384 个 derived token 的预算,用于限制初次解析后嵌套和内嵌命令增加的工作量,见解析器和运行时依赖面。两种限制都适用于每个安全级别,包括 standard。
5
Strict 模式
Strict 模式把 fail-closed 扩展到 shell 解析器无法安全 tokenize 的命令,因此无法解析的输入会被阻止,而不是通过。Standard 模式允许看似安全但无法解析的文本。
无效配置明确不在此列表中。被拒绝的规则来源会被丢弃,无法读取的策略文件会回退到保护默认值,因此普通工作继续。见配置恢复边界。
机密遮盖
任何命令或段文本写入审计日志或返回智能体之前,都会经过自动机密遮盖。遮盖器会清除 PEM 私钥、数据库 URL 环境变量、常见含机密 env assignment、常见机密 HTTP header、URL 凭证、预签名 URL 签名查询参数(x-amz-signature、x-goog-signature、sig、signature)、已知服务商 token 前缀(GitHub、Slack、npm、Stripe、PyPI),以及 JWT 和 AWS access key ID。每个匹配值替换为 <redacted>。
遮盖采用保守的模式匹配。它降低命令参数中机密泄漏的风险,但只限于已识别的凭证形式。绝对文件系统路径、项目和目录名、主机名、IP 地址、用户名,以及不在模式列表中的凭证格式都会原样保留。新机密格式会不断出现,因此不要通过智能体运行的命令传递真实凭证。完整范围见审计日志参考。
相同边界适用于 cc-safety-net explain:真实跟踪包含你提供的命令文本、解析后的 token 和绝对路径,包括主目录。粘贴跟踪前先检查。见Explain 跟踪。
攻击面
威胁模型列出主要攻击面和缓解措施。
网络级攻击和对智能体平台自身的攻击不在范围内。CC Safety Net 在命令分析期间不发出网络请求,也没有网络层。资源耗尽由边界处理,而不是由隔离缓解:超过解析器或工具输入限制的输入会被拒绝,而不会进行不完整分析。
披露分类
安全策略定义完整报告流程。使用下表选择报告类型。
报告覆盖缺口时只报告命令形式。不要包含可直接粘贴的武器化提示注入 payload。两种提交渠道见安全策略。