# Codexの機能と実践的な使い方
🤖 「ターミナルに張り付かず、Codexを丸ごとパイプの一部として扱いたい」——そんな願いを叶えるのが非対話モードです。CIやスクリプトにそのまま組み込めます。
🏷️ タイトル: `codex exec`
🔗 URL:
📘 概要
`codex exec` は、対話UIを起動せずにCodexをワンショットで走らせるためのコマンドです。プロンプトを1つの引数として渡すと、エージェントが作業し、最終メッセージだけを標準出力に返します。CIパイプライン、pre-commitフック、シェルの一連の処理に組み込むことを前提に設計されています。
⚙️ 機能の説明
進捗ログは標準エラー出力(stderr)へ、最終的なエージェントの回答だけが標準出力(stdout)へ流れます。これによりパイプやリダイレクトと素直に組み合わせられます。主なフラグは次の通りです。
・`--sandbox`: `read-only`(既定)/`workspace-write`(編集許可)/`danger-full-access`(全アクセス)で権限を制御します。
・`--ask-for-approval never`: 承認プロンプトを完全に抑止し無人実行にします。
・`--json`: すべてのイベントをJSON Lines形式でストリーム出力します(`thread.started`、`turn.started`、`item.completed`、`turn.completed` など)。
・`-o/--output-last-message
`: 最終メッセージをファイルに書き出します。
・`--output-schema `: JSON Schemaに従った構造化出力を強制します。
・`-C/--cd `: 実行前に作業ディレクトリを変更します。
・`--skip-git-repo-check`: Gitリポジトリ必須の制約を外します(破壊的変更防止のため通常は必須)。
・`--ephemeral`: セッションファイルをディスクに残しません。
🛠️ 実践的な使い方
標準入力(stdin)と組み合わせると強力です。例えば `npm test 2>&1 | codex exec "失敗したテストを要約し最小限の修正を提案して"` のようにテスト出力を渡し、結果を `tee` でファイルに残せます。
構造化出力を使えば機械可読なメタデータを安定して取り出せます。`--output-schema` でスキーマを指定し、`-o` で結果ファイルを書き出します。
セッションを継いで多段処理にもできます。一度レビューさせたあと `codex exec resume --last "見つけた問題を修正して"` で続きを実行します。
💡 ユースケース
CI失敗をトリガに読み取り専用でパッチ案を生成し、別ジョブで書き込み権限を持たせてPR化する、といった分業が定番です。ログ末尾を渡して原因分析を `analysis.md` に残す運用にも向きます。
⚠️ 注意点
未信頼コードをチェックアウトするワークフローでは、APIキーをジョブ全体の環境変数に晒さないでください。GitHubでは公式のCodex GitHub Actionの利用が推奨です。`--full-auto` は非推奨で、代わりに `--sandbox workspace-write` を使います。`required = true` のMCPサーバーが起動失敗すると `codex exec` はエラー終了します。自動化では常に最小権限のサンドボックスを選びましょう。
#Codex# #CI#