EXECUTION when an agent needs an explicit model, response limits, timeout boundaries, concurrency behavior, thinking settings, voice settings, or execution pipeline configuration.
Concept
EXECUTION is the agent-level configuration surface for runtime behavior. It does not decide whether a flow step is reasoning or deterministic. Step-level REASONING decides that. EXECUTION controls the environment the agent runs in: which model to use, how long model and tool calls can wait, how many iterations are allowed, and how concurrent messages are handled.
Use explicit settings when the default behavior is not enough for cost, latency, safety, or operational predictability. Keep settings minimal for simple agents. Add a setting only when you can explain why the value exists and how you will test it.
The parser reads top-level keys without regard to case or underscores. maxQueueDepth and max_queue_depth are the same key. max_iterations is an alias of max_reasoning_iterations.
Minimal working example
FLOW, so max_flow_iterations has no effect here. Read the note on that setting before you copy the value to an agent with a flow.
How it works
The compiler lowersEXECUTION into the compiled agent. The runtime reads the compiled values to bound model calls, tool calls, loops, and message handling. Time values use milliseconds.
escalation_recheck_after_tools, guardrail_builtins, and set_expression_failure are opt-in switches for escalation timing, guardrail expression variables, and failed SET expressions. The first two accept true or false. set_expression_failure accepts keep_text or unset. Any other value raises a warning.
max_flow_iterations counts every flow step transition in the session, and the count carries over between customer turns. When the count reaches the limit, the next transition ends the flow with FLOW_ITERATION_LIMIT_EXHAUSTED and the customer sees a generic failure message. A low value such as 12 ends a long conversation early. Leave this setting unset unless you need a hard ceiling, and set it well above the longest expected journey.
fallback_model compiles into the agent, but no runtime code in this release switches to it after a model error. Do not rely on it for failover. Plan model failover at the project level and test it.
Model selection
In a project without model restrictions, the runtime picks the model in this order: a deployment model override, thenmodels and model from EXECUTION, then the agent’s Model Config tab, then the project and workspace defaults.
When a project restricts models to a selected set, the runtime uses EXECUTION.model only if it matches exactly one selected project model. If it matches none or more than one, the runtime runs the project’s selected model instead. The platform records a model_access:dsl_model_fallback event with the reason DSL_MODEL_NOT_SELECTED, DSL_MODEL_AMBIGUOUS, or DSL_MODEL_BINDING_UNAVAILABLE. A model chosen for the agent in the Model Config tab takes priority over EXECUTION.model. Sampling values that you author in EXECUTION still apply to the selected model.
Common variations
Low-latency support agent
Use a smaller model, a low token budget, a shortllm_timeout, and a short tool_timeout when the agent handles high-volume support questions.
Careful enterprise agent
Use lower temperature, bounded reasoning iterations, and explicit timeout values when the agent answers regulated, contractual, or account-related questions.Per-operation models
Use themodels block to send cheap operations to a smaller model. Supported operation names are extraction, validation, tool_selection, response_gen, summarization, reasoning, coordination, and realtime_voice. An operation without an entry uses model.
Voice agent
Use a stricterllm_timeout, a voice_latency_target, and a voice block for voice or realtime agents. Test the experience in the voice channel, because a setting that works in chat can feel slow on a call.
Agent execution pipeline
Use nestedEXECUTION.pipeline only when you need agent routing, classification, short-circuiting, tool filtering, keyword veto, or intent bridging. That is a separate decision from choosing a base model or timeout.
Verification
- Validate the agent. Confirm that no
E564,E103,E560, orAGENT_LLM_TIMEOUT_*messages appear. - Test a normal model response and a slow model response against
llm_timeout. - Test a normal tool call and a slow tool call against
tool_timeout. If the tool sets its own timeout, test that value. - Confirm in the trace which model ran. In a restricted project, check for a
model_access:dsl_model_fallbackevent. - Send more messages than
max_queue_depthwhile the agent is busy. Confirm that the extra message fails withQUEUE_FULLinserialmode. - Load test concurrency settings before you use
parallelor high queue depths in production. - For an agent with a flow, run the longest journey end to end. Confirm that
FLOW_ITERATION_LIMIT_EXHAUSTEDdoes not appear.
Production readiness checklist
- Every non-default setting has an owner and a reason.
- Timeout values match the channel experience and downstream service limits.
llm_timeoutis within 1 to 120000.- Token limits are high enough for expected answers and low enough for cost control.
- Iteration limits prevent loops without cutting off valid flows.
max_flow_iterationsis above the longest journey across all turns. - Model names exist in the project, or the project selection is acceptable as the actual model.
- Failover is planned and tested outside
fallback_model. - Voice settings are tested with real turn-taking and latency expectations.