エージェントワークフロー:パターン、セキュリティ、本番設計
エージェントワークフローとは、1つ以上のエージェントがどのツールを呼び出すか、いつ他のエージェントにサブタスクを委任するか、中間結果に基づいてアプローチをどう調整するかを自律的に決定する多段階AIプロセスです。各ステップがハードコードされて正確に1回実行される固定パイプラインとは異なり、エージェントワークフローは動的です。エージェントは環境を読み取り、状態を推論し、次のアクションを選択します。その自律性がこの機能です。そして攻撃面でもあります。
OpenLegionはセキュリティファーストのAIエージェントプラットフォームであり、エージェントワークフロー設計をエンジニアリング分野として扱います。各ステップは隔離されたコンテナで実行され、エージェントプロセス内にクレデンシャルは決して存在せず、すべての反復ループにはインフラレベルで適用されたハードストップ条件があります。
エージェントワークフローとは何か?
エージェントワークフローとは、自律エージェントがツールを選択し、サブタスクを委任し、中間結果に基づいて実行計画を更新する多段階AIプロセスです。設計時に各ステップが固定されている静的パイプラインとは対照的です。
TL;DR
- 4つの主要パターン:ReActループ、プランアンドエグゼキュート、リフレクションループ、並列ファンアウト。それぞれ独自の障害モードを持ちます。
- ReAct(Reason + Act、Yao et al. 2023)は最も広く実装されているパターンで、LangGraph、OpenAI Agents SDK、AutoGen、OpenLegionで使用されています。
- 主要な攻撃ベクトル:ツール結果を通じたプロンプトインジェクション(OWASP LLM Top 10 2025、LLM02)。悪意のあるウェブページや文書がエージェントの次のアクションを乗っ取る可能性があります。
- 暴走ループはエッジケースではありません:ハードストップ条件のないリフレクションまたはReActループは、予算が尽きるまで実行し続けます。
- OpenLegionの対策:エージェントごとのステップ予算(ハード反復制限)、コンテナ分離(侵害されたステップが他のエージェントのクレデンシャルにアクセスできない)、ゼロテレメトリ。
- ステップ予算 vs. トークン予算:両方が重要です。トークン予算は支出を制限し、ステップ予算は無制限な推論ループを制限します。
エージェントワークフローがパイプラインと異なる点
従来のパイプラインは固定シーケンスを実行します:ステップ1、ステップ2、ステップ3。開発者はすべての遷移を設計時に定義します。システムは決定論的で、同じ入力が同じ実行パスを生成します。
エージェントワークフローは各ステップに意思決定ポイントを導入します。エージェントは現在の状態を読み取り、アクションを選択し(ツールを呼び出す、別のエージェントに委任する、最終回答を生成する、または再度ループする)、状態を更新します。実行パスは開発者ではなく、実行時にモデルによって決定されます。
この区別はセキュリティ上の直接的な影響があります。固定パイプラインでは、侵害されたステップの影響範囲はそのステップの出力に限定されます。エージェントワークフローでは、侵害されたステップがエージェントに追加のアクションを実行するよう指示できます。外部APIを呼び出す、データを外部に持ち出す、ダウンストリームのステップに影響する悪意のある出力を生成するといった行為が可能です。AIエージェントセキュリティガイドは完全な脅威モデルをカバーしています。このページではワークフローパターンの選択が攻撃面にどう影響するかに焦点を当てます。
エージェントワークフローの4つの主要パターン
パターン1:ReActループ(Reason + Act)
概要。 Yao et al.(2023)が導入したReActは、推論トレースとアクション呼び出しを単一ループ内で交互に実行します。各ステップで、モデルはThought(現在の状態の推論)、Action(ツール呼び出しまたは委任)、Observation(ツール結果)を生成します。モデルが最終回答を生成するまでループが続きます。
使用場所。 ReActはLangGraph、OpenAI Agents SDK、AutoGenのグループチャット、OpenLegionのデフォルトループです。最も広く展開されているエージェントワークフローパターンです。
障害モード:
- 無制限ループ:ハード反復制限なしでは、ReActエージェントが無限にループし続ける可能性があります。
- 観察を通じたプロンプトインジェクション:Observationステップが主要な攻撃面です。OWASP LLM02(プロンプトインジェクション)はReActベースのワークフローにとって最大のリスクです。
- コンテキストウィンドウの肥大化:長いReActチェーンはコンテキスト内にthought/action/observationのトリプレットを蓄積します。
OpenLegionの対策:エージェントごとのステップ予算(オーケストレーターが強制する最大反復回数)とコンテナ分離。
パターン2:プランアンドエグゼキュート
概要。 プランナーエージェントが事前に完全なタスク分解を生成します。1つ以上のエグゼキューターエージェントがステップ間で再計画せず、計画の各ステップを実行します。
ReActに対する利点。 計画と実行を分離することでトークンコストが大幅に削減されます。重い推論はプランナーで一度だけ行われます。また、実行前に実行パスを検査可能です。
障害モード:
- 計画ドリフト:エグゼキューターが計画の途中で予期しない結果に遭遇した場合、古い計画を続行する可能性があります。
- プランナーの単一障害点:プランナーの出力を破損するプロンプトインジェクションが、後続のすべてのエグゼキューターステップに影響します。
- 適応的再計画なし:純粋なプランアンドエグゼキュートは、中間結果が後続ステップの内容を実質的に変える必要があるタスクを処理できません。
OpenLegionの対策:プランナーとエグゼキューターは別々のコンテナで実行されます。影響範囲はプランナーコンテナの出力に限定されます。
パターン3:リフレクションループ
概要。 エージェント(または別のクリティックエージェント)が自身の出力を評価し、品質閾値に達するまで反復します。コンテンツ生成、コード作成、分析タスクで一般的です。
障害モード:
- ストップ条件のない暴走反復:クリティックが常に改善点を見つけられる場合、ループは無期限に実行されます。
- 自己強化エラー:タスクを誤解しているモデルは誤解を強化する批評を生成します。
- コスト増幅:10ラウンドのリフレクションループはベース生成の10倍のコストがかかります。
OpenLegionの対策:エージェントごとのステップ予算がインフラレベルで最大リフレクション回数を強制します。
パターン4:並列ファンアウト
概要。 複数のエージェントが独立したサブタスクを同時に実行します。シンセシスエージェントはすべての並列ブランチの完了を待ち、結果をマージします。
障害モード:
- コスト増幅:N個の並列エージェントはシリアル同等物のN倍のコストがかかります。
- シンセシス汚染:悪意のあるブランチ出力がマージ結果を破損する可能性があります。
- 同時実行と共有状態の競合:CVE-2025-64168(Agno、CVSS 7.1)がこれを実証しました。非同期同時実行下での共有セッション状態のレースコンディションが、あるユーザーのデータを別のユーザーに公開しました。
OpenLegionの対策:各並列エージェントは独自の隔離されたDockerコンテナで実行されます。ブランチ間に共有の可変状態はありません。
エージェントワークフローのセキュリティ設計
脅威1:ツール結果を通じたプロンプトインジェクション
ツール結果はエージェントワークフローにおける主要な注入ベクトルです。OWASP LLM02(プロンプトインジェクション)は2025年Top 10のLLMアプリケーションにとって最大のリスクです。エージェントワークフローではエージェントがツールアクセスを持つためリスクが増幅されており、注入された命令が実際のアクションを引き起こす可能性があります。
OpenLegionはツール結果の取り込み時にUnicodeサニタイゼーションを適用し(bidiオーバーライド、タグ文字、ゼロ幅文字に対する56のチョークポイント)、さらにコンテナ分離で注入成功時の影響範囲を制限します。
脅威2:ツール呼び出しの増幅
ステップ予算なしでReActループの高コストツールを呼び出すエージェントは、開発者が気づく前に数百回のツール呼び出しを行う可能性があります。実際のインシデントには、一晩中動作したエージェントが第三者サービスへの何千ものAPI呼び出しを生成し、予期しない料金とレート制限停止を引き起こしたケースがあります。
OpenLegionは両方を強制します:エージェントごとのトークン予算(支出制限)とエージェントごとのステップ予算(反復制限)。いずれかの制限に達するとエージェントが停止します。
脅威3:委任時のクレデンシャル露出
エージェントがPythonプロセスを共有するフレームワークでは、エージェントBはデフォルトでエージェントAの環境変数にアクセスできます。侵害された委任ステップはワークフローで利用可能なすべてのクレデンシャルを公開する可能性があります。
OpenLegionはMesh Hostを経由したVaultプロキシクレデンシャルインジェクションを使用します。エージェントBのコンテナはfleet ACLマトリクスで明示的に割り当てられたクレデンシャルのみを受け取り、エージェントAのクレデンシャルは受け取りません。
脅威4:無制限の再帰とセルフスポーニング
制限なしでエージェントがサブエージェントを生成できるエージェントワークフローは、指数的な再帰に操作される可能性があります。OpenLegionはこれを制限します:can_spawn権限には明示的な管理者認証が必要で、サブエージェントの深さはメッシュ設定で制限され、フリートテンプレートは最大エージェント数を定義します。
ステップ予算 vs. トークン予算:両方が必要な理由
トークン予算はエージェントごとの1日あたりの総支出を制限します。必要ですが十分ではありません。トークン予算は安価なツールを使用した500回のReActループの反復を防ぎません。ステップ予算はトークンコストに関わらず、推論の反復やツール呼び出しの数を制限します。
OpenLegionは両方を実装しています:Zone 2のコストトラッカーが強制するトークン予算と、インフラレベルでオーケストレーターが強制するステップ予算。
本番向けエージェントワークフローの設計
タスクに適したパターンを選択する
| タスクタイプ | 推奨パターン | 理由 |
|---|---|---|
| オープンエンドリサーチ | ステップ予算付きReActループ | 適応的ツール選択が必要;ループを制限する |
| 構造化多段階タスク | プランアンドエグゼキュート | 検査可能な計画;トークンコスト削減 |
| 品質重視の生成 | ステップ制限付きリフレクションループ | 自己修正;ハードストップで暴走を防ぐ |
| 並列データ収集 | ファンアウト + シンセシス | 独立したサブタスク;エージェントごとの分離 |
| 長文書処理 | ファンアウト + 順次マージ | チャンク処理を並列化 |
デプロイ前にストップ条件を定義する
エージェントワークフローのすべてのループには、インフラレベルで強制された明示的なストップ条件が必要です。モデルが停止するタイミングを決定する場合、プロンプトインジェクションが停止を妨げる可能性があります。
ステップ境界で出力を検証する
各ステップ境界は、次のステップに渡す前に出力が期待されるスキーマと一致するかを検証する機会です。OpenLegionのフリートモデル調整は各ハンドオフポイントで出力バリデーターを適用します。実装の詳細はAIエージェントオーケストレーションガイドを参照してください。
権限を必要最小限に制限する
各エージェントは特定のステップに必要なツールと権限のみを持つべきです。過剰な権限を持つエージェントは侵害時の影響範囲を拡大します。OpenLegionのフリート設定のエージェントごとのACLマトリクスはオーケストレーターレベルで最小権限を強制します。
エージェントワークフローフレームワーク:パターンサポート比較
| フレームワーク | ReAct | プランアンドエグゼキュート | リフレクション | ファンアウト | ステップ予算 | コンテナ分離 |
|---|---|---|---|---|---|---|
| OpenLegion | あり | あり | あり | あり | あり(ハード) | あり(必須) |
| LangGraph | あり | あり | あり | あり | 組み込みなし | なし |
| CrewAI | あり(Flows) | あり(Crews) | 限定的 | あり(parallel) | なし | なし(CodeInterpreterのみ) |
| OpenAI Agents SDK | あり | 限定的 | 限定的 | あり(handoffs) | なし | なし |
| AutoGen | あり | あり | あり | あり(group chat) | なし | コードのみDocker |
これらのフレームワークの詳細なセキュリティとアーキテクチャ比較については、AIエージェントフレームワーク比較を参照してください。
OpenLegionの見解
エージェントワークフローは、ほとんどのフレームワークのセキュリティ負債が本番環境で顕在化する場所です。ステップ予算のないReActループは5桁、6桁の予期しないAPI請求を生成してきました。CVE-2025-64168(Agno、CVSS 7.1、2025年10月)は、Pythonプロセスを共有する同時エージェントワークフローが高い非同期負荷下でユーザーセッション状態を別のユーザーに公開できることを実証しました。OWASP LLM02(プロンプトインジェクション、2025年Top 10)はツール結果インジェクションをReActベースのエージェントワークフローに対する主要な攻撃ベクトルとして識別しています。
OpenLegionは3つのプロパティをアーキテクチャ的に対処しています:ハードステップ予算(オーケストレーターが強制する最大反復回数)、エージェントごとのコンテナ分離(並列ブランチ間に共有の可変状態なし)、Vaultプロキシクレデンシャルインジェクション(委任ハンドオフはZone 2を経由してルーティング)。これらは設定オプションではなく、デフォルトのアーキテクチャです。
トレードオフ:OpenLegionのGitHubスターは約59で、LangGraphの約25,200、CrewAIの約44,600と比較されます。これらのパターンがフレームワーク間でどのように実装されているかの比較については、AIエージェントフレームワーク比較を参照してください。
希望のストップ条件ではなく、ハードなストップ条件でエージェントワークフローを構築してください。
よくある質問
エージェントワークフローとは何ですか?
エージェントワークフローとは、1つ以上のエージェントがツールを自律的に選択し、他のエージェントにサブタスクを委任し、中間結果に基づいて実行計画を調整する多段階AIプロセスです。固定ステップを持つ静的パイプラインとは異なり、エージェントワークフローの実行パスはモデルの推論によって実行時に決定されます。4つの主要パターンは、ReActループ、プランアンドエグゼキュート、リフレクションループ、並列ファンアウトで、それぞれ独自の障害モードとセキュリティ上の影響があります。
エージェントワークフローにおけるReActパターンとは何ですか?
ReAct(Reason + Act)は2023年にYao et al.によって導入され、推論トレースとツール呼び出しを単一ループで交互に実行します。各ステップで、モデルはThought(推論)、Action(ツール呼び出し)、Observation(ツール結果)を生成します。ReActはLangGraph、OpenAI Agents SDK、AutoGen、OpenLegionのデフォルトエージェントワークフローパターンです。主要な障害モードは無制限の反復とツール結果を通じたプロンプトインジェクションです。
エージェントワークフローの暴走ループを防ぐにはどうすればよいですか?
暴走ループを防ぐ唯一の信頼できる方法は、モデル自身が停止することに頼らず、インフラレベルでストップ条件を強制することです。2つのコントロールが必要です:ステップ予算(オーケストレーターが強制する最大反復またはツール呼び出し回数)とトークン予算(コストトラッカーが強制する最大支出)。トークン予算だけでは高頻度の安価なツールループを止められません。ステップ予算だけでは高コストなLLMの反復ごとのコストを制限できません。OpenLegionはエージェントごとにハードな上限として両方を強制します。
エージェントワークフローにおけるプランアンドエグゼキュートとは何ですか?
プランアンドエグゼキュートはエージェントワークフローを2つのフェーズに分けます:プランナーエージェントが事前に完全なタスク分解を生成し、1つ以上のエグゼキューターエージェントが再計画なしで各ステップを実行します。これによりReActと比較してトークンコストが削減され(重い推論が毎ステップではなく1回のみ)、実行前に実行パスを検査できます。主要な障害モードは計画ドリフトです。エグゼキューターが予期しない結果に遭遇した場合、乖離を報告するのではなく古い計画を続行する可能性があります。
エージェントワークフローにおける主なセキュリティリスクは何ですか?
主要な攻撃ベクトルはツール結果を通じたプロンプトインジェクション(OWASP LLM02、2025年Top 10)です。エージェントがウェブページ、ファイル、データベースレコード、外部APIレスポンスを読み取るとき、そのコンテンツは信頼された入力として届きます。悪意のある文書はエージェントを意図しないアクションに向ける命令を含む可能性があります。対策にはツール結果取り込み時のUnicodeサニタイゼーション、ステップ境界での出力スキーマ検証、注入成功時の影響範囲を制限するコンテナ分離が含まれます。
エージェントワークフローにおける並列ファンアウトはどのように機能しますか?
並列ファンアウトは複数のエージェントを独立したサブタスクで同時に動作させ、シンセシスステップで結果をマージします。独立したワークストリームに分解できるタスクのウォールクロック時間を短縮します。障害モードはコスト増幅(Nエージェントはより多くのコスト)、シンセシス汚染(悪意のあるブランチ出力がマージ結果を破損)、同時エージェントが可変プロセス状態を共有するフレームワークでの共有状態の競合です。OpenLegionは各並列エージェントを独自の状態を持つ隔離されたDockerコンテナで実行し、共有状態の競合を防ぎ、各ブランチを独立して制限します。
エージェントワークフローにおける計画ドリフトとは何ですか?
計画ドリフトは、エグゼキューターエージェントが予期しない中間結果に遭遇するが乖離を報告するのではなく元の計画の実行を続けるプランアンドエグゼキュートワークフローで発生します。対策には明示的な計画検証チェックポイント、重要な計画ステップでの人間承認ゲート、続行前に乖離を表示する構造化ハンドオフプロトコルが含まれます。OpenLegionのフリートモデル調整はいずれのハンドオフポイントでもチャンネル統合を通じた人間ループチェックポイントをサポートします。
エージェントワークフロー設計はAIエージェントオーケストレーションとどう異なりますか?
エージェントワークフロー設計はステップレベルの解剖学に焦点を当てます:どのパターン(ReAct、プランアンドエグゼキュート、リフレクション、ファンアウト)、どのストップ条件、ツール結果の検証方法、各ステップでのクレデンシャルのスコープ。AIエージェントオーケストレーションはフリートレベルの調整に焦点を当てます:複数のワークフローがどのようにシーケンスされるか、エージェントが互いにどのように作業を渡すか、マルチエージェントシステム全体で共有状態がどのように管理されるか。AIエージェントオーケストレーションガイドは、ここで説明されるワークフローパターンの上で動作するフリートレベルの調整プリミティブをカバーしています。