Approval Gate(承認ゲート)
不可逆なアクション(送金・削除・設定変更・外部送信)の実行直前に、決定論的な人間承認の関門を構造として挟む。エージェントの判断力への信頼ではなく、アーキテクチャで安全を担保するパターンである。
別名
| 呼称 | 出典 |
|---|---|
| Human-in-the-Loop / HITL | 一般的呼称・Azure |
| Human Approval, Mandatory Gate | Azureの用語 |
| Interrupt | エージェントフレームワークでの機能名の慣用 |
問題
実行権限を持つ自律エージェントは、誤った推論のまま不可逆アクションを実行しうる。誤送金・本番設定の破壊・誤った外部通知は、後からどれだけ正確に検知しても取り返しがつかない。
プロンプトで「危険な操作の前に確認して」と指示しても、モデルが従う保証はない。危険な判断をする可能性があるモデル自身に、最終的な実行可否を委ねていることが問題の本質である。
コンテキスト
適用する:
- エージェントが不可逆・高影響のアクション実行権限を持つ場合
- 規制・監査でヒトの承認記録が要求される場合
- 誤実行の損害が、承認待ちのレイテンシコストを大きく上回る場合
適用しない(不要な)ケース:
- すべてのアクションにゲートを置く場合。承認疲れでラバースタンプ化し、ゲートが形骸化する。低リスク操作は自動、危険操作のみゲートとする(AzureではHITLゲートを特定のツール呼出にスコープできる)
- 読み取り専用エージェント
- 承認者が意味のある判断材料を持てない場合
解決
ツール層で危険なアクションを宣言的にマークし、ミドルウェアがそのツール呼出をインターセプトする。実行内容・根拠・影響範囲の要約を承認者へ提示し、実行を保留して状態を永続化する。承認なら実行し、却下なら理由をフィードバックとしてエージェントのループへ返す。
承認は二値だけでなく、修正指示付きの差し戻しも設計する。承認待ち状態の保持には Checkpoint & Resume を使い、金額上限や対象環境の限定など、blast radius の制限も併用する。
python
def run_agent(task):
state = checkpoint.load_or_init(task)
while not state.done:
action = llm(state.context)
if action.tool and action.tool.irreversible:
summary = summarize(
action=action,
rationale=state.rationale,
blast_radius=action.scope,
)
checkpoint.save(state, pending_approval=summary)
decision = wait_for_approval(summary)
if decision.approved:
result = tool(action.name, action.arguments)
else:
state = state.with_feedback(decision.feedback)
continue
else:
result = tool(action.name, action.arguments)
state = state.apply(result)
return state.result実装の要点:
- 危険性をツールのメタデータで宣言する。 プロンプト上の注意書きではなく、ミドルウェアが必ず検査できる
irreversible=Trueのような属性で対象を定義する - 承認前に実行できない構造にする。 承認要求の作成と実行を分離し、保留状態を永続化する。承認待ち中のタイムアウトや再開も明示的に扱う
- 判断材料と影響範囲を提示する。 アクション、根拠、対象、金額、環境を要約し、承認者が意味のある判断をできるようにする。上限とスコープでblast radiusも制限する
トレードオフ
- ✅ 不可逆アクションの誤実行が構造的に不可能になり、監査証跡も残る
- ✅ 低リスク操作は自動化しつつ、危険操作だけ人間が握る粒度の細かい設計ができる
- ⚠️ 承認待ちでフローが同期化し、レイテンシが人間律速になる
- ⚠️ ゲートの置きすぎは承認疲れで形骸化し、安全装置がただの儀式になる
クラウドパターンとの対応
| クラウドパターン | 本パターンでの再定義 |
|---|---|
| Gatekeeper | 「実行前に仲介者が検証する構造」から、検証者が専用コンポーネントではなく人間になった。対象も一般的な要求からエージェントの危険なツール呼出へ細粒度化した |
| CI/CDパイプラインの Manual Approval | デプロイ前の人間承認を直系のモデルとし、対象をデプロイ全体からエージェントの個別アクションへ細粒度化した |
関連パターン
- Checkpoint & Resume — 承認待ち中の状態保持に必須の相棒。保留した実行を承認後に再開する
- Layered Guardrails — 機械による多層検証を担う。人間ゲートはその最終層として補完する
- Budget Guard — 「量」の制御を担う。Approval Gateは「不可逆性」の制御を担い、両者は相補的である
- Evaluator-Optimizer — 機械評価で足りる品質問題を扱う。人間の承認が必要な不可逆性の問題とは分けて設計する
出典・参考
- Anthropic — Building Effective Agents(チェックポイントと障害時に人間の確認を挟む推奨)
- Microsoft — AI Agent Orchestration Patterns(Human participation: 承認とフィードバックの区別、ツール呼出単位のゲートスコープ)
- Azure Architecture Center — Gatekeeper pattern(系譜元のクラウドパターン)