15
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Claude Code のサブエージェント、モデルの固定手段が4日で戻ってきた

15
Last updated at Posted at 2026-09-02

8月28日、Claude Code 2.1.251 で CLAUDE_CODE_SUBAGENT_MODEL の挙動が変わりました。全部を上書きしていたのが、エージェント定義の model: に負けるようになった。それを記事にしました。

9月1日、2.1.257 で上書き手段が戻ってきました。 CLAUDE_CODE_SUBAGENT_MODEL_FORCE です(手元で動かしたのは 2.1.258)。

4日です。

ただし完全には戻っていません。 8条件を測ったら、守られるものと潰されるものが分かれました。

検証環境: Windows 10 / Claude Code 2.1.258 / 測定は 2026-09-02 時点


何が追加されたか

公式ドキュメントの記述です。

Set CLAUDE_CODE_SUBAGENT_MODEL_FORCE=1 to run subagents … on CLAUDE_CODE_SUBAGENT_MODEL whatever model their definition or invocation names, the built-in Explore and Plan definitions included. A fork, and a skill that runs in a subagent with model: inherit, still run on the main conversation's model.
=1 にすると、定義や起動時に何を指定していようと CLAUDE_CODE_SUBAGENT_MODEL で走らせる。組み込みの Explore と Plan も含む。fork と、model: inherit でサブエージェントとして走るスキルは、これまでどおりメイン会話のモデルで走る。

「2.1.251 の変更が巻き戻った」わけではありません。 優先順位はそのままで、それを飛び越す変数が増えた形です。


測り方

エージェント本人にモデルIDを聞かせ、返ってきた値を記録しました。

CLAUDE_CODE_SUBAGENT_MODEL=haiku CLAUDE_CODE_SUBAGENT_MODEL_FORCE=1 \
  claude -p "(エージェント名)を起動して、モデルIDを聞いて報告して"

対象は code-reviewermodel: sonnet)、組み込みの Exploremodel: inherit の検証用エージェント(測定後に削除)です。


8条件の結果

# 対象 定義の model: 環境変数 FORCE 動いたモデル
1 code-reviewer sonnet なし なし claude-sonnet-5
2 code-reviewer sonnet haiku なし claude-sonnet-5
3 code-reviewer sonnet haiku 1 claude-haiku-4-5
4 組み込み Explore haiku 1 claude-haiku-4-5
5 fork haiku 1 claude-opus-5[1m]
6 probe inherit なし なし claude-opus-5[1m]
7 probe inherit haiku なし claude-opus-5[1m]
8 probe inherit haiku 1 claude-haiku-4-5

表の claude-haiku-4-5claude-haiku-4-5-20251001 の短縮表記です。
2・3・5・8行目は3回ずつ繰り返し、12回とも同じ値が返りました。

2行目と3行目が、この記事の全部です。 同じエージェント、同じ環境変数で、FORCE=1 を足すだけで Sonnet が Haiku になりました。

4行目も効きます。 ドキュメントの「Explore と Plan も含む」どおりでした。


fork だけが守られた

5行目が例外です。 FORCE=1 を立てても、fork はメイン会話と同じ claude-opus-5[1m] で走りました。

fork は会話の履歴を引き継ぐので、別のモデルに渡すとキャッシュが外れます。 理由は公式に書かれていませんが、そう考えると筋が通ります。

なお fork は既定で使えません。 最初に測ったとき、subagent_type=fork が利用可能な一覧になく起動できませんでした。CLAUDE_CODE_FORK_SUBAGENT=1 を立てて測り直しています。この環境変数は設定ドキュメントに載っていません(2026-09-02 時点で確認)。


model: inherit は守られなかった

公式が例外にしているのは「スキルがサブエージェントとして走るときの model: inherit」です。エージェント定義の model: inherit は書かれていません。

実測すると、そのとおりでした。

model: inherit のエージェント

  環境変数なし          → opus   (メイン会話を継承)
  環境変数 haiku        → opus   (inherit が勝つ)
  環境変数 haiku + FORCE → haiku  ← 継承が潰される

inherit と書いてあるのに、継承しなくなります。

「fork と inherit は例外」と読むと間違えます。例外は fork と、スキル側の inherit だけです。


手元では286本中21本が変わる

自分の環境を数え直しました。

~/.claude/agents/ : 286 本
  model: を指定    :  21 本(すべて sonnet)
  指定なし         : 265 本

2026-09-02 時点の値です。8月28日に数えたときと同じでした。

この21本は code-reviewer など独立レビューを担当するもので、レビュー側のモデルを固定したくて model: を書いたものです。FORCE=1 を立てると、この21本も Haiku で走ります。 コストを絞る目的なら狙いどおりですが、固定したくて書いた指定が消えます。


いまの優先順位

使うもの 効き方
CLAUDE_CODE_SUBAGENT_MODEL だけ model: を書いていないエージェントにのみ効く
+ _FORCE=1 fork 以外の全部に効く
エージェントの model: _FORCE がなければ勝つ

まとめ

  • 8/28 に「固定できなくなった」と書き、9/1 に固定手段が戻ってきた。4日。
    ただし巻き戻ったのではなく、優先順位を飛び越す変数が増えた
  • _FORCE=1 で、model: sonnet のエージェントも組み込みの Explore も Haiku で走った
  • 例外は fork だけ。 メイン会話と同じ opus のままだった
  • エージェント定義の model: inherit は潰された。 公式の例外はスキル側の inherit
  • fork は既定で使えない。 CLAUDE_CODE_FORK_SUBAGENT=1 が要る(未文書)
  • 手元では 286本中21本が影響を受ける(2026-09-02 時点)

モデルIDは自己申告です。


参考

※ 引用は原文と日本語訳を併記しています。訳は読みやすさを優先しているので、正確な表現は原典をご確認ください。

関連記事


JQITのエンジニアの95%以上は未経験からの採用です。
よければコーポレートサイトにも遊びに来てください。

コーポレートサイト

エンジニア採用も行っています。もしご興味あれば覗いてみてください。

採用サイト

15
15
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?