Agent Governance Toolkit(以下AGT)は、Microsoftが2026年に公開したAIエージェント向けのポリシー・ID・サンドボックス・SRE統合OSSだ。pip install agent-governance-toolkit[full]の1行で導入でき、OWASP Agentic AI Top 10の10カテゴリすべてを決定的な制御で潰すことを設計目標としている。

AIエージェント全体像については AIエージェントフレームワーク比較2026:LangChain・CrewAI・AutoGen徹底解説 をご覧ください。

なぜ「もう一つ」のガバナンスフレームワークが必要だったのか

AIエージェントを本番に出すと、運用チームは決まって3つの問いに直面する。READMEがそのまま列挙している3問は、エージェント本番運用の急所そのものだ。

  1. このアクションは許可されているか?send_emailquery_databaseにアクセスできるエージェントがdrop_tableできないことを、誰がどこで保証するのか。OAuthスコープやIAMロールはエージェントが「どのサービスに届くか」しか制御しない。接続したあと何をするかは別の問題だ
  2. どのエージェントが実行したのか? — マルチエージェント構成では5体が1本のAPIキーを共有しているのが常で、何かが起きたとき「エージェントがやった」はインシデント対応にならない
  3. 何が起きたか証明できるか? — 監査人と規制当局は、各決定について「どのポリシーが有効だったか・エージェントが何を要求したか・なぜ許可/拒否されたか」のtamper-evident(改ざん検知可能)な記録を要求する

AGTはこの3つをプロンプトの外側で解決する。プロンプトレベルの安全策(「ルールに従ってください」)は確率的システムへの礼儀正しい依頼にすぎないからだ。

プロンプト層の安全策は構造的に脆弱
OWASP LLM01:2025は明言する: "it is unclear if there are fool-proof methods of prevention for prompt injection." JailbreakBench (Chao et al., NeurIPS 2024) では、適応的攻撃がフロンティアモデルに対してほぼ100%のASR(Attack Success Rate)を達成する。Andriushchenko et al., 2024はGPT-4・GPT-3.5・Claude 3・Llama-3に対して単純なプロンプト攻撃のみで100% ASRを報告。プロンプト層の防御は確率的構築物であり、ガバナンス境界として信頼するべきではない。

AGTの設計思想を一文で言えば、エージェントに行儀よく振る舞ってもらう」をやめて、「そもそも行儀悪く振る舞えないように構造的に閉じる」へシフトすることだ。すべてのツール呼び出し・メッセージ送信・委任は、モデルの出力がワイヤに乗る前に決定的なアプリケーションコードで横取りされる。AGTが拒否したアクションは「起こりにくい」のではなく、構造的に不可能になる。


全体アーキテクチャ — 8パッケージ + 5補助機能

AGTは1つのモノリスではなく、8つの中核パッケージと5つの補助機能で構成される。pip install agent-governance-toolkit[full]は便宜上のメタパッケージで、内部では用途ごとにバラ売りされている。

パッケージ 役割
Agent OS ポリシーエンジン・エージェントライフサイクル・ガバナンスゲート
Agent Mesh エージェント発見・ルーティング・トラストメッシュ
Agent Runtime 4段階の特権リングを持つ実行サンドボックス
Agent SRE kill switch・SLOモニタリング・カオステスト
Agent Compliance OWASP適合性検証・ポリシーlint・整合性チェック
Agent Marketplace プラグインガバナンスとトラストスコアリング
Agent Lightning RL学習ガバナンス(違反ペナルティ付与)
Agent Hypervisor 実行監査・delta engine・コミットメントアンカリング

これに加えて、MCP Security Gateway(ツール汚染検出・ドリフト監視・タイポスクワッティング・隠し命令スキャン)、Shadow AI Discovery(未登録エージェントの発見)、Governance Dashboard(リアルタイム可視化)、PromptDefense Evaluator(12ベクトルのプロンプトインジェクション監査)、Contributor Reputation(PR・Issue著者のソーシャルエンジニアリングスクリーニング、GitHub Action提供)という5つの補助機能が同梱される。

ガバナンスの実行フロー

