{"version":"2.1.221","anchor":"mcp-protocol-era-negotiation-2026-07-28-modern-revision-adde","canonical_anchor":"mcp-protocol-era-negotiation-2026-07-28-modern-revision-adde","heading":"MCP protocol-era negotiation (2026-07-28 \"modern\" revision) added behind per-transport gates","tier":"soon","area":"MCP","scope":null,"heads_up":null,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.221\/e\/mcp-protocol-era-negotiation-2026-07-28-modern-revision-adde","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.221","markdown":"### MCP protocol-era negotiation (2026-07-28 \"modern\" revision) added behind per-transport gates\n\nA newer MCP protocol handshake exists per transport but every gate falls back to legacy here.\n\n**What**\n\nConnecting to an MCP server can now probe for a new protocol era instead of initializing directly, but every gate involved falls back to legacy in this build.\n\n**Details**\n\n- The connect path builds a negotiation config per transport and passes it to the client as `versionNegotiation`; only http, claudeai-proxy, ccr-proxy and stdio are eligible at all.\n- Each eligible transport asks its own gate: `Je(\"tengu_mcp_protocol_negotiation_http\", !1)`, `tengu_mcp_protocol_negotiation_claudeai`, `tengu_mcp_protocol_negotiation_stdio`. All of them fall back to `{ mode: \"legacy\" }` when there is no remote value, so on this build alone nothing negotiates.\n- The supported revision list is `[\"2026-07-28\", \"2025-11-25\", \"2025-06-18\", \"2025-03-26\", \"2024-11-05\", \"2024-10-07\"]`, the first two via constants.\n- `MCP_PROTOCOL_NEGOTIATION=legacy|auto` overrides the gates; any other value logs a warning and is ignored.\n- The negotiated era is threaded into auth-failure diagnostics and into the claude\/channel setup, which now skips registration on modern connections.\n\n**Evidence**\n\n`tengu_mcp_protocol_negotiation_http`, `connection negotiated a modern protocol revision with no unsolicited notification path`\n\n- Flag `tengu_mcp_protocol_negotiation_http`: Off by default, switched on for this account (read for one account on one subscription tier against v2.1.221; this account: on, anonymous baseline: on, compiled default: off) 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.\n- Flag `tengu_mcp_protocol_negotiation_claudeai`: Off by default, switched on for this account (read for one account on one subscription tier against v2.1.221; this account: on, anonymous baseline: on, compiled default: off) 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.\n- Flag `tengu_mcp_protocol_negotiation_stdio`: Off by default, switched on for this account (read for one account on one subscription tier against v2.1.221; this account: on, anonymous baseline: on, compiled default: off) 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.\n- Area: MCP\n- Names: `MCP_PROTOCOL_NEGOTIATION=legacy`, `MCP_PROTOCOL_NEGOTIATION=auto`\n- Tier: Nothing to try yet\n- Useful: 3\/5\n- Signal: 4\/5\n- Present in the build but not switched on"}