Skip to main content
秘密保护会阻止对可能包含凭据的文件进行读写,例如 SSH 密钥、.env 文件、云凭据存储和编码代理身份验证令牌。它在命令分析之前运行,并适用于所有安全级别。它会拒绝超出结构分析限制的输入。 本页列出了每个内置规则 ID、它匹配的内容及其默认状态。使用它来查找路径是否受保护以及哪个规则 ID 控制它。有关 secret_protection 架构,请参阅策略。有关防护流程,请参阅架构。有关命令示例,请参阅被阻止的命令 共有 132 条注册规则。大多数属于共享一个 ID 模式的生成族,因此下表列出了族及其 ID 形式,而不是每个 ID。除十条规则的编码 CLI 配置层外,所有规则默认开启。

运行位置

敏感路径保护是一个防护阶段,它在命令分析之前运行,涵盖支持的命令路径搜索 (grep/glob) 和补丁形式。对于 CC Safety Net 不识别的工具,它会检查命令候选提取和类路径值——而不会将该工具的任意文本视为 shell 命令。 匹配会以 hard_stop 意图拒绝并携带匹配的规则 ID,因此阻止消息审计日志会命名确切的规则。读取也会被阻止,而不仅仅是写入:cat .envstrings id_rsadd if=.env 都会被阻止。 将备用值赋值的扩展会将该备用值作为路径暴露,无论是未加引号还是双引号:cat "${X:=.env}"cat ${X=.env} 都会在 secret.basename.env 下被阻止。单引号文本保持不变,因此 cat '${X:=.env}' 不会阻止。

匹配顺序

每个候选路径都会按顺序经过以下检查。第一个匹配获胜;豁免仅适用于其后的规则。
  1. 配置的拒绝路径 — 在每个内置规则和每个豁免之前检查。命中归因于 secret.deny-path
  2. Env 模板豁免 — 模板基本名称保持可读;请参阅豁免
  3. 主目录规则 — 整个受保护的目录,例如 ~/.ssh。这些规则优先于公钥豁免,因此 ~/.ssh/id_rsa.pub 仍然会被阻止。
  4. 编码 CLI 规则 — 每个代理的凭据和配置路径。
  5. 公钥豁免id_rsa.pubid_ed25519.pubid_ecdsa.pub 在受保护目录之外不是秘密。
  6. 基本名称规则,然后是 .env.* 模式,然后是**密钥变体规则**。
  7. 供应商目录豁免 — 仅抑制剩余的两个族;请参阅豁免
  8. 广泛的 SSH 基本名称模式,然后是**扩展规则**。

基本名称规则

九条规则阻止任何目录中的精确基本名称。 两个值得了解的边界:
  • secret.basename.credentials 仅匹配精确名称 credentialscredentials.json 不匹配它——也不匹配任何其他内置规则。
  • 没有 id_dsa 基本名称规则。精确的 id_dsa 仍然会被阻止,通过下面的广泛模式 secret.pattern.ssh-key-basename
一条模式规则扩展了 .env 族:secret.pattern.env-variant 阻止所有以 .env. 开头的基本名称——.env.local.env.production.env.template.local——除了豁免模板

主目录规则

这些规则保护主目录下的位置:目录本身及其内部的所有内容。 这两个单文件规则 (kube-configdocker-config) 各有八条伴随规则,涵盖重命名的备份,ID 形式为 secret.home.<slug>.<suffix>:后缀是 bakbackupcopydisabledoldorigsavetmp。因此 ~/.kube/config.baksecret.home.kube-config.bak 下被阻止,~/.docker/config.json.oldsecret.home.docker-config.old 下被阻止。这总共是 16 条生成规则,整个族中有 23 条。

密钥变体规则

密钥和凭据文件的重命名保护副本是它们自己的族,由五个受保护的前缀构建:id_rsaid_dsaid_ed25519id_ecdsacredentials。每个 ID 中的 slug 是带有短划线的前缀 (id-rsacredentials 等)。
  • 分隔符变体secret.variant.<slug>.separator (5 条规则)。阻止前缀后跟 -_ 以及其后的任何内容:id_rsa-oldid_rsa_backupcredentials_prod
  • 点后缀变体secret.variant.<slug>.<suffix> (50 条规则)。阻止前缀后跟十个后缀中的一个:.bak.backup.copy.disabled.key.old.orig.pem.save.tmp。因此 id_rsa.baksecret.variant.id-rsa.bak 下被阻止,credentials.pemsecret.variant.credentials.pem 下被阻止。
