10.1 When a Multi-Agent Architecture Is Appropriate
Key Takeaways
- In Multi-Agent Orchestration, an orchestrator agent handles the conversation and delegates to connected subagents, which are separate Agentforce agents in the same org.
- Handoff mode (the default) lets the connected subagent respond directly with lower latency, while supervisor mode has the orchestrator synthesize responses and can call multiple agents per turn.
- Salesforce describes multi-agent orchestration as appropriate when a single agent's instructions span many domains, routing keeps breaking, or separate business-unit agents must work together.
- Supported combinations are Service-to-Service, Employee-to-Employee, and Employee orchestrator with Service connected subagents, with one level of delegation.
- Orchestrator agents have a 120-second timeout and connected subagents a 30-second timeout, and cross-org or external non-Agentforce agents aren't supported by this feature.
10.1 When a Multi-Agent Architecture Is Appropriate
Quick Answer: Use a multi-agent architecture when one agent isn't enough. Signs include instructions that span many domains, routing that keeps breaking, or separately owned agents that must collaborate while customers use one front door. In Salesforce's Multi-Agent Orchestration for Agentforce, an orchestrator agent routes and delegates to connected subagents, which are complete, separate agents in the same org. Choose handoff mode when a specialist should talk to the user directly, and supervisor mode when the orchestrator must combine results from several agents.
Signs You've Outgrown a Single Agent
Salesforce describes scenarios that point to multiple agents:
- A great customer service agent now needs a new domain, such as field service.
- Several business units already run agents that now need to talk to each other.
- An instructions block covers many domains, and routing keeps breaking.
Without orchestration, users on a single chat channel must pick among a growing list of agents and repeat themselves when switching. Engineers must untangle complex routing when handoffs fail. Orchestration gives users a single front door with shared context.
When a single agent is still the better choice
| Situation | Better design |
|---|---|
| A few related jobs in one domain, owned by one team | One agent with several subagents |
| The agent only needs data or operations from an external system | Actions (flow, Apex, API) or MCP tools (section 10.2) |
| An external app needs to talk to one agent | Agent API |
| Latency is critical and the scope is simple | Single agent. Multi-agent latency is intrinsically higher |
Orchestrator Agents and Connected Subagents
| Role | What it is |
|---|---|
| Orchestrator agent | Handles the initial conversation, then routes and delegates tasks. It can route to any mix of its own subagents and connected subagents |
| Connected subagent | An entirely separate agent in the org that the orchestrator uses like a subagent. It has its own expertise, identity, and subagents, and can be built from the Employee or Service agent template |
| Standard subagent (for contrast) | A localized job inside one agent's definition, containing instructions and actions |
| Reference agent | The agent a connected subagent is based on. Settings such as its description can be overridden in Canvas |
Handoff Mode vs. Supervisor Mode
| Handoff mode (default) | Supervisor mode | |
|---|---|---|
| Who responds to the user | The connected subagent responds directly. The orchestrator sees the response but doesn't synthesize it | The orchestrator synthesizes the connected subagent's response and replies |
| Routing | Transition: @utils.transition to @connected_subagent.X. HyperClassifier preferred (required for handoff to work correctly) | Tool call: @connected_subagent.X in reasoning actions, routed by the connected subagent's description |
| Latency | Lower | Higher, because of an extra LLM call to synthesize |
| Multiple agents per turn | No, one handoff per turn | Yes |
| Post-response chaining | after_response block on the connected subagent (transition, if/then, set) | Not applicable; the orchestrator stays in control |
| Variable mapping | inputs: block, plus set in after_response | inputs: block on the connected subagent |
| Best for | Specialists that run end-to-end conversations, such as a billing or HR agent | Jobs where results from multiple agents must be combined before replying |
Agent Script for Connected Subagents
When you connect an agent as a subagent, the builder adds a connected_subagent block. Context moves between agents only through the inputs mapping:
connected_subagent CRM_Agent:
label: "CRM_Agent"
description: "Use this tool for any request about CRM information"
loading_text: "Fetching CRM information..."
inputs:
EndUserLanguage: string = @variables.EndUserLanguage
currentRecordId: string = @variables.currentRecordId
start_agent agent_router:
model_config:
model: "model://sfdc_ai__DefaultEinsteinHyperClassifier"
reasoning:
actions:
go_to_crm: @utils.transition to @connected_subagent.CRM_Agent
Handoff-mode chaining with after_response:
after_response:
if @variables.email_needed:
transition to @connected_subagent.EmailAgent
Patterns include always chain, conditional chain, multi-branch, set the state then chain, and pipeline. Anything written after a transition to is silently skipped, so set variables before the transition. Missing inputs mapping is the usual dataflow error, because context doesn't flow automatically.
Escalation in Multi-Agent Solutions
A connected subagent's delegate_escalation switch decides whose escalation flow runs:
| Scenario | What happens |
|---|---|
| User asks for a human at the top level, or the orchestrator hits a global escalation rule | The orchestrator's escalation flow runs |
User asks for a human deep inside a specialist, or the specialist hits its own policy, and delegate_escalation: True | The connected subagent's escalation flow runs |
| The connected subagent has no escalation routing or subagent | The request is surfaced to the orchestrator's routing (cascading handoff) |
| All queues are offline, or the escalation flow fails or isn't defined | An AI fallback message is generated |
Authentication and Supported Combinations
| Orchestrator | Connected subagent | Runs as |
|---|---|---|
| Service agent | Service agent | The orchestrator's session user, not the subagent's own agent user. Guest users are supported |
| Employee agent | Employee agent | The logged-in user (who must be logged in first) |
| Employee agent | Service agent | The Service agent's own agent user |
| Service agent | Employee agent | Not supported in this release |
Considerations and Limits
- Same org only. Orchestration isn't supported across multiple Salesforce orgs or with external non-Agentforce agents.
- One level of delegation from orchestrator to connected subagents.
- Timeouts: orchestrator 120 seconds (including delegation and synthesis); connected subagents 30 seconds.
- No enforced limit on connected subagents. Salesforce's testing found no latency impact with one orchestrator and 8 connected subagents, each with 8 subagents.
- Agentforce Voice isn't a supported configuration for this release.
- Variable mapping is one-directional, from orchestrator to connected subagents.
- Connect only active agents. New agent versions must be activated to be available, and a connected subagent can't be deactivated.
- Legacy-builder agents must be upgraded to the new builder first.
- File-based agents (for example SDR or Analytics) aren't supported in this release.
Design and Testing Tips
- Pick the pattern first: handoff or supervisor.
- Make connected subagents distinct. Overlapping descriptions cause inconsistent routing, and descriptions work like function signatures with explicit scope.
- Design for reuse across business domains such as Sales, HR, and Finance.
- Minimize latency: prefer handoff mode and streaming (both defaults), use the HyperClassifier for routing, and avoid redundant groundedness checks.
- Test each agent in isolation, then run end-to-end integration tests. Testing Center's Agent Handoff Evaluation column shows whether the expected handoff occurred.
A company's single support agent now covers billing, returns, technical support, and field service, and its routing has become unreliable. Each area is owned by a different team. Which architecture is most appropriate?
An orchestrator must gather order details from one connected subagent and warranty eligibility from another, then give the customer one combined answer. Which routing mode fits?
Which agent combination does Salesforce document as not supported for Multi-Agent Orchestration in this release?
In handoff mode, a developer writes transition to @connected_subagent.EmailAgent and then set @variables.step = "email" in an after_response block. The variable is never set. Why?