Claude Codeのサブエージェントのeffortを指定する方法|frontmatter・呼び出し時の指定・CLAUDE_CODE_SUBAGENT_EFFORT

1つの親ノードから3つのサブエージェントへ枝分かれし、それぞれ強さの違うメーターが付いたイラスト
設定ガイド

Claude Codeのサブエージェントのeffortを指定する方法|frontmatter・呼び出し時の指定・CLAUDE_CODE_SUBAGENT_EFFORT

Claude Codeのサブエージェントは、何も指定しないとメインの会話と同じeffort(考える量)で動きます。サブエージェントのeffortは、定義ファイルのeffort、呼び出し時のeffortパラメータ、そしてv2.1.316で加わった環境変数CLAUDE_CODE_SUBAGENT_EFFORTで個別に決められます。この記事では、それぞれの書き方と優先順位、効いているかの確かめ方を、公式ドキュメントと更新履歴に沿ってまとめます。

サブエージェントのeffortとは:何が決められるのか

effortは、モデルがどれだけ深く考えるかを調整する設定です。公式ドキュメントによると、低いeffortは速くて安く、高いeffortは複雑な問題に向く、と説明されています。サブエージェントは調査やレビューなどの作業を別の会話として任される仕組みなので、「調査は軽く、設計の判断は深く」のように役割ごとにeffortを分けられると、速さと費用の釣り合いを取りやすくなります。

指定できる段階はlow・medium・high・xhigh・maxですが、使える段階はモデルによって違います。

モデル使える段階(2026年11月3日時点の公式ドキュメント)
Fable 5.1・Fable 5low / medium / high / xhigh / max
Opus 5.5・Sonnet 5.5・Haiku 5.5・Opus 5・Sonnet 5・Opus 4.8・Opus 4.7low / medium / high / xhigh / max
Opus 4.6・Sonnet 4.6low / medium / high / max(xhighは無い)

モデルが対応していない段階を指定すると、Claude Codeはそのモデルが対応する「指定以下で最も高い段階」に切り替えます。たとえばOpus 4.6でxhighを指定するとhighで動きます。

方法1:サブエージェントの定義ファイルに effort を書く

いちばん基本的な方法です。サブエージェントは~/.claude/agents/(全プロジェクト共通)または.claude/agents/(そのプロジェクトだけ)のMarkdownファイルで定義し、先頭のfrontmatterにeffortを足します。

---
name: code-reviewer
description: 変更差分をレビューする。コードを変更したあとに使う
model: sonnet
effort: high
---

あなたはコードレビュー担当です。……(以下、指示文)

公式ドキュメントでは、effortは「このサブエージェントが動くときのeffort」で、セッションのeffortを上書きします。ただし環境変数CLAUDE_CODE_EFFORT_LEVELは上書きできません。省略した場合は、後述する環境変数か、メインの会話の設定を引き継ぎます。

更新履歴にある過去の不具合

Claude Codeの更新履歴には、「Opus 4.7・Opus 4.8・Fable 5など、既定のeffortが固定されていたモデルでは、サブエージェントやスキルのeffort:が無視されていた」不具合を直した、という記載があります。古いバージョンを使っていて効かない場合は、まずClaude Codeを更新してください。

方法2:呼び出すときに effort を指定する

v2.1.292以降では、Claudeがサブエージェントを起動するとき、その1回の呼び出しだけにeffortパラメータを渡せます。ユーザーは、たとえば次のように頼みます。

code-reviewerサブエージェントを、effortをmaxにして起動して、この差分を見てもらって

公式ドキュメントの説明をまとめると、次のとおりです。

  • このパラメータは、定義ファイルのeffortより優先される
  • そのサブエージェントを再開(resume)したときも、指定したeffortのままになる
  • 対象は「fork以外」のサブエージェント。会話を複製して分岐させるforkには使えない
  • 環境変数CLAUDE_CODE_EFFORT_LEVELは、この呼び出し時の指定よりも優先される

「普段は定義ファイルのmediumで十分だが、今回だけ深く見てほしい」というときに向いています。

方法3:環境変数 CLAUDE_CODE_SUBAGENT_EFFORT で既定を決める

v2.1.316の更新履歴に、次の1行が追加されています。

更新履歴の記載(意訳)

CLAUDE_CODE_SUBAGENT_EFFORTを追加。ほかに指定がないとき、サブエージェントが動くeffortを、セッションのeffortを引き継ぐ代わりに設定する。

