2.2 Standard and Custom Topics (Subagents)
Key Takeaways
- Beginning in April 2026, Salesforce calls agent topics subagents, with no change in functionality.
- A subagent includes a name, a 1-3 sentence description, reasoning instructions, reasoning actions, and action definitions.
- The Agent Router compares recent conversation history with subagent names and descriptions to choose the best subagent.
- Adding a subagent from the asset library adds an editable copy; later edits in the asset library don't sync to that copy.
- A custom subagent created inside an agent in Agentforce Builder is available only to that agent version.
2.2 Standard and Custom Topics (Subagents)
Quick Answer: A subagent (called a topic in the Spring '26 exam guide and in older docs) is one job the agent can do. It has a name and description that drive classification, reasoning instructions that control logic and guide the LLM, and actions that are its tools. Use standard subagents from the asset library for common jobs such as escalation, off-topic handling, and customer verification. Create custom subagents for jobs specific to your business.
Anatomy of a Subagent
| Part | What it contains | How it's used |
|---|---|---|
| Name | Usually 2-3 plain-language words, such as Order Management | Classification and references (@subagent.Order_Management) |
| Description | 1-3 sentences describing the job and the requests that should trigger it | The Agent Router compares it with the conversation to pick the best match |
| Reasoning instructions | Agent Script logic plus natural-language prompts | Resolved into the prompt sent to the LLM |
| Actions available for reasoning | References to agent actions and utilities (transition, set variables, escalate), with optional filters and follow-up actions | Tools the LLM may choose during reasoning |
| Action definitions | Names, descriptions, inputs, outputs, and targets of all actions assigned to the subagent | Make actions available to reference. Visible in Script view, not Canvas view |
Subagents keep the agent focused. The LLM sees only the current subagent's resolved instructions and reasoning actions, not every tool in the org.
How Classification Uses Descriptions
When you create an agent, a special subagent called the Agent Router becomes the starting subagent. Transitions to every subagent are added to its reasoning actions. The agent compares the recent conversation, including the latest message, with the names and descriptions of those subagents and selects the best match.
You can customize routing:
- Add logic, actions, and variables to the Agent Router to drive classification.
- Exclude a subagent from classification with a filter.
- Remove a subagent's reference from the Agent Router so it's reachable only by transitions from other subagents. For example, a "Refund Approval" subagent could be reachable only from "Order Management."
- Define a different starting subagent, or remove the Agent Router entirely if you control routing another way.
Writing a strong description
| Weak description | Strong description |
|---|---|
| "Handles customer questions." | "Answers questions about order status, delivery dates, tracking numbers, and changes to shipping addresses for existing orders." |
| "Billing." | "Explains invoice charges, payment due dates, and payment methods, and helps customers update a saved card. Doesn't handle refunds." |
Overlapping descriptions cause inconsistent routing. If two subagents both claim "payment problems," the classifier may flip between them.
Standard Subagents
Standard subagents come from the asset library (Setup → Agentforce Assets) and from agent templates. They're prebuilt examples for common business use cases. Ones that appear in Salesforce documentation and default templates include:
| Standard subagent | Job |
|---|---|
| Agent Router | Special starting subagent that classifies and routes each message |
| Off Topic | Politely redirects requests outside the agent's purpose without answering them |
| Ambiguous Question | Asks the user to clarify requests that are too vague to route |
| Escalation | Transfers the conversation to a human through the connection's outbound Omni-Channel flow |
| Customer Verification / Service Customer Verification | Verifies identity and stores the verified ID in VerifiedCustomerId |
| General FAQ | Answers general questions, typically with the Answer Questions with Knowledge action and a Data Library |
| Case Management | Creates and manages cases, for example when escalation isn't possible |
Key behaviors of the asset library:
- Adding a subagent from the asset library adds a copy to your agent. You edit the copy, and changes apply only to that agent version.
- Changes to the asset library version don't sync to copies already in agents. Add the updated subagent again to pick up changes.
- You can't delete a standard subagent from the asset library. You can delete custom ones.
- After adding a standard subagent, review and customize its instructions, reasoning actions, and underlying flows or prompt templates.
Custom Subagents
Create a custom subagent when no standard subagent covers the job, such as warranty registration on a custom object or a return process with company-specific rules.
| Where you create it | Availability | Best for |
|---|---|---|
| Inside an agent in Agentforce Builder (Canvas view, Script view, or with the Agentforce assistant) | Only that agent version | A job unique to one agent |
| In the asset library (Setup → Agentforce Assets → Subagents → New Subagent) | Can be added to many agents and versions | Reusable jobs shared across agents |
Subagents created in the asset library currently follow the legacy builder style (classification description, scope, instructions), but they can be added to agents in either builder and customized afterward. If you rename a custom subagent in an agent, update any references to it in the Agent Router or other subagents.
Best Practices for Subagent Instructions
Salesforce's instruction guidance for agents emphasizes:
- Put sensitive or deterministic business rules into logic or actions. Instead of "Don't refund an order unless it was within 30 business days," build that check into a flow-based action or Agent Script logic.
- Keep instructions minimal. Start with the fewest needed, add one at a time while testing, and remove overlap or contradictions. Salesforce notes that each legacy instruction field supports up to 131,072 characters, but shorter usually performs better.
- Give business context. Define terms in plain language, such as "Promo codes apply discounts at checkout; registration codes register products for warranty."
- Provide decision criteria between similar actions. "If the customer can access their email, use Email Password Reset; otherwise use Security Question Verification."
- Be explicit about sequence. In the legacy builder, agents don't follow separate instruction fields in order, so use one instruction with "First… Then… Finally…". In the new builder, use logic when order truly matters.
- Use absolutes deliberately and language consistently. Say "customer" everywhere rather than mixing "client" and "customer," and name actions explicitly.
Scenario Guide
| Scenario | Best answer |
|---|---|
| Customers ask about the weather on a retail support agent | Rely on the Off Topic subagent to redirect |
| "I need help" with no detail | Ambiguous Question asks for specifics |
| A job only one agent performs, using a custom object | Custom subagent created in that agent |
| Five business-unit agents all need the same "Loyalty Balance" job | Custom subagent in the asset library, added to each agent |
| A refund subagent should never be chosen directly by classification | Remove it from the Agent Router's actions and transition to it from Order Management |
An admin adds the standard Escalation subagent from the asset library to an agent and edits its instructions. Later, someone updates the Escalation subagent in the asset library. What happens to the agent?
Which subagent field does the Agent Router primarily compare with the conversation when classifying a user's request?
A Refund Approval subagent should run only after the Order Management subagent confirms eligibility, never directly from classification. What is the best design?
When should you create a custom subagent in the asset library instead of inside a single agent?