Skip to main content
CC Safety Net 位于不可信命令来源(例如 AI 编码智能体)与执行环境之间。本页说明信任边界、安全级别保证、配置失败处理、机密保护和攻击面。如需报告漏洞,请参阅安全策略 CC Safety Net 是针对受支持编码智能体工具调用的尽力型静态执行前策略门。它不是操作系统沙箱、权限边界,也不能保护绕过已安装集成的命令。

信任边界

主边界:命令来源到执行环境

核心信任边界位于 AI 编码智能体和主机 shell 之间。CC Safety Net 是此边界的门卫。
  • 不可信侧:AI 智能体生成的命令字符串。这些字符串可能有敌意,因为提示注入、上下文混淆或对抗性指令可能操纵智能体,使其生成破坏性命令。
  • 执行侧:命令原本会在其中执行的主机 shell。
在受支持平台上,每条到达 shell 工具的命令都先经过分析引擎。分析返回阻止原因时,命令会被拒绝。 此边界止于受支持的工具名和形式。适配器仅向准确的集成专用工具名授予命令执行能力。未知工具仍接受保守的策略文件、Git 元数据和敏感路径检查,但其文本不会被当作 shell 命令。完全绕过已安装集成的命令位于边界之外。

次级边界

四个次级边界从外部来源进入 CC Safety Net。每个来源都必须先验证,才能影响分析。

各安全级别的保证

Standard、strict 和 paranoid 是三个 preset,为 fail_closedparanoid_rmparanoid_interpreters 三项能力提供默认值。各级别的保证不同。
Standard 模式不具备对抗级能力。它不会一律阻止动态 rm -rf 目标。rm -rf "$target" 在 standard 中允许,只有 strict 或 paranoid 会阻止。当命令可能来自提示注入或其他对抗性上下文时,必须使用 strict 或 paranoid。
启用机密保护时,安全级别不会放宽已匹配敏感内容的访问,也不会放宽用户配置的 deny path 及其后代。灾难性保护始终执行,包括递归删除根目录或用户主目录、破坏性更改受保护 Git 元数据,以及破坏性更改规范用户 policy.json

配置恢复边界

配置是信任边界,不是 kill switch。无效配置会解析为两种运行时状态之一,且绝不会仅因无效而拒绝普通工作
  • ready:每个活动来源都已通过验证。
  • degraded:一个候选来源被拒绝,并由安全内容替代:无法验证的规则来源被丢弃,不提供任何规则;发生 drift 或无效的本地 rulebook 继续使用通过 digest 验证的缓存;重复 rulebook 名保留第一次声明;无法读取的策略文件回退到可挽救的策略或内置保护默认值。
被拒绝的候选来源绝不会当作活动来源。丢弃来源会删除该来源提供的拒绝,因此相对你的配置策略确实降低执行力度。所有界面都会报告这种降低,而不会把它呈现为安全中性。丢弃来源不能削弱内置规则: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-signaturex-goog-signaturesigsignature)、已知服务商 token 前缀(GitHub、Slack、npm、Stripe、PyPI),以及 JWT 和 AWS access key ID。每个匹配值替换为 <redacted> 遮盖采用保守的模式匹配。它降低命令参数中机密泄漏的风险,但只限于已识别的凭证形式。绝对文件系统路径、项目和目录名、主机名、IP 地址、用户名,以及不在模式列表中的凭证格式都会原样保留。新机密格式会不断出现,因此不要通过智能体运行的命令传递真实凭证。完整范围见审计日志参考 相同边界适用于 cc-safety-net explain:真实跟踪包含你提供的命令文本、解析后的 token 和绝对路径,包括主目录。粘贴跟踪前先检查。见Explain 跟踪

攻击面

威胁模型列出主要攻击面和缓解措施。 网络级攻击和对智能体平台自身的攻击不在范围内。CC Safety Net 在命令分析期间不发出网络请求,也没有网络层。资源耗尽由边界处理,而不是由隔离缓解:超过解析器或工具输入限制的输入会被拒绝,而不会进行不完整分析。

披露分类

安全策略定义完整报告流程。使用下表选择报告类型。 报告覆盖缺口时只报告命令形式。不要包含可直接粘贴的武器化提示注入 payload。两种提交渠道见安全策略

相关页面

最后修改于 2026年8月12日