Why Did Cloudflare's GLM-5.3 Hand Users Other Customers' Data?
Cloudflare says 155 GLM-5.3 responses on Workers AI held other customers' data, thanks to a KV cache config gap and an SGLang bug. Here's what to check now.

Cloudflare says 155 responses from the GLM-5.3 model on its Workers AI platform contained data from other customers' requests, and every one of them answered a prompt longer than 681,280 tokens. The company published the incident report on Monday, October 26, in a coordinated disclosure with the maintainers of the open-source SGLang inference engine.
Here's what you need to know:
The exposure ran from August 27 to September 9, 2026, starting the day GLM-5.3 (
@cf/zai-org/glm-5.3) launched on Workers AI.Cloudflare advertised a 1,048,576-token context window, but the KV cache pool on its prefill GPUs only held 681,280 tokens.
An SGLang bug in disaggregated prefill/decode mode let over-length prompts read stale cache pages instead of failing with an error.
Cloudflare says it found no evidence of deliberate exploitation and that no other Workers AI model was affected.
If you self-host SGLang this way, Cloudflare recommends upgrading to v0.5.22 or later.

How a rejected prompt leaked data: the GLM-5.3 KV cache bug, step by step
What Happened
Security researcher Gadi Evron of Knostic reported the issue through Cloudflare's HackerOne program on September 8. According to Cloudflare's incident report, very long prompts sent to GLM-5.3 "sometimes returned text that belonged to other users' sessions."
Cloudflare reproduced the leak the next morning using two independent accounts, set the model to private at 14:00 UTC on September 9, and restored it at 19:40 UTC the same day with a fixed configuration and a patched engine.
The root cause was two problems stacked together. First, a misconfiguration. Cloudflare says it knew about the gap between the 1M-token context window and the 681,280-token prefill pool before launch, but expected the engine to reject anything it couldn't process. Its long-context tests returned successful HTTP codes, so it didn't think it was a problem. The company admits it "only validated HTTP response codes and engine performance at long contexts, without validating model output and coherence."
Second, an engine bug. In SGLang's disaggregated mode, separate prefill GPUs process the prompt and hand its KV cache over RDMA to decode GPUs that generate the reply. An over-length prompt was marked as rejected and swapped for a one-token placeholder. But both admission queues only checked whether a request was finished, not rejected, so it sailed through. Prefill sent one page of cache, decode attended over all the pages it had reserved, and the rest still held earlier users' prompts and partial generations.
The client got an HTTP 200 and a coherent answer instead of an HTTP 400. As the SGLang team's security post explains, the single-node rejection path returned an error; only disaggregated serving was affected.
Why It Matters
This wasn't a model problem. It was a serving problem, and that's the uncomfortable part. Cloudflare notes that KV cache pages "are not currently zeroed between requests" because doing so costs performance, so the engine alone is responsible for tracking who owns each page.
That design is common across inference engines. And the bug wasn't unknown: it had been reported to SGLang as issue #30233 on July 6, 2026, weeks before GLM-5.3 launched, as Unite.AI's write-up of the disclosure points out.
There's a bigger pattern, too. SGLang says a related class of race conditions, where an aborted request's in-flight RDMA writes land in another request's cache, affected default disaggregated setups from the v0.4.x line (early 2025) until v0.5.21. Its team warns that long-context workloads widen that window, and that a deployer "has no reliable way to tell" whether corruption already happened, because it leaves no error or log line.
Million-token contexts are a selling point for coding agents. This incident shows they're also where multi-tenant isolation gets hardest. Open questions remain, though: the report doesn't say how many distinct customers were affected, what kind of data leaked, or how customers were notified.
What It Means for Developers
If you call GLM-5.3 on Workers AI, Cloudflare says the fix has been live since September 9. If you run your own inference stack, this is your checklist, straight from Cloudflare's and SGLang's recommendations:
Compare KV pool size to context length on every prefill and decode node, from the engine's startup log, after any change to weights, quantization, parallelism or memory fraction. If the pool is smaller, lower the context length.
Upgrade SGLang to v0.5.22 or later, which includes the admission fixes (#36988 and #38935). SGLang says it hasn't backported them to older release branches.
Keep deferred KV release on for both roles (the default since v0.5.21) and bound Mooncake transfer batches.
Turn on corruption detection with
--disaggregation-enable-kv-checksumwhere your model supports it, and watch the newsglang:decode_deferred_kv_release_totalmetric.Test output, not just status codes. Canary markers in long prompts would have caught this before launch.
Treat hosted model calls as shared infrastructure. Don't send secrets or customer data in giant prompts unless you need to.
Cloudflare has been busy lately; we covered its Rust port of the TypeScript compiler, tsrs recently. And for another reminder that AI infrastructure needs hard boundaries, see how a Qwen model tried to upload a file to Beijing from a test sandbox.

Before you ship disaggregated SGLang: the operator checklist from Cloudflare and SGLang
What's Next
The researcher's own write-up is still coming, according to SGLang, and it should describe the discovery and external validation.
Cloudflare says it's working with the SGLang team to build page-level ownership tags into the engine, so decode can detect that it's about to read a page it doesn't own and fail that one request. It also plans to use formal methods to model and prove the safety of its RDMA-based KV cache transfer protocol.
Still in progress upstream: zeroing KV pages on release (a draft proposal) and extending checksums beyond the prefill-to-decode handoff. Expect other inference providers to face questions about how they size and isolate their caches.
FAQ
Was GLM-5.3 itself the problem?
No. Cloudflare says the cause was its own configuration plus an SGLang serving bug. GLM-5.3 was the only affected model because it was the only Workers AI deployment whose KV pool was smaller than its context length.
Was my data exposed?
Only responses to GLM-5.3 prompts over 681,280 tokens between August 27 and September 9 were affected, 155 in total. Cloudflare hasn't publicly said how many customers that covers or how they were notified.
Am I affected if I run SGLang myself?
Only in disaggregated prefill/decode mode; SGLang says the single-node path returned an error. Upgrade to v0.5.22 or later and check your KV pool against your context length.
Sources
Cross-request KV cache exposure in the GLM-5.3 Workers AI model, and our remediation with SGLang, Cloudflare Blog
SGLang security update: improving request isolation, LMSYS Org / SGLang Team
Cloudflare Says GLM-5.3 Bug Leaked 155 Responses Across Tenant Sessions, Unite.AI
Follow TheTechLane
Keep learning AI, development, and modern developer technologies with TheTechLane.
Learn • Build • Share
Follow @thetechlanehq for more developer guides, tutorials, and practical technology content.