unslothai/unsloth · error · CodexTransportError
ChatGPT Codex generation failed{f' ({code})' if code else ''
Error message
ChatGPT Codex generation failed{f' ({code})' if code else ''}. What it means
The SSE stream delivered a terminal 'response.failed' or 'error' event: ChatGPT accepted the request but the generation itself failed server-side. The error code extracted from event.error.code (or response.error.code) is embedded in the message, e.g. 'ChatGPT Codex generation failed (server_error)'.
Source
Thrown at studio/backend/core/inference/openai_codex_client.py:710
else ("tool_calls" if saw_tool_call else "stop")
)
yield _chunk(
completion_id,
model,
delta,
finish,
responses_usage_to_chat(response_body.get("usage")),
)
emitted_terminal = True
break
elif kind in ("response.failed", "error"):
error = (
event.get("error")
or (event.get("response") or {}).get("error")
or {}
)
code = error.get("code") if isinstance(error, dict) else None
raise CodexTransportError(
f"ChatGPT Codex generation failed{f' ({code})' if code else ''}."
)
except httpx.HTTPError:
if cancel_event is not None and cancel_event.is_set():
return
raise
finally:
if cancel_task is not None:
cancel_task.cancel()
if not emitted_terminal and not (cancel_event is not None and cancel_event.is_set()):
raise CodexTransportError("ChatGPT stream ended before completion.")
View on GitHub (pinned to 203007d190)
Solutions
- Inspect the (code) in the message to route: server_error → retry with backoff; content policy → adjust prompt; rate_limit → back off
- Retry once for transient codes before surfacing to the user
- Reduce max output tokens or split the task if failures cluster on long generations
Defensive patterns
Strategy: try-catch
Try / catch
try:
collect(stream)
except CodexTransportError as exc:
if 'generation failed' not in str(exc):
raise
code = parse_failure_code(str(exc))
if code in ('server_error', 'rate_limit'):
return await retry_with_backoff(request)
surface_policy_or_permanent_error(code) Prevention
- Map failure codes to policies: retry transient codes, block prompts that trip content policy
- Cap max output tokens to reduce exposure to mid-generation failures
- Keep partial output only for display, never treat it as a completed generation
When it happens
Trigger: Streaming a generation that dies mid-completion; the endpoint emits event: response.failed or a top-level error event. Code values identify the cause (server_error, content_policy_violation, rate_limit, etc.).
Common situations: Prompt or output tripping content policy; upstream capacity errors during peak load; overly long generations hitting server limits; tool-heavy requests failing on the server.
Related errors
- ChatGPT Codex request failed ({response.status_code}).{suffi
- ChatGPT returned a malformed stream.
- ChatGPT stream ended before completion.
- {path}: not valid JSON: {exc}
- Generating at {w}x{h}{batch_note} needs about {total / 1024:
AI-assisted analysis of unslothai/unsloth@203007d190 (2026-08-15).
Data as JSON: /api/errors/5fa6eef7a60ffaa3.
Report an issue: GitHub.