Skip to main content
現在、多くのコーディングエージェント CLI は、ファイルシステムとネットワークを分離する OS レベルのサンドボックスを提供またはサポートしています。サンドボックスは広範な封じ込めです。各コマンドの意味を把握せずに、プロセスがアクセスできる範囲を制限します。CC Safety Net は意味に基づく上限付きのインターセプトです。対応するツール呼び出しの意味を読み取り、対象の場所に関係なく、破壊的な呼び出しを実行前に拒否します。両者は異なる脅威から保護します。併用すると、最も完全な保護を得られます。

OS サンドボックスの仕組み

サンドボックスの実装はプラットフォームによって異なります。しかし、その多くは同じ OS プリミティブ(macOS の Seatbelt と Linux の bubblewrap)を使い、同じ既定の姿勢を取ります。読み取りは広く許可し、書き込みは作業ディレクトリと一時ディレクトリに制限し、ネットワークアクセスは制限するか既定で無効にします。各実装は、2 つの制御も分離します。サンドボックスはアクセス可能な対象を制限する技術的境界です。承認ポリシーは、エージェントが操作前に確認を求める必要がある場合を決めます。

異なる保護レイヤー

コーディングエージェント用サンドボックスの限界

サンドボックスは書き込み可能な場所を制限します。しかし、その境界の操作が破壊的かどうかは理解しません。次のコマンドはすべてサンドボックスで許可されます。現在の作業ディレクトリ内に書き込むか、サンドボックスが許可したファイルを読み取るか、許可されたリモートへアクセスするためです。
これらのコマンドを自動実行するか確認を要求するかは、エージェントのサンドボックスモードと承認ポリシーによって決まります。git push --force などのネットワーク依存コマンドは、許可ドメインの設定にも依存します。
サンドボックスは git reset --hard を安全な操作とみなします。このコマンドは現在のディレクトリ内のファイルのみを変更するためです。しかし、コーディングエージェントは未コミットの作業をすべて破棄します。
OS から見ると、これらのコマンドは完全に正当です。許可されたパスに書き込むか、サンドボックスが許可したファイルを読み取り、push 以外ではネットワークにアクセスせず、エラーなしで完了します。サンドボックスは、git 履歴、未コミットの変更、stash 項目、認証情報を保持するファイルを認識しません。CC Safety Net はこれらの意味を理解し、適切にブロックします。 同じ違いがコマンドプロキシにも当てはまります。ユーザーに代わってコマンドを実行するツールは、どちらのレイヤーにも 1 つの不透明な実行ファイルに見えます。しかし、cc-safety-net rule wrapper add <command> で宣言すると、CC Safety Net はプロキシを通して見える子コマンドを調べ、同じルールを適用します。サンドボックスは子コマンドを調べず、プロセスツリー全体がアクセスできる対象のみを制限します。

サンドボックスが適する場合

主な懸念が次の場合は、サンドボックスが適切です。
  • プロンプトインジェクション攻撃:外向きネットワークドメインを制限して、情報流出のリスクを低減する
  • 悪意のある依存関係:信頼できないパッケージによるファイルシステムへの書き込みとネットワークアクセスを制限する
  • 信頼できないコードの実行:OS レベルの封じ込めは、コマンドテキストの解析より根本的に強い
  • ネットワーク制御:CC Safety Net にはネットワーク保護がない
信頼できないソースのコードを実行する場合、または侵害された依存関係が攻撃者のサーバーへ接続することを懸念する場合は、サンドボックスがそれらの脅威に対処します。

CC Safety Net が対処できない範囲

CC Safety Net は対応するツール呼び出しを解釈しますが、プロセスを封じ込めません。次の制限には意味解析ではなく封じ込めが必要です。
  • ネットワーク経由の情報流出。 runtime 評価はネットワーク要求を行わず、pipeline は外向き通信を検査しません。ドメインの allowlist はサンドボックスが担当します。
  • 認識対象外からの読み取り。 機密パス保護は、.env とその派生形、SSH 鍵、クラウドの認証情報ストア、コーディング CLI の認証情報ファイル、設定した deny path という上限付きのパターン群を、対応するコマンド、パス、検索、patch の形式にわたって対象にします。完全な一覧は機密情報保護のリファレンスを参照してください。これは一般的な読み取り境界ではないため、認識されないファイル内の認証情報は保護されません。サンドボックスは、重要なファイルを特定せずにすべての読み取りを制限します。
  • バイナリ内部に隠された動作。 some-tool --task destructive-cleanup はコマンドテキストでは安全に見えます。また、見える子コマンドを実行せずに書き換えるプロキシは、transparent wrapper として設定しても展開できません。
  • 完全なファイルシステム適用。 拒否はツール呼び出しを止めますが、権限は適用しません。best-effort のインターセプトではなく完全な保護が必要な場合は、信頼できる write broker、OS 権限、またはサンドボックスを使います。
これらはサンドボックスの封じ込めが対応する対象です。このため、両ツールは代替ではなく相互補完の関係にあります。残る制限の完全な一覧は既知の制限を参照してください。

サンドボックスと CC Safety Net を併用する

多層防御のために両方を実行してください。両者は次のように補完します。
  • サンドボックスは影響範囲を封じ込めます。問題が発生しても、損害を現在の作業ディレクトリと承認済みネットワークドメインに制限します。
  • CC Safety Netは操作ミスを防ぎます。cwd 内で動作するためサンドボックスが許可する git 固有のミスやファイルシステム破壊操作を検出し、読み取りを広く許可するサンドボックスが許可する既知の認証情報ファイルの読み取りをブロックします。
サンドボックスは、エージェントが OS レベルで実行できる操作を制限し、未知の脅威を処理します。CC Safety Net は、コマンド実行前に既知の破壊的パターンをインターセプトします。併用すると、どちらか一方だけでは残る不足を補えます。
最終更新日 2026年8月12日