MCP OAuth Compatibility & Hardening

August 21, 2026
Share on Bluesky

The July 6 changelog Upstream OAuth for MCP routes covered Pomerium acting as an OAuth client toward upstream MCP servers. This update is about the other leg of the proxy — Pomerium acting as the authorization server for the downstream clients (Claude Code, ChatGPT, MCP Inspector, and others) that connect to it. There are also a few compatibility and credential-hygiene fixes along the way.

Highlights:

  • OAuth Client ID Metadata Document (CIMD) support, inbound — Pomerium's MCP authorization server now accepts client identification from downstream clients via a Client ID Metadata Document, the lighter-weight registration path the MCP OAuth spec is converging on. (Not to be confused with the upstream DCR fallback shipped in July, which covers the opposite direction — Pomerium registering with upstream MCP servers.)

  • Configurable inbound Dynamic Client Registration in Pomerium Zero — inbound DCR (downstream clients registering with Pomerium itself) now ships behind a runtime flag, off by default in Pomerium core, and enabled by default for MCP routes in Zero, but there's a toggle in Zero cluster settings in the MCP section to turn it on/off per cluster.

  • Loopback redirect URIs are now RFC 8252-compliant — CLI clients like Claude Code that request a different loopback port than the one originally registered no longer fail MCP OAuth authorization; Pomerium ignores the port when matching localhost/loopback redirect URIs, per RFC 8252 §7.3.

  • Relaxed client_id metadata URL validation — client identifier URLs that include a query string, as ChatGPT's MCP connector sends, are no longer rejected with a 400.

See the MCP documentation for setup details.

Share: Share on Bluesky

Get our product updates delivered directly to your inbox

Revolutionize
Your Security

Embrace Seamless Resource Access, Robust Zero Trust Integration, and Streamlined Compliance with Our App.