flowchart LR A["AI Agent
(LLM出力 / tool call)"] --> B["Policy Engine
YAML / OPA / Cedar"] B --> C{"ルール評価"} C -->|"Allow"| D["Identity Layer
SPIFFE / DID / mTLS"] C -->|"Deny"| E["GovernanceDenied例外
監査ログに記録"] C -->|"Approval"| F["Human Approval
承認待ちキュー"] D --> G["Audit Log
Merkle木で改ざん検知"] G --> H["Tool実行
Agent Runtime sandbox"] H --> I["Decision Record
BOM出力"] F --> D E --> G

エージェントから出たすべてのアクションは、ポリシーエンジンで評価され、IDレイヤーでどのエージェントの行為か署名され、監査ログにMerkle木で記録されてから、ようやくツールが実行される。Allow / Deny / Require-Approvalの三値判定で、人間承認パスも組み込み済みだ。

このフロー全体は「必要なときだけ全段スタック、最初はpolicy + auditだけ」という段階導入を前提に設計されている。READMEには明示的に「ほとんどのチームはpolicy enforcement + audit loggingで十分、フルスタックは要らない」と書かれている。


クイックスタート — govern()の2行から始める

AGTの最小単位はPythonのgovern()デコレータだ。任意のツール関数を1行でラップし、YAMLポリシーを評価し、ログを残し、GovernanceDeniedを投げる。

from agentmesh.governance import govern

# 既存のツール関数を1行でラップ
safe_tool = govern(my_tool, policy="policy.yaml")

ポリシーはYAMLで宣言する。読みやすさと監査性を重視した形式で、Cedar / OPA / YAMLの3形式に対応する。

# policy.yaml
apiVersion: governance.toolkit/v1
name: production-policy
default_action: allow
rules:
  - name: block-destructive
    condition: "action.type in ['drop', 'delete', 'truncate']"
    action: deny
    description: "Destructive operations require human approval"

  - name: require-approval-for-send
    condition: "action.type == 'send_email'"
    action: require_approval
    approvers: ["security-team"]

実行時の振る舞いはシンプルだ。許可されたアクションは通常通り実行され、拒否されたアクションは例外として落ちる。

>>> safe_tool(action="read", table="users")
{'table': 'users', 'rows': 42}

>>> safe_tool(action="drop", table="users")
GovernanceDenied: Action denied by policy rule 'block-destructive':
  Destructive operations require human approval

ルールを書いたら、それは要望ではなく契約になる」がAGTの核心の一文だ。プロンプトの末尾に「destructive operationsはしないでください」と書く代わりに、condition: "action.type in ['drop', 'delete', 'truncate']"をYAMLに書く。前者は確率的、後者は決定的——この差が本番でのインシデント発生率を桁で変える。

プログラマブルAPI — PolicyEvaluator

YAMLだけでは表現しきれない複雑なルールは、PolicyEvaluatorで直接組める。

from agent_os.policies import (
    PolicyEvaluator, PolicyDocument, PolicyRule,
    PolicyCondition, PolicyAction, PolicyOperator, PolicyDefaults
)

evaluator = PolicyEvaluator(policies=[PolicyDocument(
    name="my-policy", version="1.0",
    defaults=PolicyDefaults(action=PolicyAction.ALLOW),
    rules=[PolicyRule(
        name="block-dangerous-tools",
        condition=PolicyCondition(
            field="tool_name",
            operator=PolicyOperator.IN,
            value=["execute_code", "delete_file"]
        ),
        action=PolicyAction.DENY, priority=100,
    )],
)])

result = evaluator.evaluate({"tool_name": "web_search"})    # Allowed
result = evaluator.evaluate({"tool_name": "delete_file"})   # Blocked

優先度(priority)でルール解決順を制御でき、複数ポリシードキュメントのマージ規則も仕様で形式化されている。

CLI — agtコマンド

ライブラリ呼び出しだけでなく、CLIツールagtがCI/CDに組み込みやすい形で同梱される。

agt doctor                                         # インストール状態の検査
agt verify                                         # OWASP適合性チェック
agt verify --evidence ./agt-evidence.json --strict # CIで弱い証跡なら失敗扱い
agt red-team scan ./prompts/ --min-grade B         # プロンプトインジェクション監査
agt lint-policy policies/                          # ポリシーファイル検証

agt verify --strictをGitHub Actionsに組み込めば、コンプライアンス証跡が要件を満たさないPRはマージ前に弾ける。プロンプト変更PRに対するred-team scanは、12ベクトルのインジェクション攻撃をモデルに通して許容ASRを下回るかをチェックする。


OWASP Agentic Top 10 — 10/10対応のリアリティ

AGTが提示する最大のセールスポイントは、READMEのバッジに表示される「OWASP Agentic Top 10: 10/10 Covered」だ。これがリップサービスではないことを、AGTは992の適合性テスト25のArchitecture Decision Records (ADR)で裏付けている。

OWASPカテゴリ AGTでの主な対策コンポーネント
Authorization Hijacking Policy Engine + Agent OS(capability model)
Tool Poisoning MCP Security Gateway(drift・hidden instructions検出)
Memory Poisoning Audit Log(Merkle木)+ Agent Hypervisor(delta engine)
Hallucinated Authority Identity Layer(SPIFFE/DID/mTLS)
Cascading Failure Agent SRE(circuit breaker・SLO・kill switch)
Goal Manipulation PromptDefense Evaluator(12ベクトル監査)
Resource Exhaustion Agent Runtime(特権リング・タイムアウト)
Excessive Agency Policy Engine + Approval workflow
Insecure Outputs Compliance Layer(ポリシーlint・整合性チェック)
Supply Chain Contributor Reputation(PR著者スクリーニング)

カテゴリごとに対応コンポーネントが1対1でマップされており、docs/compliance/owasp-agentic-top10-architecture.mdに詳細が公開されている。これは「セキュリティの議論を漠然とした努力目標から、検証可能なテストスイートに変換する」という大きな転換だ。サプライチェーン全般の話は AIサプライチェーンセキュリティガイド2026 も参考になる。

NIST AI RMF / EU AI Act / SOC 2 との対応

OWASP以外にも、AGTは複数の規制標準と整合する。

  • NIST AI RMF 1.0:GOVERN・MAP・MEASURE・MANAGEの4機能とフル整合
  • EU AI Act:自動証跡生成で適合性マップ
  • SOC 2:コントロールマッピング + 監査トレイル出力

これにより、エンタープライズ採用時のセキュリティレビューや監査時に提出すべき書類が、AGTの実行ログから自動で生成される。「規制対応のためのドキュメント整備」というAI採用最大の摩擦の1つを、AGTは技術的に解消しにかかっている。


5言語SDK + 主要フレームワーク統合

AGTは1つの言語に閉じない。Python・TypeScript・.NET・Rust・Goの5言語で同等のコアガバナンス(ポリシー・ID・トラスト・監査)が提供される。

言語 パッケージ インストール
Python agent-governance-toolkit pip install agent-governance-toolkit[full]
TypeScript @microsoft/agent-governance-sdk npm install @microsoft/agent-governance-sdk
.NET Microsoft.AgentGovernance dotnet add package Microsoft.AgentGovernance
Rust agent-governance cargo add agent-governance
Go agent-governance-toolkit go get github.com/microsoft/agent-governance-toolkit/agent-governance-golang

Pythonがフルスタック実装で、他の4言語はコア層を提供する。Claude Code向けプラグイン@microsoft/agent-governance-claude-code)とGitHub Copilot CLI向けインストーラ@microsoft/agent-governance-copilot-cli)も第一級の開発者サーフェスとして用意されている。

