|
| 1 | +# Agent Governance Toolkit v2.3.0 |
| 2 | + |
| 3 | +> [!IMPORTANT] |
| 4 | +> **Community Preview Release** — All packages published from this repository (PyPI, npm, NuGet) |
| 5 | +> are **community preview releases** for testing and evaluation purposes only. They are **not** |
| 6 | +> official Microsoft-signed releases. Official Microsoft-signed packages published via ESRP |
| 7 | +> Release will be available in a future release. |
| 8 | +
|
| 9 | +**Plugin governance, developer tooling, and hardened security — 97 commits since v2.2.0.** |
| 10 | + |
| 11 | +This release introduces a full plugin governance layer (MCP server allowlist/blocklist, schema |
| 12 | +adapters, trust tiers), developer-facing tooling (policy linter CLI, pre-commit hooks, GitHub |
| 13 | +Actions action), runtime reliability primitives (event bus, task outcomes, graceful degradation, |
| 14 | +budget policies), and 14 new tutorials. It also includes significant security hardening across the |
| 15 | +entire codebase and two PyPI package renames to avoid namespace collisions. |
| 16 | + |
| 17 | +## 🚀 What's New |
| 18 | + |
| 19 | +### Plugin Governance & MCP Server Controls |
| 20 | + |
| 21 | +- **MCP server allowlist/blocklist** — Enforces marketplace-level policies on which MCP servers |
| 22 | + plugins can use through `MCPServerPolicy` with allowlist/blocklist modes. Validates plugin |
| 23 | + manifests and rejects non-compliant plugins during registration (#425, #426, #434) |
| 24 | +- **Plugin trust tiers** — Classify plugins into trust levels (e.g., verified, community, |
| 25 | + untrusted) with tier-based policy enforcement (#434) |
| 26 | +- **Plugin schema adapters** — Auto-detects and adapts Copilot-style and Claude-style plugin |
| 27 | + manifest formats to the canonical `PluginManifest` schema, enabling multi-format plugin |
| 28 | + support with capability extraction (#424, #429, #433) |
| 29 | +- **Batch plugin evaluation** — Evaluate multiple plugins against governance policies in a single |
| 30 | + call for marketplace-scale validation (#429, #433) |
| 31 | +- **Reference integration example** — Complete example showing plugin marketplace governance |
| 32 | + integration end-to-end (#427, #435) |
| 33 | + |
| 34 | +### Developer Tooling |
| 35 | + |
| 36 | +- **Governance policy linter CLI** — New `agent-compliance lint-policy <path>` command validates |
| 37 | + YAML policy files for required fields, unknown operators/actions, deprecated names, and |
| 38 | + conflicting rules with JSON/text output options (#404, #432) |
| 39 | +- **Pre-commit hooks** — Two new hooks for local development: `validate-plugin-manifest` (checks |
| 40 | + plugin.json schema compliance) and `evaluate-plugin-policy` (evaluates manifests against |
| 41 | + governance policies before commit) (#428, #431) |
| 42 | +- **GitHub Actions action** — Composite action at `action/action.yml` wrapping governance |
| 43 | + verification commands (`governance-verify`, `marketplace-verify`, `policy-evaluate`, `all`) |
| 44 | + with configurable inputs, structured outputs, and support for plugin marketplace PR |
| 45 | + workflows (#423, #430) |
| 46 | +- **JSON schema validation** — Governance policy files are now validated against a formal JSON |
| 47 | + schema, catching structural errors before runtime (#305, #367) |
| 48 | + |
| 49 | +### Runtime Reliability & Observability |
| 50 | + |
| 51 | +- **Event bus** — Cross-gate publish/subscribe system (`GovernanceEventBus`) enabling loose |
| 52 | + coupling between governance gates (PolicyEvaluator, TrustGate, CircuitBreaker) with standard |
| 53 | + event types for policy violations, trust changes, circuit state, and budget overages |
| 54 | + (#398, #415) |
| 55 | +- **Task outcomes** — `TaskOutcomeRecorder` tracks agent task successes/failures with |
| 56 | + severity-based scoring, diminishing returns on success boosts, time-based score recovery, |
| 57 | + and per-agent trust state management (#396, #415) |
| 58 | +- **Diff policy** — Evaluate only the delta between previous and current policy state to reduce |
| 59 | + overhead on incremental policy updates (#395, #415) |
| 60 | +- **Sandbox provider** — Pluggable sandbox provider abstraction for swapping isolation backends |
| 61 | + (#394, #415) |
| 62 | +- **Graceful degradation** — `agent_os.compat` module provides no-op fallbacks |
| 63 | + (`NoOpPolicyEvaluator`, `NoOpGovernanceMiddleware`) allowing consumers to optionally depend |
| 64 | + on the toolkit without try/except boilerplate (#410, #414) |
| 65 | +- **Budget policies** — `BudgetPolicy` dataclass defines resource consumption limits (max tokens, |
| 66 | + tool calls, cost, duration) with `BudgetTracker` for monitoring usage and detecting overages |
| 67 | + with detailed violation reasons (#409, #414) |
| 68 | +- **Audit logger** — Structured audit logging for governance decisions with pluggable backends |
| 69 | + (#400, #414) |
| 70 | +- **Policy evaluation heatmap** — Visual heatmap added to the SRE dashboard showing policy |
| 71 | + evaluation patterns and hotspots (#309, #326) |
| 72 | +- **Compliance grading** — `compliance_grade()` method added to `GovernanceAttestation` for |
| 73 | + calculating compliance scores (#346) |
| 74 | + |
| 75 | +### Tutorials & Learning Paths |
| 76 | + |
| 77 | +- **14 new tutorials (07–20)** — Launch-ready tutorials covering all toolkit features including |
| 78 | + plugin governance, budget policies, event bus, graceful degradation, MCP server controls, |
| 79 | + and more |
| 80 | +- **Tutorials landing page** — New README with structured learning paths guiding users from |
| 81 | + beginner to advanced topics (#422) |
| 82 | + |
| 83 | +### CI/CD & ESRP |
| 84 | + |
| 85 | +- **PR review orchestrator** — Collapses multiple agent review comments into a single unified |
| 86 | + summary on pull requests (#345) |
| 87 | +- **Dependency confusion pre-commit hook** — Detects unregistered package names before commit, |
| 88 | + plus weekly CI audit job (#350) |
| 89 | +- **Markdown link checker** — CI workflow to catch broken links in documentation (#323) |
| 90 | +- **ESRP NuGet signing** — Updated NuGet signing config with Client ID and Key Vault |
| 91 | + integration (#359, #361, #363, #365) |
| 92 | + |
| 93 | +## ⚠️ Breaking Changes |
| 94 | + |
| 95 | +### PyPI Package Renames |
| 96 | + |
| 97 | +Two PyPI packages have been renamed to avoid namespace collisions: |
| 98 | + |
| 99 | +| Old Name | New Name | Reason | |
| 100 | +|----------|----------|--------| |
| 101 | +| `agent-runtime` | `agentmesh-runtime` | Name collision with AutoGen team's `agent-runtime` package (#444) | |
| 102 | +| `agent-marketplace` | `agentmesh-marketplace` | Consistent `agentmesh` namespace alignment (#439) | |
| 103 | + |
| 104 | +**Migration:** Update your `requirements.txt` or `pyproject.toml`: |
| 105 | + |
| 106 | +```diff |
| 107 | +- agent-runtime |
| 108 | ++ agentmesh-runtime |
| 109 | + |
| 110 | +- agent-marketplace |
| 111 | ++ agentmesh-marketplace |
| 112 | +``` |
| 113 | + |
| 114 | +## 🔒 Security |
| 115 | + |
| 116 | +- **Fork RCE hardening** — Hardened `pull_request_target` workflows against fork-based remote |
| 117 | + code execution [MSRC-111178] (#353) |
| 118 | +- **Dependency confusion** — Comprehensive remediation across the entire codebase: replaced all |
| 119 | + unregistered PyPI package names, added weekly audit CI, added pre-commit detection hook |
| 120 | + (#325, #328, #349, #350, #351, #352) |
| 121 | +- **MD5 → SHA-256 migration** — All cryptographic hash usage migrated from MD5 to SHA-256 |
| 122 | + (#349, #351) |
| 123 | +- **ESRP secrets** — Moved all ESRP configuration values to pipeline secrets (#370) |
| 124 | +- **Maintainer approval enforcement** — All external PRs now require maintainer approval (#392) |
| 125 | +- **SECURITY.md** — Added security policy files to all packages (#354) |
| 126 | +- **LangChain crypto hardening** — Hardened cryptographic fallback in LangChain integration (#354) |
| 127 | +- **24 security findings addressed** — Comprehensive sweep across codebase (#303) |
| 128 | +- **Agent sandbox escape hardening** — Strengthened isolation boundaries against escape |
| 129 | + vectors (#297) |
| 130 | +- **OWASP Agentic AI hardening** — Proactive hardening against OWASP Agentic AI Top 10 |
| 131 | + themes |
| 132 | +- **47 negative security tests** — Adversarial scenario test suite added |
| 133 | +- **101 additional tests** — CA security, MCP integration, and audit stub coverage |
| 134 | +- **OpenSSF Scorecard fixes** — Dangerous-workflow, signed-releases, and pinned-deps |
| 135 | + improvements (#356) |
| 136 | + |
| 137 | +## 🐛 Bug Fixes |
| 138 | + |
| 139 | +- Corrected license reference in AgentMesh README from Apache 2.0 to MIT (#436) |
| 140 | +- Hardcoded service connection name in ESRP pipelines (ADO compile-time requirement) (#421) |
| 141 | +- ESRP pipeline fixes for `each` directive syntax in Verify stages and `ESRP_CERT_IDENTIFIER` |
| 142 | + secret usage |
| 143 | +- Fixed .NET `GovernanceMetrics` test isolation — flush listener before baseline assertion (#417) |
| 144 | +- Fixed dependency confusion + pydantic dependency issues (#411, #412) |
| 145 | +- Followup cleanup for recently merged community PRs (#393) |
| 146 | +- Bumped `cryptography` package, migrated `PyPDF2` → `pypdf`, scoped workflow permissions (#355) |
| 147 | +- Filled community PR gaps — replaced bare excepts, `print` → `logging`, added `py.typed` |
| 148 | + markers, LICENSE fixes (#344) |
| 149 | +- Improved CLI error messages in `register` and `policy` commands (#314) |
| 150 | +- `SagaStep.MaxRetries` rename + behavioral fault injection + lint fix (#295) |
| 151 | +- Pre-announcement security hardening and demo improvements (#296) |
| 152 | +- Restored `read-all` at workflow level for Scorecard verification (#327) |
| 153 | +- Reverted unsafe merged PRs #357 and #362 (#391) |
| 154 | + |
| 155 | +## 📚 Documentation |
| 156 | + |
| 157 | +- Added copilot-instructions.md with PR review checklist (#413) |
| 158 | +- Standardized package README badges across all packages (#373) |
| 159 | +- Added README files to example directories and skill integrations (#371, #372, #390) |
| 160 | +- Added requirements files for example directories (#372) |
| 161 | +- Refreshed all design proposals — updated status, added 5 new proposals (#348) |
| 162 | +- Added inline comments to Helm chart `values.yaml` (#341) |
| 163 | +- Updated framework integration star counts to current values (#329) |
| 164 | +- Added comprehensive docstrings to `mcp_adapter.py` classes (#324) |
| 165 | +- Added testing guide for external testers and customers (#313) |
| 166 | +- Added integration author guide for contributors (#311) |
| 167 | + |
| 168 | +## 📦 Dependencies |
| 169 | + |
| 170 | +### GitHub Actions |
| 171 | + |
| 172 | +| Package | From | To | |
| 173 | +|---------|------|----| |
| 174 | +| `actions/attest-sbom` | 2.2.0 | 4.1.0 | |
| 175 | +| `actions/attest-build-provenance` | 2.4.0 | 4.1.0 | |
| 176 | +| `actions/github-script` | 7.0.1 | 8.0.0 | |
| 177 | +| `actions/setup-node` | 4.4.0 | 6.3.0 | |
| 178 | +| `actions/stale` | 9.1.0 | 10.2.0 | |
| 179 | +| `actions/upload-artifact` | 4.6.2 | 7.0.0 | |
| 180 | +| `anchore/sbom-action` | 0.23.1 | 0.24.0 | |
| 181 | +| `ossf/scorecard-action` | 2.4.0 | 2.4.3 | |
| 182 | +| `sigstore/gh-action-sigstore-python` | 3.0.0 | 3.2.0 | |
| 183 | + |
| 184 | +### npm Dev Dependencies |
| 185 | + |
| 186 | +- Bumped `eslint` (#387) |
| 187 | +- Bumped `typescript` (#385, #386) |
| 188 | +- Bumped `yaml` (#384) |
| 189 | +- Bumped `@typescript-eslint/eslint-plugin` (#381, #292) |
| 190 | +- Bumped `@typescript-eslint/parser` (#286, #288) |
| 191 | +- Bumped `@vitest/coverage-v8` (#289, #380) |
| 192 | +- Bumped `@types/node` (#283, #291) |
| 193 | + |
| 194 | +### Python |
| 195 | + |
| 196 | +- Bumped `cryptography` (#355) |
| 197 | +- Migrated `PyPDF2` → `pypdf` (#355) |
| 198 | + |
| 199 | +## 🧹 Internal |
| 200 | + |
| 201 | +- Removed unused imports with autoflake in a2a-protocol (#340) |
| 202 | +- Added pytest markers for slow and integration tests (#375) |
| 203 | +- Added 10 AI-powered GitHub Actions workflows (#294) |
| 204 | + |
| 205 | +## Packages |
| 206 | + |
| 207 | +### Python (PyPI) |
| 208 | + |
| 209 | +| Package | Version | Status | |
| 210 | +|---------|---------|--------| |
| 211 | +| `agent-os-kernel` | 2.3.0 | Community Preview | |
| 212 | +| `agentmesh-platform` | 2.3.0 | Community Preview | |
| 213 | +| `agent-hypervisor` | 2.3.0 | Community Preview | |
| 214 | +| `agentmesh-runtime` | 2.3.0 | Community Preview _(renamed from `agent-runtime`)_ | |
| 215 | +| `agentmesh-marketplace` | 2.3.0 | Community Preview _(renamed from `agent-marketplace`)_ | |
| 216 | +| `agent-sre` | 2.3.0 | Community Preview | |
| 217 | +| `agent-governance-toolkit` | 2.3.0 | Community Preview | |
| 218 | +| `agent-lightning` | 2.3.0 | Community Preview | |
| 219 | + |
| 220 | +### npm |
| 221 | + |
| 222 | +| Package | Version | Status | |
| 223 | +|---------|---------|--------| |
| 224 | +| `@microsoft/agentmesh-sdk` | 1.0.0 | Community Preview | |
| 225 | +| `@microsoft/agentmesh-mcp-proxy` | 1.0.0 | Community Preview | |
| 226 | +| `@microsoft/agentos-mcp-server` | 1.0.1 | Community Preview | |
| 227 | +| `@microsoft/agentmesh-copilot-governance` | 0.1.0 | Community Preview | |
| 228 | +| `@microsoft/agentmesh-mastra` | 0.1.0 | Community Preview | |
| 229 | +| `@microsoft/agentmesh-api` | 0.1.0 | Community Preview | |
| 230 | +| `@microsoft/agent-os-copilot-extension` | 1.0.0 | Community Preview | |
| 231 | + |
| 232 | +### NuGet |
| 233 | + |
| 234 | +| Package | Version | Status | |
| 235 | +|---------|---------|--------| |
| 236 | +| `Microsoft.AgentGovernance` | 2.3.0 | Community Preview | |
| 237 | + |
| 238 | +## Contributors |
| 239 | + |
| 240 | +- @imran-siddique |
| 241 | +- @dependabot |
| 242 | +- @matt-van-horn |
| 243 | +- @jhawpetoss6-collab |
| 244 | +- @Bob |
| 245 | +- @AuthorPrime |
| 246 | +- @Copilot |
| 247 | +- @parsa-faraji-alamouti |
| 248 | +- @umesh-pal |
| 249 | +- @xavier-garceau-aranda |
| 250 | +- @zeel-desai |
| 251 | +- @aryan |
| 252 | +- @sharath-k |
| 253 | +- @yuchengpersonal |
| 254 | + |
| 255 | +## What's Coming |
| 256 | + |
| 257 | +- Official Microsoft-signed releases via ESRP Release (pending onboarding approval) |
| 258 | +- PyPI package ownership transfer to `microsoft` account |
| 259 | +- npm `@microsoft` scope activation via ESRP |
| 260 | +- NuGet Authenticode + NuGet package signing |
| 261 | + |
| 262 | +## Full Changelog |
| 263 | + |
| 264 | +See [CHANGELOG.md](CHANGELOG.md) for the complete list of changes. |
| 265 | + |
| 266 | +**Full Changelog:** https://github.com/microsoft/agent-governance-toolkit/compare/v2.2.0...v2.3.0 |
| 267 | + |
| 268 | +## License |
| 269 | + |
| 270 | +[MIT](LICENSE) — © Microsoft Corporation |
0 commit comments