--sandbox フラグを指定すると、CLI が OS レベルで分離された状態で実行され、アクティブな Read / Write 権限スコープがオペレーティングシステム レベルで適用されます。必要に応じて、ネットワークトラフィックを制限することもできます。
サンドボックスの仕組み
- 書き込み可能なパスは、付与された
Write(...)の権限スコープ と workspace directory から決まります - 読み取り可能なパスは、付与された
Read(...)scope から決まります (/usr/binなどのプラットフォームのデフォルトパスは常に読み取り可能です) - セッションの途中で付与された scope によって、以降の command に対するサンドボックスの範囲が動的に広がります
ネットワークフィルタリング
sandbox セクション (ユーザー設定のみ) で設定します。--sandbox がアクティブで、ドメインフィルタリングが設定されている場合、管理対象のネットワークプロキシがループバック上で起動し、サンドボックスはすべての子プロセスの通信をこのプロキシ経由に制限します。
ドメインパターンの構文:
例:
ドメインフィルタリングは、サンドボックスがアクティブな場合 (
--sandbox) に適用されます。--sandbox を指定しない場合、サンドボックスのセクションは無視されます。除外するコマンド
git コマンドや、サンドボックスでブロックされるフックなどです。sandbox.excluded 設定セクションでは、permissions と同じ Exec(...) ルール構文を使って、マッチングするコマンドをサンドボックスによる分離の対象外にできます。
例:
Exec(git push *) は Exec(git *) より優先されます) 。また、ユーザー設定とチーム設定の両方がマッチする場合は、より制限の厳しい判定が優先されます (deny > ask > allow) 。マッチするルールがないコマンドは、sandbox.excluded がまったく設定されていない場合も含め、常にサンドボックス内で実行されます。
sandbox.excludedでサポートされるのはExec(...)ルールのみです。その他のルール種別 (たとえばRead(...)、Write(...)) は、警告を出して無視されます。- 除外はフェイルクローズです。コマンドを安全に判定できない場合 (たとえば解析できない場合) は、サンドボックス内にとどまります。
- 除外は、コマンドごとのデフォルトの exec パスに適用されます。永続的な PTY シェルを通じて実行されるコマンド (対話型セッション、または
pty_for_noninteractive_execが有効な場合) は、常にサンドボックス内にとどまります。
Enterprise レベルの適用
サンドボックス強制モード
--sandbox フラグの強制レベルを設定します。
- Optional (default) —
--sandboxを渡すかどうかはユーザーが選択できます。強制はありません。 - Required —
--sandboxフラグは、コマンドラインで指定しない場合でも、すべてのユーザーに対して強制的に有効になります。すべての CLI セッションは、Read/Write 権限スコープを適用する OS レベルのファイルシステムサンドボックスで実行されます。
Enterprise ドメインフィルタリング
- ドメイン許可リスト — 設定すると、このリスト内のドメインのみがサンドボックスのネットワークプロキシ経由でアクセス可能になります。このリストが優先され、ユーザーが設定した
allowed_domainsは完全に置き換えられます。ユーザーは、管理者の制限を回避するために追加のドメインを加えることはできません。 - ドメイン拒否リスト — 常にブロックされるドメインです。Enterprise の拒否ドメインは追加式です。つまり、ユーザーのローカル
denied_domainsとマージされ、結合後のリストはより制限が厳しくなります。
ユーザーのローカル
denied_domains は保持され、追加式でマージされるため、Enterprise の許可リストに含まれるドメインをユーザーが拒否できる場合があります。これは意図された動作です。結合後の結果は常により制限が厳しくなり、緩くなることはありません。これによってアクセスの問題が発生する場合は、ローカル設定から競合するエントリを削除してください。Enterprise での除外コマンド
- Excluded allow / ask — 組織全体で、コマンドをサンドボックスの外で自動実行する、または確認後に実行することを許可する
Exec(...)ルール。 - Excluded deny — コマンドをサンドボックスの外で決して実行させない
Exec(...)ルール。チームのdenyは、マッチングするコマンドに対するユーザーレベルのallowまたはaskより優先されるため、ユーザーは管理者が禁止したコマンドを除外できません。
deny > ask > allow) 。
例: gh 以外のすべての除外を禁止する。 ワイルドカード deny に、例外として allow を切り出して追加すると、ユーザーがローカルで何を設定していても、gh を除くすべてのコマンドはサンドボックス内に留まります。これらの値は、チーム設定の excluded-commands 構成に記述します (ユーザー設定ファイルではないため、sandbox キーで囲む必要はありません) 。
Exec(gh *) ルールはワイルドカードの Exec(**) より優先されるため、gh コマンドはサンドボックスの外で実行され、それ以外はすべてサンドボックス内にとどまります。また、チームレベルのワイルドカード deny は、他のコマンドに対するユーザーレベルの allow や ask ルールよりも優先されます。
参考資料
- チーム設定 — Enterpriseのサンドボックス強制とドメインフィルタリング
- 設定ファイル リファレンス — ユーザーレベルの
sandbox設定セクション - 権限 — サンドボックスパスの解決に影響する権限スコープ

