codex execはCodexエージェントを非対話モードで動かすコマンドで、CIパイプラインやスクリプトへの組み込みを前提に設計されています。- 実行権限はデフォルトで確認付きですが、
--full-autoで確認を省略し、-sオプションでサンドボックスポリシーを細かく制御できます。 - モデルや作業ディレクトリ、出力形式はオプションで柔軟に指定でき、JSONLによるログ出力やJSONスキーマによる構造化レスポンスにも対応しています。
- セッションの保存と再開、画像添付、コードレビュー実行など、自動化ワークフローに必要な機能をひとつのコマンドで提供します。
1. プロンプトを与える基本構文
codex exec はCodexエージェントを非対話モードで動かすサブコマンドです。
スクリプトやCIパイプラインに組み込むことを前提に設計されています1。
codex exec [OPTIONS] [PROMPT]
Code language: CSS (css)
プロンプトは引数として渡すか、- を指定してstdinから読み込みます2。
# 引数として渡す
codex exec "テストを全部実行してエラーを修正して"
# stdinから渡す
echo "READMEを英語に翻訳して" | codex exec -
Code language: PHP (php)
1.1. よく使う組み合わせパターン
CI環境でテスト修正を自動化する場合:
codex exec \
--full-auto \
--json \
-o ci-summary.txt \
-C ./src \
"失敗しているテストを特定して修正して"
Code language: JavaScript (javascript)
ローカルで画像をもとにコード生成する場合:
codex exec \
-m o3 \
-i screenshot.png \
-s workspace-write \
"スクリーンショットのフォームをHTMLとCSSで実装して"
Code language: JavaScript (javascript)
1.2. 画像の添付
-i / --image で画像ファイルを初期プロンプトに添付します。
codex exec -i mockup.png "このデザインをReactコンポーネントで実装して"
Code language: JavaScript (javascript)
UIのスクリーンショットを渡してコードを生成させる使い方が典型です3。
2. 作業ディレクトリの指定
-C / --cd でエージェントの作業ルートを指定します。
リポジトリのサブディレクトリだけを触らせたいときに使います4。
codex exec -C ./backend "APIのエンドポイントにバリデーションを追加して"
Code language: JavaScript (javascript)
--add-dir は主ワークスペースに加えて書き込みを許可するディレクトリを追加します5。
codex exec --full-auto --add-dir ../shared "共有ライブラリを更新して"
Code language: JavaScript (javascript)
--skip-git-repo-check はGitリポジトリ外でも実行できます。バージョン管理外のディレクトリでスクリプト生成やドキュメント作業をするときに使います6。
2.1. セッション管理
--ephemeral はセッションファイルをディスクに保存しません。
使い捨ての処理や機密データを含む作業に向きます7。
codex exec --ephemeral --full-auto "環境変数の設定ファイルを生成して"
Code language: JavaScript (javascript)
resume サブコマンドで以前のセッションを再開できます8。
# 最新のセッションを再開
codex exec resume --last
# IDを指定して再開
codex exec resume <session-id>
Code language: PHP (php)
3. 実行権限の制御
codex execは、デフォルトではコマンド実行前に確認を求め、自動実行の範囲を広げるにはオプションで明示的に求める設計になっています9。
--full-auto はワークスペース内のファイルへの書き込みを許可し、確認なしで実行します。ローカル開発で最もよく使うフラグです10。
codex exec --full-auto "依存パッケージを最新化してテストを通して"
Code language: JavaScript (javascript)
-s / --sandbox は実行環境のポリシーを細かく選べます。
# 読み取り専用(書き込みは不可)
codex exec -s read-only "このコードの問題点を列挙して"
# ワークスペース内のみ書き込み可
codex exec -s workspace-write "リファクタリングして"
# サンドボックスなし(外部で隔離済みの環境専用)
codex exec -s danger-full-access "..."
Code language: PHP (php)
--dangerously-bypass-approvals-and-sandbox は確認プロンプトとサンドボックスをすべて無効化します。Dockerなどで外部からすでに隔離されている環境専用です11。
3.1. –full-auto と -s workspace-write の違い
どちらもワークスペース内への書き込みを許可しますが、意味が異なります。-s workspace-write はサンドボックスのポリシーだけを設定するオプションで、確認プロンプトはそのまま残ります。--full-auto は -s workspace-write に加えて確認プロンプトも省略する、複数オプションをまとめた便利エイリアスです。「確認なしで動かしたい」なら --full-auto、「書き込みは許可するが実行前に確認したい」なら -s workspace-write を使い分けてください12。
3.2. –dangerously-bypass-approvals-and-sandbox と -s danger-full-access の違い
-s danger-full-access はサンドボックスを外しますが、確認プロンプトは残ります。--dangerously-bypass-approvals-and-sandbox は確認もサンドボックスも両方なくします。名前が長い分だけ、使う前に一拍置いて判断してほしいという意図が込められています13。
4. モデルと設定の指定
-m / --model で使用するモデルを切り替えます14。
codex exec -m o3 "パフォーマンスを改善して"
Code language: JavaScript (javascript)
-c / --config は ~/.codex/config.toml の値を一時的に上書きします。ドット区切りでネストしたキーも指定できます15。
codex exec -c model="o3" -c 'sandbox_permissions=["disk-full-read-access"]' "..."
codex exec -c shell_environment_policy.inherit=all "..."
Code language: JavaScript (javascript)
-p / --profile は config.toml に定義したプロファイルを読み込みます。プロジェクトごとにモデルや権限をまとめておく使い方が向いています16。
codex exec -p ci-profile "テストを実行して"
Code language: JavaScript (javascript)
4.1. -c と -p の違い
-p はあらかじめ config.toml に書いておいたプロファイルを丸ごと読み込むオプションです。-c はそのセッションだけに有効な個別の上書きで、-p で読み込んだ値にさらに重ねて使えます。
繰り返し使う設定はプロファイルにまとめ、一時的な調整に -c を使うのが自然な使い方です17。
5. 出力の制御
-o / --output-last-message はエージェントの最後のメッセージを指定ファイルに書き出します。
CIで結果をキャプチャするのに使えます18。
codex exec --full-auto -o result.txt "変更内容をまとめて"
Code language: JavaScript (javascript)
--json は実行イベントをJSONL形式でstdoutに出力します。ログ収集や後処理スクリプトと組み合わせるときに便利です19。
codex exec --json "..." | jq 'select(.type == "message")'
Code language: JavaScript (javascript)
--output-schema でモデルの最終応答の形式をJSONスキーマで指定できます。構造化データを確実に受け取りたい場合に使います20。
codex exec --output-schema schema.json "依存パッケージの一覧をJSONで出力して"
Code language: JavaScript (javascript)
5.1. -o と –json の違い
-o はエージェントが最後に出力したメッセージだけをファイルに書き出します。人が読む要約や最終回答を保存するのに向いています。--json はすべての実行イベントをJSONL形式でstdoutに流し続けます。処理の途中経過も含めてパースしたい場合に使うもので、-o とは取得する情報量がまったく異なります21。
6. コードレビュー
review サブコマンドは現在のリポジトリに対してコードレビューを実行します22。
codex exec review
codex exec -m o3 review
- Codex CLIはRustで書かれたオープンソースのコーディングエージェントです。npmでインストールして使えます。ChatGPT Plus・Pro・Business・Edu・Enterpriseプランに含まれています。 – Codex CLI
codex execはcodex eと短縮できます。非対話型で完結する処理向けに設計されており、TUI(ターミナルUI)は起動しません。 – Non-interactive mode- 対応フォーマットはPNGとJPEGです。複数ファイルはカンマ区切りか
-iを繰り返して指定できます。 – Codex CLI features workspace-writeモードでは.git、.codex、.agentsディレクトリが書き込みから保護されます。これらのパスは再帰的に読み取り専用として扱われます。 – Security- フラグは複数回繰り返せます。例:
--add-dir ../shared --add-dir ../configのように指定できます。 – Command line options - Codexはデフォルトでリポジトリ外での実行を拒否します。これは破壊的な変更を防ぐための意図的な制約です。 – Non-interactive mode
- 通常のセッションファイルは
$CODEX_HOME(デフォルトは~/.codex)以下に保存されます。環境変数CODEX_HOMEで保存先を変更できます。 – Advanced Configuration resumeはフォローアッププロンプトも受け取れます。例:codex exec resume --last "見つけた問題を修正して"。会話コンテキストは引き継がれますが、フラグ(モデルやサンドボックス設定など)は再指定が必要です。 – Non-interactive mode- デフォルトの
codex execは読み取り専用サンドボックスで動きます。ファイルへの書き込みを許可するには-s workspace-writeか--full-autoを明示する必要があります。 – Non-interactive mode --full-autoはworkspace-writeサンドボックスとon-request承認ポリシーを同時に設定するエイリアスです。確認プロンプトを省略するnever承認が組み合わさっています。 – Command line options- このフラグは
--yoloという別名でも指定できます。社内ガイドラインなどで管理者がrequirements.tomlでsandbox_mode = "danger-full-access"を禁止している環境では動作しません。 – Security workspace-writeモードでもデフォルトはネットワークアクセスが無効です。外部APIへのアクセスが必要な場合はconfig.tomlの[sandbox_workspace_write]セクションでnetwork_access = trueを設定します。 – Advanced Configuration- 公式ドキュメントでは
--full-autoと--dangerously-bypass-approvals-and-sandboxを同時に使うことを明示的に非推奨としています。外部でサンドボックス済みのVM内でのみ組み合わせてください。 – Command line options - モデル名は
modelキーとしてconfig.tomlにデフォルト値を書いておけます。-mは1回の実行だけに有効な上書きです。 – Config basics -cの値はTOML形式でパースされます。JSONではない点に注意が必要です。パースできない場合はリテラル文字列として扱われます。 – Advanced Configuration- プロファイル機能は現時点で試験的(experimental)な扱いです。将来変更・廃止される可能性があり、Codex IDEエクステンションでは未対応です。 – Advanced Configuration
- 設定の優先順位は「コマンドラインの
-c」が最も高く、次に「プロファイル値」、その下に「ユーザー設定 (~/.codex/config.toml)」、さらにその下に「プロジェクト設定 (.codex/config.toml)」と続きます。 – Config basics - シェルのリダイレクト(
>)でも同じことができますが、-oはその実行専用のオプションです。--output-schemaと組み合わせると、最終的なJSON出力だけをファイルに保存できます。 – Non-interactive mode (docs.onlinetool.cc) --jsonで出力されるイベントタイプにはthread.started、turn.started、turn.completed、turn.failed、item.*、errorがあります。アイテムタイプにはエージェントメッセージ、推論、コマンド実行、ファイル変更、MCPツール呼び出し、ウェブ検索、プラン更新が含まれます。 – Non-interactive mode- Codexは出力をスキーマに対して検証します。
-oと組み合わせると最終JSONだけをファイルに保存できます。JSON SchemaはDraft 7に準拠したファイルを指定します。 – Non-interactive mode (docs.onlinetool.cc) - セッションのJSONLログは
--ephemeralを指定しない限り$CODEX_HOME/sessions/YYYY/MM/DD/rollout-*.jsonlに自動保存されます。--jsonのstdout出力とは別物です。 – GitHub Issue #2288 reviewには--uncommitted(未コミットの変更)、--base <branch>(ベースブランチとの差分)、--commit <hash>(特定コミット)などのオプションがあります。カスタム指示を追加することもできます。例:codex exec review --uncommitted "セキュリティの問題に絞って"。 – Smithery Codex Skill