Timeouts, continuation, cancel¶
Related API¶
CodexClient.chat_once(...)CodexClient.chat(...)CodexTurnInactiveErrorChatContinuationCodexClient.cancel(...)
Request timeout vs inactivity timeout¶
- request timeout: JSON-RPC request/response envelope timeout
- inactivity timeout: per-turn "no new matching events" timeout
turn_timeout is intentionally not used.
Continuation flow¶
When a turn goes inactive, APIs raise CodexTurnInactiveError with a
continuation token.
continuation = None
while True:
try:
if continuation is None:
result = await client.chat_once("Do a long task")
else:
result = await client.chat_once(continuation=continuation)
break
except CodexTurnInactiveError as exc:
continuation = exc.continuation
Continuation is tied to in-memory session state in the same client instance.
Continuation constraints¶
When continuation=... is used, do not pass:
textthread_idusermetadatathread_configturn_overrides
Cancel semantics¶
Use cancel(continuation) to interrupt a running turn and drain unread data.
cancelled = await client.cancel(exc.continuation)
print(cancelled.was_interrupted, len(cancelled.steps), len(cancelled.raw_events))
cancel(...) cleans internal turn state so the thread can be reused safely.