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問は、エージェント本番運用の急所そのものだ。
- このアクションは許可されているか? —
send_emailとquery_databaseにアクセスできるエージェントがdrop_tableできないことを、誰がどこで保証するのか。OAuthスコープやIAMロールはエージェントが「どのサービスに届くか」しか制御しない。接続したあと何をするかは別の問題だ - どのエージェントが実行したのか? — マルチエージェント構成では5体が1本のAPIキーを共有しているのが常で、何かが起きたとき「エージェントがやった」はインシデント対応にならない
- 何が起きたか証明できるか? — 監査人と規制当局は、各決定について「どのポリシーが有効だったか・エージェントが何を要求したか・なぜ許可/拒否されたか」の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つの補助機能が同梱される。
ガバナンスの実行フロー
(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-governed、crewai-governed、smolagents-governed、maf-integration、mcp-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への明示的な誘導から、設計者の正直さが伺える。
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のポリシーレイヤーと組み合わせると、
- Statewrightが「いま見えるツールセット」を絞る(タスク種別による静的閉域)
- AGTが「見えるツールでも実行可否を判定」する(動的ポリシー評価)
- 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つに集約すると以下になる。
- プロンプトの外で構造的に閉じる——「行儀よく振る舞ってもらう」をやめ、決定的なアプリケーションコードでアクションを横取りする。AGTが拒否したアクションは「起こりにくい」のではなく構造的に不可能になる
- OWASP Agentic Top 10を10/10カバー——992個の適合性テスト・25のADR・10個の形式仕様で実装と仕様の整合性を担保する。NIST AI RMF・EU AI Act・SOC 2にもマップされる
- 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として公開した意味は、その「標準化」への明確なベットに他ならない。