Seit dem 8. Oktober 2026 sterben lange Codex-Sitzungen in dem Moment, in dem sie versuchen, zu komprimieren. Die Fehlermeldung lautet stream disconnected before completion: response protection is unavailable, Wiederholungen helfen nicht, und das Gespräch kann nicht fortgesetzt werden. Die meisten Berichte betreffen gpt-6.1-sol, aber gpt-6-astra und gpt-5.6-sol schlagen auf die gleiche Weise fehl. Es tritt hinter selbstgehosteten Proxys auf und zeigt sich auch in der offiziellen Codex-App mit einem direkten ChatGPT-Login.
Die kurze Antwort: Der Kontext ist nicht zu groß, und Ihr Netzwerk ist nicht das Problem. Der Codex-Backend von ChatGPT lehnt jetzt jede Anfrage ab, die eine frühere Websuche in seiner Historie wiederholt, ohne auch das Websuche-Tool zu deklarieren. Die Komprimierungsanfrage von Codex deklariert überhaupt keine Tools. Eine einzige Websuche zu Beginn einer Sitzung reicht aus, um jede spätere Komprimierung fehlschlagen zu lassen.
Was Sie jetzt tun sollten:
- Neue Sitzungen: Setzen Sie
web_search = "disabled", bis sich das Backend oder Codex ändert. - Festgefahrene Sitzungen: Verschieben Sie die Arbeit in eine neue Sitzung. Die alte wird nicht komprimiert.
- Wenn Sie Ihr eigenes Gateway vor Codex betreiben: Fügen Sie eine Websuche-Deklaration hinzu, wenn die Historie eine Suche enthält. Der Code ist unten.
Der Rest dieses Beitrags erklärt, wie der Auslöser gefunden wurde, welche Community-Lösungen nicht funktionieren und wie man eine festgefahrene Sitzung retten kann.
Wie der Fehler aussieht
Sie werden eine dieser Meldungen in Codex sehen:
stream disconnected before completion: response protection is unavailable
Error running remote compact task: stream disconnected before completion: stream closed before response.completed
Die zweite Nachricht ist die generische Version. Codex zeigt nicht immer den Fehler von upstream an, sodass eine Komprimierung, die mit "stream closed before response.completed" fehlschlägt, dasselbe Problem sein kann. Das lokale Protokoll von Codex hat oft Failed to run pre-sampling compact daneben.
Darunter sendet der Upstream eine von zwei Dingen. Manchmal ist es ein HTTP 502 mit diesem Body, den ein ChatGPT Plus-Nutzer auf gpt-6.1-sol auch im Entwicklerforum von OpenAI gepostet hat:
{"message": "response protection is unavailable", "type": "internal_error"}
Manchmal ist es ein HTTP 200, dessen Stream in einem response.failed Ereignis mit code: "upstream_error" endet und kein response.completed hat. Alles, was nur den HTTP-Status überprüft, verpasst die zweite Form und meldet es als einen Stream, der frühzeitig endete.
Das Muster ist überall dasselbe:
- Normale Wendungen funktionieren weiterhin. Nur die Komprimierung schlägt fehl.
- Codex versucht es etwa fünfmal, dann gibt er auf. In den Protokollen eines Gateways dauerte jeder fehlgeschlagene Versuch 2 bis 13 Sekunden und verzeichnete null Tokens.
- Das Fortsetzen der Sitzung stößt auf die gleiche Komprimierung, sodass die Sitzung feststeckt bleibt.
- Eine frische Sitzung funktioniert, bis sie auf die gleichen Bedingungen stößt.
Der Auslöser: eine Suche in der Historie, kein Suchwerkzeug in der Anfrage
Codex hat ein integriertes Websuche-Tool. Wenn das Modell es verwendet, wird ein web_search_call Element in die Gesprächshistorie eingefügt. Jede spätere Anfrage sendet diese Historie zurück.
Normale Wendungen deklarieren das Tool in tools, sodass der Upstream die wiederholte Suche akzeptiert. Eine Komprimierungsanfrage ist anders. Codex sendet die gesamte Historie mit tools: [], da eine Zusammenfassung keine Tools benötigt. Das gilt für lokale Komprimierungen, die Codex für benutzerdefinierte Anbieter durchführt, und für remote compaction v2.
Um den 6. Oktober herum begann der ChatGPT Codex-Backend, Anfragen abzulehnen, die einen web_search_call wiederholen, aber web_search nicht deklarieren. Entwickler, die die Rohanfragen erfasst haben, haben es eingegrenzt. Das Ändern oder Entfernen der ID des Suchelements macht keinen Unterschied. Nur das Deklarieren eines Funktionswerkzeugs schlägt weiterhin fehl. Das Deklarieren von web_search lässt die gleiche Anfrage erfolgreich sein.
Das gleiche Ergebnis zeigt sich mit dem offiziellen, unveränderten codex-cli, das mit einem ChatGPT-Konto angemeldet ist. Eine Historie mit drei Suchelementen konnte nicht komprimiert werden. Die gleiche Historie, aus der nur diese Elemente entfernt wurden, komprimierte einwandfrei. Ein zweiter Berichterstatter in diesem Thread erfasste eine Komprimierungsanfrage mit einem web_search_call und tools: []. Das Hinzufügen einer web_search Deklaration behob das Problem, ebenso wie das Entfernen des Suchelements.
Das erklärt, warum es wie ein Problem mit der Kontextgröße aussieht. Komprimierungen laufen nur bei langen Sitzungen, und lange Sitzungen sind die, die wahrscheinlich irgendwann eine Suche verwendet haben. Die Websuche ist auch standardmäßig in Codex aktiviert (der Standardmodus ist "cached"), sodass eine Sitzung eine Suche enthalten kann, nach der der Benutzer nie gefragt hat.
Die Beweise
Mindestens vier Gruppen führten unabhängig A/B-Tests durch und erhielten das gleiche Ergebnis. Die untenstehenden Zeilen kombinieren Tests, die im openai/codex-Tracker und in den Issue-Trackern mehrerer Open-Source-Gateway-Projekte gepostet wurden. OpenAI hat die Regel nicht bestätigt oder auf keinen dieser Threads geantwortet.
| Anfragehistorie | Deklarierte Tools | Ergebnis |
|---|---|---|
| Nur Nachrichten und Argumentation | Keine | Vollständig |
| Enthält die Ausgabe eines Funktionsaufrufs | Keine | Vollständig |
| Enthält einen web_search_call | Keine | Fehlgeschlagen |
| Enthält einen web_search_call | Nur Funktionswerkzeug | Fehlgeschlagen |
| Enthält einen web_search_call | web_search | Vollständig |
| Dasselbe, Suchelemente entfernt | Keine | Vollständig |
Die Tests schließen die Größe aus. Ein Tester stellte die automatische Komprimierungsschwelle auf 2.000 Tokens mit -c model_auto_compact_token_limit=2000 ein. Eine Sitzung ohne Tool-Nutzung komprimierte einwandfrei. Eine Sitzung, die einmal gesucht hatte, schlug sechs Mal hintereinander fehl. Ein anderer Tester stellte fest, dass das Entfernen von Argumentationspunkten nicht half, während das Entfernen des einzelnen Suchelements half.
In einem Test wurde die Version mit web_search deklariert, die in 2,63 Sekunden abgeschlossen wurde und null neue Suchanfragen stellte. Das Deklarieren des Tools führt nicht dazu, dass das Modell erneut sucht.
Was die Community versucht hat und was tatsächlich funktioniert
Der LINUX DO-Thread, der diesen Beitrag angestoßen hat, durchlief die meisten der üblichen Vermutungen:
| Vorschlag | Hilft? | Warum |
|---|---|---|
| Kontext verkleinern, früher komprimieren | Nein | Die Größe ist nicht der Auslöser |
| Über IP verbinden, nginx ändern | Nein | Der Fehler kommt von upstream |
| Wechsel zu WebSocket | Unzuverlässig | Der gleiche Anfrage-Body in beiden Fällen |
| Direkt bei ChatGPT anmelden | Nein | Offizieller Login schlägt ebenfalls fehl |
| Neue Sitzung, Kontext übergeben | Überbrückungslösung | Bricht nach einer Suche erneut zusammen |
| Websuche deaktivieren | Ja, für neue Sitzungen | Keine Suche, kein Auslöser |
| Web_search in der Anfrage deklarieren | Ja | Erfüllt die Überprüfung |
Einige dieser Punkte benötigen mehr Erklärung.
Nginx und IP. Timeouts und inaktive Verbindungen können andere "stream disconnected"-Fehler verursachen, aber sie können diese Meldung nicht erzeugen. Die Betreiber der beteiligten Proxys bestätigten, dass die Meldung nicht vom Proxy generiert wird; sie kommt vom Upstream-Anbieter. Wenn die Meldung vorhanden ist, hat das Netzwerk die Anfrage durch und zurückgeleitet.
WebSocket. Die Gateway-Patches, die funktionierten, mussten den WebSocket-Pfad sowie HTTP abdecken, da WebSocket-Anfragen denselben Body tragen. Eine Sitzung, die nach dem Wechsel des Transports "wiederhergestellt" wurde, hatte höchstwahrscheinlich keine Suche in ihrer Historie.
Offizieller Login. Berichte im openai/codex-Tracker umfassen die Desktop-App und codex-cli, die direkt mit einem ChatGPT-Konto angemeldet sind, ohne dass ein Proxy beteiligt ist. Stand 10. Oktober 2026 erwähnt weder Codex 0.162.1 noch die 0.163.0-Alphas einen Fix, und die Probleme haben keine Antwort von den Betreuern erhalten.
Was Sie jetzt tun können
Websuche für neue Sitzungen deaktivieren
Deaktivieren Sie die Suche in ~/.codex/config.toml:
web_search = "disabled"
Die Codex-Konfigurationsreferenz listet vier Werte auf: disabled, cached (der Standard), indexed und live. Sitzungen, die mit --yolo oder einem anderen Sandbox-Standard mit vollem Zugriff gestartet werden, sind standardmäßig auf live eingestellt, also setzen Sie es ausdrücklich.
Wenden Sie dies auf neue Sitzungen an. Eine alte Sitzung hat bereits web_search_call Elemente in ihrer Historie. Mit deaktivierter Suche hören normale Wendungen auch auf, das Tool zu deklarieren, sodass diese Wendungen ebenfalls fehlschlagen können. Das folgt aus der oben genannten Regel, aber bisher hat das noch niemand getestet.
Der Nachteil ist, dass Codex nicht im Internet suchen kann. Für eine Sitzung, die eine Suche benötigt, öffnen Sie eine separate kurze Sitzung oder lassen Sie das Modell die Ergebnisse in eine Datei schreiben, die die lange Sitzung liest.
Rettung einer festgefahrenen Sitzung
Nichts auf Ihrer Seite wird eine festgefahrene Sitzung komprimieren, solange das Backend sich so verhält. Um die Arbeit zu behalten:
- Die festgefahrene Sitzung so belassen, wie sie ist. Ihre Historie ist weiterhin auf der Festplatte unter
~/.codex/sessions/. - Starten Sie eine neue Sitzung mit deaktivierter Websuche.
- Weisen Sie sie auf die alte Sitzungsdatei hin oder fügen Sie eine kurze Übergabe hinzu: das Ziel, die geänderten Dateien, getroffene Entscheidungen und was noch übrig ist.
- Hören Sie auf, Eingabeaufforderungen an die alte Sitzung zu senden. Jeder Versuch wiederholt die Komprimierung und schlägt erneut fehl.
Wenn Sie Ihr eigenes Gateway betreiben
Die funktionierende Lösung folgt einer Regel. Wenn input einen web_search_call enthält und kein web_search* Tool deklariert ist, fügen Sie eines hinzu. Wenn der Anrufer keine Tools deklariert hat, setzen Sie tool_choice auf "none", damit das Tool nicht ausgeführt werden kann. Lassen Sie input unverändert.
def declare_replayed_web_search(body: dict) -> dict:
"""Lassen Sie den Upstream eine wiederholte web_search_call in einer anforderung ohne Werkzeuge akzeptieren."""
items = body.get("input")
if not isinstance(items, list):
return body
if not any(isinstance(i, dict) and i.get("type") == "web_search_call" for i in items):
return body
tools = body.get("tools") or []
if any(isinstance(t, dict) and str(t.get("type", "")).startswith("web_search") for t in tools):
return body
caller_had_tools = bool(tools)
# Nur im Cache: Die Deklaration existiert, um die Überprüfung zu erfüllen, nicht um zu suchen.
body["tools"] = tools + [{"type": "web_search", "external_web_access": False}]
if not caller_had_tools:
body["tool_choice"] = "none"
return body
Responses Lite-Anfragen sind eine Ausnahme. Sie geben einen 400 zurück, wenn web_search in den obersten tools steht. Die funktionierenden Patches setzen es stattdessen in das erste additional_tools Eingabeelement und halten alle nachfolgenden compaction_trigger zuletzt. Die Alternative, Suchelemente aus Komprimierungsanfragen zu entfernen, funktioniert ebenfalls, aber die Zusammenfassung verliert dann, was die Suche gefunden hat.
Wenn Sie nicht vom Abonnement-Backend abhängig sein möchten
Jeder Bericht, den wir gefunden haben, geht über ChatGPTs Abonnement-Backend, den Endpunkt, den Codex mit einem ChatGPT-Login verwendet. Seine Regeln sind nicht dokumentiert, und diese hat sich ohne Vorankündigung geändert.
Codex kann auch die öffentliche Responses-API mit einem API-Schlüssel verwenden. Wir haben bisher keinen Bericht über diesen Fehler auf diesem Weg gesehen, aber wir haben die Reproduktion dort auch nicht selbst durchgeführt, also betrachten Sie das als Beobachtung, nicht als Garantie. Um Codex mit einem AIHubMix-Schlüssel einzurichten, folgen Sie dem Codex CLI-Tutorial:
model = "gpt-6.1-sol"
model_provider = "aihubmix"
[model_providers.aihubmix]
name = "AIHubMix"
base_url = "https://aihubmix.com/v1"
wire_api = "responses"
env_key = "AIHUBMIX_API_KEY"
API-Preise gelten pro Token, nicht pro Abonnement. Die Tarife sind auf der gpt-6.1-sol Modellseite aufgeführt.
Checkliste
- Der Fehlertext enthält "response protection is unavailable" oder die Komprimierung schlägt mit "stream closed before response.completed" fehl.
- Normale Wendungen funktionieren weiterhin und nur die Komprimierung schlägt fehl.
- Die Sitzung hat irgendwann eine Websuche verwendet, möglicherweise ohne gefragt zu werden.
- Neue Sitzungen haben web_search auf deaktiviert gesetzt.
- Festgefahrene Arbeiten wurden in eine neue Sitzung mit einer Übergabenotiz verschoben.
- Ein Gateway, das Sie betreiben, fügt eine Websuche-Deklaration hinzu, wenn die Historie eine Suche enthält.
- Nginx- und Proxy-Netzwerkeinstellungen wurden in Ruhe gelassen. Sie sind nicht die Ursache.
FAQ
Was bedeutet "response protection is unavailable" in Codex?
Es ist ein Fehler vom Codex-Backend von ChatGPT, nicht von Codex selbst oder Ihrem Proxy. Seit Anfang Oktober 2026 tritt er auf, wenn eine Anfrage eine frühere Websuche wiederholt, aber das Websuche-Tool nicht deklariert, was genau das ist, was eine Komprimierungsanfrage tut.
Ist mein Kontextfenster zu groß?
Nein. Tester haben es mit einer Komprimierungsschwelle von 2.000 Tokens reproduziert, und Sitzungen derselben Größe ohne eine Suche komprimieren normalerweise. Es sieht nur nach einer Größenfrage aus, weil die Komprimierung nur in langen Sitzungen durchgeführt wird.
Beeinflusst es die offizielle Codex-App mit einem ChatGPT-Login?
Ja. Benutzer der Desktop-App und codex-cli berichten darüber bei direkten ChatGPT-Logins ohne Proxy. Stand 10. Oktober 2026 erwähnt keine Codex-Version einen Fix.
Wie kann ich feststellen, ob eine Sitzung betroffen sein wird?
Wenn die Sitzung irgendwann eine Websuche verwendet hat, wird ihre nächste Komprimierung höchstwahrscheinlich fehlschlagen. Codex protokolliert jede Suche als ein web_search_call-Element in den Sitzungsdateien im .codex/sessions-Ordner.
Wird das Deaktivieren der Websuche eine Sitzung, die bereits festgefahren ist, beheben?
Wahrscheinlich nicht. Die alte Historie enthält weiterhin die Suche, und sobald die Suche deaktiviert ist, können normale Wendungen aufhören, das Tool zu deklarieren und ebenfalls fehlschlagen. Verwenden Sie die Einstellung für neue Sitzungen und verschieben Sie die Arbeit.
Hilft der Wechsel zu WebSocket oder das Ändern von nginx?
Nein. Der Anfrage-Body ist über beide Transportwege derselbe, und der Fehler kommt von upstream, sodass Netzwerkeinstellungen ihn nicht entfernen können. Andere Stream-Fehler können von Timeouts kommen, aber nicht dieser.
Passiert es, wenn Codex einen API-Schlüssel anstelle eines ChatGPT-Abonnements verwendet?
Alle bisherigen Berichte betreffen das Abonnement-Backend. Niemand hat es bei der öffentlichen Responses-API gemeldet, obwohl das nicht direkt getestet wurde.
Weiterlesen: die GPT-6.1 Sol-Serie
- Wenn dieser Fehler direkt nach dem Wechsel von Codex zu GPT-6.1 Sol aufgetreten ist, behandelt der Migrationsleitfaden die anderen Änderungen, die eine Einrichtung stören können: Migration zu GPT-6.1 Sol: 9 Dinge, die schiefgehen können
- Lange Agentensitzungen sind der Bereich, in dem die Aufwandseinstellungen am wichtigsten sind, sowohl für die Geschwindigkeit als auch dafür, wie schnell Sie sich der Komprimierung nähern: Wählen eines Argumentationsaufwands für GPT-6.1 Sol: niedrig bis maximal
Quellen
- Windows Codex Desktop: Kontextkomprimierung schlägt immer fehl (openai/codex)
- Remote-Komprimierung schlägt fehl, nachdem die Historie des gehosteten web_search_call wiederhergestellt wurde (openai/codex)
- Codex-Remote-Komprimierung schlägt mit 502 "Antwortschutz ist nicht verfügbar" fehl (OpenAI Developer Community)
- Codex-Konfigurationsreferenz (OpenAI)
- Codex CLI + AIHubMix-Integrations-Tutorial (AIHubMix)



