3-2 サンドボックス|承認とは別の、第2の壁
Codex が持つ OS レベルのサンドボックスを非エンジニア向けに解説。read-only / workspace-write / danger-full-access の3段階、macOS と Linux での実装の違い、承認モードとの組み合わせ方を扱います。
このレッスンでわかること
3-1 で扱った承認モードは「人に聞くかどうか」の仕組みでした。このレッスンで扱うサンドボックスは「そもそも触れる範囲を制限する」仕組みです。
- サンドボックスが何をしているのかがわかる
- 3段階の設定の違いと選び方がわかる
- 承認モードとの組み合わせ方がわかる
ここが Codex を選ぶ最大の理由になりうる部分です。
サンドボックスとは
「砂場」という意味です。その中でなら何をしてもよいが、外には出られない空間を作る仕組みを指します。
Codex のサンドボックスは、OS の機能を使って実現されています。ここが重要です。
| 実装 | |
|---|---|
| macOS | Seatbelt(sandbox-exec) |
| Linux | Landlock + seccomp(使えない環境では bubblewrap) |
| Windows | ネイティブのサンドボックス、または WSL2 |
アプリが自主的に守っているルールではなく、OS が外側から強制している壁です。
なぜこれが効くのか
たとえ話で考えてください。
- 承認モード = 部屋を出る前に「出ていいですか」と聞く約束
- サンドボックス = そもそも部屋に鍵がかかっていて、外に出られない
約束は破られることがあります。鍵は破られません。
AIエージェントに作業を任せるとき、多くの人が不安に思うのは「想定外のことをされたらどうしよう」です。サンドボックスは、その想定外の範囲そのものを物理的に狭める仕組みです。
3段階の設定
| 設定値 | 何ができるか | 使いどころ |
|---|---|---|
read-only | **読むだけ。**書き込み不可 | 調査・分析。まず現状を把握したいとき |
workspace-write | 作業フォルダの中だけ書き込める | 通常の作業。既定にすべき |
danger-full-access | 制限なし | 原則使わない |
名前のとおり、3つ目には danger(危険)と付いています。設計者が「これは危ない」と明示している設定です。
workspace-write が基本
日常的に使うのはこれです。作業フォルダの中では自由に書き込めるが、外には出られない状態になります。
- ✅
codex-practice/の中のファイルを作る・書き換える - ❌ デスクトップの別のファイルを書き換える
- ❌ システムの設定を変更する
**「作業フォルダを選ぶ」という操作が、そのまま安全の境界になっています。**2-1 や 2-2 で練習用フォルダを作らせたのは、このためです。
承認モードとの組み合わせ
2つの仕組みが独立しているので、組み合わせで運用が決まります。
| 承認 | サンドボックス | どうなるか | 評価 |
|---|---|---|---|
untrusted | read-only | ほぼ何もできない | 調査専用 |
on-request | workspace-write | 既定。バランスが取れている | ◎ おすすめ |
never | workspace-write | 確認は出ないが、外には出られない | ○ 慣れたら |
never | danger-full-access | 確認もなく、制限もない | ✕ 避ける |
3行目が Codex の面白いところです。「いちいち聞かないでほしい。ただし作業フォルダの外には絶対に触れないでほしい」という、実務的にありがたい設定が作れます。
**4行目だけは避けてください。**両方の壁を外した状態です。
設定を確認する
**設定ファイルを自分で書く必要はありません。**対話画面で聞くのがいちばん確実です。
いまのサンドボックスの設定を教えてください。
どこまで書き込めて、どこから先は書き込めないのかを具体的に説明してください。
変更したい場合も日本語で頼めます。
サンドボックスを workspace-write にしてください。
設定を書いたあとに、それがどういう意味かを説明してください。
**「説明してください」を付けるのが大事です。**設定の中身が読めなくても、意味を確認してから使えます。
効いていることを確かめる
**設定しただけで安心するのが、いちばん危ない状態です。**必ず試してください。
サンドボックスを workspace-write にした状態で、作業フォルダの外にファイルを作らせてみます。
デスクトップに sandbox-test.txt というファイルを作ってください。
拒否されれば成功です。「書き込めません」といった趣旨のエラーが返るはずです。
もし作られてしまったら、サンドボックスが効いていません。設定を見直してください。
**これは 2-1 / 2-2 でやった「却下してみる」と同じ考え方です。**安全装置は、動くことを確かめて初めて安全装置になります。
制約と注意点
万能ではないので、限界も知っておいてください。
| 注意点 | 内容 |
|---|---|
| Linux / WSL2 では追加ソフトが必要 | bubblewrap が入っていないと、環境によってはサンドボックスが機能しません |
| ネットワークは別の話 | ファイルの範囲と、外部との通信は別に考える必要があります |
| 作業フォルダの選択が要 | 大事なファイルが入ったフォルダを作業フォルダにすれば、当然その中は書き換えられます |
3つ目が実務上いちばん重要です。**サンドボックスは「作業フォルダの外」を守りますが、「中」は守りません。**だからこそ、作業フォルダの選び方が効いてきます。
やってみよう
- 現状を確認する:対話画面で「いまのサンドボックスの設定を教えて」と頼み、どこまで書き込めるかを説明してもらいましょう
workspace-writeにする:設定を変更し、意味の説明を受けてください- 外に書けないことを確認する:デスクトップにファイルを作らせようとして、拒否されることを確認しましょう
- 中には書けることを確認する:作業フォルダ内にファイルを作らせ、こちらは成功することを確認します
read-onlyを試す:読み取り専用にして、作業フォルダ内でも書けなくなることを確認したらworkspace-writeに戻します
演習3と4をセットでやると、境界がどこにあるかが体で分かります。
まとめ
- サンドボックスは OS の機能で「触れる範囲」を制限する仕組み。アプリの外側から強制される
- 承認モードは「聞くかどうか」、サンドボックスは「そもそも届くかどうか」
- 3段階のうち、通常は
workspace-write。作業フォルダの中だけ書き込める - **
danger-full-accessは名前のとおり危険。**原則使わない - **
never+workspace-writeは実用的な組み合わせ。**確認は出ないが外には出られない - **設定したら必ずテストする。**外に書けないことを確認して初めて安全装置になる
- サンドボックスは「外」を守るが「中」は守らない。作業フォルダの選び方が効く
理解度チェック
Q1. Codex のサンドボックスが「アプリの権限設定」と本質的に違う点はどれでしょう?
- 有料プランでのみ使える
- OS の機能を使って実現されており、アプリの外側から範囲を強制している
- 設定ファイルを手で書く必要がある
- Windows でのみ利用できる
答えを見る
正解:2
macOS では Seatbelt、Linux では Landlock などの OS の仕組みを使っています。アプリが自主的に守るルールではなく、OS が外側から強制する壁である点が違いです。だからこそ「承認を緩めても、範囲は超えられない」という運用が成り立ちます。
Q2. サンドボックスを workspace-write に設定しました。守られるのはどれでしょう?
- 作業フォルダの中のファイルが書き換えられないよう守られる
- 作業フォルダの外への書き込みが防がれる
- インターネットへの接続がすべて遮断される
- 誤った内容が書き込まれないよう内容が検査される
答えを見る
正解:2
workspace-write は「作業フォルダの中では書き込めるが、外には出られない」という設定です。守られるのは外側であって、作業フォルダの中のファイルは書き換えられます。だからこそ、大事なファイルが入ったフォルダを安易に作業フォルダにしないことが重要です。ネットワークの制限は別の設定で扱います。