{"version":"2.1.232","anchor":"an-mcp-server-that-stalls-during-version-negotiation-now-fal","canonical_anchor":"an-mcp-server-that-stalls-during-version-negotiation-now-fal","heading":"An MCP server that stalls during version negotiation now falls back instead of erroring","tier":"notice","area":"MCP","scope":null,"heads_up":null,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.232\/e\/an-mcp-server-that-stalls-during-version-negotiation-now-fal","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.232","markdown":"### An MCP server that stalls during version negotiation now falls back instead of erroring\n\nAn MCP server that stalls on the version probe is retried as legacy instead of erroring out.\n\n**What**\n\nIf the probe Claude Code sends to work out an MCP server's protocol version times out, the connection is retried with the pinned legacy protocol inside the remaining time budget rather than surfacing as a connection error.\n\n**Details**\n\n- The timeout is tagged `probe_timeout` (distinct from the existing `probe_failed`) in the disconnect cause, and logged as \"version negotiation probe timed out on the ... transport\" followed by \"reconnecting pinned legacy within the remaining budget\".\n- If the pinned-legacy retry then fails with a typed non-auth, non-timeout error, the original timeout classification is preserved so the connect stays eligible for the normal retry ladder.\n- Previously a probe timeout on http or sse transports simply failed the connection.\n\n**Evidence**\n\n`probe_timeout`, `preserving the timeout classification so the connect stays ladder-retryable`\n\n- Area: MCP\n- Tier: You'll notice\n- Useful: 3\/5\n- Signal: 2\/5"}