Claude Code 2.1.213 が暴走するサブエージェント群に上限を設定
バージョン 2.1.213 は同時実行のサブエージェントを制限し、入れ子の生成をデフォルトで停止します。2.1.212 のセッション単位の上限を基盤としています。新しいデフォルト値と環境変数を紹介します。
Claude Code のワークフローがファンアウトし、サブエージェントが自分自身のサブエージェントを生成し、あなたがコーヒーを取りに行っている間に静かに予算を使い果たすのを見たことがあるなら、直近の 2 つのリリースはあなたのためのものです。今週リリースされた Claude Code 2.1.213 は、サブエージェントに同時実行の上限を追加し、デフォルトで入れ子になるのを防ぎます。これは 2.1.212 で登場したセッション単位の上限の上に直接構築されています。両者を合わせると、「ループが終わることを願う」状態が、明示的で調整可能な一連の制限に変わります。
2.1.213 が変えること
2 つの動作が変わりました。どちらも並列のエージェント作業を囲む安全柵です。
まず、いくつのサブエージェントが同時に実行されるかに上限が設けられました。デフォルト値は 20 です。ワークフローがそれ以上を起動しようとすると、超過分はすべて一度に発火するのではなくキューに入ります。環境変数で上書きできます。
export CLAUDE_CODE_MAX_CONCURRENT_SUBAGENTS=8
次に、より重要な点として、サブエージェントはデフォルトで入れ子のサブエージェントを生成しなくなりました。2.1.213 より前は、サブエージェントが別のサブエージェントに委譲でき、それがさらに委譲でき、深さは実質的に無制限でした。これが、単一のトップレベルのプロンプトが数十の同時セッションに膨れ上がる原因でした。今では生成の深さに上限があり、より深い入れ子は明示的にオプトインします。
# Allow subagents to spawn one more level down
export CLAUDE_CODE_MAX_SUBAGENT_SPAWN_DEPTH=2
2.1.213 の変更履歴は、関連する抜け穴も修正しています。--max-budget-usd はバックグラウンドのサブエージェントを停止していませんでした。したがって、暴走したジョブを止めるためにドルの上限に頼っていた場合、今ではバックグラウンドのものも実際に停止します。
2.1.212 のセッション単位の上限
2.1.213 の上限は、2.1.208 リリースの数ビルド後にあたる 2.1.212 の 2 つのセッション単位の上限の上に載っています。1 つのセッションは今、サブエージェントの生成とウェブ検索の両方に対して厳格な予算を持ち、それぞれのデフォルト値は 200 です。
export CLAUDE_CODE_MAX_SUBAGENTS_PER_SESSION=50
export CLAUDE_CODE_MAX_WEB_SEARCHES_PER_SESSION=100
2.1.212 はまた、長時間実行される MCP ツール呼び出しをクリティカルパスから外しました。2 分を超えて実行される MCP 呼び出しは今、自動的にバックグラウンドに移るため、遅いツールがターンをブロックすることはなくなりました。しきい値を調整したり、この動作を無効にしたりできます。
# Background MCP calls after 90 seconds instead of 120
export CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS=90000
なぜこれが重要なのか
エージェント群は起動は安価ですが、実行は高価です。障害モードは決して単一のサブエージェントではなく、再帰でした。オーケストレーターがワーカーを生成し、ワーカーがヘルパーを生成し、合計を制限する数字が 1 つもない、というものです。同時実行 20、入れ子なし、セッションあたり 200 生成というデフォルト値は、行儀の悪いプロンプトが今では請求書ではなく壁にぶつかることを意味します。ファンアウトするワークフローを構築しているなら、まずデフォルト値を読み、それからすべての上限を外すのではなく、実際の作業が本当に必要とする 2 つか 3 つだけを引き上げてください。
詳細はすべて Claude Code の変更履歴にあります。
Comments
Sign in with GitHub to comment. Reactions and replies thread back to the comments repo.