Slow work in DataMind Oda is bounded: a step that can stall carries a time limit, and when it passes that limit Oda receives a timeout in place of the step's result, then decides what to do next. This page is the reference for those limits: where each one comes from, what a timeout reports, and how a limit's value is checked. What a timeout looks like while you follow a task is on Repeated steps and tool timeouts.
TOOL_TIMEOUT. A call that reaches the page reader with no tool budget above it reports the reader's own code instead: WEB_FETCH_TIMEOUT.| Code | What fired |
|---|---|
TOOL_TIMEOUT | A tool's call budget. The text says it timed out and how long it waited, like timed out after 50ms. |
BASH_TIMEOUT | A shell step's own time limit. The reason reads like BASH_TIMEOUT after 100ms: the kind of timeout, then the limit that fired. |
WEB_FETCH_TIMEOUT | The page reader's own backstop, on a call that ran without a tool budget above it: web fetch timed out. |
LLM_STREAM_IDLE_TIMEOUT | A streaming reply that went quiet past the route's Stream idle timeout (Provider route settings reference). |
must be a positive finite number.UTC or an IANA name in Area/ Location form and answers the platform's canonical spelling, so an alias is never what gets stored.CST or GMT+8, single-segment names such as Asia, lower-case utc, and names the platform does not support.session/ invalid-time-zone where a message carried the value, and subagent/ invalid-time-zone for a subagent continuation. How Oda reads time while it works is on Time and terminal context.Each tool that can stall carries its own budget; web search and page reading carry 30 seconds each by default. Behind the page reader sits a second backstop, a resource guard rather than the budget the call is judged by: a call through the web tools is judged by the tool's budget, and a call that reaches the reader with no budget above it is judged by the backstop.
TOOL_TIMEOUT is a tool's call budget; BASH_TIMEOUT is a shell step's own time limit; WEB_FETCH_TIMEOUT is the page reader's backstop, seen when a call ran without a tool budget above it; and LLM_STREAM_IDLE_TIMEOUT is a streaming reply that went quiet. The code travels with the timeout text, for example timed out after 50ms.
No. There is no zero setting that disables a timeout: zero and negative values are refused. A limit is either left out, so the tool's own default applies, or set as a positive, finite number.
Left out, the limit falls back to the tool's own default. Set above its maximum, it is capped at the maximum.
No. The stream idle watch runs only while a step waits for the next piece of a streaming reply: as long as pieces keep arriving, the wait goes on. It fires when the reply goes quiet, not when it runs long.
The report follows whichever reason arrived first. A reason that arrives after the first one is already recorded does not replace it.
UTC or an IANA name in Area/ form, such as Europe/; the accepted value is kept in the platform's canonical spelling. Blank or padded values, abbreviations such as CST or GMT+8, single-segment names such as Asia, lower-case utc and names the platform does not support are refused, and a refusal shows as an invalid-time-zone error.
No wait is longer than 2,147,483,647 ms, the largest delay that can be scheduled. A value above a limit's own maximum is capped at that maximum.