The 2026-07-28 MCP revision moves the protocol away from long-lived sessions, and the ecosystem has moved with it faster than I expected. Cloudflare now runs every request on a fresh stateless server. GitHub dropped its session storage entirely and stopped writing on initialize. Several other hosts shipped support the same week.
We need to know what that does to the gateway, because a policy gate that holds anything across calls has just had its assumptions changed underneath it.
What to check, roughly in order of how bad it would be:
- Does anything bind attestation evidence to a session or connection lifetime? If a fresh server per request is the norm, an attestation established at
initialize and reused for later calls is either not happening or not meaning what we think it means.
- Is the loaded policy bundle held per session anywhere? Same question. If the bundle is resolved once per connection and the connection is now one request long, that is fine but wasteful, and if it is cached across connections keyed by something session-shaped, that is a correctness problem.
- Anything else keyed by session id: rate limiting, decision caching, delegation context, audit correlation.
- Whether our own conformance tests still exercise a realistic transport, or whether they all assume a session that stays up.
The design question underneath, which is the part I actually care about: attestation and statelessness pull against each other. Re-attesting per request is correct and expensive. Carrying the binding in the request means deciding what carries it and what a verifier checks. I do not think there is a settled answer for this anywhere yet, and if we work one out it is worth writing up rather than just fixing quietly.
Refs: MCP specification revision 2026-07-28.
The 2026-07-28 MCP revision moves the protocol away from long-lived sessions, and the ecosystem has moved with it faster than I expected. Cloudflare now runs every request on a fresh stateless server. GitHub dropped its session storage entirely and stopped writing on
initialize. Several other hosts shipped support the same week.We need to know what that does to the gateway, because a policy gate that holds anything across calls has just had its assumptions changed underneath it.
What to check, roughly in order of how bad it would be:
initializeand reused for later calls is either not happening or not meaning what we think it means.The design question underneath, which is the part I actually care about: attestation and statelessness pull against each other. Re-attesting per request is correct and expensive. Carrying the binding in the request means deciding what carries it and what a verifier checks. I do not think there is a settled answer for this anywhere yet, and if we work one out it is worth writing up rather than just fixing quietly.
Refs: MCP specification revision 2026-07-28.