GitHub ActionsでCodex CLIを安全に実行する方法¶
この記事の対象者
- 対象: GitHub Actionsで自動生成タスクを運用したい中級エンジニア
- ゴール: Codex CLIをCIから呼び出し、プロンプトファイルベースで記事やコードを生成できる状態にする
- 前提: リポジトリがGit管理済みで、OpenAI APIキーまたはChatGPTプランを保有している
Codex CLIをCIに載せる理由¶
codex execは非対話モードで動作し、承認プロンプトを出さずに処理を完了できる(公式ドキュメント)- OpenAI公式の
openai/codex-actionを使うと、Responses APIプロキシ・安全策を含めてセットアップできる(GitHub Actions解説) --sandbox danger-full-access(=--dangerously-bypass-approvals-and-sandbox)を付けるとClaude CLIの--dangerously-skip-permissionsと同等に完全自動化できるが、危険なので段階的に使う(Sandboxルール)
ワークフロー実装ステップ¶
1. シークレットと環境準備¶
- OpenAI ConsoleでAPIキーを発行し、GitHub Secretsに
OPENAI_API_KEYとして登録 - Codexの実行ログを分離するため
CODEx_HOME用の作業ディレクトリ(例:.github/codex-cache)を作成 - 過剰権限を避けるため、先に必要な依存パッケージ(例:
npm ciやpip install)はCodex実行前のステップで完了させる
mkdir -p .github/codex-cache
git add .github/codex-cache/.gitkeep
2. ワークフローYAMLでcodex-actionを呼び出す¶
以下は最小構成の例。prompt-file でプロンプトテキストを渡し、codex-args で危険度を制御する。
- name: Run Codex CLI
uses: openai/codex-action@v1
with:
openai-api-key: ${{ secrets.OPENAI_API_KEY }}
prompt-file: .github/prompts/stage1.txt
sandbox: workspace-write
codex-args: ["--full-auto","--cd","docs"]
3. プロンプトファイルと生成物の整理¶
- プロンプトは
.github/prompts/配下で管理し、日付などの変数はGitHub Actions側でテンプレート展開してからCodexに渡す - Codexの出力は
codex-actionのoutput-fileオプションで保存するか、生成ファイルをgit statusで確認して後続ステップで検証 --dangerously-bypass-approvals-and-sandboxを付ける場合は、実行前後で必ずgit diffとテストを走らせる監視ステップを追加する
運用のポイント¶
- 段階的な権限付与: まず
sandbox: workspace-write+--full-autoで挙動を検証し、どうしても必要な場合だけdanger-full-accessに切り替える - API利用量の監視:
codex-action実行後にResponses APIの使用量が増えるため、OpenAI Usageダッシュボードで日次確認する - 失敗時のリトライ方針: CodexがGit管理外の差分を残すと再実行時に失敗しやすい。定期的に
git clean -fdを挟む、生成ファイルを一時ディレクトリに書き出すなどのフローを整備する - セキュリティ: ワークスペース外アクセスやネットワークアクセスが必要な場合は、専用のMCPサーバー経由で処理させ、Secretsを直接扱わせない