claude-code.log
Codex — 2026.07.11

Codexの最上位モードに任せたら、5時間の枠を1時間で溶かした話

2026.07.11 ·クオ ·約5分で読めます
Codexの最上位モードに任せたら、5時間の枠を1時間で溶かした話

Fable 5 でエンジョイしてたら、Claude が1週間ぶんの上限に達した。ちょうど GPT-5.6 が出たので、今度は Codex から Sol を使うことにした。いちばん上の Ultra を選んだ。

1時間で5時間ぶんの枠が消えて、それが3回続いた。

最初は自分の使いすぎだと思った。重い作業をまとめて投げていたし、そういう時期もある。ただ、3回目で速すぎると感じた。5時間の枠を1時間で使い切るのは、いくら重い作業でも速すぎる。ログを開いて、何に食われているのか調べた。

ログを見たら、子が全部いちばん上のモデルだった

Codex には、一つの作業を子のAIに分けて手分けさせる仕組みがある(サブエージェント)。重い作業を投げると、Sol が子を何体か立てて並列で進める。ログを開くと、その子が全部 Sol の Ultra で動いていた。

俺は ~/.codex/agents/ に、役割ごとのモデルを決めた設定を置いている。調べ物をする子は安いモデル、実装する子は中くらい、というふうに割り当てた。ログを見ると、その設定が一つも効いていなかった。子を立てる指令(spawn_agent)に渡せるのは作業の名前(task_name)だけで、役割やモデルを選ぶ欄がない。だから役割は空のまま(agent_role が空)になり、モデルは親からそのまま受け継がれていた。全員が Sol の Ultra だった。

親のSol/Ultraが子を何体も立て、子がまた子を立てる。モデル指定が渡らないので、ぶら下がる子はすべて同じSol/Ultraになる
親のSol/Ultraが子を何体も立て、子がまた子を立てる。モデル指定が渡らないので、ぶら下がる子はすべて同じSol/Ultraになる

いちばん上のモデルを一体動かすと、その下に同じいちばん上のモデルが何体もぶら下がる。子がまた子を呼べば、その分だけ増える。1時間で5時間ぶん減っていたのは、これが原因だった。安く済ませるつもりで役割を分けた設定は、まるごと素通りされて、全部が最高価格で走っていた。

モデルを選ぶ指定が、隠されていた

なぜ設定が効かないのか。子を立てる指令には、モデルを指定する欄がそもそも無かった。

Codex の設定に hide_spawn_agent_metadata という項目がある。既定は「隠す(true)」だ。この「メタ情報」には、モデルと思考の深さを選ぶ欄も含まれている。だから既定のままだと、その欄ごと子を立てる指令から消えていた。欄が無いので、役割ごとのモデルをいくら設定しても渡せない。渡せないから、子は親のモデルをそのまま継ぐ。最上位のモデルを選んだ人ほど、子も全部最上位になる。

俺は、いちばん上のモードを選べば賢いモデルが仕事も賢く振り分けてくれると思っていた。実際は、黙って選んだだけでは、軽い作業まで最上位のモデルのまま走り続けた。

同じ日に、同じ報告が並んでいた

自分の環境だけの問題かと思って調べた。7月9日から10日にかけて、Xで、日本語でも英語でも同じ報告が並んでいた。Sol Ultra を放っておいたら3分で上限を突破した。20分で5時間の枠が消えた。今日だけで2回、5時間の上限に達した。今まで一度もなかったことだ。

原因の見立ても一致していた。ある人が、俺がログで見たのと同じことを書いていた。「spawn_agent は作業の名前しか送っていない。子は役割が空のまま親のモデルを継いで、設定ファイルを無視する」。GitHub にも報告(issue)が立っていて、Sol は子のモデルを指定できず子も全部 Sol になる、とまとめられていた。新しい版(0.144.1)で入った不具合だという指摘もあった。

GPT-5.6 Sol cannot specify subagent models, forcing all subagents to also be Sol instancesSolが子のモデルを指定できず、子も全部Solインスタンスになる。同じ症状の報告が集まったGitHub issue。GitHub

直し方を書いている投稿もあった。

設定2行で、子に別のモデルを選べるようにした

evi77ain という人が、設定を2行貼っていた。

[features.multi_agent_v2]
hide_spawn_agent_metadata = false
tool_namespace = "agents"

上の行で、隠されていたモデル選択の欄を戻す。下の行は、子を立てる道具の名前がぶつかって出るエラーを避けるためのものだ。この2行を config.toml に足してセッションを開き直すと、子を立てる指令にモデルの欄が戻ってきた。

config.toml に足す2行hide_spawn_agent_metadata を false に、tool_namespace を agents に。これで spawn_agent にモデル選択が戻る。X / @evi77ain

戻ったあとは、~/.codex/agents/ に置いていた役割ごとの割り当てがそのまま効くようになった。実際に役割を指定して子を立てると、設定どおり安いモデルで動いた。全部が最上位で走っていたのが、必要なところだけ最上位で、あとは軽いモデルという配分に変わった。枠の減り方も元に戻った。

設定前は親も子も全部Sol/Ultraで枠が一気に減る。設定後は親がSol、子は役割ごとに安いモデル(調べ物は軽い、実装は中くらい)へ振り分けられ、減り方がゆるやかになる
設定前は親も子も全部Sol/Ultraで枠が一気に減る。設定後は親がSol、子は役割ごとに安いモデル(調べ物は軽い、実装は中くらい)へ振り分けられ、減り方がゆるやかになる

いちばん上を選ぶだけでは足りなかった

設定を2行足して、子に安いモデルを選べるようにした。今のところ、これで落ち着いている。流石にOpenAIさん、この隠しパラメータみたいなものは、違うんじゃないか?