Rubric
Contents — domains, guide and mocks

Escalation and ambiguity

CCAR-F 5.212 min read · checked 21 September 2026

Task statementDesign effective escalation and ambiguity resolution patterns

Proceed, ask, or escalate

What does the request need?
  • User asks for a human
    Escalate nowdon’t argue or retry first
  • Outside policy or authority
    Escalatewith a structured handoff
  • Several valid readings
    Ask or look it upone targeted question
  • Clear and within policy
    Proceedresolve it end to end
Check the hard triggers first. Ambiguity is resolved by asking or looking it up; it is not, by itself, a reason to escalate.

Escalation triggers that hold up

This task statement asks you to design escalation, which means deciding in advance what causes it. A trigger is good if it predicts that the agent cannot or should not finish the job on its own. Three hold up well. An explicit request for a human should be honoured straight away — the customer has told you what resolution they want. A policy gap or exception — a refund above the agent’s limit, a situation the policy does not cover, a request to override a rule — needs someone with authority, because the agent was never given it. And a genuine blocker — the agent has tried the available tools and cannot make progress — is the case Anthropic’s agent guidance describes when it says agents can pause for human feedback when they encounter blockers.

Two tempting triggers do not hold up. Sentiment measures how the customer feels, not how hard the problem is: an angry customer with a simple damaged-item claim needs a fast fix, while a calm customer asking for a contract exception needs a human. And the model’s own self-reported confidence is a number it produced, not a measurement checked against outcomes — it can be high on a wrong answer. (How to calibrate confidence properly is covered in 5.5.)

Triggers compared

Unreliable on their own

  • Negative sentiment score
  • Model says it is “not sure”
  • Conversation passed N turns
  • Customer used capital letters

Reliable triggers

  • Customer explicitly asks for a person
  • Action exceeds the agent’s authority
  • Policy is silent or contradictory
  • No progress after trying available tools

Write the triggers into the system prompt as explicit criteria, with the reason behind each and a few short examples of the boundary. Anthropic’s prompting guidance stresses both halves: be prescriptive about which actions need confirmation and which are safe to take autonomously, and explain why, because the reason lets the model generalise to cases your examples did not cover.

Escalation rules in the system prompt

Vague

Escalate to a human agent
if the customer is upset or
if you are not confident.

Explicit

Escalate when:
- the customer asks for a person
  (do it immediately);
- a refund exceeds $200, or the
  policy does not cover the case;
- tools fail and you cannot
  make progress.
Do NOT escalate only because the
customer is frustrated: acknowledge
it and resolve the issue if it is
within policy. Refund limits exist
because finance must approve them.
The vague version leaves the decision to mood. The explicit one names the triggers, the non-triggers and the reason.

Resolving ambiguity: look it up, then ask

Ambiguity is a different problem from escalation. A request is ambiguous when it has more than one reasonable reading and the readings lead to different actions. The first move is to reduce it with tools: Anthropic’s suggested proactive-agent prompt tells Claude to use tools to discover missing details instead of guessing. If the ambiguity survives — two customers match the name, “cancel my subscription” could mean one plan or all three — ask one targeted question. Do not pick the most likely reading with a heuristic when acting on the wrong one would be hard to undo.

SituationBetter moveWhy
Lookup returns several matching customersAsk for a second identifierActing on the wrong account is a privacy and money error
Missing detail the system already holdsLook it up with a toolAsking the user for data you have wastes their time
Two readings, both cheap and reversiblePick one and say whichA question costs more than an easy correction
Two readings, one destructiveAsk before actingThe cost of a wrong guess is not recoverable

How cautious to be is a design choice you state in the prompt. Anthropic’s prompting guide offers both ends: a snippet that tells Claude to infer the most useful action and proceed, and one that tells it to default to research and recommendations when intent is ambiguous. It also suggests asking before actions that are hard to reverse, affect shared systems, or could be destructive, while taking local, reversible actions freely.

Asking through the Agent SDK

In the Agent SDK, Claude asks clarifying questions by calling the built-in AskUserQuestion tool. The call arrives in your canUseTool callback, like a permission request; your application shows the multiple-choice questions and returns the user’s answers. Each call carries one to four questions with two to four options, and you should offer a free-text “Other” path, because the options will not always fit. If you restrict the agent with a tools list, include AskUserQuestion or it cannot ask at all.

Routing clarifying questions to your UIpython
async def can_use_tool(tool_name, input_data, context):
    if tool_name == "AskUserQuestion":
        answers = {}
        for q in input_data["questions"]:          # 1–4 questions per call
            # show q["question"] and q["options"] (2–4) plus a free-text "Other"
            answers[q["question"]] = await ui.ask(q)   # label, or the user's own text
        return PermissionResultAllow(updated_input={
            "questions": input_data["questions"],  # pass the originals back
            "answers": answers,
        })
    if is_destructive(tool_name, input_data):
        # Claude sees this message and can adjust its approach
        return PermissionResultDeny(message="Needs a supervisor. Summarise and hand off.")
    return PermissionResultAllow(updated_input=input_data)

