Codexを確認なし・フルアクセスで使う設定|sandbox_modeとapproval_policyの書き方

概要

今回はCodexを承認ダイアログなし・フルアクセスで動かす設定について紹介していきます。

Codexは標準だと、作業フォルダの外を触るときやネットワークに出るときに「実行していいですか?」と確認を挟んできます。
安全のための仕組みなのは分かっているんですが、テストやビルドを何度も回していると、同じ許可を押し続けることになってだんだんしんどくなります(- -;

そこで、ユーザー設定ファイル~/.codex/config.tomlのsandbox_modeとapproval_policyを書き換えて、確認なしで最後まで走らせる設定にしました。
ただし、これは安全装置をまとめて外す設定なので、何が外れるのか・どこまでは外せないのかも合わせて確認しておきます。

それではやっていきましょう!

ここで紹介する設定は、Codexのサンドボックスと承認プロンプトを両方とも無効にする危険な設定です。
誤ったファイル削除・秘密情報の外部送信・外部サービスへの変更が、確認なしで実行される可能性があります。
信頼できるリポジトリとコマンドだけで使い、実施は自己責任でお願いします。

目次

sandbox_modeとapproval_policyの役割

Codexの「どこまで勝手にやっていいか」は、2つの設定の組み合わせで決まります。

設定 決めること 主な値
sandbox_mode OSレベルで、どのファイル・ネットワークに触れるか read-only / workspace-write / danger-full-access
approval_policy 境界を越える操作の前に、人間に確認を求めるか on-request / never

公式ドキュメントでは、sandbox_modeの各値は次のように説明されています。

  • read-only
    • ファイルの閲覧はできるが、承認なしに編集やコマンド実行はできない
  • workspace-write
    • ワークスペース内の読み書きと、その範囲内での普段のコマンド実行ができる。ローカル作業の標準
  • danger-full-access
    • サンドボックスの制限なしで動く。ファイルシステムとネットワークの境界が取り除かれる

公式の説明でも「フルアクセス」はsandbox_mode = "danger-full-access"とapproval_policy = "never"を組み合わせた状態を指しています。
片方だけ変えても、もう片方の制限は残るということですね。

ちなみに、以前あったapproval_policy = "untrusted"は廃止されています。
古い記事の設定例をそのままコピーしないよう注意してください。

config.tomlで確認なし・フルアクセスにする設定方法

ユーザー設定ファイル~/.codex/config.tomlに、次の2行を追加します。
同じキーがすでに書かれている場合は、行を重複させず既存の値を書き換えてください。

~/.codex/config.toml

1
2
3
4
5
# サンドボックスによるファイル・ネットワーク境界を無効化する
sandbox_mode = "danger-full-access"

# 承認プロンプトを表示しない
approval_policy = "never"

保存したら、起動中のCodexを終了して新しいセッションを開始します。
設定を書き換えた直後の古いセッションにそのまま反映されるかは公式に明記が見当たらなかったので、自分は起動し直して確認しています。

Codex公式: Sandbox(sandbox_modeの各値)
https://learn.chatgpt.com/docs/sandboxinglearn.chatgpt.com

Codex公式: Agent approvals & security(approval_policyとCLIフラグ)
https://learn.chatgpt.com/docs/agent-approvals-securitylearn.chatgpt.com

フルアクセスにすると何が確認なしになるか

この設定で、Codexの動きは次のようになります。

操作 動作
ワークスペース内の読み取り・編集・コマンド実行 確認なしで実行
ワークスペース外のファイル操作 確認なしで実行
コマンドからのネットワーク接続 確認なしで実行
破壊的な操作(削除・上書き・push等) 確認なしで実行される可能性がある

標準のworkspace-writeでは、ネットワークへのアクセスは無効になっています。
つまりフルアクセスにすると、「作業フォルダの外」と「ネットワーク」という2つの壁が両方なくなるわけです。

例えば、Codexが勘違いしてホームディレクトリ配下のファイルを消そうとしたり、環境変数に入っているAPIキーを外部に送るようなコマンドを組み立てたりしても、止める確認は出ません。
Codexに悪意がなくても、読み込んだファイルやWebページの中に紛れた指示に引っ張られる可能性はあるので、ここは本当に注意が必要です。

この設定でも解除できないもの

~/.codex/config.tomlはあくまで「自分のユーザー設定」なので、より強い設定があるとそちらが勝ちます。

  • 組織が管理するrequirements.toml
    • 会社などの管理対象環境では、管理者がdanger-full-accessやneverを禁止・上書きしている場合がある
  • CLIフラグやプロジェクト側の.codex/config.toml
    • 公式の優先順位では、ユーザー設定よりCLIフラグ・信頼済みプロジェクトの設定・--profileで選んだプロファイルの方が優先される
  • 起動中のセッション
    • 起動中のセッションに反映されるかは公式に明記がないので、書き換えたらCodexを起動し直してから確認する

会社のPCで設定したのに確認が消えない、という場合は、まず組織側の制限を疑ってみてください。

Codex公式: Config basics(設定ファイルの場所と優先順位)
https://learn.chatgpt.com/docs/config-file/config-basiclearn.chatgpt.com

もう少し安全に使う代替策

常時フルアクセスにするのが怖い場合は、必要なときだけ外す方法もあります。
迷ったら、2つ目のプロファイル切り替えがお勧めです(理由はこのセクションの最後に書いています)。

  • その回だけCLIフラグで外す
    • codex --dangerously-bypass-approvals-and-sandbox(別名--yolo)で、その起動だけサンドボックスと承認を無効にできる
  • プロファイルに分けて--profileで切り替える
    • ~/.codex/<プロファイル名>.config.tomlにフルアクセス用の設定を書き、使うときだけcodex --profile <プロファイル名>で起動する
  • workspace-writeのままネットワークだけ許可する
    • 困っているのが「ネットワークに出られない」だけなら、[sandbox_workspace_write]のnetwork_access = trueで足りる場合がある

CLIフラグで一時的に外す場合は次の通りです。

その回だけフルアクセスで起動

1
codex --dangerously-bypass-approvals-and-sandbox

プロファイルに分ける場合は、専用のファイルを作ります。

~/.codex/full-access.config.toml

1
2
sandbox_mode = "danger-full-access"
approval_policy = "never"

プロファイルを指定して起動

1
codex --profile full-access

ネットワークだけ許可する場合は、先ほどのフルアクセス用の2行を書いているなら消したうえで、~/.codex/config.tomlを次の内容にします。

~/.codex/config.toml

1
2
3
4
sandbox_mode = "workspace-write"

[sandbox_workspace_write]
network_access = true

自分としては、普段はworkspace-writeのまま使い、信頼できるリポジトリで長い作業を任せるときだけプロファイルで切り替えるのがお勧めです。
ずっとフルアクセスにしていると、危ない操作をしたときに気づくタイミングがなくなってしまうので。

ちなみに、Claude Code側で確認プロンプトを減らしつつ被害範囲をフォルダに閉じ込める設定は、【Claude Code】VS Code拡張の確認プロンプトを減らしつつsandboxでフォルダに閉じ込める設定🔗 shinpinoshi.comにまとめています。
同じ~/.codex/config.tomlでClaude Codeのルールファイルを読ませる設定は、Claude CodeとCodexでCLAUDE.mdとskillsを二重管理しない設定方法🔗 shinpinoshi.comで紹介しています。

締め

確認なし・フルアクセスはsandbox_mode = "danger-full-access"とapproval_policy = "never"の2行で設定できますが、ファイルとネットワークの安全装置がまとめて外れます。
信頼できるリポジトリだけで使うか、プロファイルやCLIフラグで必要なときだけ外す運用にしておくと安心です。

許可を押し続けるストレスから解放されるのは快適ですが、その分なにかやらかしたときに止める人がいなくなるので、使いどころはいつも悩みますね。

以上となります。
脳筋ですがベストは独立したPCを用意して、毎回プロジェクト切り替えですかね(^^
それではお疲れさまでした。