この章の答え
権限の設定を、実行環境が強制できる制約へ変換する。
「この操作を認める」という判断だけでは、プロセスが触れられる範囲は決まりません。Sandbox では、ファイルやネットワークへのアクセス条件が、どのように実行環境へ渡されるかを見ます。
01|図でつかむ
Approval は実行判断、Sandbox は実行範囲。両者の役割を分ける。
02|3つのポイントで理解する
1. 設定を具体的な許可範囲にする
PermissionProfile やファイルシステムの方針から、どこを読めるか・書けるかなどを追います。プロジェクトのパスだけでなく、例外や保護対象も確認します。
2. 実行環境ごとの実装を見る
SandboxManager などの選択処理から、OS や実行方式に対応する実装へ進みます。設定名が同じでも、内部で使う仕組みまで同じとは限りません。
3. 失敗の理由を切り分ける
コマンド自身のエラー、承認の拒否、環境によるアクセス拒否を区別します。Sandbox が無効な環境もあるため、実際に選ばれた設定を前提に判断します。
03|ソースで確かめる
以下の検索は Codex リポジトリのルートで実行します。最初に対象 commit を記録し、検索結果から定義と呼び出し元を一つずつ開いてください。
git rev-parse --short HEAD
rg -n "SandboxManager|SandboxType" codex-rs
読む入口: codex-rs/sandboxing/src/manager.rs 。リンク先は照合に使った固定 commit のファイルです。手元の版と異なる場合は、上の検索語から探し直します。
小さく試す
権限設定から Sandbox の選択までを追い、ファイルアクセスの制約がどこで渡されるかを探します。
04|30秒で復習
- 承認とアクセス制約は別の役割。
- 設定は実行環境に合う形へ変換される。
- 失敗原因を判断・環境・コマンドに分ける。