つまり、定義ファイルにも呼び出し時にもeffortが無いサブエージェントの「既定値」を、環境変数で一括して決められるようになりました。たとえば、メインの会話は深く考えさせたまま、細かい調査を任せるサブエージェントは軽くしたい、という使い方が考えられます。

# 例:サブエージェントの既定を medium にして、Claude Codeを起動する
CLAUDE_CODE_SUBAGENT_EFFORT=medium claude

確認できなかった点

2026年11月3日時点で、この環境変数は環境変数の一覧ページ(Environment variables)にまだ載っていません。そのため、指定できる値の一覧や、CLAUDE_CODE_EFFORT_LEVELとの細かい優先関係は、公式ドキュメントでは確認できませんでした。上の例のmediumは、effortの段階名として公式に定められている値を当てはめたものです。実際に使うときは、後述の/tasksで効いているかを確かめてください。

優先順位のまとめ:どの設定が勝つのか

公式ドキュメントの記載から確認できる範囲を、強い順に並べます。

順位設定根拠
1環境変数 CLAUDE_CODE_EFFORT_LEVEL呼び出し時の指定と定義ファイルのeffortの両方より優先される、と明記
2呼び出し時の effort パラメータ定義ファイルのeffortを上書きする、と明記
3定義ファイルの effortセッションのeffortを上書きする、と明記
4CLAUDE_CODE_SUBAGENT_EFFORT更新履歴に「ほかに指定がないとき」とある
5メインの会話のeffort何も指定がなければ引き継ぐ

4番目は更新履歴の文言からの読み取りで、公式ドキュメントに順位表があるわけではありません。また、メインの会話のeffortをCLAUDE_CODE_EFFORT_LEVELで固定していると、サブエージェントも含めてその値が最優先になる点に注意してください。サブエージェントだけ変えたいなら、この環境変数は使わないほうが安全です。

効いているかを確かめる:/tasks

サブエージェントが動いている間に/tasksを実行すると、各サブエージェントの行に、動いているモデルと、そのサブエージェントに設定されたeffortが表示されます(v2.1.242以降)。定義ファイルを書いたのに速さや回答の深さが変わらないときは、まずここでeffortが想定どおりかを見ます。

症状確認すること
/tasksにeffortが出ないeffortを何も指定していない場合は、表示されない。定義ファイルの綴り(effort:)とインデントを見直す
指定と違う段階で動くモデルがその段階に対応していない可能性。上の対応表を確認する
どの指定も効かないCLAUDE_CODE_EFFORT_LEVELが設定されていないか確認する。設定されていると最優先で効く
定義ファイルを新規作成したのに見つからない~/.claude/agents/を新しく作った直後は、Claude Codeを再起動する

よくある質問(FAQ)

Q. サブエージェントのeffortを何も指定しないとどうなりますか?

メインの会話のeffortを引き継ぎます。v2.1.316以降は、CLAUDE_CODE_SUBAGENT_EFFORTを設定していれば、その値が使われると更新履歴に書かれています。

Q. effortを下げると費用は減りますか?

公式ドキュメントは、低いeffortは「速くて安い」と説明しています。ただし、サブエージェントの呼び出し1回あたりの費用がどれだけ変わるかの数値は、確認できませんでした。

Q. ultracodeはサブエージェントにも効きますか?

ultracodeはモデルのeffortの段階ではなく、Claude Codeの設定として説明されています。サブエージェントのeffortとして指定できる値はlowからmaxまでです。ultracode自体はこちらの記事で扱っています。

Q. 最初の一歩は何から始めるとよいですか?

よく使うサブエージェントの定義ファイルを1つ選び、frontmatterにeffort: mediumを足して、/tasksで表示を確かめるのが手軽です。

まとめ

  • サブエージェントのeffortは、定義ファイルのeffort、呼び出し時のeffort、環境変数CLAUDE_CODE_SUBAGENT_EFFORTの3通りで決められる
  • 呼び出し時の指定は、定義ファイルのeffortより優先され、再開しても保たれる(v2.1.292以降、fork以外)
  • CLAUDE_CODE_EFFORT_LEVELはすべてに優先するので、サブエージェントだけ変えたいときは使わない
  • CLAUDE_CODE_SUBAGENT_EFFORTは更新履歴のみの記載で、値や細かい優先関係は未確認
  • 効いているかは/tasksで確認できる

まずは、いつも使うサブエージェントにeffortを1行足してみてください。

タイトルとURLをコピーしました