0
0

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 のサブエージェントに「迷ったら聞いて」と書いても無駄だった話

0
Posted at

Claude Code のサブエージェントに、こう指示したことはないだろうか。「判断に迷ったら、勝手に進めず一度聞いて」。

そして返ってくる報告は、いつも「聞かれた記憶がない」ものだった、ということはないだろうか。

実はこれ、AIがサボっていたわけじゃなかった。そのサブエージェントには、そもそも「聞く」という選択肢が最初から存在しない。

Claude Code の実測環境は 2.1.215claude --version で確認)。サブエージェント周りの仕様は更新が速いので、手元のバージョンでは挙動が変わっている可能性がある。

公式ドキュメントに、はっきり書いてあった

Claude Code の公式ドキュメント「Create custom subagents」に、こういう一節がある。

The first filter removes these tools, even when listed in the tools field:

  • Agent, when the subagent is at the depth limit; in a fork the tool stays listed but returns an error instead of spawning
  • AskUserQuestion
  • EndConversation, which can end only the main conversation
  • EnterPlanMode
  • ExitPlanMode, unless the subagent's permissionMode is plan
  • ScheduleWakeup
  • TaskOutput
  • WaitForMcpServers
  • Workflow

(訳: 第1のフィルタは、tools フィールドに書いてあっても、これらのツールを除去する。Agent(子をさらに持てるかどうか)はネストの深さが上限に達した時だけ、ExitPlanModepermissionModeplan でない限り、という条件付き。一方 AskUserQuestion(ユーザーへの質問)・EnterPlanMode ほかは無条件で除去される)

出典: Claude Code 公式ドキュメント「Create custom subagents」

ここで大事なのは、全部が同じ扱いではないということだ。Agent はネストの深さ上限に達した時だけ外れる条件付きの項目で、既定の設定なら5層までネストできる(=サブエージェントが子を持てなくなるわけではない)。ExitPlanMode も「permissionModeplan の場合を除く」という条件付き。それに対して AskUserQuestion には条件が無い。どんな設定でも、無条件で全サブエージェントから消える。

tools に明示的に書いても消される。 system prompt に「迷ったら聞いて」と書き足しても、聞くための道具自体が起動した瞬間に取り上げられている。

つまりサブエージェントに選べる行動は、実質2つしかない。自分で決めるか、決めずに報告して終わるか。 「迷ったら聞け」は、聞く手段を持たない相手にとっては「自分で決めろ」と同じ意味になる。

指示文にどれだけ「聞いて」と書いても、この図の左上(AskUserQuestionを使う分岐)自体が最初から無い。残っているのは右側の2つだけだ。

聞けないだけじゃなかった。併せて分かった仕様

ここまで来たので、「任せ方」に直結する他の仕様も公式ドキュメントで確認し直した。

事実 公式原文
サブエージェントは既定で背景実行 「As of v2.1.198, subagents run in the background by default.」
結果が要るなら前景で走る 「Claude runs a subagent in the foreground when it needs the result before continuing.」
背景の結果は後のターンにしか届かない 「A background subagent's results reach Claude as a completion notification in a later turn.」
背景時は内蔵ツールが減る 「a background subagent keeps every MCP tool but only these built-in tools: Read, Grep, Glob, Bash, PowerShell, Edit, Write, …」
CLAUDE.md は全階層が継承される~/.claude/CLAUDE.md も含む) 「every level of the CLAUDE.md hierarchy the main conversation loads, including ~/.claude/CLAUDE.md
ただし ExplorePlan だけは CLAUDE.md を読まない 「Explore and Plan are the only subagents that omit CLAUDE.md and git status. There is no frontmatter field or per-agent setting to change which agents skip them.」

出典(全行共通): Claude Code 公式ドキュメント「Create custom subagents」

かみ砕くと、こういうことだ。頼んだ仕事は既定で裏で動き出し、結果はすぐには返ってこない(前景で走らせたい時はその意図を明示する必要がある)。裏で動いている間は使えるツールも絞られる。ルールを CLAUDE.md に書いておけば大抵は届くが、ExplorePlan にはそもそも届かない。

「頼んだのに反応がない」「さっき決めたはずのルールが効いていない」——サブエージェントに作業を任せていてこの感覚に覚えがあるなら、原因はAIの気まぐれではなく、この仕様そのものかもしれない。

じゃあ、AIエージェントは使えないのか

ここで「AIエージェントは信用できない」という話に落とすつもりはない。仕様を知っていれば、任せ方は設計できる。 聞けない相手に判断を丸投げするから事故になるだけで、最初から「判断はこちらで持つ」前提にしておけば、この制約はむしろ扱いやすい。

具体的な線引きはシンプルだ。

  • 判断が要る仕事は任せない。 「どちらの方針でも成立する」「これは元の設計と食い違う」——そういう分岐が出る仕事を渡すと、聞く手段のない相手からは独自解釈が返ってくるだけ
  • 読んで要約を返す仕事だけ任せる。 大量のログを読ませて要点だけ返させる、コードを検索させて該当箇所を報告させる——判断を伴わない仕事なら、背景実行でも問題にならない
  • 結果がすぐ要る作業は、前景で走らせたい意図を明示する。 何も言わずに任せると背景実行に落ち、結果は「あとのターン」まで来ない
  • CLAUDE.md 頼みで縛り切ろうとしない。 全階層読み込まれるとはいえ Explore / Plan は例外。守らせたいルールは、その場のタスク文にも直接書く

実際にどう役割分担へ落とし込んだかは、個人ブログ(総合配信プラットフォームと銀行を、並行で作る — AIエージェントの「編成」に実機能を実装させ、実測で分業をチューニングした記録・外部サイトに移動します)にまとめている。

「迷ったら聞いて」の代わりに書いていること

今は指示文から「迷ったら聞いて」を消した。代わりに書いているのは「迷ったら、判断せず実行を止めて報告して終わってください」。聞く力ではなく、止まる力を渡す。 それだけで、独断で進めて後から辻褄合わせをされる場面はだいぶ減った。

やってみて分かったこと

正直に書くと、最初は指示文の書き方が悪いんだと思っていた。「迷ったら聞いて」を「必ず一度確認してから進めて」に変えてみたり、太字にしてみたり、system prompt の目立つ位置に移動させてみたり——何度も文面だけをいじっていた。 公式ドキュメントの「無条件で剥奪されるツール」の一覧に行き着くまで、これは自分のプロンプトの精度の問題だと思い込んでいた。どう文面を工夫しても直らないはずだと分かったのは、そのツール自体が渡されていないと知ってからだった。

「動かない原因は自分の書き方が下手なせいだ」と思い込む前に、まず「そもそもその手段は存在するのか」を疑ってみるといいと思う。

参考にした公式ページ

  • Claude Code 公式ドキュメント「Create custom subagents」(サブエージェントから除去されるツールの一覧・背景実行の仕様・CLAUDE.mdの継承範囲):https://code.claude.com/docs/en/sub-agents

個人ブログ(https://mint041223techblog.netlify.app/)に日々の開発で気づいたことを詳しく書いています(外部サイトに移動します)。

0
0
0

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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?