tengu_mcp_protocol_negotiation_stdio
A Claude Code feature flag, read out of the shipped bundle. It has been in the build since v2.1.221, including the newest one read.
A newer MCP protocol handshake exists per transport but every gate falls back to legacy here.
Not Anthropic's. This is the line from the earliest changelog entry here that named it, v2.1.221.
In the changelogs
10Releases whose published page names tengu_mcp_protocol_negotiation_stdio.
-
v2.1.292
Local MCP servers get one retry with the newer handshake when the old one fails
If a stdio MCP server remembered as old-style fails to start, Claude Code forgets that and restarts it once with the newer handshake
gate cited by this entry
-
v2.1.292
Local MCP servers now use protocol negotiation by default
Stdio MCP servers now use automatic protocol negotiation unless a server-side setting explicitly turns it off
gate cited by this entry
-
v2.1.292
Slow-starting local MCP servers are no longer remembered as old-protocol
A stdio MCP server that answers the protocol check late is no longer remembered as speaking the older protocol
gate cited by this entry
-
v2.1.292
Slow-starting local MCP servers are no longer wrongly remembered as older servers
A local MCP server that answered the protocol check late is no longer remembered as an older server after a connection timeout
gate cited by this entry
-
v2.1.292
Slow resource listings no longer hold up MCP tools on HTTP and SSE servers
After connecting to an HTTP or SSE MCP server, Claude Code can now register its tools without waiting for its resource listing to finish
gate cited by this entry
-
v2.1.292
Protocol negotiation for local MCP servers now defaults on, with a safer memory file
Negotiating the protocol version with local stdio MCP servers now falls back to on, and a broken record of past probes is ignored rather than trusted
gate cited by this entry
-
v2.1.292
Stdio MCP servers get a stable identity, and protocol negotiation defaults to on
Local stdio MCP servers now get an identity built from their command, and the stdio protocol-negotiation switch now defaults to on
gate cited by this entry
-
v2.1.274
New stdio MCP protocol-negotiation gate added
A new gate lets stdio MCP connections also try the newer protocol-negotiation handshake
named in this entry, gate cited by this entry
-
v2.1.221
MCP protocol-era negotiation (2026-07-28 "modern" revision) added behind per-transport gates
A newer MCP protocol handshake exists per transport but every gate falls back to legacy here.
gate cited by this entry, found in this entry's text
-
v2.1.221
New MCP protocol-era negotiation with probe and legacy fallback
In auto mode MCP connections would probe for a modern protocol and fall back to legacy, but nothing enables it.
gate cited by this entry, found in this entry's text
Gate readings
3| Release | Resolved | This account | Anonymous | Compiled default |
|---|---|---|---|---|
| v2.1.292 read on another version | On for this account, and not off by default | on | on | on |
| v2.1.274 read on another version | Off in both readings | off | off | off |
| v2.1.221 read on another version | Off by default, switched on for this account | on | on | off |
Two arms, because they disagree: this account is the one account this site reads and anonymous is a baseline with no identity attached. A reading says nothing about your account, and off cannot rule out a rollout both readings sit outside of. What these readings can and cannot show.
Flag server, over time
35| Read as | Reading | From | Until | Version installed |
|---|---|---|---|---|
| anonymous | on | 2026-10-17T05:30:04Z | 2026-10-23T00:05:05Z | v2.1.302 to v2.1.309 |
| this account | on | 2026-10-07T18:00:12Z | 2026-10-23T00:05:05Z | v2.1.292 to v2.1.309 |
| anonymous | no longer carried | 2026-10-17T05:25:57Z | 2026-10-17T05:25:57Z | v2.1.302 |
| anonymous | on | 2026-09-30T10:35:04Z | 2026-10-17T05:10:04Z | v2.1.285 to v2.1.302 |
| this account | off | 2026-10-07T17:59:34Z | 2026-10-07T17:59:34Z | v2.1.293 |
| this account | on | 2026-09-29T19:35:04Z | 2026-10-07T17:10:05Z | v2.1.285 to v2.1.292 |
| anonymous | off | 2026-09-15T11:35:04Z | 2026-09-30T08:30:06Z | v2.1.272 to v2.1.285 |
| this account | off | 2026-09-29T18:05:06Z | 2026-09-29T19:30:06Z | v2.1.284 to v2.1.285 |
| this account | on | 2026-09-29T18:02:52Z | 2026-09-29T18:02:52Z | v2.1.285 |
| this account | off | 2026-09-29T11:25:05Z | 2026-09-29T17:40:06Z | v2.1.284 |
| this account | on | 2026-09-28T18:05:09Z | 2026-09-29T10:00:07Z | v2.1.283 to v2.1.284 |
| this account | off | 2026-09-28T18:02:35Z | 2026-09-28T18:02:35Z | v2.1.284 |
| this account | on | 2026-09-25T19:30:06Z | 2026-09-28T16:35:05Z | v2.1.282 to v2.1.283 |
| this account | off | 2026-09-25T19:27:54Z | 2026-09-25T19:27:54Z | v2.1.283 |
| this account | on | 2026-09-25T10:00:07Z | 2026-09-25T18:30:05Z | v2.1.282 |
| this account | off | 2026-09-24T16:40:06Z | 2026-09-25T08:15:04Z | v2.1.281 to v2.1.282 |
| this account | on | 2026-09-24T16:37:23Z | 2026-09-24T16:37:23Z | v2.1.282 |
| this account | off | 2026-09-15T15:25:04Z | 2026-09-24T15:25:04Z | v2.1.272 to v2.1.281 |
| this account | on | 2026-09-10T21:47:12Z | 2026-09-15T15:15:04Z | v2.1.268 to v2.1.272 |
| anonymous | on | 2026-08-19T04:25:04Z | 2026-09-15T11:25:04Z | v2.1.233 to v2.1.272 |
| this account | no longer carried | 2026-09-10T21:46:45Z | 2026-09-10T21:46:45Z | v2.1.268 |
| this account | on | 2026-09-08T20:36:15Z | 2026-09-10T17:40:05Z | v2.1.263 to v2.1.267 |
| this account | no longer carried | 2026-09-08T20:34:58Z | 2026-09-08T20:34:58Z | v2.1.265 |
| this account | on | 2026-09-06T02:40:05Z | 2026-09-08T18:45:05Z | v2.1.261 to v2.1.263 |
| this account | no longer carried | 2026-09-06T02:36:19Z | 2026-09-06T02:36:19Z | v2.1.263 |
| this account | on | 2026-08-22T13:25:05Z | 2026-09-06T01:55:04Z | v2.1.233 to v2.1.261 |
| this account | off | 2026-08-22T13:25:01Z | 2026-08-22T13:25:01Z | v2.1.240 |
| this account | on | 2026-08-20T07:25:04Z | 2026-08-22T12:15:05Z | v2.1.233 |
| this account | off | 2026-08-20T06:30:05Z | 2026-08-20T06:30:05Z | v2.1.233 |
| this account | on | 2026-08-18T18:55:06Z | 2026-08-20T06:10:06Z | v2.1.233 |
| anonymous | no longer carried | 2026-08-19T04:20:14Z | 2026-08-19T04:20:14Z | v2.1.233 |
| anonymous | on | 2026-08-18T13:15:04Z | 2026-08-19T03:45:04Z | v2.1.233 |
| this account | off | 2026-08-18T18:50:25Z | 2026-08-18T18:50:25Z | v2.1.235 |
| this account | on | 2026-08-14T22:10:05Z | 2026-08-18T17:30:05Z | v2.1.232 to v2.1.233 |
| anonymous | off | 2026-08-14T22:10:05Z | 2026-08-18T11:25:04Z | v2.1.232 to v2.1.233 |
One row per unbroken stretch of one reading, newest first, from snapshots taken every twenty-five minutes or so. No longer carried is not off: it means the flag server stopped returning the gate at all, which is what a retired experiment looks like. The version column is what was installed when the reading was taken, not what caused it.
First cited
2The earliest release whose published evidence quoted tengu_mcp_protocol_negotiation_stdio was v2.1.221, 3 Aug 2026. That is the oldest release this project wrote about it, so it is a floor on the name's age and not the release that introduced it. It is not a presence reading: which builds carried the name is the table below.
Presence across releases
3Build by build
77One row per release since the first build this name was read out of. Absent means the build was read and the name was not in it, never mined means no bundle for that release was ever archived, and a declared type or a default is only ever what that release's own bundle stated.
Read out of the published npm bundle release by release, and out of Anthropic's own documentation as this site captured it. Nothing on this page is a description anybody here wrote about what the feature flag does. All feature flags.