.NET / TypeScript / Rust / Goの最小例

// TypeScript
import { PolicyEngine } from "@microsoft/agent-governance-sdk";

const engine = new PolicyEngine([
  { action: "web_search", effect: "allow" },
  { action: "shell_exec", effect: "deny" },
]);
engine.evaluate("web_search"); // "allow"
engine.evaluate("shell_exec"); // "deny"
// .NET(MCPサーバー統合つき)
using AgentGovernance;
using AgentGovernance.Extensions.ModelContextProtocol;
using AgentGovernance.Policy;

var kernel = new GovernanceKernel(new GovernanceOptions
{
    PolicyPaths = new() { "policies/default.yaml" },
});
var result = kernel.EvaluateToolCall("did:mesh:agent-1", "web_search",
    new() { ["query"] = "latest AI news" });

builder.Services.AddMcpServer()
    .WithGovernance(options => options.PolicyPaths.Add("policies/mcp.yaml"));
// Rust
use agent_governance::{AgentMeshClient, ClientOptions};

let client = AgentMeshClient::new("my-agent").unwrap();
let result = client.execute_with_governance("data.read", None);
assert!(result.allowed);
// Go
import agentmesh "github.com/microsoft/agent-governance-toolkit/agent-governance-golang"

client, _ := agentmesh.NewClient("my-agent",
    agentmesh.WithPolicyRules([]agentmesh.PolicyRule{
        {Action: "data.read", Effect: agentmesh.Allow},
        {Action: "*", Effect: agentmesh.Deny},
    }),
)
result := client.ExecuteWithGovernance("data.read", nil)

