本文へ移動
🧭

Codex を使い始めると、最初は「一番強いモデルを常に選べばよい」と考えがちです。けれど実務では、モデルを強くしただけでは安全にも速くもなりません。調査、実装、PRレビュー、CIの要約、定期 automation を同じモデルと同じ reasoning effort で回すと、軽い仕事が重くなり、重い仕事はレビュー不能になり、失敗したときに原因も追えません。

この記事では、Codex の model selection を作業 lane ごとに固定する設計を扱います。GPT-6 Astraへ上げる前後のprompt・tool・検証の再審査は Codex GPT-6 Astra 移行設計ガイド、sandbox や approval の切り替えは Codex config / profile 設定ガイド、CIで codex exec を回す契約は Codex CI / non-interactive 設計ガイド、定期実行の仕事選定は Codex Automations 実践ガイド、token や tool call の上限設計は AIエージェント予算ガードレール設計ガイド に分けています。

今回の論点は、権限や予算の前に、どの種類の仕事へどのモデル、どの reasoning effort、どの escalation path を割り当てるかです。

先に結論: モデルは「強さ」ではなく lane で選ぶ

私なら、Codex のモデル選択を次のように始めます。

作業 lane最初の選択上げる条件人間の確認
日常実装Terra + medium仕様が曖昧、影響範囲が広い、設計判断を含むdiff review
深い設計・移行調査Sol + medium / high複数repo、未確定仕様、セキュリティ判断を含むplan review
定型の要約・分類Luna + low / medium失敗が続く、抽出漏れがあるspot check
PRレビューTerra + medium認可、secret、データ削除、外部副作用を含むfinding triage
セキュリティ調査Sol + highthreat model が未整理、攻撃面が複数あるsecurity owner review
scheduled taskLuna / Terra + low / mediuminbox で再調査が必要になったinbox review

大事なのは、Sol / Terra / Luna を「賢い順に常用する」ことではありません。OpenAI の Codex docs では、Sol は複雑で open-ended な coding や調査、Terra は日常的な coding、Luna は明確で反復的な仕事に向く、と整理されています。この差を、作業 lane とレビュー方法へ落とします。

Sol を使う仕事

Sol は、最初の入力だけでは正解の形が決まらない仕事に使います。

  • 大きな設計変更の調査
  • 既存仕様と実装の差分確認
  • セキュリティ観点を含むコードレビュー
  • 複数の公式ドキュメントを突き合わせる移行判断
  • 失敗した automation の原因分析

たとえば、認可まわりの修正を任せるときは、単に fix auth bug と投げるのではなく、Sol に plan を作らせます。

Use Sol with high reasoning.

Goal:
- Investigate the authorization regression.
- Do not edit files yet.
- Return affected routes, suspected policy gap, required tests, and rollback risk.

Stop:
- If the change touches billing, tenant isolation, or deletion paths, stop with a review packet.

ここで Sol に期待するのは「一発で直すこと」ではありません。影響範囲、未確定点、止めるべき条件を早めに出させることです。実装に入る前の plan review を挟めば、強いモデルを広い権限で暴走させる使い方になりません。

Terra を既定にする仕事

Terra は、普段の実装や修正の既定値にしやすいモデルです。公式 docs でも、日常的な coding work では Terra が速度、性能、コストのバランスを取りやすい選択として説明されています。

私なら、次のような仕事は Terra から始めます。

  • 1つのコンポーネントのバグ修正
  • テスト追加を伴う小さな API 変更
  • 既存パターンに沿ったページ追加
  • CI失敗ログからの原因切り分け
  • PRコメントへの限定対応

ただし、Terra を既定にしても、差分の種類で止めます。次のどれかが出たら Sol に上げるか、人間へ戻します。

  • DB migration やデータ削除が必要になった
  • auth、billing、secret、tenant isolation に触れる
  • 既存設計の変更が必要になった
  • 3ファイル程度の局所修正を超え始めた
  • Codex が同じ原因で2回失敗した

「普段は Terra」で十分ですが、「危ない領域も Terra で押し切る」は違います。model selection はコスト削減ではなく、レビュー境界を揃えるための設計です。

Luna を使う仕事

Luna は、入力と出力の形がはっきりしている仕事に向きます。

  • CIログの要約
  • changelog から該当項目だけ抜き出す
  • GSC query をカテゴリ分けする
  • PR差分から release note 草案を作る
  • inbox に戻す短い判定メモを作る

Luna に任せるときは、自由作文にしない方が安定します。

Use Luna with low reasoning.

Input:
- CI log
- Changed file list

Return:
- failed_command
- likely_cause
- owner
- next_action
- confidence: high | medium | low

Do not propose code changes.

このように output contract を狭くすると、軽いモデルでも十分に仕事になります。逆に、Luna に曖昧な調査や大きな設計判断を任せると、速いが浅い出力を人間が補うことになり、結局高くつきます。

reasoning effort は「低い順」から上げる

reasoning effort は、モデル名とは別の設計変数です。OpenAI の config reference では minimal、low、medium、high、xhigh のような段階が説明されています。私は、最初から高くするのではなく、失敗条件に応じて上げます。

状況effort理由
決まった形式の要約low深い推論より形式遵守が重要
既存パターンに沿う実装medium速度と検討量のバランスを取る
設計変更や移行判断high代替案、影響範囲、rollback を見たい
複数repoや攻撃面の調査high / xhigh見落としコストが高い

