Source Intelligence

DisclaimerUnofficial, and not affiliated with Anthropic. Nearly all of this is read straight out of what ships: npm bundles, captured prompts, published docs. Anthropic's own notes go in verbatim, marked as theirs. The rest is my reading, and every entry carries the strings behind it. If one looks wrong, vote it down and say why.

All of v2.1.224 Home All releases olderv2.1.223 v2.1.225newer

MCP OAuth checks the issuer a server echoes back, telemetry only for now

Under the hood
Useful3 Signal3
MCP

MCP OAuth now checks a server's echoed issuer, but only records mismatches rather than blocking.

Feature flag
tengu_mcp_issuer_strict_echo Not enough to say

Nothing here resolved what this flag was doing on this version, so nothing here should be read as on or off.

This account: no value returned · anonymous baseline: no value returned · compiled default in v2.1.224: on

These values were read against a different version of Claude Code, so treat them as the nearest reading available instead of one taken on this release.

Read once, for one account on one subscription tier, against v2.1.224. It isn't a statement about your account. What a flag value here can and cannot tell you

What

During MCP OAuth discovery Claude Code now validates itself that the issuer a server echoes back matches the URL that was asked for, at three points: the RFC 9728 chain, the legacy path fallback and refresh rediscovery. Controlled by tengu_mcp_issuer_strict_echo, whose in-source fallback is "observe": mismatches are recorded and the connection proceeds. Only a remote config value switches it to enforce, where a cross-origin echo fails the connection.

Details
  • The SDK's own checks are turned off (skipIssuerMetadataValidation, skipIssuerValidation) in favour of the in-house comparison, on SSE and HTTP transports.
  • Mismatches emit tengu_mcp_oauth_issuer_echo_mismatch with site, mode, outcome, an origin relation of same_origin, cross_origin or unparseable, the differing parts (scheme, host, port, path, query, fragment, userinfo, normalization_only) and hashed issuers.
  • In enforce mode the failure raises IssuerEchoCrossOriginError, surfaces as a new issuer_echo_denied outcome for token refresh and revoke, and is excluded from retry.
Evidence

tengu_mcp_issuer_strict_echo, Issuer echo cross-origin mismatch (RFC 8414 \xA73.3): expected

Strings lifted out of the shipped bundle, so the claim above can be checked against them.

See this entry in the whole of v2.1.224 →