同じ概念(policy / identity / audit)が同じ語彙で5言語に出てくることが、AGTの標準化を狙ったポジショニングを物語る。MicrosoftがOSSとして公開しつつ、複数言語で同じ動作を保証する設計は、LFやCNCFのプロジェクトになりやすい形だ。

フレームワーク統合マトリクス

フレームワーク 統合方式
Microsoft Agent Framework ネイティブミドルウェア
Semantic Kernel (.NET + Python) ネイティブ
AutoGen アダプタ
LangGraph / LangChain アダプタ
CrewAI アダプタ
OpenAI Agents SDK ミドルウェア
Claude Code ガバナンスプラグイン
Google ADK アダプタ
LlamaIndex ミドルウェア
Haystack パイプライン
Mastra / Dify アダプタ / プラグイン
Azure AI Foundry デプロイガイド
GitHub Copilot CLI ガバナンスインストーラ

AGTは「ガバナンスは横串(cross-cutting)レイヤであるべき」という立場を取り、フレームワークを選んだ後でも上から被せられる設計を強調している。examples/配下に各フレームワーク向けの最小サンプル(openai-agents-governedcrewai-governedsmolagents-governedmaf-integrationmcp-trust-verified-serverなど)が動く形で同梱されている。


12-Factor / Statewright / ハーネス設計との位置関係

AGTを「いま起きているエージェント設計の潮流」のなかに置くと、いくつか興味深い対応関係が見える。

12-Factor Agents原則との対応

12-Factor Agents完全解説:本番投入できるLLMエージェント設計12原則を一次ソースで読む の枠組みでAGTを読むと、複数のFactorに直接合致する。

12-Factor原則 AGTでの実装
Factor 4: ツールは構造化出力 Policy Engineが構造化アクションを評価、文字列マッチに依存しない
Factor 6: 起動・停止・再開を所有 Agent SREのkill switch・circuit breaker
Factor 8: 制御フローを所有 ガバナンスゲートをエージェントループに挿入
Factor 9: コンパクトなエラーで自己修正 GovernanceDeniedの構造化例外で次の決定にフィードバック
Factor 12: ステートレス化 Audit Logで実行履歴を外部化(Merkle木)

AGTは12-Factorの原則を自分で書かなくてもライブラリレベルで提供する立場だ。

状態機械ガードレールとの組み合わせ

Statewright完全解説|Rust製状態機械ガードレールがSWE-bench 2→10/10に変えた理由 のような状態機械ガードレールと組み合わせた場合、AGTのポリシー層は「どのアクションが許可されるか」を決め、Statewright層は「現在の状態でどのツール集合が見えるか」を決める。両者は補完関係で、

  • Statewright = アクション空間のを制御(planningではブラウザのみ、implementingでフォーム入力許可)
  • AGT = アクションの意味を制御(destructive operationは常に拒否、特定の権限は承認必須)

の役割分担になる。両方使うと、エージェントは状態ごとに見えるツールが変わり、見えているツールでも個別に許可・拒否・承認の判定が走る。

ハーネスエンジニアリングの一部としてのガバナンス