options = ClaudeAgentOptions(
    tools=["Read", "Grep", "AskUserQuestion", "mcp__crm__lookup_customer"],
    can_use_tool=can_use_tool,
)

The handoff itself

An escalation is only as good as what the human receives. A human picking up a case should not have to read forty turns of transcript, and the customer should not have to repeat themselves. Have the agent produce a structured handoff at the moment it escalates — ideally through a dedicated tool whose input schema forces the fields — and tell the customer what will happen next. Anthropic’s customer-support use-case guide lists escalation efficiency among the success criteria to measure, alongside a guardrail that the agent should not make promises it is not authorised to make — both are easier to meet when handoffs are structured and triggers are explicit.

A handoff a human can act on

  1. Trigger firesexplicit request, policy gap, blocker
  2. Build handoffcustomer, issue, facts, attempts, ask
  3. Route to queueby reason and urgency
  4. Tell the customerwho, what next, by when

Traps the wrong answers are built from

Tempting but wrongDo this instead
Escalating based on a sentiment scoreEscalate on explicit requests, policy gaps, authority limits and blockers; acknowledge frustration and resolve.
Using the model’s self-reported confidence as the triggerUse observable conditions; calibrate any confidence signal against labelled outcomes (5.5).
Trying to talk a customer out of an explicit request for a humanHonour it immediately with a structured handoff.
Picking the most likely of several matching recordsAsk for a distinguishing identifier before acting.
Handing the human the raw transcriptPass a structured summary: customer, issue, facts, what was tried, what is needed.

You should now be able to

  • Define explicit escalation triggers and write them into the system prompt with reasons and examples.
  • Distinguish reliable triggers from sentiment and self-reported confidence.
  • Resolve ambiguity by looking up missing details first, then asking one targeted question.
  • Handle AskUserQuestion and approvals through canUseTool, knowing subagents cannot ask the user.
  • Design a structured handoff that lets a human act without rereading the conversation.

Practice questions

Original questions written for this lesson, in the exam’s style. Answer first, then open the reasoning — every option is explained, including why the wrong ones are tempting.

  1. Question 1

    A telecom support agent escalates to humans whenever a sentiment classifier scores the customer as “negative”. Human agents report that most escalated cases are simple billing corrections the bot could have fixed, while several complex contract disputes from polite customers were never escalated.

    What is the best redesign?

    1. ALower the sentiment threshold so fewer conversations count as negative.
    2. BEscalate on explicit requests, authority limits and policy gaps, with examples in the prompt.
    3. CHave the model rate its confidence from 1 to 10 and escalate below 7.
    4. DEscalate every conversation that mentions a contract or a bill.
    Show answer and reasoning
    1. AIncorrect. Adjusts how often the wrong signal fires; polite customers with complex cases still slip through.
    2. BCorrect. These triggers track whether the agent can resolve the case, which is what escalation is for.
    3. CIncorrect. Self-reported confidence is not measured against outcomes and can be high on wrong answers.
    4. DIncorrect. A keyword rule escalates the simple billing corrections too, recreating the flood.
  2. Question 2

    A bank’s support agent looks up a customer by name and date of birth and receives two matching accounts. The customer wants to cancel a standing order.

    What should the agent do next?

    1. AChoose the account with the most recent activity, since it is the likelier one.
    2. BEscalate to a human because the lookup was ambiguous.
    3. CCancel the standing order on both accounts to be safe.
    4. DAsk for an additional identifier, such as the last digits of the account number.
    Show answer and reasoning
    1. AIncorrect. A heuristic guess on an account action risks changing the wrong person’s money.
    2. BIncorrect. Tempting, but this is ambiguity the customer can resolve in one answer; no authority is missing.
    3. CIncorrect. Acts on an account the customer may not own — the least safe option.
    4. DCorrect. One targeted question removes the ambiguity before any irreversible action.
  3. Question 3

    A research subagent, spawned by a coordinator in the Agent SDK, finds that the user’s request “compare our Q3 numbers” could refer to two different fiscal calendars. The team wants the user to choose.

    What is the most appropriate design?

    1. AThe subagent calls AskUserQuestion directly so the user can pick the calendar.
    2. BThe subagent reports the ambiguity to the coordinator, which asks the user.
    3. CThe subagent picks the calendar used in the most recent report and continues.
    4. DThe subagent stops and returns an empty result so the coordinator retries it.
    Show answer and reasoning
    1. AIncorrect. The SDK documentation says AskUserQuestion is not currently available in subagents.
    2. BCorrect. Only the coordinator can reach the user; the subagent’s result should carry the open question.
    3. CIncorrect. A silent guess produces a confident, possibly wrong comparison with no trace of the choice.
    4. DIncorrect. An empty result hides why it stopped; the retry will hit the same ambiguity.

Sources

Drafted with AI assistance and checked against the sources above; expert review is in progress. Spotted an error? Tell us and it gets fixed, dated and listed on how this is written.