PermDock
Standards

Standards watch list

Every specification PermDock follows, its maturity, why it matters for a permissions library, what PermDock does about it, and its draft posture.

Status: tracking

This page is the inventory behind the standards section. Each standards page covers one specification PermDock implements or that shapes a public API; this list also covers the ones it only follows. It is the one place to check whether a draft that changed last month affects an adapter.

How the list is maintained

  • Each row's maturity is checked at every release against the publishing body's index (the OpenID Foundation specifications index, the IETF datatracker, the OpenAPI Initiative, the MCP and A2A sites) and updated in the release pull request. Dates and maturity are copied from the body, never inferred.
  • A row stays when its specification gets a standards page; the page becomes its link.
  • A row with a concrete action keeps a pointer to the page that documents it.

Action vocabulary: implements (an adapter or core feature exists or is planned), 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).

Posture vocabulary for unfinished texts: build (PermDock implements the draft's current shape, pinned to a named revision written on the standards page and, for documents, into the output), name (PermDock reserves the 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). A row is built only when the capability is needed now, the draft is concrete enough for fixtures, and a stable twin can carry the same information for consumers that ignore the draft.

Maturity terms

TermBodyMeaning for PermDock
FinalOpenID FoundationStable; implement and, where a programme exists, certify
Implementer's draftOpenID FoundationStable enough to build against with small changes expected; implemented only when the feature is needed now
RFCIETFStable; referenced by number
RFC Editor queueIETFApproved; content final, number not yet assigned
WG draftIETFAdopted by a working group; designed against, but no wire format is fixed on it
Individual draftIETFNot adopted; tracking only
ReleasedOpenAPI Initiative, MCP, A2AA versioned specification is published
In developmentOpenAPI InitiativeOn a development branch; emitted only behind an experimental target with a build posture
Draft Community Group ReportW3CIncubation that may change without notice; built only with a pinned date
DevelopmentOpenTelemetrySemantic conventions whose names may change; copied names are pinned

The list

SpecBodyDate and maturityRelevancePermDock actionPosture
Authorization API 1.0 (AuthZEN)OpenID FoundationFinal, Jan 2026; certification levels Basic, Batch, Search, DiscoveryWire format between PEPs and PDPsImplements: the decision endpoint, permdock/authzen, permdock/pdpstable
Shared Signals Framework 1.0, CAEP 1.0, RISC 1.0OpenID FoundationFinal, Sep 2025Session revocation and credential-change eventsImplements: permdock/ssf receiver invalidating snapshotsstable
CAEP Interoperability Profile 1.0OpenID Foundation (Shared Signals WG)Implementer's draft, Jul 2026Which CAEP events and delivery a receiver must supportChecklist for the ssf adaptername
OpenID Connect Core 1.0, Discovery 1.0OpenID FoundationFinal (Core errata set 2, Dec 2023; ISO/IEC 26131:2024)ID token claims, subject identifier types, the Discovery documentImplements: discovery and accept in permdock/jwt; principal.issuer, principal.assurance, subject.sessionstable
OpenID Connect Back-Channel Logout 1.0OpenID FoundationFinallogout_token sent when the OP session endsImplements: a revocation input to permdock/ssf next to CAEP session-revokedstable
RFC 9470 OAuth 2.0 Step Up Authentication ChallengeIETF OAuth WGRFC, Sep 2023insufficient_user_authentication with acr_values and max_ageImplements: the HTTP rendering of an insufficient-user-authentication denial (OpenID Connect)stable
OpenID Federation 1.0OpenID FoundationFinal, Feb 2026Trust between parties without pairwise configurationTracking: trust between permdock/pdp and a remote PDPtrack
OpenID Connect Enterprise Extensions (session_expiry)OpenID FoundationDraft, Sep 2025When the IdP session endsConsumes: session_expiry as an upper bound on snapshot stalenessname
OpenID Provider CommandsOpenID FoundationDraft, Sep 2025IdP-initiated lifecycle commands (deprovision, revoke)Tracking: overlaps CAEP for invalidationtrack
IPSIE Common Requirements 1.0OpenID Foundation (IPSIE WG)Draft 00, Aug 2025Session Lifecycle SL1-SL3, Account Lifecycle AL1-AL3Checklist for provider adaptersname
IPSIE SL1 OpenID Connect ProfileOpenID Foundation (IPSIE WG)Draft 00, Apr 2025iss in responses, PKCE, RFC 8414, acr / amr / auth_time / session_expiry, DPoP SHOULDChecklist: which claims provider adapters exposename
IPSIE AL1 SCIM 2.0 ProfileOpenID Foundation (IPSIE WG)DraftRFC 7523 JWT bearer authentication and attribute requirements for SCIMChecklist for permdock/scim: verifier accepts the RFC 7523 bearer; attributes compared once the profile reaches implementer's draftname
OpenID4VP 1.0, OpenID4VCI 1.0OpenID FoundationFinal, Jul 2025 and Sep 2025Verifiable credential presentation and issuanceTracking: verified attributes as principal inputsstable
OpenID Connect for Identity Assurance 1.0 (verified_claims)OpenID FoundationFinal with errata, Jul 2026Claims carrying assurance level and evidenceImplements: verified_claims mapped into principal.assurance.verified by permdock/jwt (OpenID Connect)stable
OpenID Connect Ephemeral Subject IdentifierOpenID FoundationDraft, Jul 2026Per-transaction subject identifiersChecklist: audit events must not assume a stable principal.idname
OpenID Connect Key BindingOpenID FoundationDraft, Aug 2026Binding ID tokens to client keysTracking: permdock/jwt sender once stabletrack
Grant Management for OAuth 2.0OpenID Foundation (FAPI WG)Implementer's draftGrants as manageable consent objectsTracking: grant_id in audit, revoked grants as invalidationtrack
FAPI 2.0 Security ProfileOpenID Foundation (FAPI WG)FinalResource-server and cryptography requirementsImplements: permdock/jwt profile: 'fapi2'; x-permdock-securityProfilestable
RFC 9700 OAuth 2.0 Security Best Current PracticeIETF OAuth WGRFC, Jan 2025Baseline security for resource serversChecklist for permdock/jwt defaults and the threat modelstable
RFC 7515-7519 (JWS, JWE, JWK, JWA, JWT), RFC 8037IETF JOSE WGRFCs, May 2015 and Jan 2017Token, signature, key and algorithm formatsImplements: verification through TokenVerifier; JWS-signed snapshots, approval tokens and decision exports through TokenSignerstable
RFC 8725 JWT BCP and rfc8725bisIETF OAuth WGRFC; bis in the RFC Editor queue, Aug 2026Algorithm allow-lists, typ, kid, key confusionChecklist for permdock/jwt (JOSE)name
RFC 9864 Fully-Specified AlgorithmsIETF JOSE WGRFC, 2025Ed25519 and Ed448 as JWS alg; polymorphic EdDSA deprecatedImplements: Ed25519 in the allow-lists; permdock doctor warns on EdDSAstable
draft-ietf-jose-deprecate-none-rsa15IETF JOSE WGWG draft, 2026Deprecates none and RSA1_5Checklist: permdock/jwt already refuses bothname
RFC 9068 roles, groups, entitlements claimsIETF OAuth WGRFC, Oct 2021; claims registered at IANARole and group material on access tokens, SCIM encodingImplements: the default claim mapping into principal.roles and team membershipsstable
RFC 7643 / 7644 SCIM 2.0, RFC 9865 cursor paginationIETF SCIM WGRFCs, Sep 2015; RFC 9865, 2025User and Group provisioningImplements: permdock/scim writing a DirectoryStore, directoryMembershipSource, the PermDock roles extensionstable
OAuth AuthZEN Claims (draft-gazitt-oauth-authzen-claims)IETF (individual draft)Draft 00, 2026An authorization server obtaining roles / groups / entitlements from a PDP's Resource SearchTracking: permdock/authzen /search/resource as a claim sourcetrack
RFC 9396 Rich Authorization RequestsIETF OAuth WGRFCStructured authorization_detailsImplements: delegation.authorizationDetails, one type per permissionstable
OAuth 2.0 RAR Metadata and Error RemediationIETF OAuth WGDraft, Aug 2026RAR type metadata and structured remediationImplements: Decision.alternatives in the remediation shape (delegation)build (pinned: draft-ietf-oauth-rar-metadata-remediation, Aug 2026 revision)
OAuth Identity and Authorization Chaining Across DomainsIETF OAuth WGRFC Editor queue, Jul 2026Identity and authorization across trust domainsImplements: delegation.chain verificationname
Agent Delegation Chain (draft-asor-wimse-agent-delegation-chain); Credential Delegation Protocol (draft-sweeney-wimse-credential-delegation); OAuth for AI agents on behalf of a user (draft-oauth-ai-agents-on-behalf-of-user)IETF (individual drafts)Drafts, 2026Monotonic attenuation across multi-hop agent chains as RAR; composing RFC 8693, DPoP, RAR and CIBA; requested_actor and actor_tokenTracking: inputs to delegation.chain and the actor mapping (OAuth for agents)track
Transaction TokensIETF OAuth WGWG draft rev 11, Jul 2026Identity and authorization context through a call chain in one domainConsumes: snapshot id and decision id in azd, subject re-derived from sub_id and azd (delegation)name
Transaction Tokens for Agents; Cross-domain Transaction Tokens; Transaction Tokens BCPIETF (individual drafts)Drafts, May to Jul 2026Agent and cross-domain extensionsTracking with the transaction-token rowtrack
WIMSE architectureIETF WIMSE WGWG draft 08, Jul 2026Workload identity and context propagationChecklist: workloads as service principals (subject)name
GNAP (RFC 9635)IETFRFC, Oct 2024Successor negotiation protocol; access rights arrayConsumes: delegation.access next to authorizationDetails; no client (see GNAP below)stable (RFC); OpenAPI scheme: name
RFC 9767 GNAP Resource Server ConnectionsIETFRFC, 2025Token model with a JWT mapping, introspection with an access array, RS discoveryImplements: the access claim and subjectFromIntrospection in permdock/jwtstable
OAuth 2.1IETF OAuth WGDraftOAuth 2.0 consolidated, PKCE required, no implicit or password grantsChecklist: MCP servers are OAuth 2.1 resource servers; permdock/jwt defaults follow itname
RFC 9449 DPoP, RFC 8705 mTLSIETF OAuth WGRFCsSender-constrained tokensImplements: permdock/jwt sender: 'dpop' or 'mtls'stable
RFC 9728 Protected Resource MetadataIETF OAuth WGRFCDiscovery document a resource server publishesConsumes: required by MCP authorizationstable
RateLimit header fieldsIETFWG draft, -11, May 2026Tells a client how long to back off after an exhausted limit grantImplements: 429 with Retry-After, RateLimit and RateLimit-Policy in HTTP adaptersbuild (draft-ietf-httpapi-ratelimit-headers-11)
Web Bot Auth (RFC 9421, Signature-Agent)IETFDraftsVerified identity for automated HTTP clientsImplements: the verified signer becomes actor in HTTP adaptersbuild (draft-meunier-webbotauth-httpsig-protocol-02)
OpenAPI 3.2OpenAPI InitiativeReleased Sep 2025Device flow, oauth2MetadataUrl, deprecated schemes, URI-referenced schemesImplements: the default permdock openapi targetstable
OpenAPI 3.3OpenAPI InitiativeIn development (v3.3-dev is still the 3.2 text; Security Profiles in Discussion #5304)Security Profiles, security configuration updates, Standardized API FeaturesImplements: --target 3.3 emits the pinned draft with x-permdock-securityProfile as twin and the pin in x-permdock-catalog.draftsbuild (pinned: Discussion #5304 expanded design notes, Sep 2026)
OpenAPI Overlay 1.1OpenAPI InitiativeReleased Jan 2026Repeatable document transformationsImplements: permdock openapi --format overlaystable
Overlay 1.2OpenAPI InitiativeIn development (v1.2-dev text complete)Reusable actions (components.actions, $ref)Implements: --overlay 1.2 emits one reusable action per permission set; 1.1.0 stays the default (Overlay)build (pinned: v1.2-dev at edd4adea, Aug 2026)
Arazzo 1.1OpenAPI InitiativeReleased May 2026Multi-step API workflowsConsumes: the permissions a workflow needs, step by stepstable
AsyncAPI 3AsyncAPI InitiativeReleasedEvent-driven API descriptions; an Arazzo 1.1 source typeTracking: no emitter; if needed, the same Overlay engine pointed at an AsyncAPI documenttrack
OpenAPI registriesOpenAPI InitiativeLiving registriesExtension and namespace registrationImplements: register the x-permdock- namespacestable
A2A 1.0Linux Foundation1.0Agent Card securitySchemes and securityRequirements, signed cards, per-caller extended cardsImplements: permdock/a2astable
MCP authorizationModel Context ProtocolSpec 2026-07-28OAuth 2.1 resource servers, scopeChallenge step-up with SEP-2350 scope accumulation, Enterprise-Managed Authorization (ID-JAG via RFC 8693 and RFC 7523), Client ID Metadata Documents, RFC 9207 iss validationImplements: permdock/mcpstable
WebMCPW3C Web Machine Learning CGDraft Community Group Report; document.modelContext in Chrome 150Page-registered tools, tools Permissions-Policy, readOnlyHint, AbortSignal unregistrationImplements: permdock/webmcpbuild (pinned on the WebMCP adapter)
AGENTS.md, Agent Skills, llms.txtAgentic AI Foundation (Linux Foundation) for AGENTS.md and Skills; community for llms.txtGoverned since Dec 2025Instructions and skills formats agents already readImplements: shipped permdock and permdock-* skills, AGENTS.md, llms.txtstable
OWASP Top 10 for Agentic ApplicationsOWASP GenAI projectReleased Dec 2025ASI02 Tool Misuse, ASI03 Identity and Privilege Abuse; per-tool least-privilege profiles, human-in-the-loop gates, "Least Agency"Checklist: the OWASP agentic mappingstable
SPIFFE / SPIRECNCFGraduated; SVID formats stableWorkload identity documentsConsumes: a verified SVID as actor materialstable
OCSFLinux FoundationSchema 1.x releasedVendor-neutral event schema SIEMs ingestConsumes: toOcsf, a projection of decision events onto OCSF 1.3.0 Authorize Session (audit)stable
CloudEvents 1.0CNCFReleasedCommon event envelopeConsumes: the envelope for decision events leaving a DecisionSink (wire formats)stable
AG-UICopilotKit (open protocol)Released, evolvingAgent-to-UI event stream with human-in-the-loop eventsTracking: where approval-required surfaces in a chat UI (ecosystem index)track
TypeSpecMicrosoft (open source)1.0 GA, 2025Design-first language emitting OpenAPI 3.0 to 3.2Consumes: the Overlay applies to the emitted document (OpenAPI adapter)stable
CedarAWS (Apache-2.0); used by Amazon Verified Permissions and AgentCore PolicyLanguage 4.xPermit and forbid with when, deny-overrides-permitTracking: a compile target is considered and not scheduled (landscape)track
OpenFeatureCNCF (incubating)Specification 0.9.0, Jul 2026Vendor-neutral flag evaluation APIConsumes: how subject or context reads a flag (policies)track
Supabase capability matrix (supabase/sdk packages/capability-matrix)Supabasecapability-matrix-v1.12.0, Sep 2026; conformance-vector schema in review (PR #30)Three-segment capability ids shared by every Supabase client SDK; a { feature, cases } vector shapeConsumes: capability ids in the Supabase manifest's requires; supabaseClaimVectors follows the vector shape (Supabase)name
@supabase/server/mcpSupabaseAlpha, unreleased: PR #146 (1.7.0-beta.0), tracking @modelcontextprotocol/server 2.xgenerateTools builds MCP tools from the PostgREST OpenAPI description the caller sees, under the caller's role and RLSNothing built against the draft. Planned: a recipe that filters the generated tools through permdock/mcp once it ships (roadmap)track
Splinter lintsSupabaseCalVer releases; 2026.09.1, Sep 2026The advisor rules Supabase applies to every project's schemaChecklist: generated RLS raises no WARN or ERROR lint (Postgres RLS)stable
OpenTelemetry GenAI semantic conventionsOpenTelemetry (CNCF)Development; execute_tool and gen_ai.tool.* not yet stableSpan names and attributes for agent tool callsConsumes: permdock.decide nests under execute_tool and copies gen_ai.tool.name and gen_ai.tool.call.id (OpenTelemetry adapter)build (pinned: semantic conventions 1.37.0)
AP2, Visa Trusted Agent Protocol, Stripe Agentic Commerce ProtocolGoogle, Visa, StripePublished protocols, 2025-2026Signed payment intents for agentsTracking: adjacent context for signed-intent constraints, not a PermDock surfacetrack
EU AI Act traceability obligationsEuropean UnionRegulation in force; high-risk obligations may be delayedRecord-keeping for AI systemsTracking: a reason decision audit trails matter (audit)track

By PermDock concept

The same rows grouped by the part of PermDock they touch; every specification under a concept may constrain a change to it.

  • Subject (principal, actor, binding, memberships). OpenID Connect Core and Discovery define identity claims and key discovery; the JOSE RFCs, RFC 8725 and its bis, RFC 9864, FAPI 2.0, DPoP, mTLS, RFC 9700, OAuth 2.1 and IPSIE SL1 define what permdock/jwt accepts; RFC 9470 defines the assurance denial. RFC 9068 and SCIM define the claims that become roles and team memberships; the AuthZEN claims draft is how a PDP could supply them. WIMSE, SPIFFE and transaction tokens define workloads as principals; Web Bot Auth fills actor for plain HTTP. IDA verified_claims and verifiable credentials feed principal.assurance. The Ephemeral Subject Identifier draft means principal.id may not be stable across sessions.
  • Delegation (scopes, authorizationDetails, access, chain). RFC 9396 and GNAP define the structured formats; RAR Error Remediation defines how insufficient authorization is reported; Identity Chaining and the agent-delegation drafts define chain; Grant Management defines the consent object.
  • Decision. AuthZEN is the wire format; RAR Error Remediation and RFC 6750 shape how alternatives reaches OAuth clients; MCP, A2A and WebMCP shape how it reaches agents; the OWASP agentic list names the risks.
  • Snapshot freshness. SSF, CAEP, RISC and the CAEP Interoperability Profile deliver invalidation; Back-Channel Logout is a second input; OpenID Provider Commands overlaps; JOSE defines the signed-snapshot envelope; session_expiry and IPSIE SL1 bound snapshot lifetime.
  • Catalog and documents. OpenAPI 3.2 and 3.3, Overlay 1.1 and the pinned 1.2 draft, Arazzo and the registries define what permdock openapi and permdock collect emit; AsyncAPI is tracked; TypeSpec is a producer. RFC 9728 defines what an MCP server publishes about itself. AGENTS.md and Agent Skills define the shipped skills.
  • 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.
  • Audit events. OCSF, CloudEvents and the OpenTelemetry GenAI conventions; the EU AI Act is a reason to keep them.
  • Trust between services. Transaction tokens inside a domain, Identity Chaining across domains, WIMSE and SPIFFE for workload identity, OpenID Federation between permdock/pdp and a remote PDP.

GNAP

RFC 9635 defines one grant negotiation in place of OAuth's family of grant types. What a permissions library cares about is the access rights array (section 8): objects with a required type and optional actions, locations, datatypes, identifier and privileges, or plain reference strings like scopes. Fields inside one object form a cross-product; objects across the array are a union. The structure is deliberately analogous to RFC 9396 authorization_details, so PermDock's RAR support covers most of it, and the two bodies converging on type plus actions plus identifier validates the permission leaf shape.

PermDock consumes GNAP material and ships no client:

  • delegation.access accepts the array next to scopes and authorizationDetails. The three are unioned into one delegated set, then intersected with the principal's grants, so an access object never adds a grant, an unknown type contributes nothing, and a malformed object denies the permissions it names (delegation). type is the catalog's stable resource URI, actions are action keys, identifier is a resource-id constraint, reference strings match permission.scope, and locations, datatypes and privileges are recorded in audit only.
  • RFC 9767 defines how a resource server reads GNAP tokens. permdock/jwt maps an access claim in jwt-signed tokens onto delegation.access, and subjectFromIntrospection maps an introspection response (sub, iss, instance_id as actor.id, access, key as binding); an inactive answer is the anonymous subject.
  • GNAP interaction (redirect, user_code, app) and continuation are the same state as approval-required and a retried check with the approval token, one layer down.
  • In OpenAPI the posture is name: scheme.type: 'gnap' is reserved and emits nothing, and the community x-gnap extension is never written (OpenAPI 3.2 and 3.3).

Triggers for moving GNAP from tracking to planned: a major identity vendor shipping a GNAP authorization server, MCP or A2A adopting GNAP, or a v3.3-dev pull request defining a GNAP security scheme (funded work toward one is under way). Today the one production deployment is the Interledger Foundation's Open Payments API.

Review cadence

At each release the maintainer checks every row: has the maturity changed, has the body renamed or split the document, does the change touch existing behaviour. A maturity change alone updates the row. A change to existing behaviour opens an issue against the adapter page and, if a wire format or security default moves, updates the owning page's Why section and the rows listed in .agents/rules/change-checklist.mdc. Checklist rows are re-read against their adapter whenever it changes. Build rows are checked against their pin: 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.

How to propose a row

  1. Open an issue titled watch: <spec name> with the canonical URL, the current maturity and its date.
  2. State in one sentence which PermDock concept the specification touches.
  3. Propose the action (implements, consumes, checklist, tracking).
  4. For an unfinished text, propose the posture and, for build, the revision to pin and the stable twin.
  5. Say whether it changes a wire format or a security default; if it does, update the owning page's Why section and the rows listed in .agents/rules/change-checklist.mdc.

Rows are added by pull request against this page. A row that reaches "implements" gets its own standards page in the same pull request as the code.

Sources

Last updated on

On this page