Skip to main content
CC Safety Net は、AI コーディングエージェントなどの信頼できない command source と execution environment の間にあります。このページでは、trust boundary、safety-level guarantee、configuration failure handling、secret protection、attack surface を説明します。脆弱性の報告はセキュリティポリシーを参照してください。 CC Safety Net は、対応するコーディングエージェントのツール呼び出しに対する best-effort の静的な実行前ポリシーゲートです。OS sandbox、privilege boundary、インストール済み連携を回避する command に対する保護ではありません。

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。
対応 platform の shell tool に到達する各 command は、実行を許可する前に analysis engine を通ります。analysis が block reason を返すと、command を拒否します。 境界は、対応する tool name と shape で終わります。adapter が command-execution capability を与えるのは、連携ごとに定めた正確な tool name だけです。unknown tool は保守的な policy-file、Git-metadata、sensitive-path inspection を受けますが、その text を shell command として扱いません。インストール済み連携を完全に回避する command は境界外です。

副境界

4 つの副境界は、外部 source から CC Safety Net 内に入ります。各 source は analysis に影響する前に validate します。

各 safety level の保証

Standard、strict、paranoid は、fail_closedparanoid_rmparanoid_interpreters の 3 capability に default を与える preset です。保証は level ごとに異なります。
Standard mode は adversarial-grade ではありません。dynamic rm -rf target は standard で一律に block されません。rm -rf "$target" は standard では allow され、strict または paranoid だけで block されます。command が prompt injection または他の adversarial context から来る可能性がある場合、strict または paranoid が必要です。
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 する。
拒否した candidate を active として扱うことはありません。source を drop すると、その source が提供した denial がなくなります。これは設定した policy と比べて実際の enforcement reduction であり、security-neutral とせず、すべての surface で報告します。ただし drop で built-in rule を弱めることはできません。rulebook は blocking rule だけを提供し、読み取れない rule.json を無視すると、その overrides が無効にした built-in が復元されます。1 つの例外は scope が限定され、文書化されています。transparent_wrappersrule.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-signaturex-goog-signaturesigsignature)、既知の 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 はセキュリティポリシーを参照してください。

関連ページ

最終更新日 2026年8月12日