> ## Documentation Index
> Fetch the complete documentation index at: https://ccsafetynet.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# CC Safety Net と OS レベルのサンドボックス

> CC Safety Net と OS レベルのサンドボックスを比較します。両者は異なる脅威を防御し、併用すると多層防御が強化されます。

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

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

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

## 異なる保護レイヤー

|                     | OS レベルのサンドボックス              | CC Safety Net                                                                     |
| ------------------- | --------------------------- | --------------------------------------------------------------------------------- |
| **適用**              | OS レベル（Seatbelt/bubblewrap） | アプリケーションレベル（コマンド実行前に動作）                                                           |
| **手法**              | 封じ込め（ファイルシステムとネットワークを制限）    | 意味解析（対応するツール呼び出しの破壊的操作と機密操作をインターセプト）                                              |
| **ファイルシステムへの書き込み**  | 境界で制限（既定：cwd）               | 対象の場所に関係なく、意味に基づいて破壊的操作をブロック                                                      |
| **ファイルシステムからの読み取り** | 既定で広範                       | 上限付きの機密パス群をブロック（`.env`、`~/.ssh/id_*`、`~/.aws`、コーディング CLI の認証情報ストア、設定した deny path） |
| **ネットワーク**          | 既定で制限または無効（方式は異なる）          | なし                                                                                |
| **Git の認識**         | なし                          | 破壊的な git 操作の明示的ルールと、リポジトリの Git メタデータに対する常時有効な保護                                   |
| **回避耐性**            | 高い（OS が境界を適用）               | 低い（対応するツール呼び出しとコマンドテキストのみを解析）                                                     |

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

サンドボックスは書き込み可能な*場所*を制限します。しかし、その境界*内*の操作が破壊的かどうかは理解しません。次のコマンドはすべてサンドボックスで許可されます。現在の作業ディレクトリ内に書き込むか、サンドボックスが許可したファイルを読み取るか、許可されたリモートへアクセスするためです。

<Note>
  これらのコマンドを自動実行するか確認を要求するかは、エージェントのサンドボックスモードと承認ポリシーによって決まります。`git push --force` などのネットワーク依存コマンドは、許可ドメインの設定にも依存します。
</Note>

| コマンド                | OS レベルのサンドボックス         | CC Safety Net |
| ------------------- | ---------------------- | ------------- |
| `git reset --hard`  | 許可（cwd 内）              | ブロック          |
| `git checkout -- .` | 許可（cwd 内）              | ブロック          |
| `git stash clear`   | 許可（cwd 内）              | ブロック          |
| `git push --force`  | 許可（リモートドメインが許可されている場合） | ブロック          |
| `rm -rf .`          | 許可（cwd 内）              | ブロック          |
| `cat .env`          | 許可（読み取りは広範）            | ブロック          |

<Note>
  サンドボックスは `git reset --hard` を安全な操作とみなします。このコマンドは現在のディレクトリ内のファイルのみを変更するためです。しかし、コーディングエージェントは未コミットの作業をすべて破棄します。
</Note>

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 の形式にわたって対象にします。完全な一覧は[機密情報保護のリファレンス](/docs/ja/reference/secret-protection)を参照してください。これは一般的な読み取り境界ではないため、認識されないファイル内の認証情報は保護されません。サンドボックスは、重要なファイルを特定せずに*すべて*の読み取りを制限します。
* **バイナリ内部に隠された動作。** `some-tool --task destructive-cleanup` はコマンドテキストでは安全に見えます。また、見える子コマンドを実行せずに書き換えるプロキシは、transparent wrapper として設定しても展開できません。
* **完全なファイルシステム適用。** 拒否はツール呼び出しを止めますが、権限は適用しません。best-effort のインターセプトではなく完全な保護が必要な場合は、信頼できる write broker、OS 権限、またはサンドボックスを使います。

これらはサンドボックスの封じ込めが対応する対象です。このため、両ツールは代替ではなく相互補完の関係にあります。残る制限の完全な一覧は[既知の制限](/docs/ja/guides/known-limitations)を参照してください。

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

<Tip>
  多層防御のために両方を実行してください。両者は次のように補完します。

  * **サンドボックス**は影響範囲を封じ込めます。問題が発生しても、損害を現在の作業ディレクトリと承認済みネットワークドメインに制限します。
  * **CC Safety Net**は操作ミスを防ぎます。cwd 内で動作するためサンドボックスが許可する git 固有のミスやファイルシステム破壊操作を検出し、読み取りを広く許可するサンドボックスが許可する既知の認証情報ファイルの読み取りをブロックします。
</Tip>

サンドボックスは、エージェントが OS レベルで実行*できる*操作を制限し、未知の脅威を処理します。CC Safety Net は、コマンド実行前に既知の破壊的パターンをインターセプトします。併用すると、どちらか一方だけでは残る不足を補えます。