ハーネスエンジニアリング実装パターン2026 で議論されている「ハーネスがループ・コンテキスト・ツール管理を所有する」という設計思想に、AGTは「ハーネスはガバナンスも所有する」を加える。

ガバナンスはモデル責任ではなくハーネス責任
2024年までは「ガバナンスはプロンプトに書く」が主流だった。2026年に入り、ガバナンスはハーネスのコード側で持つという認識が広がっている。AGTはこの認識を1つのライブラリにパッケージし、`govern()`の2行で導入できる形にした。プロンプトに「destructive operationはしないで」と書くより、`condition: action.type in ['drop', 'delete']`をYAMLに書くほうが、レビュー可能で・テスト可能で・規制対応もできる。

仕様と適合性テスト — RFC 2119準拠の本気度

AGTのもう1つの特徴は、形式仕様 + 適合性テストの体制だ。READMEには10個の正式仕様(specification)とそれぞれに紐づくテスト数が一覧で示されている。

仕様 スコープ テスト数
Agent OS Policy Engine ポリシー評価・ルール合成・fail-closed意味論 68
AgentMesh Identity and Trust クレデンシャル・トラストスコア・委任チェーン 135
Agent Hypervisor Execution Control 特権リング・saga・kill switch 80
AgentMesh Trust and Coordination ピアトラスト交渉・メッシュ全体ポリシー 62
Agent SRE Governance SLO・error budget・カオス・circuit breaker 111
MCP Security Gateway ツール汚染・ドリフト検出・隠し命令 127
Agent Lightning Fast-Path RL学習ガバナンス・違反ペナルティ 100
Framework Adapter Contract 10アダプタ統合・interceptorチェーン 152
Audit and Compliance Merkle監査・適合マップ・Decision BOM 157
AgentMesh Wire Protocol メッセージ形式・ルーティング・シリアライズ

合計992の適合性テストで「実装が仕様からずれない」ことを担保している。仕様はRFC 2119(MUST / SHOULD / MAY)の語彙で書かれており、25のADR(Architecture Decision Records)が「なぜこの設計を選んだか」を補足する。

OSSとしての成熟度をこのレベルで揃えているプロジェクトは、AIエージェント領域では珍しい。「実装+仕様+テスト+ADR」の四点セットが揃っていることは、エンタープライズ採用に向けた強いメッセージになる。


設計判断とトレードオフ

AGTは強い意見の塊であり、すべての選択にコストが伴う。READMEのSecurityセクションとLIMITATIONS.mdへの明示的な誘導から、設計者の正直さが伺える。

AGTが正直に書いている設計境界
1. アプリケーションミドルウェア層で強制:AGTはOSカーネル層ではなくアプリケーションミドルウェア層でガバナンスを強制する。ポリシーエンジンとエージェントは同じプロセス境界を共有する
2. OSレベル隔離は別途必要:本番では各エージェントをコンテナ分離するよう明示的に推奨。AGTだけで万事解決とは謳わない
3. レイヤード防御を前提:`docs/LIMITATIONS.md`で「honest design boundaries」を公開、CodeQL・Gitleaks・ClusterFuzzLite(7 fuzz target)・Dependabot(13ecosystems)・OpenSSF Scorecardを組み合わせる前提

これは「AGTはガバナンスフレームワークであって、ガバナンスのすべてではない」という現実的な立場だ。プロセス境界を共有する以上、悪意のあるネイティブコードがPolicyEvaluatorを直接書き換えるシナリオはAGTの守備範囲外で、それはコンテナとOSの責務になる。

向くケース / 向かないケース

向くケース 向かないケース
規制業界(金融・医療・公共)でエージェント本番投入したい 個人趣味の単発エージェント
マルチフレームワーク混在環境 単一フレームワーク・小規模PoC
Claude Code / Copilotを既に企業導入している エージェント機能を使わない単純なLLMアプリ
OWASP・SOC2・EU AI Act対応が必要 規制要件のないR&D環境
マルチエージェントで「誰が何をしたか」追跡が必要 単一エージェント・読み取り専用ツールのみ

