コンテンツにスキップ

GitHub ActionsでCodex CLIを安全に実行する方法

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 cipip 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-actionoutput-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を直接扱わせない

参考リンク