Skip to main content
Use this guide when an agent is becoming too broad, too vague, or difficult for customers, builders, and support teams to reason about.

Concept

An agent responsibility is a contract. It says what the agent owns, what it can do, what it must not do, what information it needs, and when it should stop, hand off, or escalate. Clear responsibilities make routing safer. A supervisor can only route well when every specialist has a distinct job. Limitations guide the model. For hard enforcement, pair them with tools, constraints, guardrails, permissions, and handoff boundaries.

Decision guide

Responsibility worksheet

Before writing the agent, answer these questions:

Minimal working example: account-security specialist project

This example is a project-level set. The responsibility boundary is visible in the account-security agent, and the handoff targets are defined in the same project. agents/account-security-agent.agent.abl
agents/billing-support-agent.agent.abl
agents/live-agent.agent.abl
The account-security agent owns identity verification and recovery. Billing and human assistance are outside that responsibility and are represented as handoff boundaries. Since neither HANDOFF entry above declares HISTORY, each target now receives the full conversation history by default (the current platform default when HISTORY is omitted). Also, because each WHEN here is a single-field comparison (intent.category == "billing"), an unset field simply makes the comparison evaluate false — no error, and the trace shows your literal source text.

How to write strong goals

Weak goal: “Help customers with account stuff.” Strong goal: “Verify identity and help users recover account access.” A strong goal names the business outcome, the user, and the scope. It should be narrow enough that an owner can say whether the agent succeeded.

How to write useful limitations

For regulated or high-risk actions, do not rely on limitations alone. Add hard boundaries through tools, constraints, guardrails, permissions, or human handoff.

When to split an agent

Split an agent when it has more than one business owner, more than one permission model, conflicting limitations, different tools by topic, or different success criteria by request type. Keep one agent when the same owner, policy, tools, data, and success criteria apply across the conversation. Use DELEGATE instead of splitting when the active agent only needs a subtask result and should keep the user conversation.

Verification

  1. Validate the account-security agent and its handoff targets together.
  2. Send: “I need to recover my account.” Confirm account_id and verification_method are gathered.
  3. Send: “I have a billing question.” Confirm the route goes to Billing_Support_Agent and passes account_id.
  4. Send: “I want to talk to someone.” Confirm the route goes to Live_Agent.
  5. Inspect trace/debug output for selected handoff target, passed context, and final active agent.

Production readiness checklist

  • Each specialist has one primary business owner and one primary outcome.
  • Required fields are gathered or otherwise populated before tools, handoffs, or completion need them.
  • Sensitive or regulated actions are enforced with tools, constraints, guardrails, permissions, or human handoff.
  • Out-of-scope intents have handoff routes.
  • Success, out-of-scope, human escalation, and failure paths have test utterances.
  • Trace/debug output shows clear ownership transitions.

Common mistakes

Troubleshooting