Trust boundary
主境界:command source から execution environment
中心的な trust boundary は、AI コーディングエージェントと host shell の間にあります。CC Safety Net が gatekeeper です。- 信頼できない側:AI エージェントが生成する command string。エージェントは prompt injection、混乱した context、敵対的 instruction によって破壊的コマンドを生成する可能性があるため、潜在的に hostile として扱います。
- 実行側:command を実行する host shell。
副境界
4 つの副境界は、外部 source から CC Safety Net 内に入ります。各 source は analysis に影響する前に validate します。各 safety level の保証
Standard、strict、paranoid は、fail_closed、paranoid_rm、paranoid_interpreters の 3 capability に default を与える preset です。保証は level ごとに異なります。
secret protection が有効な間、safety level は一致した sensitive content access または user-configured deny path とその子孫を緩和しません。Catastrophic protection は常に適用します。root または user home directory の recursive deletion、protected Git metadata の destructive change、canonical user
policy.json の destructive change が含まれます。
Configuration recovery boundary
Configuration は trust boundary であり kill switch ではありません。無効な configuration は 2 つの runtime state のいずれかになり、無効であることだけを理由に通常作業を拒否しません。ready:すべての active source を validate 済み。degraded:candidate source を拒否し、代わりに安全なものを適用。検証不能な rule source は drop されて rule を提供しない。drift したか無効な local rulebook は digest-verified cache を維持する。duplicate rulebook name は最初の claim を維持する。読み取れない policy file は salvage した policy または built-in protective default に fallback する。
rule.json を無視すると、その overrides が無効にした built-in が復元されます。1 つの例外は scope が限定され、文書化されています。transparent_wrappers は rule.json にあるため、読み取れない rule.json は、その scope で built-in analysis が展開する wrapped command を減らします。設定できないことを理由に何も deny しないため、代わりに command または path を allowlist することはありません。
Policy-file protection と Git-metadata protection は configuration snapshot の読み込み前に評価するため、両 state に同じように適用され、configuration metadata を持ちません。
すべての failure row、それが生成する fallback、recovery command という完全な contract は設定の復旧にあります。
Fail-closed enforcement
Fail-closed は、analysis 自身を完了できない場合のその 1 回のツール呼び出しに適用します。予期しない analyzer failure、parse できない input、resource limit 到達が該当します。無効な configuration の動作を示すものではありません。1
Hook の entry point
hook adapter は analysis call を try/catch で囲みます。analysis が throw すると、command を続行させず、“failed closed” reason の deny decision を出力します。これはすべての stdin-based hook agent(Antigravity CLI、Claude Code、Cursor、Gemini CLI、GitHub Copilot CLI、Kimi Code)に適用します。
2
Plugin と extension の entry point
Amp Code、OpenCode、OpenClaw、Pi の process 内連携は同じ pattern を使います。analysis error を捕捉し、block message として再表示するため、platform は denied command として扱います。Codex は plugin として install されますが、共有 stdin hook entry point を実行するため、上の step に含まれます。Hermes Agent は両方を重ねます。管理対象 Python plugin が同じ stdin hook(
cc-safety-net hook --hermes-agent)を呼び出し、analysis を完了できない場合は plugin 自身が call を block します。missing npx、解決できない working directory または Hermes session record、spawn failure、30 秒の timeout、non-zero analyzer exit、読み取れない output が対象です。各 agent の model は連携アーキテクチャを参照してください。3
形式が不正または大きすぎる tool input
信頼できない recursive tool input は、64 object level、10,000 visited value、10,000 own key、string ごとに 1 MiB、aggregate string data 4 MiB に制限します。hook stdin は raw byte 8 MiB が上限です。いずれかの boundary を超えると call を deny します。
4
Parser resource の枯渇
131,072 UTF-16 code unit を超える input、16,384 を超える word、64 level を超える nesting は、不完全に解析せず deny します。別の 16,384 derived token budget は、initial parse 後に nested / embedded command が追加する作業を制限します。Parser と runtime dependency surfaceを参照してください。どちらも standard を含むすべての safety level に適用します。
5
Strict mode の動作
Strict modeは、shell parser が安全に tokenize できない command まで fail-closed を拡張します。このため unparseable input を通さず block します。Standard mode は安全に見える unparseable text を許可します。
無効な configuration は意図的にこの一覧に含めません。拒否した rule source は drop し、読み取れない policy file は protective default に fallback するため、通常作業を続行できます。上記の Configuration recovery boundary を参照してください。
Secret redaction
command または segment text は、audit log への書き込みまたはエージェントへの返却前に、自動 secret redaction を通ります。redactor は PEM private key、database URL environment variable、一般的な secret-bearing env assignment、一般的な secret HTTP header、URL credential、presigned-URL signature query parameter(x-amz-signature、x-goog-signature、sig、signature)、既知の provider token prefix(GitHub、Slack、npm、Stripe、PyPI)、JWT、AWS access key ID を削除します。一致した各 value は <redacted> に置き換えます。
Redaction は保守的な pattern-based 処理です。command argument に現れた secret の漏えい risk を減らしますが、認識済み credential shape に限定されます。absolute filesystem path、project / directory name、hostname、IP address、username、pattern list にない形式の credential はそのまま保持します。新しい secret format は定期的に現れるため、エージェントが実行する command に実際の credential を pipe しないでください。完全な redaction scope は監査ログのリファレンスを参照してください。
同じ制限が cc-safety-net explain にも適用されます。実際の trace は、指定した command text、parsed token、home directory を含む absolute path を保持します。貼り付ける前に trace を確認してください。Explain traceを参照してください。
Attack surface
threat model は、主な attack surface と mitigation を列挙します。
network-level attack と agent platform 自身への attack は範囲外です。CC Safety Net は command analysis 中に network request を行わず、network layer を持ちません。resource exhaustion は containment ではなく bound で処理します。parser または tool-input limit を超える input は、不完全に解析せず deny します。
開示分類
セキュリティポリシーに完全な報告手順があります。次の表で report type を選択します。
coverage gap では command shape だけを報告してください。すぐに貼り付けて使える weaponized prompt-injection payload を含めないでください。両 submission channel はセキュリティポリシーを参照してください。
関連ページ
- セキュリティポリシー:bug または vulnerability の報告方法。
- 設定の復旧:完全な
ready/degradedcontract。 - 設計原則:fail-closed と semantic analysis の理由。
- 既知の制限:symlink TOCTOU window などの residual risk。
- 監査ログ:redacted command record の書き込み場所。