Every run ends with a termination reason — an explicit code stating how it finished. Runs never degrade silently; if something stopped a run, the reason names it.
The codes
| Reason | Meaning |
|---|---|
completed | Finished normally with a final answer |
max_steps_exceeded | Hit the overall step ceiling before answering |
transfer_limit_exceeded | More transfers attempted than the cap allows |
delegation_limit_exceeded | More successful delegations than the cap allows |
delegation_failed | A delegation could not be completed |
route_forbidden | Handoff targeted an agent not in the caller's allowed list — or tried to transfer to a delegation-only cross-agent target |
target_not_found | Handoff targeted a sub-agent that no longer exists in the design |
content_filter_blocked | Content-safety filtering rejected a message |
remote_dispatch_failed | A cross-agent call failed even after retrying |
agent_cycle_detected | A chain of agent-to-agent calls looped back on itself |
max_agent_hops_exceeded | A cross-agent chain went deeper than the hop limit |
ambiguous_handoff | Routing intent unresolvable even after self-correction retry |
orchestration_failed | An unexpected internal error outside the specific cases above |
execution_canceled | Cancelled by a client disconnect or an operator |
Reading them as design feedback
Most non-completed reasons point at the routing graph rather than at the model:
transfer_limit_exceeded→ usually an oscillating graph, or transfer-first authoring where delegation was appropriatemax_steps_exceeded→ graph too complex for the budget, or a budget set too lowroute_forbidden→ an allowed-targets list that does not match the handoffs the instructions encourageambiguous_handoff→ two sub-agents with overlapping responsibilities
Independent limits
Worth stating plainly: running out of any one limit ends the run, not just the overall step count. Transfers and delegations have separate caps, and cross-agent chains are additionally bounded by hop depth and cycle detection. They are not one shared budget.