Timeouts and budgets
A workflow talks to the outside world, and the outside world can go quiet. So a run has several independent limiters: if one does not fire, the next stops a process that would otherwise hang forever, spending money as it goes.
Time
| What is capped | Default |
|---|---|
| A single node | 600 seconds |
| The whole run | From the plan: max_workflow_timeout_seconds (Free 120 s, Paid 900 s) |
| Waiting for a model | A budget of silence: every received chunk resets it |
The node ceiling is deliberately lower than the run ceiling: a stuck step should have a name. When the node ceiling fires, the error comes from a specific node and shows up in the history; when the run ceiling fires, the whole run dies without saying which step was to blame.
Tokens
An LLM node has a maximum answer length; the default is 8192 tokens. An explicit value always wins, including upwards: a long generation you asked for on purpose must not be silently clipped by a default. Zero means “no ceiling”.
Iterations and nesting
while_loop— a cap on body passes. Without it a mistake in the condition becomes an infinite loop.- Nesting depth — how many times a workflow may call a workflow (a composite,
wf_tool, an agent used as a tool). It guards against a graph calling itself. - Agent rounds — how many times an agent may go back to the model within one run. Rounds are what is counted: forty tool calls in a single response are one round.
When an agent’s call budget runs out the turn is not cut off: the allowed tools execute, the rest get a polite refusal, and the next round is declared final — a turn always ends with an answer rather than silence.
The plan
Concurrency is capped too: how many of an owner’s runs may proceed at once, and how many nodes within one run. A run that hits the limit waits in the queue instead of failing — see plan limits.
What next
- Run statuses — what a timed-out run looks like.
- Errors — how to keep a failure from taking the graph down.