メインコンテンツへスキップ
CC Safety Net は、対応するコーディングエージェントのツール呼び出しを静的に検査する実行前フックです。検査は可能な範囲で行うもので、完全ではありません。認識できる破壊的コマンドとシークレットの読み取りを、実行前に止めます。OS のサンドボックスでも権限境界でもなく、インストール済みの連携を迂回するコマンドも守れません。

CC Safety Net が守るもの

CC Safety Net は、エージェントが生成するコマンドをすべて信頼できないものとして扱います。プロンプトインジェクション、混乱したコンテキスト、敵対的な指示によって、エージェントが破壊的なコマンドを出すことがあるためです。そこでフックは、対応するツール呼び出しをホストが実行する前に 1 つずつ検査し、ブロックの理由が見つかれば拒否します。 どこまで検査するかはツールによって異なります。
  • 連携自身のシェルツールは、設定した安全レベルでコマンド全体を解析します。
  • command_tools で宣言したツールは、空でない文字列の command を含む呼び出しにかぎり、組み込みのシェルツールと同じように解析します。
  • それ以外のツールには、ポリシーファイル、Git メタデータ、機密パスの検査だけを行います。その内容をシェルコマンドとして扱うことはありません。
  • インストール済みの連携を経由しないコマンドは、まったく検査されません。
安全レベルによって、解析で捕捉できる範囲が変わります。各レベルの比較はどの安全レベルを使うべきかを参照してください。
standard モードは敵対的な入力に耐える水準ではありません。rm -rf "$target" のような動的な rm -rf の対象を、standard は許可します。ブロックするのは strict と paranoid です。コマンドがプロンプトインジェクションなど敵対的な文脈から来るおそれがある場合は、strict か paranoid を使ってください。
どのレベルやポリシー設定でも、致命的なルールは無効にできません。対象は / やホームディレクトリの再帰削除です。Git メタデータと policy.json の保護も同様です。シークレット保護が有効な間は、認識済みのシークレットファイルの内容の読み取りと、deny_paths に指定したパスの読み取りを、どのレベルでも緩められません。

CC Safety Net が信頼するもの

フックの外から入ってきて、強制の内容を変えうる入力は 3 つあります。CC Safety Net は、どれも反映する前に検証します。 設定が無効だというだけで、通常の作業が拒否されることはありません。CC Safety Net は拒否した設定元を破棄し、ランタイムを degraded として報告します。ルールブックを破棄するとその拒否もなくなるため、直すまでは、そのルールブックがブロックしていたコマンドが再び実行できるようになります。失敗の種類とそのフォールバックの一覧は設定の復旧を参照してください。

解析に失敗したときの動作

1 つのツール呼び出しの解析を完了できない場合、CC Safety Net はその呼び出しを実行させず、拒否します。
  • アナライザーの想定外のエラーでは、「failed closed」の理由で拒否します。
  • 不正なフック入力や、解析できないほど大きい、または深くネストしたコマンドは、standard を含むどの安全レベルでも拒否します。解析の上限に達したコマンドには、単純にするか分割するようエージェントに伝える理由が付きます。
  • strict と paranoid は、パーサーが読めないコマンドも拒否します。standard は、パースできなくても安全に見えるテキストを通し、破壊的パターンのスキャンは引き続き行います。
これが効くのは、ホストが拒否を受け入れる場合です。Grok Build、Factory Droid、Devin CLI は設計上フェイルオープンのため、フックがクラッシュする、タイムアウトする、何も出力しない場合、その呼び出しは実行されます。各ホストの挙動は既知の制限にまとめています。

マスク処理で隠れるものと残るもの

コマンドのテキストを監査ログに書き込む前と、拒否メッセージで返す前に、CC Safety Net は認識できる資格情報を <redacted> に置き換えます。対象は、秘密鍵、URL 内の資格情報、シークレットを含む環境変数への代入と HTTP ヘッダー、署名付き URL の署名、JWT、AWS のアクセスキー ID、既知のトークン接頭辞です。全一覧は監査ログのリファレンスにあります。 マスク処理が一致するのは、既知の資格情報の形式だけです。絶対パス、プロジェクト名やディレクトリ名、ホスト名、IP アドレス、ユーザー名、一覧にない形式の資格情報はそのまま残ります。エージェントが実行するコマンドに本物の資格情報を渡さないでください。explain と doctor の出力にも同じ生のテキストが含まれるため、共有する前に内容を確認してください。トレースを共有する前にを参照してください。

攻撃者が突破を試みうる経路

ネットワーク経由の攻撃、エージェントのプラットフォーム自体への攻撃、検査から実行までの間に差し替えられたシンボリックリンクは、実行前フックでは止められません。保護の対象外を参照してください。

関連ページ

最終更新日 2026年10月22日