1一句话:它是什么
AGT 是微软 2025-2026 力推的开源 Agent 治理运行时(Agent Governance Runtime)。
本质是给 AI Agent 的每一次 工具调用 / 消息发送 / Agent 间委托 加一道
确定性代码拦截层——在 LLM 的意图真正"上线路"之前,
由确定性代码(不是 prompt、不是模型自我约束)判 allow / deny。
定位坐标
不是什么
不是 SAST/DAST、不是模型层护栏、不是 prompt 注入检测器、不是 fuzzing 工具。
是什么
Agent 行为的策略执行点(PEP) + 身份 + 审计 + 沙箱,四件套一体的运行时。
类比
= Linux Kernel LSM + sudoers + auditd + seccomp,但运行在 Agent 的 tool-call 边界上。
2它要解决的真实痛点
README 开篇直接点出企业上线 Agent 时回答不了的三个问题:
① 这个动作允许吗?
一个 Agent 同时有 send_email 和 query_database 权限,
OAuth scope / IAM role 只管"能不能连到这个服务",管不了"连上之后干什么"——
它不该能 drop_table。
② 是哪个 Agent 干的?
多 Agent 系统里 5 个 Agent 共用一个 API key,出事时"是某个 Agent 干的"根本没法做应急响应。
③ 能证明发生了什么吗?
审计/合规要防篡改的决策记录:当时哪条策略生效、Agent 申请了什么、为什么 allow/deny。
3核心机制:截在"上线路"之前
关键点:拦截发生在应用代码里,在模型意图到达 wire 之前。被 deny 的不是"概率低",
是 structurally impossible。这是它和所有 prompt-level 防护的根本分野。
最小用法 — 两行包住任意 tool
from agentmesh.governance import govern
safe_tool = govern(my_tool, policy="policy.yaml") # 每次调用都过策略
safe_tool(action="drop", table="users")
# → GovernanceDenied: Action denied by policy rule 'block-destructive'
策略是声明式 YAML,不写代码:
# 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
- name: require-approval-for-send
condition: "action.type == 'send_email'"
action: require_approval
approvers: ["security-team"]
4四大能力层(每一层可选)
README 明说:"每一层都是可选的,先用 govern(),风险增长了再加层。多数团队只跑策略执行 + 审计。"
-
策略引擎 (Policy Engine) — 核心层
支持YAML/OPA/Rego/Cedar三种策略语言, 对每个 action 求 allow / deny / require_approval。 底层核心是 Rust 写的 ACS 引擎(policy-engine/core), 通过 FFI 暴露给 Python / Node / .NET / Go,跨语言语义一致。 -
身份 (Identity) — SPIFFE/DID/mTLS
每个 Agent 有可验证身份(SPIFFE SVID / 去中心化 DID),Agent 间通信走 mTLS。 解决"5 个 Agent 共用一个 key,出事分不清"的问题。可联邦到 Entra / TEE(可信执行环境)。 -
沙箱 (Sandboxing) — Landlock/Seatbelt
v5 新增NonoSandboxProvider:Linux 走 Landlock、macOS 走 Seatbelt 的内核级沙箱, 过滤出站、AST 预扫。RingEnforcer 还带命令黑名单(;&|元字符剥离防注入绕过)。 给 Agent 跑 subprocess / 文件操作时兜底。 -
审计 (Audit / SRE) — 防篡改
每次决策落 Decision Record(防篡改),agt verify --evidence ... --strict可在 CI 里按证据强度 fail。agent-sre模块提供运行时 SRE。 这一层满足审计/合规的"能证明发生了什么"。
5多语言 SDK + IDE/框架集成
AGT 是个巨型企业 monorepo,5 大语言一等公民,所有包在 v5 对齐到 5.0.0。
4.0 时还把 45 个 Python 包合并成 5 个分发(core / runtime / sre / cli / full)。
| 语言 | 包 | 集成形态 |
|---|---|---|
| Python | agent-governance-toolkit[full] (PyPI) | govern() 装饰器、AgentControl 运行时、CLI agt |
| TypeScript/Node | @microsoft/agent-governance-sdk (npm) | PolicyEngine 类 |
| .NET | Microsoft.AgentGovernance (NuGet) | GovernanceKernel + MCP WithGovernance() 扩展 |
| Rust | agentmesh crate | AgentMeshClient::execute_with_governance() |
| Go | github.com/microsoft/agent-governance-toolkit/agent-governance-golang | client.ExecuteWithGovernance() |
Claude Code
官方插件市场:/plugin install agt-governance@agent-governance-toolkit
OpenCode / Antigravity / Copilot CLI
各有独立子仓集成(agent-governance-opencode 等)
MCP
.NET 有 WithGovernance();另有 agentmesh-mcp Rust 包
CLI 工具(任何框架都可用):
agt doctor # 检查安装
agt verify --evidence ./e.json --strict # CI 里按证据强度 fail
agt red-team scan ./prompts/ --min-grade B # prompt 注入审计
agt lint-policy policies/ # 校验策略文件
6对齐的合规框架
OWASP Agentic Top10
10/10 Covered
Agent 专用风险 Top10 全覆盖(README 徽章)。
AARM Extended
R1–R9
Agent Attack & Risk Model 扩展要求。
ATF
All 5 Elements
Agentic Trust Framework 全 5 要素。
docs/compliance/owasp-agentic-top10-architecture.md
是逐条映射。是"架构覆盖"而非"每条都 100% 解决"——比如 prompt 注入只能限制后果(截断动作),
无法从根上消除注入本身(这点 README 自己也承认)。读文档时区分"覆盖"和"根治"。
7设计哲学:fail-closed(默认拒绝)
fail-open(很多 runtime 的默认)
策略引擎连不上 / 超时 / 策略解析失败 → 放行,怕影响业务可用性。后果:故障/攻击时治理层恰好失效,Agent 在"无约束"窗口期干坏事。
AGT = fail-closed
求值失败、无定价、策略不匹配 → 拒绝并抛错。代价:治理层故障 = Agent 不可用;但这是安全系统该有的取舍—— "宁可全停,不可裸奔"。
典型体现:CI 里 agt verify --strict,证据不达标直接 fail 构建;
你的扩展层(如 enterprise 配置)设了预算但模型无定价 → 抛错而非静默放行。
8对比与边界(给你做技术决策用)
vs. prompt 级 / 模型层护栏
| prompt 护栏 / 模型对齐 | AGT | |
|---|---|---|
| 拦截位置 | 模型内部(概率) | tool-call 边界(确定性代码) |
| 被拒动作 | 概率低,仍可能发生 | 结构上不可能(到不了 tool) |
| 可审计 | 弱(模型黑盒) | 强(防篡改决策记录) |
| 对抗自适应攻击 | 已知 ASR 接近 100% | 攻击者改不了应用层代码 |
它 不 解决什么(边界)
- 不做静态代码扫描(SAST)——那是 codex-security / Semgrep 的活。
- 不从根上消除 prompt 注入——它截断注入的后果(动作),让注入"得逞了也干不成事"。
- 不是模型对齐替代品——和模型层防护是纵深防御关系,不是二选一。
- Public Preview:微软自己标了"production-quality 但 GA 前可能有 breaking change",生产接入要锁版本。
95 分钟上手
# 1. 装(Python 3.10+)
pip install "agent-governance-toolkit[full]"
# 2. 写策略 policy.yaml(见第③节)
# 3. 包住你的 tool
from agentmesh.governance import govern
safe_tool = govern(my_tool, policy="policy.yaml")
# 4. 自检 / CI
agt doctor
agt verify --evidence ./agt-evidence.json --strict
进阶用 AgentControl(完整 manifest,可编排多 Agent 身份 + 沙箱 + 审计):
from agent_control_specification import AgentControl
runtime = AgentControl.from_path("manifest.yaml")
result = runtime.evaluate("input", {
"envelope": {"agent_id": "example-agent"},
"input": {"body": {"action": "web_search", "params": {}}},
})
print(result.verdict)
runtime.close()
v5.0.0(HEAD/unreleased,比 GitHub Latest Release v4.0.0 还新)。
含了 v5 的 ACS(策略层)、NonoSandboxProvider、RingEnforcer 命令黑名单等 4.x 没有的东西。
研读以本地为准,但要 aware 在线用户装的稳定版可能还是 4.x。