该族是故意精确的,因此相似的名称会通过:id_rsafoo 不匹配任何分隔符,credentials.json 使用了列表之外的后缀。 一个广泛的模式结束了该族:secret.pattern.ssh-key-basename 阻止任何以 _rsa_dsa_ed25519_ecdsa 结尾的无扩展名基本名称——deploy_key_rsagithub_ed25519。包含点的名称永远不会匹配它。

扩展规则

二十一条 ID 形式为 secret.ext.<extension> 的规则阻止任何带有该扩展名的文件: .agilekeychain.asc.bek.cscfg.fve.gnucash.jks.keychain.kwallet.mdf.ovpn.p12.pcap.pem.pfx.pkcs12.psafe3.rdp.sdf.tblk.tpm 三条扩展模式规则涵盖扩展族: 覆盖必须使用族 ID——secret.ext-pattern.key,而不是 secret.ext.keypair。未注册的 ID 将被 unknown secret protection rule id "<id>" 拒绝。

编码 CLI 凭据层(默认开启)

九条规则保护受支持编码代理的凭据存储。与迄今为止的所有其他规则一样,只要启用秘密保护,它们就会开启。 Antigravity 没有凭据规则——它唯一的规则位于下面的配置层。

编码 CLI 配置层(默认关闭)

十条规则涵盖相同代理的设置和 MCP 配置文件。这些文件可以内联携带凭据,但代理也会将其作为日常工作进行编辑,因此此层默认关闭,每条规则都需要在 secret_protection.overrides 中明确设置为 "on" 才能激活。<project> 路径将匹配任何仓库根目录,一旦规则开启。

拒绝路径

secret_protection.deny_paths 添加您自己的受保护位置。命中是归因于 secret.deny-path 的硬停止——这是一个注册的 ID,因此任何覆盖都无法禁用它,并且本页上的任何豁免都不适用于它。拒绝路径仅在 secret_protection.enabledfalse 时停止应用,这会关闭整个阶段。接受的输入形式在策略中。

豁免

三项豁免限制了上述规则。它们都不能放宽已配置的拒绝路径。
  • **Env 模板。**精确的基本名称 .env.example.env.sample.env.template.env.defaults——加上任何以 .env.example..env.sample. 开头的名称——在每个内置规则之前都被豁免,即使在受保护的主目录中也是如此。前缀形式不会进一步扩展:.env.template.local 会像任何其他 .env.* 名称一样在 secret.pattern.env-variant 下被阻止。
  • 公钥。id_rsa.pubid_ed25519.pubid_ecdsa.pub 不是秘密且被豁免——但仅限于受保护主目录之外,这些目录会首先被检查。./id_rsa.pub 被允许;~/.ssh/id_rsa.pubsecret.home.ssh 下被阻止。
  • **供应商目录。**当任何路径段是 node_modules__pycache__,或者出现相邻的 vendor/bundlevendor/cache 对时,只有两个族被抑制:扩展规则(普通和模式)和广泛的 secret.pattern.ssh-key-basename 规则。所有其他规则仍然适用于那里——node_modules/x/.envnode_modules/x/id_rsa 照常被阻止。.git 不在跳过集中。

配置

所有配置都位于 policy.json 中:
  • secret_protection.enabled: false 会关闭整个阶段——包括内置规则和拒绝路径。
  • secret_protection.overrides 通过注册 ID 设置每条规则的状态:"off" 禁用默认开启的规则;"on" 启用配置层规则。
  • secret_protection.deny_paths 添加您自己的受保护位置。
允许路径和任何标准模式的允许都不会放松秘密保护。在严格模式下,这些路径的仅元数据发现(test -f ~/.ssh/id_rsafind ~/.ssh -type f)也会被阻止。仪表板通过 UI 编辑相同的设置。
秘密保护是一个有界模式集,而不是通用的读取边界。文件中没有规则识别的凭据不受保护——有关该边界,请参阅与沙盒,有关层级注意事项,请参阅已知限制。秘密脱敏——从日志和阻止消息中清除凭据值——是一种单独的机制,记录在审计日志参考安全模型中。
最后修改于 2026年8月12日