Skip to lesson

AnthropicClaude Certified Architect – Foundations2026-105.2 Design effective escalation and ambiguity resolution patterns

Route cases by authority and progress

Completed by the knowledge check

Learning objective

Define escalation triggers for explicit human requests, policy exceptions or gaps, and inability to make meaningful progress.

Core idea

A support agent needs a person when the customer requests one, when the requested decision exceeds the agent’s policy authority, or when the available workflow cannot move the case forward. Those are three different reasons for the same destination. A complicated case can remain autonomous if policy covers its steps and the tools can execute them.

The CCAR-F exam guide explicitly identifies these triggers. Treat them as the support application’s decision contract, rather than as behavior Claude automatically supplies. Your prompt describes the contract; your application supplies the handoff operation and verifies that the requested transfer happens.

How it works

Separate the three triggers

Explicit human request: The customer asks for a person, representative, or manager. The relevant evidence is that request, not the severity of the issue. The next action is handoff without first trying to solve it. See 5.2.2 for sequencing and failed transfers.

Policy exception or gap: The desired outcome requires an exception to a rule, or the supplied rules do not settle that outcome. Suppose a retailer permits returns within 30 days. A request to approve a return after that window requires authority the agent does not have. Suppose price adjustments cover the retailer’s own price reductions. A competitor price-match request falls into a gap unless another applicable rule settles it. These are illustrative retailer policies, not Anthropic product limits.

Distinguish explaining a rule from granting an exception. The agent can state the return window without approving a late return. If the customer seeks approval outside that rule, route the decision to an authorized person. Do not invent an exception because the request sounds reasonable.

Inability to make meaningful progress: The agent lacks a viable next step toward the requested outcome. Relevant tools may have failed after their permitted recovery, or the available tool set may not implement the necessary action. A successful lookup followed by an unavailable correction operation can still leave the case blocked. Tool success is not the same as progress toward resolution.

A missing identifier is often a recoverable information gap: ask for it rather than escalating immediately. A repeated lookup that produces the same unresolved candidates adds no useful evidence. See 5.2.6 for that distinction and 2.2.5 for bounded local recovery.

Give the handoff a real operation

For a Messages API implementation, define a client tool such as escalate_to_human in tools. This name is an application example, not an Anthropic built-in. Its description explains the three triggers and when ordinary resolution remains appropriate. Its input_schema describes the information your queue accepts.

In the Claude Agent SDK, wrap custom tools in a Model Context Protocol (MCP) server with createSdkMcpServer (TypeScript) or create_sdk_mcp_server (Python), then register it through mcpServers (TypeScript) or mcp_servers (Python). The registered server key and tool name form mcp__{server_name}__{tool_name}; a support server exposing this handoff uses mcp__support__escalate_to_human.

An illustrative schema can require reason with the values human_request, policy_exception, policy_gap, and blocked_progress, plus a short summary. These values belong to your application. They make the trigger explicit without treating a model-generated explanation as proof of authority. Pass known case context; do not require an order lookup merely to fill an escalation field.

Claude requests a client operation through a tool_use block. Your application executes the queue integration and returns a tool_result. The queue result, rather than the assistant’s promise, establishes whether a handoff was accepted. See 1.1.5 for execution-loop ownership and 1.5.3 for deterministic policy enforcement.

Put the rule in the right place

The Messages API’s top-level system parameter carries the standing escalation policy. Use explicit conditions rather than “escalate difficult cases.” The tool’s description reinforces the same conditions at the point of selection. Keep them consistent: a prompt that says “honor human requests” and a tool description that says “use only after exhausting solutions” teaches conflicting priorities.

The policy should also distinguish a final, explained denial from an unresolved request for an exception. Otherwise every request outside the standard policy can become either an unauthorized approval or a needless loop. Name who can make the exception and route that decision without promising its outcome.

Key distinctions and trade-offs

The following cases separate workload from the need for human authority:

EvidenceDecisionWhy
Three orders, all corrections covered and executableResolve autonomouslyMore steps do not remove authority
One calm competitor price-match request, policy silentEscalateThe agent lacks a governing rule
One routine refund, customer asks for a personEscalate immediatelyExplicit preference takes priority
Order service remains unavailable after bounded recoveryEscalateNo permitted step advances the case
Several customer records match a nameAsk for an identifierClarification can supply the missing evidence

A narrow trigger definition reduces needless transfers but must retain all three reasons. Optimizing only for autonomous completion encourages unauthorized exceptions. Optimizing only for low risk can send every multi-step case to a person. The contract asks whether autonomous resolution is wanted, authorized, and possible.

Architecture / decision scenario

A homeware retailer exposes custom lookup_order, process_refund, and escalate_to_human tools. Its policy permits late-delivery fee refunds, limits ordinary returns to 30 days, and covers only own-site price adjustments.

A customer requests corrections across three late deliveries. The agent confirms each eligible order and resolves the covered fees. The workload is substantial, but no escalation trigger applies. Another customer politely requests a competitor price match. The agent invokes escalate_to_human with reason: "policy_gap"; politeness does not supply policy authority.

A third customer asks for a representative about a routine return. The agent routes that request before an order lookup. A fourth case reaches a persistent order-service failure after the recovery budget defined by the application. The agent sends reason: "blocked_progress", preserving the unresolved order status instead of claiming that the customer has no order.

Review the actual tool traces. A transcript that sounds helpful but approves a price match or continues investigating after a human request violates the routing contract. Anthropic’s support guide treats escalation efficiency as recognizing and appropriately routing cases that need human intervention; evaluate that separately from customer sentiment.

Common exam traps

  • Treating the number of orders or reasoning steps as an escalation trigger.
  • Assuming a calm request is safe even when policy is silent.
  • Treating a tool failure as proof that the underlying record does not exist.
  • Requiring failed autonomous resolution before honoring a human request.
  • Approving an exception while calling it an ordinary policy interpretation.

What to remember

Route on explicit human preference, missing policy authority, or blocked progress. Keep clarification distinct from escalation when an answer can unlock the workflow. Implement handoff through an application-owned operation and verify its result; neither a prompt instruction nor a reassuring sentence completes the transfer.

Knowledge check

References