In an Oct 26 incident report on its blog, Cloudflare said that between Aug 27 and Sep 9, 155 responses from GLM-5.3 on Workers AI (@cf/zai-org/glm-5.3) to prompts longer than 681,280 tokens contained data from other customers' recent requests, all returned with HTTP 200. The cause was a prefill KV cache pool smaller than the 1,048,576-token context window, combined with an SGLang bug in disaggregated prefill/decode mode. Cloudflare found no evidence of deliberate exploitation, has fixed it, and recommends operators upgrade to SGLang v0.5.22 or later.

Key Takeaways

  • ✓Scope: 155 responses between 2026-08-27 and 09-09, all to prompts over 681,280 tokens; Cloudflare confirmed no other Workers AI model was affected
  • ✓Cause 1: GLM-5.3 advertised a 1,048,576-token context but the prefill KV pool held only 681,280 tokens; after the fix the pool holds about 2.04 million tokens, roughly twice the context
  • ✓Cause 2: SGLang marked over-length requests as rejected and swapped in a one-token placeholder without aborting, so the decode node read stale cache pages from earlier requests
  • ✓Response: report from Gadi Evron of Knostic via HackerOne on Sep 8; model taken offline within 40 minutes of declaring the incident on Sep 9 and restored at 19:40 UTC that day
  • ✓Action: teams running SGLang should upgrade to v0.5.22 or later and check KV pool size against context length directly
Cloudflare discloses a cross-request KV cache leak in GLM-5.3 on Workers AI: a config mismatch plus an SGLang bug let 155 responses carry other users' data over 13 days
🖼️Official Media
Click to view high-res
🧭

Turn your technical choice into a development budget

Compare 40 dev plans & simulate token costs vs $20/mo subscriptions

🔬

In-Depth Technical Analysis

Core Background & Industry Pain Points

For performance, inference engines reuse pages of a shared GPU KV cache pool across requests without zeroing them, and the engine alone tracks ownership. Cloudflare's report shows what happens when that tracking fails: users get a normal-looking HTTP 200 reply that contains someone else's prompt and generations, invisible to conventional monitoring. It is a tenant-isolation risk for every cloud hosting open models.

Architecture Highlights & Internals

Workers AI runs GLM-5.3 on SGLang in disaggregated prefill/decode mode: prefill GPUs compute the KV cache and hand it over RDMA via Mooncake to decode GPUs. Two issues overlapped. The context was configured at 1,048,576 tokens while the prefill KV pool held only 681,280; the team knew but assumed the engine would return an error. And SGLang's admission queues checked only whether a request was finished, so rejected requests were admitted; prefill ran a one-token placeholder, reported the transfer complete, and decode generated over stale, unwritten pages.

Authoritative Benchmarks & Measured Scores

There are no benchmarks here. Key figures per Cloudflare: 155 affected responses over about 13 days; the fixed prefill pool holds about 2.04 million tokens; the model went offline within 40 minutes of the incident being declared. The engine fix shipped in SGLang v0.5.20, with follow-ups in v0.5.21 and v0.5.22.

Developer Hands-on Guide

Teams self-hosting SGLang should upgrade to v0.5.22 or later and, before any deployment change, verify from the running engine that the KV pool is at least as large as the context length, rather than trusting HTTP status codes. Long-context tests should check output content and coherence, and canary markers can detect cross-request leakage.

Action HubReady to adopt this in production?

Benchmark side-by-side against alternatives, or calculate monthly token cost vs subscription break-even.

Up NextCloudflare launches Clairic, a System One extraction model that returns typed values, dates and forecasts with confidence in one forward pass, in preview on Workers AI at $0.10 per million input tokens
Read Now→