特にClaude Code / Copilotを企業内で使い始めているチームには、@microsoft/agent-governance-claude-codeプラグインを被せるだけで、コード生成エージェントの行動を組織ポリシーで縛れる。社内のCI/CDでagt verify --strictを回せば、エージェントが規定外の操作をしていないかが自動で検証される。


関連トレンド — 「ガバナンスは標準化される」

AGTの登場は、エージェントセキュリティ領域における標準化フェーズの開始を象徴する。同じ流れに位置する関連トピックを整理する。

Statewrightとの相補関係

Statewright完全解説 は「状態ごとに見えるツールを変える」アプローチで、SWE-benchで2/10→10/10を達成した。AGTのポリシーレイヤーと組み合わせると、

  1. Statewrightが「いま見えるツールセット」を絞る(タスク種別による静的閉域)
  2. AGTが「見えるツールでも実行可否を判定」する(動的ポリシー評価)
  3. AGTのAudit Logが「何が起きたか」を改ざん検知可能な形で残す

の三層防御が成立する。Statewrightだけでもツール露出は減るが、実行時の動的判定監査証跡はAGTレイヤーで補完される設計だ。

Vercel agent-browser / Webwrightとの関係

Vercel製agent-browserの設計Webwright完全解説 のようなブラウザエージェントにAGTを被せると、エージェントが書く・実行するPlaywrightスクリプトに対してポリシー評価が走る。「特定のドメインへのリクエストは拒否」「フォーム送信は承認必須」のようなルールが、エージェントのアクション空間と独立に宣言できる。

ブラウザエージェント側がアクション空間を最小化(Webwrightの設計)、AGTがガバナンスを横串で被せる、という分業が成立する。

AGTが解こうとしている本質課題

整理すると、AGTが解こうとしている本質は「AIエージェント本番運用に必要な”運用基盤の標準コンポーネント”が存在しなかった」という穴だ。これまでは各社が独自にポリシー層を書き、独自に監査ログを設計し、独自にコンプライアンスマッピングを作っていた。AGTはそれを共通レイヤーとして提供し、規制対応コストとセキュリティレビューコストを企業横断で下げることを狙っている。

Microsoftが5言語でリファレンス実装を出し、OWASP Top 10を10/10で潰し、NIST AI RMF / EU AI Act / SOC 2にマップする——この投資量は、エージェントガバナンスを「個別実装」から「標準コンポーネント」に押し上げる意思表示だ。


まとめ — 本番投入の最大ハードルを片づける標準コンポーネント

AGTは、AIエージェントを本番に出すときに必ず誰かが書くことになる「ポリシー・ID・サンドボックス・SRE・コンプライアンス」のレイヤーを、1つのライブラリと10個の仕様にまとめたプロジェクトだ。要点を3つに集約すると以下になる。

  1. プロンプトの外で構造的に閉じる——「行儀よく振る舞ってもらう」をやめ、決定的なアプリケーションコードでアクションを横取りする。AGTが拒否したアクションは「起こりにくい」のではなく構造的に不可能になる
  2. OWASP Agentic Top 10を10/10カバー——992個の適合性テスト・25のADR・10個の形式仕様で実装と仕様の整合性を担保する。NIST AI RMF・EU AI Act・SOC 2にもマップされる
  3. 5言語SDK + 14フレームワーク統合——Python / TypeScript / .NET / Rust / Goの5言語で同等のコアガバナンスを提供。Claude Code / Copilot CLI / AutoGen / CrewAI / LangGraphなど主要エージェントフレームワークにアダプタまたはプラグインで対応

導入は段階的でよい。READMEが明言する通り「ほとんどのチームはgovern() + audit logだけで十分」だ。pip install agent-governance-toolkit[full]してgovern()をツールに被せる——その2行から始めて、必要なレイヤーだけを追加していくのがAGT流の本番化シナリオだ。

AIエージェントを「楽しいデモ」から「監査に耐える本番サービス」に押し上げる作業は、本来は社内で何ヶ月もかけて積み上げる仕事だった。AGTがその工程の8割を標準コンポーネントとして引き受けるなら、エージェント本番化に至るチームの数は確実に増える。Microsoft Researchが論文ではなくOSSとして公開した意味は、その「標準化」への明確なベットに他ならない。


参照ソース