v0.5.0 — one engine, every surface: AuthZEN + MCP reach parity
Ten days, twenty-two changelog entries. v0.2.0 governed spend; v0.5.0 governs the fleet — and proves it.
Highlights
- One engine, every surface. Sanction's core guarantee — same request, same policy, same state, same decision — now holds across the native API, the OpenID AuthZEN 1.0 PDP, and MCP. Frozen wallets, cost-per-outcome ceilings, and all three token-budget horizons enforce identically everywhere, pinned by a cross-surface parity test suite.
- Spend answers to outcomes. Your systems attest results (
POST /v1/outcomes— an enrollment, a booking); a wallet with acost_per_outcomeceiling escalates every further charge once its windowed ratio crosses the line. Around it, the two controls a CFO reaches for: wallet freeze (one call pauses a subtree across every surface, deleting nothing) and atomic budget reallocation between sibling pools. - Decisions are evidence. Every decision persists the policy revision and exact engine context it evaluated;
GET /authorize/{id}/evidencereplays it and reports whether the outcome reproduces. Every denial answers four questions — what happened, why, what changes the answer, where's the proof — with a signed appeal path on hard budget denials. - What-if before you commit.
POST /policy/simulatereplays your real history under a candidate policy — as-recorded or sequentially, where an early denial frees budget downstream — and policy packs ship with a 30-day simulated preview before one-call install. - Seats you can hand around. Agents became seats: holders, expiries that fail closed on both auth planes, rotation that moves the person while history stays, batch creation across a fleet — with per-seat monthly token budgets and pooled per-department daily caps enforced at the gateway.
- Approvals that find you. Escalations land in Slack natively; human approvals mint single-use, TTL'd grants; the loop speaks AuthZEN's AARP profile end-to-end.
- The audit plane. One unified feed for decisions, token usage, and secret access (CSV included), day-bucketed reporting over any range, a Monday digest, and DB-level tenant isolation (Postgres RLS) underneath it all.
Also in this release
- TypeScript SDK (
@sanction/sdk) with framework adapters for the Vercel AI SDK, plus runnable LangChain and Bedrock Action Group guides. - Gateway metering extended to Perplexity; provision authorization (
allocate) joins spend and tool governance. sanction-mcp0.4.0: outcome logging, escalation polling viasanction_check_authorization, eight tools total —npx sanction-mcp.
Next up, already on main: tamper-evident audit exports — signed, hash-chained decision history any auditor can verify offline.