Dynamic Workflowsとは──JavaScriptスクリプトで数百のsubagentをオーケストレーションする仕組み
Claude Code公式ドキュメントによると、Dynamic Workflowsは1回の実行につき最大1,000エージェント・同時実行16エージェントまでという上限つきで、subagentの指揮をJavaScriptスクリプトに任せる機能。25エージェントまたは150万トークン超で「Large workflow」警告が出る仕組みや、一時停止後の再開でエージェントが再実行される条件を公式原文で確認した。

目次
Claude Codeで「大量のsubagentを動かした」という話を聞くとき、その裏側にあるのがDynamic Workflowsだ。Anthropic公式ドキュメントを確認すると、これは単に「subagentをたくさん呼ぶ」機能ではなく、オーケストレーションの計画そのものをJavaScriptのスクリプトとして書き出し、Claudeの会話コンテキストの外側でランタイムに実行させるという設計になっている。この記事は公式ドキュメント原文だけを根拠に、subagent・skills・agent teamsとの違いと、具体的な上限・コストの仕組みを整理する。
- Dynamic Workflowsは、オーケストレーションの計画をJavaScriptスクリプトとして書き出し、Claudeの会話コンテキストの外側でランタイムに実行させる仕組み。同時実行は最大16エージェント、1回の実行につき最大1,000エージェントという上限がある
/effort ultracodeを有効にすると、Claudeがタスクごとに自動でワークフローを組むようになる。xhigh reasoning effortとの組み合わせ設定で、Claude Code v2.1.203以降が必要- 保存したワークフローはプラグインに含めて配布でき、
acme-toolsというプラグインにrelease-auditという名前で入れると/acme-tools:release-auditのようにプラグイン名で名前空間化される
何が違うのか:「計画を誰が持つか」
公式ドキュメントは、複数ステップのタスクをこなす4つの方法を「計画を誰が持つか」という軸で比較している。
| Subagents | Skills | Agent teams | Workflows | |
|---|---|---|---|---|
| 実体 | Claudeが生成するワーカー | Claudeが従う指示書 | ピアセッションを監督するリード役 | ランタイムが実行するスクリプト |
| 次に何をするか決めるのは | Claude(ターンごと) | Claude(プロンプトに従う) | リードエージェント(ターンごと) | スクリプト |
| 中間結果の置き場所 | Claudeのコンテキストウィンドウ | 同左 | 共有タスクリスト | スクリプト変数 |
| 規模 | 1ターンあたり数件の委任 | 同左 | 数件の長時間稼働ピア | 1回の実行で数十〜数百エージェント |
| 中断時 | ターンをやり直す | 同左 | チームメイトは動き続ける | 同一セッション内で再開可能 |
Subagent・Skills・Agent teamsでは、次に何をするかを毎ターンClaude自身が判断し、その結果はすべてClaudeのコンテキストウィンドウに乗る。Workflowsだけは、ループ・分岐・中間結果をスクリプト側が保持するため、Claudeのコンテキストには最終的な結果だけが残る。
使いどころ:バンドル済みの/deep-research
もっとも手早く挙動を見る方法として、公式ドキュメントはバンドル済みワークフロー/deep-researchの実行を挙げている。
/deep-research What changed in the Node.js permission model between v20 and v22?
これを実行すると、質問に対して複数の観点からウェブ検索を並列展開し、見つけたソースを相互チェックし、投票で採否を決めたうえで、根拠付きレポート1本にまとめて返す。検証をクリアできなかった主張はレポートから除外され、レート制限やAPIエラーで検証できなかった主張は「refuted(否定された)」ではなく「unverified(未検証)」として扱われる。
実行中は/workflowsコマンドでフェーズごとの進捗(エージェント数・トークン合計・経過時間)を確認でき、実行はバックグラウンドで進むためセッション自体は操作可能なまま残る。
具体的な数値上限
公式ドキュメントの「Behavior and limits」節に、ランタイムが課す制約が明記されている。
| 制約 | 内容 |
|---|---|
| 同時実行エージェント数 | 最大16(CPUが少ない環境ではさらに少なくなる) |
| 1回の実行あたりの総エージェント数 | 最大1,000(暴走ループ防止) |
| 実行中のユーザー入力 | 不可(許可プロンプトだけが実行を一時停止させる) |
| ファイルシステム・シェルへの直接アクセス | スクリプト自体には不可(エージェントが読み書き・実行を担当) |
| モジュール読み込み | import()を含むスクリプトは実行前に失敗する |
「Large workflow」警告は、スケジュールされたエージェントが25件を超えるか、想定トークン総量が150万トークンを超えたときに表示される。この警告はあくまで注意喚起であり、実行を一時停止・制限するものではない。サイズガイドラインを自分で選んでいる場合は、その値がこの25件という既定閾値を置き換える。
一時停止後の再開で「余計に再実行される」条件
公式ドキュメントは、一時停止した実行を再開したときの挙動を具体例つきで説明している。
- 停止時にまだ実行中だったエージェントは保存されず、再開時にやり直しになる
- 再開時の「キャッシュからの復元」は、エージェントが起動した順序に従う。完了していないエージェントの直前で止まり、それより後に起動したエージェントは、たとえ完了していても再実行される
公式の例:A→B→C→Dの順で起動し、Bがまだ実行中の時点で停止した場合、Aはキャッシュから復元されるが、Bはやり直しになり、CとDは完了していたとしてもBより後に起動しているため再実行される。細かく多数の小さいエージェントに分割したワークフローの方が、少数の長時間エージェントより、途中停止時の進捗を多く残せる、というのが公式の指摘だ。
コストの考え方
公式ドキュメントは「1回の実行が、同じタスクを会話で進めるより有意に多くのトークンを使いうる」と明記している。実行はプランの利用量・レート制限にも通常のセッション同様カウントされる。
コスト管理として案内されているのは以下の通り。
- 本番実行の前に、ディレクトリ1つ・質問1つといった小さい範囲で試す
/workflowsビューで各エージェントのトークン使用量を確認しながら、いつでも停止できる(多くの場合、完了済みの作業は失われない)- サイズガイドラインを
smallにすると、エージェント数を絞れる - 各エージェントは既定でセッションと同じモデルを使う。
CLAUDE_CODE_SUBAGENT_MODEL環境変数、またはスクリプト側の指定でモデルを分けられる
サイズガイドラインは4段階あり、unrestricted(ガイドラインなし)・small(5エージェント未満)・medium(15エージェント未満、既定)・large(50エージェント未満)から選べる。あくまでClaudeへの「助言」であり、タスクの内容によっては上書きされうる。
/effort ultracode:Claudeが自動でワークフローを組む
これまで見てきたのは「明示的に/workflowsや/deep-researchを呼ぶ」使い方だが、公式ドキュメントは自動化の1段上としてultracodeという設定を挙げている。これはxhigh reasoning effortと自動ワークフロー編成を組み合わせた設定で、有効にするとClaudeが実質的なタスクごとに自分でワークフローを計画するようになる。
/effort ultracode
セッション開始時から有効にしたい場合はclaude --effort ultracodeで起動する。Claude Code v2.1.203以降が必要で、xhigheffortに対応したモデルでのみ/effortメニューに現れる。ultracodeが有効な間は、1つの依頼が複数のワークフローに分かれることがある——たとえば「コードを理解する」「変更を加える」「検証する」がそれぞれ別のワークフローになる、というように。これはセッション内のすべてのタスクに適用されるため、低いeffortレベルと比べてトークン消費・所要時間がともに増える、と公式ドキュメントは明記している。/effort highに戻せば通常の運用に戻せる。
実行前の承認は、権限モードによって挙動が変わる
ワークフローを実行する前の承認ダイアログは、Permission modes公式ドキュメントとの突き合わせで、モードごとに次のように挙動が変わることを確認した。
| 権限モード | プロンプトが出るタイミング |
|---|---|
| Auto | 初回起動時のみ。一度「Yes」を選ぶとユーザー設定に記録され、以降は聞かれない。ultracode有効時は完全にスキップ |
| Manual/accept edits | 「今後聞かない」を選んでいない限り毎回 |
| Bypass permissions | プロンプトなし、即実行 |
claude -p/Agent SDK |
プロンプトなし。通常のツール呼び出しと同じ権限評価(許可ルール・PreToolUseフック等)を通る |
claude -pやAgent SDK経由で確実にワークフローを開始させたい場合は、許可ルールにWorkflow(全ワークフローを許可)またはWorkflow(<name>)(特定の保存済みワークフローのみ許可)を追加する必要がある、と公式ドキュメントは案内している。
保存したワークフローをプラグインで配布する
「保存して再利用する」機能の延長として、公式ドキュメントは「チームやリポジトリをまたいで共有したい場合はプラグインに含める」方法を示している。プラグインのルートにworkflows/ディレクトリを置くか、マニフェストのworkflowsフィールドで別の場所を指定する。プラグインのワークフローはプラグイン名で名前空間化され、acme-toolsというプラグインにrelease-auditというmeta.nameのスクリプトを入れると、/acme-tools:release-auditとして実行できる。Plugins公式ドキュメントによれば、プラグインという配布単位自体は、個人のワークフロー・プロジェクト固有のカスタマイズ・スタンドアロンの実験を.claude/ディレクトリからチーム共有可能な形に格上げする仕組みとして位置づけられている。
有効化とオフにする方法
Dynamic Workflowsの利用にはClaude Code v2.1.154以降が必要で、全有料プラン・Anthropic API・Amazon Bedrock・Google CloudのAgent Platform・Microsoft Foundryで利用可能。Proプランでは/configの「Dynamic workflows」行から有効化する必要がある。
オフにする方法は3つ:/configのトグル、~/.claude/settings.jsonに"disableWorkflows": trueを設定、または環境変数CLAUDE_CODE_DISABLE_WORKFLOWS=1。組織単位で無効化する場合はmanaged settingsの同じキーか、管理画面のトグルを使う。
「有意に多く使いうる」の具体的な倍率は非公開
限界を先に書く。
実際のトークン消費量の目安。 「有意に多くのトークンを使いうる」という定性的な記述はあるが、具体的な倍率や金額の目安は公式ドキュメントに記載がなく確認していない。
プラグイン配布ワークフローの実運用例。 名前空間化の仕組み(/plugin名:workflow名)は確認したが、実際にプラグインとして配布されているワークフローを自分で使ってみる検証はしていない。
/deep-research以外のバンドル済みワークフローの有無。 公式ドキュメントで確認できたバンドル済みワークフローは/deep-researchのみで、他に存在するかどうかは今回の調査範囲では確認していない。
関連記事
出典・参照資料
AIニュースの解説を動画でも
YouTubeでは注目ニュースの背景を解説し、Xでは新着記事をお知らせしています。
コメント
まだコメントはありません。最初のコメントを書いてみませんか?
AIについて聞きたいことはありますか?
質問箱で無料で受け付けています。回答は公開され、他の方の参考にもなります。
質問箱を見る →新しい記事をメールで受け取る
AIの新しい発表を、出典付きで整理して届けます。