MULTI_INTENT: section lets the agent detect, triage, and dispatch those intents instead of silently dropping secondary requests.
Concept
When a user message contains more than one intent, ABL can detect the individual intents, assess their relationships, and handle them according to a configurable strategy. TheMULTI_INTENT: section is a top-level ABL block available on both AGENT: and SUPERVISOR: declarations.
The system uses three layers to decide multi-intent behavior:
- Agent-level — the
MULTI_INTENT:section in the agent’s ABL. - Project-level — the project runtime configuration (set in Studio or via API).
- Platform defaults — built-in fallback values.
- independent — intents can be handled in any order with no dependency between them.
- dependent — later intents require results from earlier ones.
- ambiguous — the system cannot determine the relationship.
auto strategy.
Minimal working example
customer_id and account_id variables passed via CONTEXT: pass: must be gathered, set from runtime context, or populated by a tool result before the handoff executes. These are project-local assumptions — replace them with the actual variable names your agents produce.
When history: is omitted on a HANDOFF, the child agent receives the full parent conversation history (the current platform default is full).
How it works
- The agent receives the user message and multi-intent detection runs as part of the NLU pipeline.
- Detected intents are filtered by
confidence_threshold— only intents above the threshold are considered. - The number of considered intents is capped at
max_intents. - The NLU layer assesses the relationship between the intents (independent, dependent, or ambiguous).
- The
strategy(orautoresolution based on the relationship assessment) determines how intents are dispatched. - For
primary_queueandsequential, queued intents are surfaced after the current intent completes. Queued intents expire afterqueue_max_age_msmilliseconds.
MULTI_INTENT properties
Strategy reference
primary_queue (default)
Handle the highest-confidence intent immediately and queue the rest. After the primary intent completes, the agent surfaces queued intents one by one for confirmation. The user can accept, decline, or let them expire.sequential
Execute detected intents one at a time in authored or detected order. Context from earlier intents carries forward. Use when later intents depend on earlier results — for example, authenticate first, then process payment, then send confirmation.parallel
Fan out to sub-agents simultaneously. Only available for supervisor agents that route to independent child agents. The runtime enforces safety:- If the agent is not a supervisor,
paralleldowngrades tosequential. - If the relationship between intents is
dependent,paralleldowngrades tosequential. - If the relationship is
ambiguous,paralleldowngrades todisambiguate.
disambiguate
Present detected intents to the user and ask which to handle first. The user selects by number or by exact intent name. The disambiguation prompt text is customizable.auto
Let the model decide the strategy at runtime based on the assessed relationship between intents:- independent intents on a supervisor resolve to
parallel; on a non-supervisor, they resolve tosequential. - dependent intents resolve to
sequentialregardless of agent type. - ambiguous intents resolve to
disambiguate.
Customizing user-facing prompts
The disambiguation and queue-surfacing prompts can be customized through theMESSAGES: block:
Verification
- Parse and compile the ABL to confirm there are no errors or warnings.
- Send a test utterance that contains two or more intents covered by your
INTENTS:orHANDOFF:conditions. - Inspect traces for
multi_intent_plan_builtto confirm the detected strategy and targets. - For
primary_queue, check formulti_intent_queue_surfacedtraces when the primary intent completes. - For
disambiguate, check formulti_intent_disambiguate_choicetraces. - For
parallel, check formulti_intent_parallel_executedtraces. - Confirm that a single-intent utterance bypasses multi-intent handling and routes normally.
- Test a message where all intents fall below
confidence_thresholdto verify fallback behavior.
Production readiness checklist
- Every specialist route has a clear owner and a concise context summary.
- Deterministic conditions use declared, gathered, tool-result, runtime, or returned fields.
- Semantic conditions are quoted as natural-language
WHENtext. - Temporary child agents (with
RETURN: true) produce every field mapped inON_RETURN. - Fallback behavior is explicit and does not hide missing intent coverage.
max_intentsis set to a value that matches realistic customer behavior (typically 2-5); values above 5 may degrade conversation quality.confidence_thresholdis tuned to avoid false positives from low-confidence secondary intents.queue_max_age_msis set to a reasonable session window (default 600,000 ms = 10 minutes; maximum 3,600,000 ms = 1 hour).- For
parallelstrategy on a supervisor, confirm all target agents can operate independently. - Consider setting
unknown_relationship_strategytosequentialordisambiguateif safety is more important than speed. - If using
autostrategy, test with messages that produce each relationship type (independent, dependent, ambiguous). - Review and customize disambiguation and queue prompts via
MESSAGES:for your brand voice.
Common mistakes
Troubleshooting
Related articles