Codex CLI危険モードを安全に使う:フルアクセスを外部隔離する¶
対象 / ポイント
対象: 承認なしのCodex自動化を検討しているSRE・DevOps担当者
ポイント: - 通常はworkspace-writeを維持する - フルアクセスは使い捨てVM・コンテナ内だけで使う - 実行前後のGit差分と資格情報の境界を記録する
Codexの危険モードは、確認プロンプトとOSサンドボックスを同時に外す。正式なフラグは--dangerously-bypass-approvals-and-sandboxであり、--dangerously-skip-permissionsではない。OpenAIも、外部で堅牢に隔離された環境だけで使うよう明記している。1
この記事の問いは、どの境界をCodexの外側に置けば、フルアクセスを例外運用できるかだ。
まず安全な代替設定を試す¶
承認回数を減らすだけなら、サンドボックスまで外す必要はない。最初は次の設定を使う。
codex \
--sandbox workspace-write \
--ask-for-approval on-request
無人処理で確認プロンプトを出せない場合も、approvalpolicyとsandboxmodeは分けて考える。
codex \
--sandbox workspace-write \
--ask-for-approval never
この組み合わせは承認を省くが、書き込み範囲などのサンドボックス境界は残す。ネットワークもworkspace-writeでは既定で無効なので、必要な通信だけ別途許可する。2
フルアクセスが必要な条件を限定する¶
フルアクセスを使う判断基準は「便利か」ではなく、外側の隔離が成立しているかだ。
- 使い捨てのVMまたはコンテナで実行する
- 本番環境へ到達できないネットワークに置く
- ホームディレクトリやクラウド資格情報をマウントしない
- 対象リポジトリ以外を書き込めない実行ユーザーを使う
- 実行後に環境ごと破棄できる状態にする
1つでも満たせない場合は、workspace-writeへ戻す。Git管理されているだけでは、未追跡ファイル、外部API、資格情報、データベースを保護できない。
実行前に基準点を残す¶
危険モードを起動する前に、CLIとリポジトリの状態を記録する。診断出力にはローカルパスが含まれ得るため、外部共有前に確認する。
codex --version
codex doctor --summary
git status --short
git rev-parse HEAD
さらに、対象ブランチ、許可するコマンド、利用する資格情報、終了条件を実行チケットへ残す。曖昧な「作業が終わるまで」は停止条件にならない。
危険モードは1回の起動だけにする¶
隔離条件を満たした実行環境でのみ、正式フラグをその場限りで指定する。
codex --dangerously-bypass-approvals-and-sandbox
同じ状態は次の組み合わせでも表現できる。どちらもサンドボックスなし・承認なしなので、危険度は同じだ。1
codex \
--sandbox danger-full-access \
--ask-for-approval never
ユーザー設定へ常設しない。チーム管理端末ではrequirements.tomlを使い、approvalpolicy = "never"やsandboxmode = "danger-full-access"を禁止できる。3
実行後は成果物より先に境界を確認する¶
完了メッセージだけで成功判定しない。変更範囲と構文上の異常を先に確認する。
git status --short
git diff --stat
git diff --check
続いてテストと人間レビューを行う。想定外の変更、外部送信、資格情報への接触が疑われる場合は、環境を破棄し、資格情報をローテーションしてから再実行する。
判断表¶
| 状況 | 推奨設定 | 理由 |
|---|---|---|
| 通常の対話開発 | workspace-write + on-request | 必要時だけ境界越えを確認できる |
| 無人だが書き込み範囲を限定できる | workspace-write + never | 承認を省いてもサンドボックスを残せる |
| 外部隔離済みの使い捨てRunner | 危険モードを1回だけ指定 | ホスト側の隔離を安全境界にできる |
| 開発PCや本番資格情報がある端末 | 危険モードを使わない | 誤操作と外部送信の影響を封じ込められない |
まとめ¶
危険モードを安全にする設定は存在しない。安全性は、Codexの外側に置いた隔離・最小権限・破棄可能性で決まる。