Skip to content

docs(mcp): document CIMD, opt-in DCR, and the consent screen - #86

Merged
lakhansamani merged 2 commits into
mainfrom
feat/cimd-and-consent
Aug 13, 2026
Merged

docs(mcp): document CIMD, opt-in DCR, and the consent screen#86
lakhansamani merged 2 commits into
mainfrom
feat/cimd-and-consent

Conversation

@lakhansamani

@lakhansamani lakhansamani commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

Companion to authorizerdev/authorizer#758.

Documents both self-registration mechanisms — Client ID Metadata Documents (preferred) and RFC 7591 dynamic client registration (opt-in, for clients that predate CIMD) — and the consent screen that necessarily comes with both.

The correction this makes

These pages said Authorizer "deliberately does not implement RFC 7591" and "this is unlikely to change". That reasoning was about what should be preferred, and it still holds — but it was wrong about what shipping clients can do. Claude Code reads client_id_metadata_document_supported: true from our metadata, ignores it, and still refuses without a registration_endpoint. CIMD alone left the flagship client unable to connect.

The vendor arguments against DCR (Auth0, Keycloak, Anthropic) are kept, not deleted — they are the reason it ships off by default — and each now sits beside the mitigation that answers it:

Risk Mitigation
Mass registration / resource depletion Per-IP rate limiting + hard ceiling on registry rows
Unvetted, misconfigured clients Public clients only; client_credentials refused; redirect_uris https or loopback http
Impersonation of a known product Consent screen naming the client, leading with the verified redirect host (RFC 7591 §5)
Weak client authentication S256 PKCE required at /authorize; implicit refused
Standing management surface RFC 7592 not implemented

Pages changed

  • docs/core/mcp.md — compatibility matrix (self-registering clients now yes; Claude Code OAuth row now records the verified POST /oauth/register → 201), and "Why there is no /register endpoint""Self-registering clients: CIMD vs DCR" with copy-pasteable flags and a registration example
  • docs/core/oauth2-oidc.md — DCR removed from "not yet implemented"; discovery check now says registration_endpoint is absent unless the flag is set
  • docs/core/sso-guide.md — DCR no longer "on the roadmap"; scoped to public MCP-style clients, with confidential clients still admin-registered
  • specs/2026-08-10-mcp-http-transport.md — "Not planned" marked superseded, with why
  • specs/2026-08-11-cimd-and-consent.md — DCR moved out of "Out of scope"

Verification status, stated honestly

Registration is verified: Claude Code 2.1.226 walks discovery and registers (POST /oauth/register → 201, public client, loopback callback). The interactive browser leg is a TUI that cannot be driven headlessly, so it is handed to a human rather than claimed here — the same discipline the previous version of this table got wrong once already.

Adds the CIMD section: the document shape, that client_id must equal its own
URL, the SSRF-hardened fetch, and the consent screen that comes with it — plus
why consent applies to self-registered clients and not to ones an operator
registered.

Corrects the Claude Code row: the OAuth path works with
--enable-client-id-metadata-document, where before it was refused outright. The
row says plainly that the browser leg has not been verified end to end here,
because the previous version of this table overstated exactly that.
@netlify

netlify Bot commented Aug 11, 2026

Copy link
Copy Markdown

Deploy Preview for authorizerdev-docs ready!

Name Link
🔨 Latest commit b583138
🔍 Latest deploy log https://app.netlify.com/projects/authorizerdev-docs/deploys/6a7cd0098cfd630008f3d79b
😎 Deploy Preview https://deploy-preview-86--authorizerdev-docs.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.
🤖 Make changes Run an agent on this branch

To edit notification comments on pull requests, go to your Netlify project configuration.

The docs said Authorizer "deliberately does not implement RFC 7591" and
that self-registering clients could not connect. Both shipped in 2.4.0:
CIMD as the preferred mechanism, DCR behind
--enable-dynamic-client-registration for clients that predate it.

The vendor arguments collected against DCR still stand as reasons to keep
it OFF by default, and they are kept rather than deleted - with the
mitigations answering each one. What changed is the premise: the
reasoning was about what should be preferred, not about what shipping
clients can do. Claude Code reads client_id_metadata_document_supported
and still refuses without a registration_endpoint.

Updates the compatibility matrix (self-registering clients now "yes",
Claude Code OAuth now verified through registration), replaces "Why there
is no /register endpoint" with "Self-registering clients: CIMD vs DCR",
and corrects the OIDC, SSO and spec pages that listed DCR as unimplemented.
@lakhansamani lakhansamani changed the title docs(mcp): document CIMD and the consent screen docs(mcp): document CIMD, opt-in DCR, and the consent screen Aug 12, 2026
@lakhansamani
lakhansamani merged commit 95bba72 into main Aug 13, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant