サブエージェントのトークン消費が多い:安いモデルを指定するには?
Claude Code では、サブエージェントのファイルの先頭に model: haiku と書きます。Codex では、~/.codex/config.toml の [agents] に default_subagent_model を設定します。サブエージェントはそれぞれ独自にリクエストを実行し、同じ枠から消費するので、検索やファイルの読み込みのような簡単な作業は、小さいモデルに任せるのがいちばん安く済みます。
Codex
~/.codex/config.toml の [agents] に default_subagent_model を設定すると、すべてのサブエージェントがデフォルトで小さいモデルを使います。
設定しなければ、サブエージェントはメインのセッションのモデルと推論レベルを引き継ぎます。config.toml の [agents] ですべてのサブエージェントのデフォルトを設定するか、特定のサブエージェントに専用の .toml ファイルを作って model と model_reasoning_effort を書きます。ファイルの値がデフォルトより優先されます。OpenAI は、検索、大きなファイルの読み込み、資料の処理には GPT-5.6 Terra を、範囲が明確で繰り返しの多い作業には GPT-5.6 Luna をすすめています。同時に動かす数を制限するには、[agents] に max_concurrent_threads_per_session を設定します。
公式ドキュメントの記載
Because each subagent does its own model and tool work, subagent workflows consume more tokens than comparable single-agent runs.If you don't configure a subagent model or model_reasoning_effort, the subagent inherits the parent agent's model and reasoning effort.To balance intelligence, speed, and price for each task, request a specific model or reasoning effort in your prompt, configure [agents] defaults in config.toml, or set model and model_reasoning_effort directly in the custom agent file.Use gpt-5.6-terra when you want a faster, lower-cost option for lighter subagent work.If a custom agent file sets model or model_reasoning_effort, the value in the file takes precedence.Claude
サブエージェントのファイルの先頭に model: haiku と書きます。すべてを一度に変えるなら、環境変数 CLAUDE_CODE_SUBAGENT_MODEL を設定します。
理由は /usage のパネルに書かれています。「Each subagent runs its own requests. Be deliberate about spawning them — and consider configuring a cheaper model for simpler subagents.」(サブエージェントはそれぞれ独自にリクエストを実行する。起動は慎重に。簡単なサブエージェントには安いモデルの設定を検討する)。サブエージェントのファイルは、.claude/agents/(このプロジェクト)か ~/.claude/agents/(すべてのプロジェクト)に置きます。先頭の model には haiku、sonnet、opus、fable、完全なモデル ID、inherit のいずれかを指定でき、省略するとメインのセッションのモデルを使います。CLAUDE_CODE_SUBAGENT_MODEL はすべてのサブエージェントのデフォルトを設定しますが、あくまでデフォルトです。ファイルに書かれたモデルや、Claude が作業を任せるときに指定したモデルが優先されます。サブエージェントの実行中に /tasks と入力すると、実際に使っているモデルを確認できます。
公式ドキュメントの記載
For simple subagent tasks, specify model: haiku in your subagent configuration.CLAUDE_CODE_SUBAGENT_MODEL is a default, so a subagent's definition or a model Claude passes still takes precedence over it. To apply one model to every subagent, teammate, and workflow agent, also set CLAUDE_CODE_SUBAGENT_MODEL_FORCE to 1.A user or project subagent named Explore overrides the built-in and keeps its own model field, so define one with model: haiku to keep exploration on a lower-cost model.Agent teams use approximately 7x more tokens than standard sessions when teammates run in plan mode, because each teammate maintains its own context window and runs as a separate Claude instance.A single burst of heavy activity, such as a large workflow fanout, can exhaust the weekly allowance before the session window resets.Codex:具体的な書き方
すべてのサブエージェントのデフォルト:~/.codex/config.toml の [agents] の下に、default_subagent_model = "gpt-5.6-terra" と default_subagent_reasoning_effort = "medium" を追加します。
特定の 1 つだけ:.codex/agents/(このプロジェクト)か ~/.codex/agents/(すべてのプロジェクト)に .toml ファイルを作ります。必須の項目は name、description、developer_instructions の 3 つです。そこに model と model_reasoning_effort を加えます。公式の例 pr-explorer.toml では、name = "pr_explorer"、model = "gpt-5.6-luna"、model_reasoning_effort = "medium" となっています。
優先順位:サブエージェントの起動時に指定したモデル、次に [agents] のデフォルト、最後にメインのセッションのモデルです。エージェントのファイルに書いた値は、デフォルトより優先されます。
Claude Code:具体的な書き方
特定の 1 つだけ:.claude/agents/ に log-reader.md を作ります。先頭の 2 本の --- の間に 3 行書きます。1 行目は name: log-reader。2 行目は description: ログを読んでテストを実行し、失敗したものだけを報告する。3 行目は model: haiku。その下に指示を書きます。たとえば、失敗したテストとそのエラーだけを報告すること。出力全体は貼らないこと。
すべてのサブエージェント:settings.json の env に "CLAUDE_CODE_SUBAGENT_MODEL": "haiku" を追加します。例外なくすべてのサブエージェントに適用するには、"CLAUDE_CODE_SUBAGENT_MODEL_FORCE": "1" も追加します(v2.1.257 以降が必要)。
組み込みの Explore だけを安くする:Explore という同じ名前のサブエージェントを自分で作り、model: haiku と書きます。組み込みのものを上書きします。
優先順位:作業を任せるときに指定したモデル、次にサブエージェントのファイルの model、次に CLAUDE_CODE_SUBAGENT_MODEL、最後にメインのセッションのモデルです。
よくある誤解
- サブエージェントには専用の枠があるので、並列でいくつ動かしてもメインのセッションに影響しない
ありません。サブエージェント、エージェントチーム、クラウドの並列タスクは、すべて同じ 5 時間制限と週間制限から消費します。並列で動かしても、その制限を早く使うだけです。
- CLAUDE_CODE_SUBAGENT_MODEL を設定すれば、すべてのサブエージェントが小さいモデルになる
そうとは限りません。これはデフォルトにすぎず、サブエージェントのファイルに書かれたモデルや、Claude が作業を任せるときに指定したモデルが優先されます。組み込みの Explore と Plan も影響を受けません。すべてに強制するには CLAUDE_CODE_SUBAGENT_MODEL_FORCE=1 も設定し、/tasks で確認します。
- サブエージェントに作業を任せればトークンの節約になる
そうとは限りません。サブエージェントが節約するのは、メインのセッションのコンテキストです。長い出力はサブエージェント側に残り、メインのセッションは要約を受け取ります。ただし、サブエージェントは背景を最初から読む必要があるので、合計はかえって多くなりがちです。任せるのに向いているのは、出力が長くて雑多な作業(テストの実行、ドキュメントの取得、ログの読み取り)で、小さいモデルと組み合わせて初めて得になります。
ヒント
- いちばんよく動かすサブエージェントから始めましょう。Claude Code の /usage は、どのサブエージェントの消費が多いかを表示します。それを変えるのがいちばん早く効きます。
- 検索、ファイルの読み込み、テストの実行、ログの読み取りは、小さいモデルに任せます。判断が必要な作業(アーキテクチャ、難しいバグ)は、メインのセッションのモデルに残します。
- 動かす数を減らしましょう。Claude のエージェントチームは通常のセッションの約 7 倍のトークンを使い、大規模な並列実行 1 回で、5 時間制限がリセットされる前に週間制限を使い切ることがあります。
- 任せるときは、範囲と、何を報告してほしいかを明記します。たとえば「失敗したテストとそのエラーだけを報告して」。よく動かすサブエージェントに対して /usage のパネルがすすめるのも、まさに小さいモデルか、絞ったプロンプトです。
- 終わったら閉じましょう。終了していない teammate は、トークンを消費し続けます。
- Codex では、プロンプトでモデルを指定することもできます。「このサブエージェントには gpt-5.6-terra を medium で使って」。起動時に指定したモデルは、デフォルトより優先されます。
- Claude Code のサブエージェントは、model と同じ場所で、独自の effort(low、medium、high など)も設定できます。