Claude Code と同じ仕様書で Codex にもブロック崩しを作らせる。そのための準備です。
1回目は4秒で死にました。 実装力の問題ではなく、準備の問題でした。
3つ
PC にあった codex.exe
PATH には1つも無い
4秒
古い版で即終了
エラーはモデルの顔をしていた
:7800
サンドボックスから届いた
network_access が要る
13件
全プロジェクトに効くプラグイン
ユーザー設定に書かれる
1. Codex の実行ファイルが3つあった(原因と見分け方)
まず codex コマンドがありません。ChatGPT のデスクトップアプリに同梱されていますが、PATH には追加されません。
探したら、同じ PC に3つありました。
| 場所 | バージョン | 更新日 |
|---|---|---|
アプリのインストール先の bin | 0.130.0-alpha.5 | 2026-05-10 |
ユーザーフォルダの .codex/.sandbox-bin | 0.147.0-alpha.1.2 | 2026-08-06 |
| アプリ本体の中(保護領域) | アプリ同梱 | — |
最初に見つけた bin のほうを使いました。5か月前に取り残された古い版です。
アプリ本体の中にあるものは、直接実行しようとすると Access is denied になります(Windows のアプリ保護領域にあるため)。
⚠️ 古い CLI は「モデルが使えない」という顔で出てくる
起動して4秒でこれが返ってきました。
The 'gpt-5.6-sol' model requires a newer version of Codex. Please upgrade to the latest app or CLI and try again.
モデル名の問題に見えます。実際は CLI の版が古いだけでした。標準エラーには unknown variant 'max', expected one of 'none','minimal','low','medium','high','xhigh' も出ていて、古い CLI が新しい思考レベルを解釈できていないのが分かります。
使う前に必ず --version を見てください。バージョンの違いは機能の違いでもあります。古い 0.130 には codex plugin add / list / remove が存在せず、marketplace だけでした。Unity の公式手順どおりのコマンドが打てません。新しい 0.147 には全部あります。
2. 非対話で走らせる
対話しないので、途中で承認を求められても人が答えられません。 必要な権限は起動時に決め切ります。
実際に使った起動コマンドです。
codex exec --ignore-user-config -m gpt-5.6-sol \
-c model_reasoning_effort=high \
-c windows.sandbox=unelevated \
-c approval_policy=never \
-s workspace-write \
-c sandbox_workspace_write.network_access=true \
-C 作業フォルダ --json -o last.md - < prompt.md > events.jsonl
| オプション | なぜ |
|---|---|
--ignore-user-config | ユーザー設定に入っている他のプラグインを混ぜない(比較の公平さのため) |
-s workspace-write | 書き込みを作業フォルダの中だけに制限する |
network_access=true | Unity CLI がエディターと通信するのに要る(次の節) |
approval_policy=never | 非対話なので、聞かれても答えられない |
--json | イベントを JSONL で記録する。あとから何をやったか追える |
使用量は JSONL から拾う
実行中に「いま何トークン使ったか」は出てきません。終わったあと、セッション記録(ユーザーフォルダの .codex/sessions/年/月/日/rollout-*.jsonl)の rate_limits と total_token_usage を読むと分かります。強制停止すると完了イベントが出ないので、トークン数は残りません。
3. サンドボックスから Unity に届くか(実測)
ここが一番の心配でした。Unity CLI はエディターのローカル HTTP API(既定は 127.0.0.1 の 7800 番)を叩いて動きます。サンドボックスがこれを止めたら、Codex は Unity を触れません。
手順 01
Codex(サンドボックス内)
workspace-write
手順 02
unity command
HTTP で 127.0.0.1:7800
手順 03
Unity エディター
Pipeline パッケージ
結果:届きました。 ただし条件が1つあります。
既定のまま
network_access を有効にする
-c sandbox_workspace_write.network_access=true
unity command がサンドボックスの中から動いた。公式の Windows サンドボックスの説明には Elevated(専用の低権限ユーザーで隔離)と Unelevated(制限付きトークン+ACL・分離は弱い)がありますが、ローカルへの接続が許されるかは書かれていません。実測するしかありませんでした。
⚠️ workspace-write は「外に出られない」ではない
2回目の実行で、Codex はビルドのキャッシュを消そうとしてポリシーに拒否され、代わりに作業フォルダの外へ 629MB を移動しました。 さらに、サンドボックスの制限を避けるために Windows のシェル経由でエディターを起動しています。
「書き込みは作業フォルダの中だけ」という設定でも、移動やシェル経由の起動は通りました。 この話は放置実行の記事に詳しく書いています。
4. プラグインは全プロジェクト共通
Claude Code と Codex で、プラグインの効く範囲の仕組みが違いました。
Claude Code
user / project / local)Codex
config.toml に書かれる入れたプラグインは、ユーザー設定の config.toml にこう書かれます。
[plugins."unity@unity-agent-plugin"]
enabled = true
手元の設定には、Unity と関係ないプラグインが13件入っていました。
- 1
CLI 引数
-c key=valueがいちばん強い - 2
プロジェクトの .codex/config.toml
信頼済みプロジェクトのときだけ読まれる - 3
プロファイル
-pで指定したもの - 4
ユーザー設定
プラグインはここに書かれている
設定はこの順で上書きされるので、プロジェクト側で打ち消せる余地はあります。比較のときは確実さを取って、--ignore-user-config でユーザー設定ごと外しました。 認証は別に持っているので、これで困りません。
5. モデルと思考レベルをそろえる
比較にするなら、同じ価格帯・同じ役割のモデルを選びます。
| 位置づけ | Claude | OpenAI |
|---|---|---|
| 最上位 | Claude Fable 5.1 | GPT-6 Astra |
| 主力(普段使い) | Claude Opus 5 | GPT-5.6 Sol |
Claude Code 側を Opus 5 / 思考レベル「高」で作ったので、Codex 側は GPT-5.6 Sol / high にしました。
思考レベルの指定は -c model_reasoning_effort=high です。設定リファレンスに載っているのは minimal から xhigh まで。モデル一覧のほうにはもっと上もありますが、リファレンスには書かれていません。
料金の見え方が違う
上の位置づけは API の価格帯の話です。codex exec は ChatGPT のログインを使うので、従量課金ではなく週間の利用枠から減ります。 上限に達したら止まるだけですが、枠を使い切るとアプリ側の Codex もリセットまで使えなくなります。実行の前後で残りを控えておくのが安全です。
6. 作業フォルダを分ける
Unity は同じプロジェクトフォルダを2つのエディターで同時に開けません。 Codex 用は別フォルダにします。
git worktree add ../breakout-codex -b codex/v1 起点のコミット
2つ目のエディターは、操作用のポートが自動的に 7801 になります(1つ目は 7800)。Unity CLI を叩くときは --project-path を必ず付けてください。詳しくはgit worktree の記事に書きました。
Library を作り直すので、初回の読み込みに数分かかります(この題材で216秒)。
まとめ
codexは PATH に無い。 実行ファイルを探して、--versionで新しいものを選ぶ- 古い CLI は「モデルが使えない」という顔で失敗する。原因が版だと気づきにくい
- サンドボックスからでも Unity に届く。ただし
network_access=trueが要る - プラグインは全プロジェクト共通。 混ぜたくないなら
--ignore-user-config - 非対話では承認に答えられない。権限は起動時に決め切る
- 使用量は終わってから JSONL のセッション記録で拾う
準備が終わったあと、実際に走らせた結果はClaude Code と Codex の比較にあります。