Skip to content
Agent Identity

IETF · 6 July 2026

OAuth Client ID Metadata Document

draft-ietf-oauth-client-id-metadata-document-02

A. Parecki, E. Smith

WG draftDraft — expect changeIdentityFoundationField guide

This is the OAuth WG's answer to 'my agent did not pre-register'. AAuth goes further and drops the AS-issued client_id altogether; CIMD is the evolutionary step inside OAuth.

At a glance

Problem
Dynamic Client Registration does not scale well for open-world clients (MCP clients, decentralized apps). Let the client_id be an HTTPS URL that the AS fetches for metadata.
Identity / authn / authz
Client identity without a registration handshake. The URL is the identifier; the JSON is the metadata.

Actors

  • Client
  • Authorization server

01

The gap for agents

DCR does not scale well for open-world clients (MCP clients, decentralized apps). CIMD lets the client_id be an HTTPS URL that the AS fetches for metadata. This is the OAuth WG's answer to 'my agent did not pre-register'. AAuth goes further and drops the AS-issued client_id; CIMD is the evolutionary step inside OAuth.

MCP 2026-07-28 prefers CIMD over DCR but still cites draft-00; the WG draft fetched 15 September 2026 remains draft-02 (expires 7 January 2027). Implement -02, not the MCP citation.

02

Actors and trust boundaries

The AS fetches a URL the client named. That is SSRF. HTTPS only, no userinfo, must contain a path, no fragment, simple string comparison (https://example.com/client and https://example.com:443/client are not equal). Document client_id MUST match the fetched URL. Shared secrets as client auth are prohibited; public-key methods such as private_key_jwt are allowed.

Localhost and ephemeral URLs are a poor fit — the draft says this works best for clients with a stable public web presence. Dev-loop agents may still need DCR or pre-registration (see the draft's §7 / §8.10 guidance).

03

Mechanics

Client uses its metadata URL as client_id. AS fetches JSON (200, JSON content type), checks client_id inside matches, uses redirect_uris, jwks, client_name, token_endpoint_auth_method, etc. AS advertises support in RFC 8414 metadata. MCP clients SHOULD check for that capability and MAY fall back to DCR.

client_id (HTTPS URL)from spec
Quoted: MUST equal the fetched document URL by simple string comparison. MUST have a path; SHOULD NOT be /.
token_endpoint_auth_methodfrom spec
Quoted direction: shared secrets prohibited; private_key_jwt etc. allowed. Other specs MAY require private_key_jwt.

04

Step-by-step flows

Flow 1

URL as client_id

  1. 1

    Publisher hosts https://agent.example/oauth-client.json with matching client_id, redirect_uris, jwks.

  2. 2

    Agent starts authorize with client_id=that URL and PKCE.

  3. 3

    AS fetches the document, validates match and TLS, caches per policy.

  4. 4

    User sees the name/icon from the document. Token request uses private_key_jwt (or other public-key method).

05

Identity vs authentication vs authorization

Client identity without a registration handshake. The URL is the identifier; the JSON is the metadata. User identity remains OIDC. API authorization remains the access token.

06

How it composes

07

What bites agent implementers

  • SSRF

    The AS is now an HTTP client of arbitrary URLs. Allow-lists, scheme checks, no link-local, size limits, cache carefully.

  • URL change = new client

    Simple string comparison. Rotating the path is a new identity; users re-consent.

  • MCP citation lag

    Implement draft-02 (or current datatracker), not the -00 cited in MCP 2026-07-28.

08

Stability — what you can ship

draft-ietf-oauth-client-id-metadata-document-02, expires 7 January 2027 (implies ~6 July 2026 publication), OAuth WG, not an RFC. Authors: A. Parecki, E. Smith. https://datatracker.ietf.org/doc/draft-ietf-oauth-client-id-metadata-document/. You can ship behind AS support; pin the draft.

Catalog claims (short form)

client_id (URL)
Must equal the fetched document URL by simple string comparison.

Implementer notes

WG document, not an RFC. MCP 2026-07-28 prefers CIMD over DCR (the MCP spec still cites draft-00; the WG draft in July 2026 was -02). AS must consider SSRF when fetching client URLs.

Relationship to others

Primary sources

  • Datatrackerhttps://datatracker.ietf.org/doc/draft-ietf-oauth-client-id-metadata-document/
  • HTML of draft-02https://www.ietf.org/archive/id/draft-ietf-oauth-client-id-metadata-document-02.html