アルアカ - Arcadia Academia

Arcadia Academiaは「エンジニアリングを楽しむ」を合言葉に日本のデジタル競争力を高めることをミッションとするテックコミュニティです。

Claude Codeのバックグラウンドサブエージェントが毎回止まって報告してくる時の指示文

Featured image of the post

「サブエージェントに任せたはずなのに、1つ終わるたびに呼び戻される」 「『続けて』と伝えても、次の区切りでまた止まる」 「バックグラウンドで走らせているつもりが、実質つきっきりになっている」

このような詰まりは、Claude Codeでサブエージェント(Task/Agent機能)をバックグラウンド実行しているときによく起こります。原因はバグではなく通知の既定の動きにあり、起動時の指示文を1つ変えるだけで解決します。この記事では、なぜ途中で止まるのかという仕組みと、最後まで進めさせるための具体的な指示文の書き方を解説します。

💡
30秒で要点
- サブエージェントの完了通知は「生きた子タスクを持たない状態で停止するたび」に飛ぶ既定の動きで、複数ステップの作業では何度も届く
- 通知の回数が多いこと自体は異常ではない。異常かどうかは通知に含まれる結果の中身で判断する
- 起動時のプロンプトに「途中で止まらず最後まで進める」「待つ必要があるときの待ち方」の2点を明記すると止まる
- 最終報告だけでよい作業かどうかを先に決め、人の判断を挟みたい作業には使わない

目次を開く

なぜサブエージェントは途中で止まるのか

Claude Codeでサブエージェントを起動すると、その進捗はタスク通知という仕組みで親セッションに伝わります。この通知は「そのエージェントが生きた子タスクを持たない状態で停止するたび」に発火する既定の動きです。

複数の作業単位(例: 複数ファイルの処理、複数件の調査)を1つのサブエージェントに任せた場合、1単位終わるごとに「子タスクを持たない状態」になり、そのたびに通知が飛びます。親セッション側はその通知を受け取るたびに起こされ、ユーザーには「まだ進行中です」としか返せない空振りのやり取りが積み重なります。

これは不具合ではありません。通知の回数が多いこと自体を異常のサインとして扱わないことが大切です。判断材料にすべきは通知の回数ではなく、通知に含まれる結果の中身です。

症状の見分け方

以下に当てはまる場合、この動きが原因である可能性が高いです。

症状 原因
サブエージェントに複数ステップの作業を任せたのに、1ステップ終わるたびに通知が来る タスク通知の既定どおりの動作
「続けて」と伝えるとまた進むが、次の区切りで再び止まる 起動時のプロンプトに「止まらず進める」指示が無い
バックグラウンド実行のはずが、結果的に頻繁な確認作業が必要になっている 同上

解決策: 起動時のプロンプトに明記する

対処は、サブエージェントを起動するプロンプトの中に「途中で止まらないこと」と「待つ必要があるときの振る舞い」を明示することです。以下は実際に効いた指示文の例です。

サブエージェントの進捗報告は不要です。以後は途中で止まらず、対象の作業を最後まで
一気に進め、最終報告だけ1回返してください。途中経過を待つ必要があるときは、完了を
検知できる方法(ログファイルの終了マーカーや、ジョブの完了ステータスファイルの確認
など)で待ち続け、報告のために処理を止めないでください。

ポイントは2つです。

  1. 「進捗報告は不要」と明示的に禁止する — 何をすればよいかではなく、何をしなくてよいかを先に伝えると、モデルが迷わず飛ばします。
  2. 待機の手段まで具体的に書く — 「待つ必要があるときは完了ログを確認しながら待つ」のように手段まで指定しておくと、モデルが自己流の待ち方(都度の停止・確認)を選ばずに済みます。目的だけを書いて手段を空白にすると、判断のたびに違う振る舞いを選びがちです。手元の環境に完了待ち専用の機能があるならそれを名指ししてもかまいませんが、汎用的に効かせたいなら「ログファイルをtailやtest -fで確認する」のような、どの環境でも再現できる手段に落とすのが安全です。

起動後に追加で指示する場合も、同じ文面をそのまま送れば以後は最後まで進んでから1回だけ報告するようになります。

最終報告だけでよいかを先に決める

すべての作業でこの指示が適切とは限りません。途中経過を人が見ながら判断を挟みたい作業(承認が必要な変更など)では、あえて節目ごとに止めた方が安全です。「最後まで自動で進めてよい作業」か「途中で人の判断を挟みたい作業」かを起動前に決め、前者だけにこの指示文を使うのが実務上の切り分けです。

まとめ

  • サブエージェントの完了通知は「生きた子タスクを持たない状態で停止するたび」に飛ぶ既定の動きで、複数ステップの作業では何度も届く
  • 通知の多さ自体は異常のサインではない。判断は通知に含まれる結果の中身で行う
  • 起動時のプロンプトに「途中で止まらず進める」「待つ必要があるときの待ち方」を明記すると、最後まで進めさせられる
  • 途中で人の判断を挟みたい作業には使わない。使い分けを先に決めておく

よくある質問(FAQ)

Q. 途中で止まる通知は何回来てもおかしくないのですか?

A. はい。通知の回数自体は既定どおりの挙動なので異常ではありません。異常かどうかは通知に含まれる結果の中身で判断してください。

Q. 指示文を書いても止まってしまう場合は?

A. 「進捗報告は不要」だけでなく、待機の手段(完了ログの確認方法など)まで具体的に書けているかを確認してください。手段を書かずに目的だけを伝えると、モデルがそのつど別の振る舞いを選ぶことがあります。

Q. すべてのサブエージェントにこの指示文を付けるべきですか?

A. いいえ。途中で人の承認や判断を挟みたい作業では、あえて節目ごとに止めた方が安全です。最後まで自動で進めてよい作業に限って使うことをおすすめします。

Q. 起動後に追加で送っても効きますか?

A. 効きます。同じ趣旨の文面を追加で送れば、以後は最後まで進めてから1回だけ報告する動きに変わります。ただし起動時のプロンプトに最初から書いておく方が確実です。

プログラミング学習でお悩みですか?

現役エンジニアがあなたの学習をマンツーマンでサポートします。

  • 学習の進め方がわからない
  • ポートフォリオの作り方を知りたい
  • 現場で使える技術を学びたい
まずは30分の無料相談

相談は完全無料・オンラインで気軽に

あなたを爆速で成長させるメンタリングプログラムはこちら

メンタープログラムバナー

学習・開発のお悩みは現役エンジニアに相談

メンタープログラムの詳細を見る

エンジニアの基礎学習ゲーム

プログラミング学習支援

無料相談はこちら