適合する場合: Codex CLIの
codex execは非対話のCIタスクに利用できます。AppleのXcode 27リリースノートを前提に、実行環境と必要なツールチェーンを確認したうえで、作業場所・サンドボックス・承認方針を決めてください。Agentの変更や要約をXcodeのビルド・テスト結果の代わりにせず、信頼できないプルリクエストは資格情報を持つ永続Runnerから分離します。
iOS/macOS開発者のうち、対話操作からスクリプトやCIへの移行を検討している方に向けた内容です。GitHub ActionsのmacOSジョブや自ホストRunnerを運用するCI担当者、構築環境と資格情報の境界を定める開発基盤の担当者にも役立ちます。
最終更新:2026年11月12日。Codex CLIの実行方法はOpenAIの非対話モード資料とCLIコマンドリファレンス、Runnerの安全性はGitHubのセキュリティ資料、Xcodeの要件はAppleのシステム要件で照合しています。公式仕様が更新された場合は、実行オプションと環境要件を再確認してください。
00実行場所とリポジトリの準備
最初に決めるのは、Codex CLIをどの環境で実行し、どのリポジトリのどの状態を対象にするかです。Agentの実行環境、macOS上のXcodeビルド・テスト、GitHub Actionsのジョブスケジューリングは別の役割です。GitHub Actionsから自ホストRunnerへジョブを割り当てる構成は、GitHubのRunner利用手順で確認できます。
Codexの作業ディレクトリが、CIでチェックアウトしたコミットの場所と食い違うと、別の作業コピーを変更したまま成功したように見えることがあります。開始前に、リポジトリの取得元、トリガーとなるイベント、必要なツール、ログや生成物の保存先をそろえてください。
| 確認対象 | 作業前に決める内容 | 失敗を見分ける確認 |
|---|---|---|
| リポジトリ | CIが取得するリポジトリと対象ブランチ/コミット | 実行ログのコミット識別子と作業ツリーを照合 |
| 作業場所 | チェックアウト先とCodex CLIの実行ディレクトリ | 実行時のパスが意図した作業コピーか確認 |
| トリガー | 信頼できるブランチか、外部プルリクエストか | イベントの種類ごとに渡される権限を点検 |
| 必要なツール | Codex CLI、Xcode、プロジェクト固有のツール | CIログに実際の呼び出しとバージョンを記録 |
| 出力 | Codexのログ、テスト結果、ビルド生成物 | 対象コミットと成果物の保存先をひも付ける |
GitHub ActionsのmacOSジョブ上でCodex CLIを動かす場合も、ワークフローがジョブを動かす場所と、Agentが変更する場所の両方を指定します。コマンドやパスはプロジェクトごとに異なるため、公式資料でサポートされる呼び出し方を確認し、実環境に合わせて置き換えてください。
01非対話実行と権限の設定
CIでは、対話画面で承認を待つのではなく、非対話実行としてタスクの入力、作業範囲、終了状態を扱います。codex execの用途やオプションは、冒頭に示したCodex CLI公式資料を確認し、実際に使うパラメーターを導入時点の仕様に合わせてください。
権限は「読み取り」「指定した作業領域への変更」「より広い権限が必要な処理」に分けて考えます。最初から承認を無効にしたり、サンドボックスを外したりするのではなく、タスクに必要な操作を特定してから、最小限の範囲を選びます。
| 実行方針 | 適する作業 | 導入時の確認 |
|---|---|---|
| 読み取り中心 | コードの説明、変更候補の調査 | ファイル変更が発生しないことを試走で確認 |
| 作業領域内の変更 | 指定したリポジトリ内での限定的な修正 | 変更可能な場所と差分を確認 |
| より広い権限が必要な処理 | 明確な理由があり、別途審査した操作 | 資格情報、外部資源、実行環境への影響を評価 |
注意: 承認の扱いを変更することと、未信頼コードを安全に隔離することは別問題です。権限設定に加え、Runnerへのアクセス、秘密情報の受け渡し、イベントごとの実行先を設計してください。
02試走と変更範囲の確認
本番のワークフローへ組み込む前に、まず変更を伴わないタスクで実行先と入力を確かめます。その後、影響を把握できる小さな変更を用いて、作業場所、差分、終了状態、ログが意図どおりか確認します。これは導入時の検証手順であり、Codex CLIが特定のプロジェクトで意図した結果を保証するという意味ではありません。
- [ ] 対象リポジトリ、ブランチ、コミットをCIのログから確認する
- [ ] Codex CLIの実行ディレクトリが対象のチェックアウト先と一致しているか確認する
- [ ] 変更を求めないタスクを実行し、出力と終了状態を記録する
- [ ] 制御した変更を試し、差分が許可した作業領域内に収まるか確認する
- [ ] 認証情報が不要なタスクには、秘密情報を渡さない設定にする
- [ ] 失敗時にログと作業状態を回収できることを確認する
この段階で異なる作業コピーへの変更、予期しない権限要求、追跡できない出力が見つかった場合は、Agentのタスクを増やさず設定を見直してください。CIの成功表示だけでなく、どのMac上でどのコミットが処理されたかを追跡できる状態が必要です。
実行場所と権限の確認事項
GitHub ActionsのmacOS環境で実行する場合、ジョブの実行先はワークフローで明示します。リモートMacを使う場合は自ホストRunnerとして割り当て、Runnerの権限とジョブのイベント種別を合わせて確認してください。Codex CLIの作業場所も別途そろえ、実行ログで対象コミットと作業パスを照合します。
作業ディレクトリはCIがチェックアウトしたリポジトリを基準にします。最初は読み取り中心のタスクを実行し、変更を許可する場合も差分と書き込み先を確認できる範囲に限定してください。必要なサンドボックスや承認オプションはCodex CLIの公式リファレンスで照合し、より広い権限を既定値にしないでください。
Agentの応答は作業内容を知る手掛かりですが、ビルド成功の証拠ではありません。CIでXcodeのビルドとテストを別工程として実行し、対象コミット、ツールチェーン、終了状態、ログ、成果物の保存先を記録します。Appleのシステム要件とリリースノートに照らし、使用するXcodeとmacOSの組み合わせも確認してください。
秘密情報を最小化するだけでなく、未信頼コードが実行されるジョブに資格情報を渡さない設計が必要です。GitHubは自ホストRunnerの安全上の注意を示しており、承認や作業ディレクトリの削除だけで未信頼コードを隔離できるとは限りません。Runnerへのアクセスを制限し、イベント別に実行先を分け、pull_request_targetの安全な利用に関するGitHubの説明も確認してください。
03Xcodeのビルドとテストの独立検証
Codex CLIがコードを変更した後は、Agentの説明ではなく、明示したXcodeの工程を合否判定に使います。Xcodeの要件は冒頭に示したAppleのシステム要件で確認し、採用するバージョン固有の条件はXcode 27のリリースノートと照合してください。コマンドやスキームはプロジェクトに合わせ、未確認のバージョン条件を固定値として流用しないでください。
| 記録する証拠 | CIで残す内容 | 判定に使う理由 |
|---|---|---|
| ソース状態 | 対象コミットと変更差分 | 何を検証したか追跡する |
| ツールチェーン | 実際に呼び出したXcodeとmacOS環境 | 要件と実行環境の整合性を確認する |
| ビルド結果 | ビルド工程の状態とログ | Agentの応答とコンパイル結果を区別する |
| テスト結果 | 実行したテスト工程と結果 | 変更後の動作確認を独立して行う |
| 成果物 | 生成物の種類と保存場所 | 検証対象と配布物の対応を残す |
ビルドやテストが実行されなかった場合、Agentのタスクが成功していても、Xcodeの受け入れ条件を満たしたとは扱えません。テスト対象や署名などプロジェクト固有の条件を決め、未実行・失敗・成功を区別して記録します。
04Runnerの利用範囲と導入判断
信頼できるブランチの作業と、外部からのプルリクエストを同じ永続Mac Runnerで処理するかどうかは、導入前に判断します。GitHub Actionsのセキュリティ資料が示す自ホストRunnerのリスクを踏まえ、Runnerのアクセス制御、ジョブごとの権限、資格情報の提供条件、タスク後の環境確認を組み合わせてください。
| タスクの性質 | 判断の目安 | 次の対応 |
|---|---|---|
| 管理下のブランチで行う限定作業 | 権限と作業範囲を説明できる | 制御した試走から始める |
| 外部プルリクエストを処理する | コードの信頼性を確認できない | 資格情報を持つ永続Runnerと分離する |
| 強い権限や秘密情報が不可欠 | 影響範囲と隔離方法を説明できない | 実行を保留し、設計を見直す |
| Xcodeの検証手順が未確定 | Agentの結果だけで合否を出している | CIに独立したビルド・テスト工程を設ける |
試走へ進めるのは、対象コミットと作業場所を追跡でき、権限を限定でき、Xcodeの結果を独立して確認できる場合です。外部コードの分離や資格情報の扱いに不明点が残るなら、Runnerの用途を制限するか導入を保留してください。
ローカルMacだけで運用する方法は物理環境を直接管理できますが、端末の常時稼働やチーム共用の負担が残ります。一般的なLinux CI環境は、macOS専用のXcode工程をそのまま受け持てません。継続的にCodex CLIとXcodeを実行する必要がある一方、Macの購入や管理を避けたい場合は、NUKCLOUDのリモートMac環境を候補に加え、対象ワークフローと必要な分離条件を先に照合してください。運用地域を含めて検討する場合は、日本向けの利用案内も確認できます。リモートMacが適するのは、必要な実行環境とアクセス制御を満たせる場合です。物理インターフェースが必要な作業や、長期の高負荷運用で専有機器を直接管理する必要がある場合は、自社保有のMacも比較対象にしてください。