Contra - A professional network for the jobs and skills of the futureCloudflare AI Inference Bug Exposed Cross-Tenant Prompt Leakage
The network for creativity
Join 1.25M professional creatives like you
Connect with clients, get discovered, and run your business 100% commission-free
Creatives on Contra have earned over $150M and we are just getting started
155 responses. For 13 days, an AI model on Cloudflare's network answered long prompts with pieces of other customers' prompts. Every one came back HTTP 200, with coherent text.
Cloudflare published the post-mortem last night. The bug is ordinary. That is the point.
What happened, in Cloudflare's own words:
→ The model (GLM 5.3 on Workers AI) accepted a context window of 1,048,576 tokens. The GPU memory holding a prompt in flight, the KV cache, "only had room for 681,280 tokens."
→ A prompt longer than the pool should have been rejected. Instead the inference engine (SGLang, prefill and decode on separate GPUs) marked it rejected, swapped it for a one-token placeholder, and still sent "transfer complete."
→ The decode GPU "assumed that prefill overwrote the KV cache." It had not. So the model answered from whatever earlier requests had left in those memory pages. Other people's prompts and half-written replies.
→ "Pages are not currently zeroed between requests; the next request that gets a page simply overwrites it."
→ Window: Aug 27 to Sep 9. A researcher (Gadi Evron, Knostic) reported it via HackerOne. Cloudflare reproduced it in 25 minutes and had the model offline 38 minutes after declaring the incident. No evidence anyone exploited it on purpose.
The line that should worry anyone who buys AI by the token:
"we only validated HTTP response codes and engine performance at long contexts."
The happy path was tested. The reject path returned 200.
And the upstream bug had been filed as SGLang issue #30233 on July 6, seven weeks before the model launched on it.
I run a one-person company on AI agents. My agents push long documents through hosted models most days. What I take from it:
Your prompt does not end when your request does. It sits in someone's GPU memory until the next tenant overwrites it. Shared inference means shared paper.
Three rules I am applying this week:
Rule 1: Test the failure path, not the demo path. Send a prompt that is too long on purpose and read what comes back. A 400 is a pass. A 200 is the finding.
Rule 2: Two numbers that must agree get a check that runs before deploy. Context window vs cache pool. Cloudflare's line: "Nothing forces the two to agree, and it is our job to check that they do."
Rule 3: Sort your prompts by what would hurt if they came back in someone else's reply. Those go to isolated capacity or hardware you own. The rest can share.
Credit where due: reproduce in 25 minutes, pull the model in 38, fix upstream, publish every timestamp. That is a vendor I keep paying.
Nobody broke in. The memory was never cleaned.
Have you ever sent your API a prompt that is too long on purpose? Yes or no, one word. 👇
Post image
Back to feed
The network for creativity
Join 1.25M professional creatives like you
Connect with clients, get discovered, and run your business 100% commission-free
Creatives on Contra have earned over $150M and we are just getting started