A newer MCP protocol handshake exists per transport but every gate falls back to legacy here.
Per-transport MCP protocol negotiation is wired for http, stdio and proxies, all defaulting to legacy; MCP_PROTOCOL_NEGOTIATION overrides it.
tengu_mcp_protocol_negotiation_http On for this account, and not off by defaultThe flag server returned on for the one account this site reads, and nothing in this release compiles it off by default. The compiled default is shown below, and says which it is when we cannot read one: a fifth of gates compile in a string or a number rather than on or off, and most published releases have no gate table behind them at all. No client can see what the server returns for your account.
This account: on · anonymous baseline: on · compiled default in v2.1.221: 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.
tengu_mcp_protocol_negotiation_claudeai On for this account, and not off by defaultThe flag server returned on for the one account this site reads, and nothing in this release compiles it off by default. The compiled default is shown below, and says which it is when we cannot read one: a fifth of gates compile in a string or a number rather than on or off, and most published releases have no gate table behind them at all. No client can see what the server returns for your account.
This account: on · anonymous baseline: on · compiled default in v2.1.221: 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.
tengu_mcp_protocol_negotiation_stdio On for this account, and not off by defaultThe flag server returned on for the one account this site reads, and nothing in this release compiles it off by default. The compiled default is shown below, and says which it is when we cannot read one: a fifth of gates compile in a string or a number rather than on or off, and most published releases have no gate table behind them at all. No client can see what the server returns for your account.
This account: on · anonymous baseline: on · compiled default in v2.1.221: 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.221. It isn't a statement about your account. What a flag value here can and cannot tell you
What's wrong with this entry?
Connecting 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.
- 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. - 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. - 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. MCP_PROTOCOL_NEGOTIATION=legacy|autooverrides the gates; any other value logs a warning and is ignored.- The negotiated era is threaded into auth-failure diagnostics and into the claude/channel setup, which now skips registration on modern connections.
tengu_mcp_protocol_negotiation_http, connection negotiated a modern protocol revision with no unsolicited notification path
Strings lifted out of the shipped bundle, so the claim above can be checked against them.