Back to guides
Troubleshooting·September 15, 2026·6 min read

“Error in message stream” in ChatGPT — causes and how to fix it

“Error in message stream” appears when the connection through which ChatGPT delivers its response piece by piece is interrupted before the response is complete. It is almost never caused by your input: the cause is almost always congestion on OpenAI’s side, an unstable connection, a browser extension, or a chat that has become too long. Regenerating the response fixes most cases — and if it does not, one look at the status page tells you whether the problem is even on your side.

“Error in message stream” appears when the connection through which ChatGPT delivers its response piece by piece is interrupted before the response is complete. It is almost never caused by your input: the cause is almost always congestion on OpenAI’s side, an unstable connection, a browser extension, or a chat that has become too long. Regenerating the response fixes most cases — and if it does not, one look at the status page tells you whether the problem is even on your side.

The error

Displayed in the ChatGPT chat
Fehler im Nachrichtenstrom

(Gleiche Störung, andere Formulierungen: „Streaming unterbrochen.
 Warte auf die vollständige Nachricht", „Hmm...da ist wohl etwas
 schiefgelaufen." Symptom ist immer dasselbe — die Antwort bleibt
 mitten im Satz stehen und wird nie fertig.)

Causes and fixes at a glance

CauseFix
Congestion or an incident on OpenAI’s side. It affects all plans simultaneously, including Plus and Pro, and is the most likely cause when the error returns every few minutes.Check status.openai.com. During an incident, no setting on your side changes anything — waiting is the solution.
Unstable connection: switching between Wi-Fi and mobile data, a VPN or corporate proxy, or weak reception. Streaming keeps one single long connection open and breaks where a normal page load would still get through.Turn off the VPN or proxy and try again over another connection (Wi-Fi ⇄ mobile data).
Browser environment: an extension that interferes with the page, an outdated cache, or an expired session.Try again in a private window. If it works there, the cause is an extension or the cache — disable extensions, delete site data, and sign in again.
The chat is too long or the attachments are too large. Each turn resends the entire history, so generation takes longer and is more likely to stop.Carry the key points into a new chat. Split large files instead of attaching them in full.

The three steps for the first 90 seconds

Regenerate the response → reload the page (in the app, fully quit and restart it) → sign out and sign back in. A stream that drops once is resolved by one of these three steps, and a one-off occurrence is normal. If it breaks at exactly the same point every time, however, that indicates that one of the specific causes below is present and that it is not random.

First determine whether the problem is on your end at all

This is the step the other guides skip, and the one that saves the most time. Open status.openai.com. If there is an ongoing incident, no local setting will help and waiting is the only solution. If nothing is listed, the cause is on your end, and the next step narrows it down. Checking this before changing things prevents you from spending twenty minutes clearing the cache during an outage.

Narrow down the local cause from the outside in

Proceed in this order, because each stage rules out everything above it: (1) disable VPN and proxy; (2) open a private window — this removes extensions and cache in one go; (3) use another browser or device; (4) switch networks. The stage at which it starts working again is the cause. If the error occurs only in long chats, none of the four is responsible — carry the key points into a new chat instead.

For developers: the same interruption at the API

With a request using stream: true, the same issue appears as a Server-Sent Events connection that ends without finish_reason. The HTTP status is 200 — everything was fine when the headers were sent — so a status-code-only check does not detect the interruption; under load, 429 and 529 overloaded_error may also occur. Three things make this survivable: (1) treat a stream that ends without finish_reason as retryable, not as a completed response; (2) retry 429, 500, and 529 with exponential backoff plus jitter; (3) behind a proxy, check its idle timeout and disable response buffering — a buffering proxy turns a working stream into a long hang. To narrow it down, stream without a proxy first:

stream-test.sh
# Direkt streamen, kein Proxy dazwischen, und beobachten, wo es abbricht.
curl -N https://api.kunavo.com/v1/chat/completions \
  -H "Authorization: Bearer $KUNAVO_API_KEY" \
  -H "content-type: application/json" \
  -d '{"model":"claude-sonnet-5","stream":true,
       "max_tokens":300,
       "messages":[{"role":"user","content":"Zähle langsam von 1 bis 20"}]}'

If you’re calling through Kunavo

Kunavo is an AI API gateway and treats dropped streams as an operational state, not an exception. If multiple upstream channels are configured for a model and the first attempt fails, the same request is retried through another channel within the same call — turning a temporary upstream issue into a slightly slower success instead of an error. Failed requests are never charged. Because GPT and Claude are accessible through a single key, when a model is overloaded, using a different model name is enough instead of adding a second integration. The retry and backoff pattern for the streaming case is written out in LLM API streaming errors.

Frequently asked questions

Is “Error in message stream” my fault?

Practically never. The message means that the connection carrying the response was interrupted before the response was complete. Your input did not cause it. Possible causes include load on OpenAI’s side, an unstable connection, a browser extension or expired session, or a chat that has become so long that responses run into a timeout.

What should I do if regenerating does not help?

First check status.openai.com — during an incident, nothing local will help. If there is no incident, open the page in a private window over another network: this single test removes extensions, cache, and your usual connection at the same time. If it works there, re-enable everything one by one until it breaks again. If it breaks everywhere and only in one long chat, carry the key points into a new chat.

Does this also happen with other AI chats?

The wording comes from ChatGPT, but any assistant that streams responses can break in the same way. Claude displays a message saying that the response could not be generated completely; with a direct API call, it appears as an SSE stream that ends without finish_reason, or under load as 529 overloaded_error.

Why does this happen more often in long conversations?

Every turn sends the entire history again, so a long conversation means a longer generation over a single open connection. The longer that connection remains open, the more opportunities a proxy timeout, network change, or upstream interruption has to break it. A fresh chat with a summary of the essentials usually helps more than any browser setting.

Related guides

More error semantics live in the error reference; getting a key takes a minute via signing up and the authentication guide.