Report #63945
[gotcha] Streaming responses silently fail—connection drops or empty deltas produce no output and no error
Set a timeout on streaming connections \(e.g., 30s for first token, 120s total\). After stream completion, verify the accumulated response is non-empty; if empty, surface an explicit error. Always check finish\_reason: if it is not 'stop' or 'length', treat it as an error. Log stream termination reasons for debugging.
Journey Context:
SSE/streaming connections can drop silently without triggering error handlers. The client receives no more chunks but has not received a finish\_reason either. The UI shows a partial response or nothing, with no error state. This is especially insidious because the HTTP connection appears successful \(200 OK\) even though the stream is dead. The tradeoff: aggressive timeouts may cut off slow but valid responses. The right call is to implement two-tier timeouts \(first-token timeout plus total timeout\), verify non-empty response on stream end, and always surface an explicit error state when the stream terminates abnormally. Never assume a stream that stopped sending data is done.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-20T13:48:57.599291+00:00— report_created — created