Claude Code „Request timed out“: API_TIMEOUT_MS und Proxy-Probleme beheben

Wokey Team · 2026-09-24

Kurz gesagt: Request timed out bedeutet, dass Claude Code vor Ablauf seiner Frist keine Antwort von der API bekommen hat; die Frist beträgt standardmäßig 10 Minuten (API_TIMEOUT_MS=600000). Hinter einem Gateway liegt das meist nicht an einem langsamen Modell. Häufiger hält etwas dazwischen die gestreamte Antwort zurück oder trennt Verbindungen, auf denen zu lange nichts passiert. Das kann ein lokaler Proxy sein, ein Firmennetzwerk oder das Gateway selbst. Prüfe zuerst mit curl, ob der Stream Stück für Stück ankommt, und entscheide dann, ob du das Timeout erhöhst.

Welche Meldung du siehst

Meldung Bedeutung
Waiting for API response · will retry in … · check your network unter dem Spinner Seit 20 Sekunden keine Daten. Claude Code wartet noch; das ist noch kein Fehler
Retrying in Ns · attempt x/y Automatische Wiederholungen laufen, standardmäßig bis zu 10
Request timed out Keine Antwort innerhalb von API_TIMEOUT_MS
API Error: No response from API (waited …, then … on the retry) Zwei Versuche vergingen ohne das erste Byte einer Antwort
HTTP 504 mit einem JSON-Body von Wokey Wokey lief beim Warten auf den Upstream ins Timeout
HTTP 408 Der Request-Body wurde zu langsam hochgeladen, und das Gateway hat das Warten abgebrochen

Die ersten vier stammen von Claude Code selbst, die letzten beiden vom Server.

Timeout-Fehler von Wokey

Die Timeout-Fehler von Wokey sind alle 504 im Standard-Fehlerformat. Der code zeigt, wo die Anfrage hängen blieb:

code Bedeutung
upstream_gateway_timeout Das eigene Gateway des Upstreams lief ins Timeout, bevor es eine Ausgabe gab
official_exit_first_byte_timeout Der Upstream hat nie begonnen zu antworten, einschließlich der Zeit für Wiederholungen über andere Routen
provider_timeout Die Verbindung zum Upstream brach ab oder lief ohne Ergebnis ins Timeout

Zum Beispiel:

{"error":{"code":"upstream_gateway_timeout","message":"Upstream gateway timed out before producing a response.","type":"invalid_request_error"}}

Tritt das Timeout auf, nachdem das Streaming der Antwort begonnen hat, kommt es als error-Event im Stream an und nicht als HTTP 504.

Gibt es lange keine Ausgabe, etwa weil das Modell ausführlich nachdenkt, schreibt Wokey regelmäßig einen SSE-Kommentar in den Stream, um die Verbindung offen zu halten:

: wokey-transport-keepalive-v1

Clients ignorieren Kommentarzeilen. Siehst du eine beim Testen mit curl, steht die Verbindung, und das Modell arbeitet noch.

Schritte zur Fehlersuche

1. Mit curl prüfen, ob der Stream Stück für Stück ankommt.

curl -N https://api.wokey.ai/v1/messages \
  -H "Authorization: Bearer $ANTHROPIC_AUTH_TOKEN" \
  -H "anthropic-version: 2023-06-01" \
  -H "content-type: application/json" \
  -d '{"model":"claude-sonnet-5","max_tokens":300,"stream":true,"messages":[{"role":"user","content":"Count from 1 to 60"}]}'

-N schaltet die Pufferung von curl selbst ab.

  • event:- und data:-Zeilen laufen durch, sobald sie eintreffen: Der gesamte Pfad ist in Ordnung.
  • Nach langem Warten erscheint alles auf einmal: Etwas dazwischen puffert die Antwort, und auf diesem Pfad läuft Claude Code leicht ins Timeout.

2. Den lokalen Proxy prüfen. Claude Code berücksichtigt HTTPS_PROXY und die Proxy-Einstellungen des Systems. TUN-Modus, regelbasierte Proxys und Firmen-Gateways können gestreamte Antworten puffern oder inaktive Verbindungen trennen. Kann dein Netzwerk api.wokey.ai direkt erreichen, nimm diese Domain vom Proxy aus und versuche es erneut. Wenn du einen Proxy verwenden musst, vergleiche mit einem anderen Node.

