Standards watch list
Every specification PermDock follows, its maturity as of September 2026, why it matters for a permissions library, and what PermDock does about it in which phase.
Status: tracking Phase: 1
This page is the inventory behind the standards section. Each standards page covers one specification PermDock implements or targets; this list also covers the ones it only follows. It is the single place to check whether a draft that changed last month affects a PermDock adapter.
How the list is maintained
- The list is reviewed at every release. Each row's "Date and maturity" is checked against the publishing body's index (the OpenID Foundation specifications index, the IETF datatracker, the OpenAPI Initiative specification site, the MCP and A2A specification sites) and updated in the same pull request as the release changeset.
- A row whose "PermDock action" is a concrete change to an adapter, the core or the CLI stays here until that change ships, then keeps a short pointer to the page that documents it.
- A specification gets its own page under
standards/when PermDock implements it, or when it shapes a public API even before code exists (as GNAP and FAPI 2.0 do). The row stays; the page becomes its link. - Rows never disappear silently. A specification PermDock stops following moves to "Removed rows" with the reason and the release in which it was removed.
- Dates and maturity levels are copied from the publishing body, never inferred. A row without a date means the source index did not give one at the last review.
Status vocabulary for the "PermDock action" column: implements (an adapter or core feature exists or is planned with a phase), consumes (PermDock reads what the spec produces, without a dedicated adapter), checklist (the spec constrains how an adapter is written), tracking (followed, no code planned).
Vocabulary for the "Posture" column, which says what PermDock may do with an unfinished text (ADR 0025): build (PermDock implements the draft's current shape, pinned to a named revision that is written on the standards page and, for documents, into the output; the row names the pin), name (PermDock reserves the public identifiers the specification will need so adopting it later renames nothing, and emits or consumes nothing from the draft), track (followed, no identifier depends on it), stable (the text is Final, an RFC or Released; the action column alone applies). A row is built only when PermDock needs the capability in the same phase, the draft is concrete enough to write fixtures against, and a stable twin can carry the same information for consumers that ignore the draft.
Reading the table
The "Date and maturity" column uses each body's own vocabulary, which is not interchangeable:
| Term | Body | Meaning for PermDock |
|---|---|---|
| Final | OpenID Foundation | Stable; PermDock may implement and, where a programme exists, certify against it |
| Implementer's draft | OpenID Foundation | Stable enough to build against with the expectation of small changes; PermDock implements only when the feature is needed in the same phase |
| RFC | IETF | Stable; referenced by number |
| RFC Editor queue | IETF | Approved by the IESG and awaiting publication; content is final, the RFC number is not yet assigned |
| WG draft | IETF | Adopted by a working group; field names may still change, so PermDock designs against it but does not fix wire formats on it |
| Individual draft | IETF | Not yet adopted by a working group; tracking only |
| Released | OpenAPI Initiative, MCP, A2A | A versioned specification is published; PermDock may emit or consume it |
| In development | OpenAPI Initiative | On a development branch with an open milestone; emitted only behind an experimental target and only when the row's posture is build |
| Draft Community Group Report | W3C | An incubation document that may change without notice; PermDock builds against it only with a pinned date |
| Development | OpenTelemetry | Semantic conventions whose names may still change; PermDock pins the names it copies |
The "Phase" column is the first phase in which PermDock acts on the row, following the same rule as the Phase line on every standards page. Adapter phases are those of the adapter matrix. A row whose action is tracking has no phase and says so. The "Posture" column applies the vocabulary above; the pin named in a build row is the revision PermDock's output and fixtures follow until a maintainer bumps it.
The list
| Spec | Body | Date and maturity | Relevance | PermDock action | Phase | Posture |
|---|---|---|---|---|---|---|
| Authorization API 1.0 (AuthZEN) | OpenID Foundation | Final, Jan 2026 | Wire format between PEPs and PDPs | Implements: the decision endpoint (1), permdock/authzen (2), permdock/pdp (4) | 1 | stable |
| Shared Signals Framework 1.0, CAEP 1.0, RISC 1.0 | OpenID Foundation | Final, Sept 2025 (approved 2 Sept 2025) | Session revocation and credential-change events | Implements: permdock/ssf receiver invalidating snapshots | 3 | stable |
| CAEP Interoperability Profile 1.0 | OpenID Foundation (Shared Signals WG) | Implementer's draft, Jul 2026 | Which CAEP events and delivery a receiver must support to interoperate | Checklist for the ssf adapter | 3 | name |
| OpenID Federation 1.0 | OpenID Foundation | Final, Feb 2026 | Trust establishment between parties without pairwise configuration | Tracking: candidate for establishing trust between a remote PDP and PEPs in permdock/pdp | 4 | track |
OpenID Connect Enterprise Extensions (session_expiry) | OpenID Foundation | Draft, Sep 2025 | ID token claim stating when the IdP session ends | Consumes: session_expiry as an upper bound on snapshot staleness for provider adapters | 4 | name |
| OpenID Provider Commands | OpenID Foundation | Draft, Sep 2025 | IdP-initiated lifecycle commands to relying parties (deprovision, revoke) | Tracking: overlap with CAEP for snapshot invalidation | tracking | track |
| IPSIE Common Requirements 1.0 | OpenID Foundation (IPSIE WG) | Draft 00, Aug 2025 | Enterprise interoperability levels: Session Lifecycle SL1-SL3, Account Lifecycle AL1-AL3 | Checklist for provider adapters (supabase, better-auth, clerk, convex) | 3 | name |
| IPSIE SL1 OpenID Connect Profile | OpenID Foundation (IPSIE WG) | Draft 00, Apr 2025 | iss in responses, PKCE, RFC 8414 metadata, acr / amr / auth_time / session_expiry, re-authentication, DPoP SHOULD | Checklist: which token claims provider adapters expose to the principal | 3 | name |
| IPSIE AL1 SCIM 2.0 Profile | OpenID Foundation (IPSIE WG) | Draft | RFC 7523 JWT profile for SCIM authentication | Tracking: relevant only if PermDock reads role assignments from SCIM; the open-source path is the auth layer or your own table, a Cloud SCIM receiver is considered and not scheduled (authentication single sign-on) | tracking | track |
| OpenID4VP 1.0, OpenID4VCI 1.0 | OpenID Foundation | Final, Jul 2025 and Sep 2025 | Verifiable credential presentation and issuance | Tracking: verified attributes as inputs to principal fields | tracking | stable |
OpenID Connect for Identity Assurance 1.0 (verified_claims) | OpenID Foundation | Final with errata, Jul 2026 | Claims carrying assurance level and evidence | Consumes: assurance-level conditions on principal.assurance in provider adapters | 4 | stable |
| OpenID Connect Ephemeral Subject Identifier | OpenID Foundation | Draft, Jul 2026 | Per-transaction subject identifiers | Checklist: audit events must not assume a stable principal.id across sessions | tracking | name |
| OpenID Connect Key Binding | OpenID Foundation | Draft, Aug 2026 | Binding ID tokens to client keys | Tracking: relevant to permdock/jwt sender once stable | tracking | track |
| Grant Management for OAuth 2.0 | OpenID Foundation (FAPI WG) | Implementer's draft | Grants as manageable consent objects | Tracking: grant_id in audit, revoked grants as invalidation; see FAPI 2.0 | tracking | track |
| FAPI 2.0 Security Profile | OpenID Foundation (FAPI WG) | Final | Resource-server requirements 5.3.4 and cryptography 5.4.1 | Implements: permdock/jwt profile: 'fapi2'; x-permdock-securityProfile in permdock openapi | 1 | stable |
| RFC 9700 OAuth 2.0 Security Best Current Practice | IETF OAuth WG | RFC, Jan 2025 | Baseline security for OAuth resource servers | Checklist for permdock/jwt defaults and the threat model | 1 | stable |
| RFC 8725 JWT Best Current Practices and rfc8725bis | IETF OAuth WG | RFC; bis in the RFC Editor queue, Aug 2026 | Algorithm allow-lists, typ, kid handling, key confusion | Checklist for permdock/jwt; the bis replaces it when published | 1 | name |
RFC 9068 JWT access tokens: roles, groups, entitlements claims | IETF OAuth WG | RFC, Oct 2021; claims registered at IANA | Registered claim names and SCIM (RFC 7643) encoding for role and group material on access tokens | Implements: the default claim mapping in permdock/jwt into principal.roles and team memberships (tenancy) | 1 | stable |
| RFC 7643 / RFC 7644 SCIM 2.0 Core Schema and Protocol | IETF SCIM WG | RFCs, Sep 2015; RFC 9865 cursor pagination, 2025 | Group resource shape (id, displayName, members[].value); the encoding RFC 9068 borrows | Checklist: team ids are SCIM group ids, never display names; no tenant attribute exists, so tenancy stays a claim mapping | 1 | stable |
| OAuth AuthZEN Claims (draft-gazitt-oauth-authzen-claims) | IETF (individual draft) | Draft 00, 2026 | Binding roles, groups, entitlements claims to AuthZEN Resource Search so an authorization server obtains them from a PDP | Tracking: permdock/authzen /search/resource as a claim source once adopted (JWT authorization claims) | tracking | track |
| RFC 9396 Rich Authorization Requests | IETF OAuth WG | RFC | Structured authorization_details instead of flat scopes | Implements: delegation.authorizationDetails, one type per permission | 1 | stable |
| OAuth 2.0 RAR Metadata and Error Remediation | IETF OAuth WG | Draft, Aug 2026 | Metadata for RAR types and structured remediation on insufficient authorization | Implements: Decision.alternatives rendered in the remediation shape for step-up; see delegation | 2 | build (pinned: draft-ietf-oauth-rar-metadata-remediation, Aug 2026 revision) |
| OAuth Identity and Authorization Chaining Across Domains | IETF OAuth WG | RFC Editor queue, Jul 2026 | Carrying identity and authorization across trust domains | Implements: delegation.chain verification | 4 | name |
| Transaction Tokens | IETF OAuth WG | WG draft rev 11, Jul 2026 | Propagating identity and authorization context through a call chain inside a trust domain | Consumes: snapshot id and decision id in azd, subject re-derived from sub_id and azd; see delegation | 4 | name |
| Transaction Tokens for Agents; Cross-domain Transaction Tokens; Transaction Tokens BCP | IETF (individual drafts) | Drafts, May to Jul 2026 | Agent context and cross-domain extensions of transaction tokens | Tracking: follow with the transaction-token row | tracking | track |
| WIMSE architecture | IETF WIMSE WG | WG draft 08, Jul 2026 | Workload identity, identity proxies, context propagation | Checklist: workloads as service principals in the subject model | 1 | name |
| GNAP (RFC 9635) | IETF | RFC | Successor negotiation protocol; access rights array | Consumes: delegation.access next to authorizationDetails; no client | 4 | stable (RFC); OpenAPI scheme: name |
| OAuth 2.1 | IETF OAuth WG | Draft | Consolidated OAuth 2.0 with PKCE and without implicit and password grants | Checklist: MCP servers are OAuth 2.1 resource servers; permdock/jwt defaults follow it | 1 | name |
| RFC 9449 DPoP, RFC 8705 mTLS | IETF OAuth WG | RFCs | Sender-constrained tokens (cnf.jkt, cnf.x5t#S256) | Implements: permdock/jwt sender: 'dpop' or 'mtls'; the verified binding is recorded on the subject | 1 | stable |
| RFC 9728 Protected Resource Metadata | IETF OAuth WG | RFC | Discovery document a resource server publishes | Consumes: required by MCP authorization; permdock/mcp reads its scopes | 2 | stable |
| Web Bot Auth (RFC 9421 HTTP Message Signatures, Signature-Agent) | IETF | Drafts | Verified identity for automated HTTP clients | Implements: verified signer becomes actor in HTTP adapters | 4 | build (pinned per draft revision on the Web Bot Auth page) |
| OpenAPI 3.3 | OpenAPI Initiative | In development (v3.3-dev is still the 3.2 text; Security Profiles designed in Discussion #5304) | Security Profiles (type: profile, securityProfileRequirements), security configuration updates, Standardized API Features | Implements: --target 3.3 emits the pinned Security Profile draft with x-permdock-securityProfile as twin and the pin in x-permdock-catalog.drafts; see ADR 0025 | 2 | build (pinned: Discussion #5304 expanded design notes, Sep 2026) |
| OpenAPI Overlay 1.1 | OpenAPI Initiative | Released Jan 2026 | Repeatable transformations of OpenAPI documents (update, remove, copy actions) | Implements: permdock openapi applies its security additions as an Overlay; see ADR 0019 | 2 | stable |
| Arazzo 1.1 | OpenAPI Initiative | Released May 2026 | Multi-step API workflows over OpenAPI and AsyncAPI sources | Consumes: the permissions a workflow needs, step by step; see the Arazzo page | 2 | stable |
| Overlay 1.2 | OpenAPI Initiative | In development (v1.2-dev text complete, release date TBD) | Reusable actions: components.actions and $ref references in actions; no targetFormat in the current text | Implements: permdock openapi emit --format overlay --overlay 1.2 emits the pinned draft with one reusable action per permission set; 1.1.0 stays the default until the appliers accept 1.2 (Overlay, ADR 0025) | 2 | build (pinned: v1.2-dev at edd4adea, Aug 2026) |
| AsyncAPI 3 | AsyncAPI Initiative | Released | Event-driven API descriptions; Arazzo 1.1 source type | Tracking: no emitter. If needed, the same Overlay engine pointed at an AsyncAPI document (Overlay targets are JSONPath, not format-bound), not a new adapter (Arazzo) | tracking | track |
| OpenAPI registries | OpenAPI Initiative | Living registries | Extension and namespace registration | Implements: register the x-permdock- namespace | 2 | stable |
| A2A 1.0 | Linux Foundation | 1.0 | Agent Card security schemes and requirements | Implements: permdock/a2a | 2 | stable |
| MCP authorization | Model Context Protocol | Spec 2026-07-28 | OAuth 2.1 resource servers, scope challenges, Enterprise-Managed Authorization | Implements: permdock/mcp | 2 | stable |
| SPIFFE / SPIRE | CNCF | Graduated project; SVID formats stable | Workload identity documents (X.509-SVID, JWT-SVID) for service-to-service calls | Consumes: a verified SVID as actor material for workload callers, next to the WIMSE row; see subject | 4 | stable |
| OCSF (Open Cybersecurity Schema Framework) | Linux Foundation | Schema 1.x released | Vendor-neutral event schema SIEMs ingest; has authentication and authorization event classes | Consumes: a documented projection of PermDock decision events onto the OCSF authorization class for DecisionSink implementations; see audit and observability | 3 | stable |
| CloudEvents 1.0 | CNCF | Released | Common envelope for event data | Consumes: the envelope for decision events leaving a DecisionSink over HTTP or a queue; see wire formats | 3 | stable |
| AG-UI | CopilotKit (open protocol) | Released, evolving | Event stream between an agent backend and a UI, including tool-call and human-in-the-loop events | Tracking: where an approval-required decision surfaces in a chat UI; see agent frameworks | tracking | track |
| TypeSpec | Microsoft (open source) | 1.0 GA, 2025; @typespec/openapi3 emits 3.0 to 3.2 | Design-first API language whose emitter output is an OpenAPI description | Consumes: the Overlay applies to the emitted document, never to .tsp source; see OpenAPI ecosystem | 2 | stable |
| Cedar | AWS (Apache-2.0); used by Amazon Verified Permissions and Bedrock AgentCore Policy | Language 4.x; @cedar-policy/cedar-wasm on npm | Permit and forbid policies with when conditions and deny-overrides-permit combining, the same rule as PermDock's | Tracking: a compile target for portable conditions is considered and not scheduled; see commercial landscape and comparison | tracking | track |
| OpenFeature | CNCF (incubating) | Specification 0.9.0, Jul 2026; JavaScript SDK stable | Vendor-neutral feature-flag evaluation API | Consumes: the recommended way a subject or context function reads a flag before selecting roles; no flag SDK gets an adapter; see policies | tracking | track |
| OpenTelemetry GenAI semantic conventions | OpenTelemetry (CNCF) | Development status; execute_tool span and gen_ai.tool.* attributes not yet stable | Span names and attributes for model and tool calls in agents | Consumes: permdock.decide nests under execute_tool and copies gen_ai.tool.name and gen_ai.tool.call.id; attribute names pinned until stable; see OpenTelemetry adapter | 2 | build (pinned: semconv release recorded on the OpenTelemetry adapter page) |
By PermDock concept
The same rows, grouped by the part of PermDock they touch. This is the view to use when changing one of these concepts: every specification listed under it may constrain the change.
- Subject (
principal,actor,binding,memberships). FAPI 2.0, DPoP and mTLS, RFC 8725 and rfc8725bis, RFC 9700, OAuth 2.1 and the IPSIE SL1 profile define whatpermdock/jwtmay accept and which claims reach the principal. RFC 9068 and SCIM define theroles,groupsandentitlementsclaims that become global roles and team memberships, and the AuthZEN claims draft is how a PDP could supply them. WIMSE and the transaction-token drafts define workloads as principals. Web Bot Auth fillsactorfor plain HTTP. IDAverified_claimsand the verifiable-credential specifications are the candidate sources forprincipal.assurance. The Ephemeral Subject Identifier draft is a reminder thatprincipal.idmay not be stable across sessions. - Delegation (
scopes,authorizationDetails,access,chain). RFC 9396 and GNAP define the two structured formats; RAR Metadata and Error Remediation defines how insufficient authorization is reported back; Identity and Authorization Chaining defineschain; Grant Management defines the consent object the delegation came from. - Decision (
granted,denied,approval-required,alternatives). AuthZEN is the wire format; RAR Error Remediation and RFC 6750 (through FAPI 2.0) shape howalternativesis rendered to OAuth clients; MCP and A2A shape how it is rendered to agents. - Snapshot freshness. SSF, CAEP, RISC and the CAEP Interoperability Profile deliver invalidation events; OpenID Provider Commands is the overlapping alternative;
session_expiryfrom the Enterprise Extensions and the IPSIE SL1 profile bound how long a snapshot may live. - Catalog and documents. OpenAPI 3.2 and 3.3, Overlay 1.1 (and the pinned 1.2 draft behind
--overlay 1.2), Arazzo and the registries define whatpermdock openapiandpermdock collectemit and howx-permdock-extensions are registered; AsyncAPI is tracked as a format a later Overlay revision might target; TypeSpec is a producer whose output the Overlay applies to. RFC 9728 defines the metadata an MCP server publishes about itself. - Policy inputs. OpenFeature defines how a flag is read before it selects a role; Cedar is the one external policy language whose combining rule matches PermDock's and is therefore a possible compile target.
- Audit events. OCSF defines the class a
DecisionSinkprojects decision events onto for SIEMs; CloudEvents defines the envelope when those events leave the process; the OpenTelemetry GenAI conventions define the tool span a decision nests under. - Trust between services. Transaction tokens carry context inside a domain; Identity Chaining carries it across domains; WIMSE and SPIFFE define the workload identities that become
actor; OpenID Federation is the candidate for establishing trust betweenpermdock/pdpand a remote PDP without pairwise configuration.
Review cadence
Each release the maintainer running the release checks, per row: has the maturity changed (draft to implementer's draft, RFC Editor queue to RFC, in development to released); has the publishing body renamed or split the document; does the change touch a PermDock action that has already shipped. A maturity change alone updates the row. A change to a shipped behaviour opens an issue against the adapter page and, if a wire format or security default moves, a decision record. Rows whose action is "checklist" are re-read against the adapter they constrain at the release that ships that adapter. Rows whose posture is "build" are checked against their pin: if the draft moved, the maintainer either bumps the pin (standards page, output, fixtures, changeset) or records why the old revision is kept; a build row whose text reaches Final, RFC or Released loses its pin and becomes stable in the release that adopts the final shape.
How to propose a row
- Open an issue titled
watch: <spec name>with the canonical URL from the publishing body, the current maturity (final, implementer's draft, RFC, RFC Editor queue, working-group draft, individual draft, in development) and its date. - State the relevance in one sentence: which PermDock concept (subject, delegation, decision, snapshot, catalog, adapter) the specification touches.
- Propose the action using the vocabulary above (implements, consumes, checklist, tracking) and, for anything other than tracking, the phase from the roadmap in which it lands.
- If the text is unfinished, propose the posture (build, name, track) and, for build, the revision to pin and the stable twin that carries the same information.
- If the specification changes a wire format or a security default, say so; that row also needs a decision record and the updates listed in
AGENTS.md.
Rows are added by pull request against this page only. A row that reaches "implements" gets its own standards page in the same pull request as the code.
Removed rows
None yet. When a row is removed it is listed here with the release, the reason (superseded, abandoned by its body, out of scope) and the row that replaces it if any.
A removed row's standards page, if one existed, is kept and marked superseded rather than deleted, following the same append-only rule as decision records.
Sources
- OpenID Foundation specifications index and the modification-ordered listing for OpenID dates and maturity.
- IPSIE Working Group specifications, the SL1 OpenID Connect Profile, the AL1 SCIM Profile and IPSIE Common Requirements.
- FAPI 2.0 Security Profile.
- RFC 9068, RFC 7643, RFC 7644, the IANA JWT claims registry and draft-gazitt-oauth-authzen-claims-00.
- Transaction Tokens, WIMSE architecture and RFC 9635 on the IETF datatracker.
- OpenAPI Specification milestones, Discussion #5304 for Security Profiles, Overlay 1.1.0, Arazzo 1.1.0 and the OpenAPI registries.
- SPIFFE, OCSF schema, CloudEvents and AG-UI.
- Other RFCs and drafts are referenced by number or name.
Related
- Standards: the pages for everything PermDock implements.
- Roadmap: the phases the last column refers to.
- Adapters: adapter phases.
- Threat model and delegation: where the checklist rows are applied.
Agent docs standards
AGENTS.md, Agent Skills and llms.txt as the formats coding agents read, and what PermDock ships in each so an agent can wire and audit permissions without reading source.
Threat model
The assets PermDock protects, the trust boundaries it sits on, the invariants every implementation must hold, and a table of threats with their mitigations.