xhigh を常用しない方がよいです。重い reasoning は、判断材料が多い仕事では有効ですが、入力が曖昧なままだと長く考えた曖昧な答えになります。先に task packet、対象ファイル、禁止事項、検証コマンドを狭める方が効果的です。

Max と Ultra はモデル選択の代替ではない

Codex docs では、Max は選んだモデルにより長く取り組ませる選択、Ultra は大きな仕事を subagent に分けて並列化する選択として説明されています。これは「強いモデルをさらに強くする魔法」ではありません。

Max が向くのは、1つの難しい仕事です。

  • 複雑な migration plan を1本にまとめる
  • flaky test の原因を深く掘る
  • 大きな設計差分の review packet を作る

Ultra が向くのは、分割できる仕事です。

  • 複数moduleの影響調査
  • 競合PRの役割分担チェック
  • article cluster の重複チェック
  • 大きな codebase の責務境界調査

Ultra を使うときは、subagent の数ではなく、統合レビューを先に決めます。並列で調べた結果を誰が統合し、どの finding を採用し、どれを捨てるのかが曖昧なら、速くなる代わりに判断材料が散らかります。

profile へ落とす単位

モデル選択は、その場の気分で /model を叩くだけだと再現性がありません。Codex CLI では /model でモデルと reasoning effort を選べますが、実務では profile と runbook に落とした方が安全です。

例として、私は次の3つに分けます。

# ~/.codex/research-deep.config.toml
model_reasoning_effort = "high"
sandbox_mode = "read-only"
approval_policy = "on-request"
# ~/.codex/implementation.config.toml
model_reasoning_effort = "medium"
sandbox_mode = "workspace-write"
approval_policy = "on-request"
# ~/.codex/automation-summary.config.toml
model_reasoning_effort = "low"
sandbox_mode = "read-only"
approval_policy = "never"

起動時に model を明示するなら、次のように runbook 側へ書きます。

codex --profile research-deep -m gpt-5.6-sol
codex --profile implementation -m gpt-5.6-terra
codex exec --profile automation-summary -m gpt-5.6-luna "summarize new CI failures"

この分け方なら、model、reasoning、sandbox、approval が同じ作業名で追えます。あとから「なぜこの automation だけ高コストだったのか」を見直すときも、会話ログだけに依存しません。

saved config と scheduled task の移行

OpenAI の docs では、Codex の saved configurations、custom agents、scheduled tasks で古いモデル名を使っている場合の移行にも触れています。gpt-5.4 系から gpt-5.6-terra、mini 系から gpt-5.6-luna へ置き換える、という考え方です。

ここでやってはいけないのは、全タスクを一括で最新の強いモデルへ置き換えることです。scheduled task は、人間が見ていない時間に走ることがあります。だから、移行時は次を確認します。

  1. task の目的は調査、実装、要約、通知のどれか
  2. output は inbox でレビューできる粒度か
  3. write action や外部送信を含まないか
  4. 失敗時に再実行せず停止する条件があるか
  5. モデル変更後の初回結果を人間が読む予定があるか

モデル移行はアップグレード作業ではなく、運用契約の再確認です。

よくある失敗

1. 強いモデルを default にして運用を隠す

Sol を default にすると、短期的には出力が良く見えます。ただ、軽い仕事まで重くなり、どの仕事が本当に深い reasoning を必要としていたのか分かりにくくなります。default は Terra、深い調査は Sol、定型要約は Luna のように分けた方が振り返りやすいです。

2. reasoning effort で要件の曖昧さを埋める

high にすれば曖昧な依頼を補ってくれる、という期待は危険です。曖昧な要件には確認、狭い change budget、検証コマンドが必要です。reasoning effort は、良い入力に対する検討量を増やすものとして扱います。

3. Max / Ultra をレビュー不足の穴埋めにする

大きな仕事を Max や Ultra に投げるほど、出力を読む側の責任は増えます。人間の review owner、採用基準、停止条件がないなら、先にそこを決めます。強い実行モードはレビューの代わりにはなりません。

4. model selection と approval policy を混ぜる

モデルを強くしても、書き込み権限を広げてよい理由にはなりません。逆に、Luna だから安全ということもありません。model selection は能力とコストの設計、approval policy は外部副作用の設計です。別々に決めます。

導入チェックリスト

  • default model を Terra 相当に置く
  • deep research / security lane だけ Sol に上げる
  • summary / classification / inbox triage は Luna から始める
  • reasoning effort は low / medium から始め、失敗条件で上げる
  • Max は単一の難問、Ultra は分割できる調査だけに使う
  • saved config と scheduled task の古いモデル名を棚卸しする
  • 初回移行後の結果は必ず人間が読む
  • model、reasoning、sandbox、approval を同じ lane 名で記録する

Codex の model selection は、モデル一覧を暗記する作業ではありません。仕事の種類、失敗したときの被害、レビューできる粒度、予算を合わせて決める運用設計です。

私なら、まず Terra + medium を普段の実装に置き、Sol は設計・移行・セキュリティ、Luna は要約・分類・定期レポートへ切ります。その上で、Max / Ultra は「本当に長く考える価値があるか」「本当に分割できるか」を確認してから使います。

この設計にしておくと、Codex は「今日はどのモデルが賢いか」ではなく、この仕事はどの lane で、安全に完了させるべきかで選べるようになります。

参考資料

WRITTEN BY nidoneko

Full-stack engineer with 8+ years of experience in TypeScript, React, Node.js, and cloud-native development across healthcare, finance, HR, and IoT domains.

View Profile →