3. Das Timeout erhöhen. Wenn der Pfad in Ordnung ist und die Anfragen wirklich lange dauern, erhöhe das Limit im env-Block von ~/.claude/settings.json:

{
  "env": {
    "API_TIMEOUT_MS": "1200000"
  }
}
  • API_TIMEOUT_MS ist das Timeout pro Anfrage in Millisekunden. Der Standard ist 600000 (10 Minuten).
  • Hält ein Proxy in deinem Netzwerk Antworten zurück, bis sie vollständig sind, schlägt die Fehlermeldung von Claude Code vor, zusätzlich CLAUDE_STREAM_FIRST_BYTE_TIMEOUT_MS zu erhöhen.
  • Die Erkennung eines Streams, der mittendrin stockt, steuert CLAUDE_STREAM_IDLE_TIMEOUT_MS. Werte unter 5 Minuten werden auf 5 Minuten angehoben, das Maximum sind 30 Minuten.

4. Den Kontext verkleinern. Ein größerer Kontext wird langsamer hochgeladen und verzögert das erste Token. Führe /compact aus, um die Sitzung zu verdichten, oder beginne eine neue.

5. Bei einem 408. Ein 408 bedeutet, dass der Request-Body während des Uploads nicht mehr ankam und das Gateway das Warten aufgegeben hat. Das tritt fast nur bei sehr großen Kontexten in instabilen Netzwerken auf. Ein einfacher neuer Versuch gelingt meistens. Passiert es immer wieder, prüfe deinen Proxy wie in Schritt 2 und verkleinere die Anfrage dann mit /compact.

Timeouts in Codex

Das Idle-Timeout für Streams beträgt in Codex standardmäßig 300000 ms (5 Minuten). Wenn es auslöst, siehst du idle timeout waiting for SSE oder stream disconnected before completion, und automatische Wiederholungen zeigen Reconnecting... n/max. Diese Einstellungen gehören in die Provider-Tabelle:

[model_providers.wokey]
name = "Wokey"
base_url = "https://api.wokey.ai"
env_key = "WOKEY_API_KEY"
wire_api = "responses"
stream_idle_timeout_ms = 600000
stream_max_retries = 10

stream_max_retries steht standardmäßig auf 5 und request_max_retries auf 4; für beide gilt ein Maximum von 100. Die vollständige Einrichtung findest du in der Anleitung zur Codex config.toml.

Häufige Fragen

Wie lang ist das Standard-Timeout von Claude Code?

Zehn Minuten pro Anfrage, festgelegt über API_TIMEOUT_MS (Standard 600000). Erhöhe den Wert im env-Block von ~/.claude/settings.json, zum Beispiel "API_TIMEOUT_MS": "1200000".

Wie erkenne ich, ob es am Netzwerk oder am Modell liegt?

Sende mit curl -N eine Anfrage mit "stream":true. Kommen die data:-Zeilen einzeln an, ist der Pfad in Ordnung. Erscheint nach langem Warten alles auf einmal, puffert etwas dazwischen die Antwort, und auf diesem Pfad kommt es leicht zu Timeouts.

Was bedeutet ein 504 von Wokey?

Alle Timeouts von Wokey sind 504, und code zeigt, wo die Anfrage hängen blieb: upstream_gateway_timeout heißt, das Gateway des Upstreams lief ins Timeout, official_exit_first_byte_timeout heißt, der Upstream hat nie begonnen zu antworten, und provider_timeout heißt, die Verbindung zum Upstream brach ab oder lief ins Timeout.

Was ist wokey-transport-keepalive-v1 im Stream?

Das ist ein SSE-Kommentar, den Wokey schreibt, wenn eine Weile keine Ausgabe kam, damit zwischengeschaltete Systeme die Verbindung nicht trennen. Clients ignorieren ihn; siehst du ihn, steht die Verbindung, und das Modell arbeitet noch.

Wie ändere ich Timeouts in Codex?

Setze stream_idle_timeout_ms (Standard 300000) und stream_max_retries (Standard 5) in der Provider-Tabelle der config.toml.