2 packs: 15% off with code BUY2. 3 or more: 20% off with code BUY3.

Free Anthropic CCAR-F Practice Questions

34 free Anthropic CCAR-F practice questions from the CertStash pack of 134, each with the correct answer and a full explanation. The rule is the same for every exam: ten free on the product page, 34 free here, all 134 in the pack, and each step includes the one before it.

Question 1

The synthesis agent receives summarized findings from the web search and document analysis agents, then passes a consolidated summary to the report generator. During testing, you discover the generated reports make factual claims without proper citations: the report generator cannot attribute statements to their original sources because that metadata was lost during the summarization steps. What’s the most effective approach to ensure proper source attribution in the final reports?

  1. Have the report generator query the web search agent to re-locate sources for claims in the final report.
  2. Have each agent output structured data separating content summaries from source metadata (URLs, document names, page numbers).
  3. Skip summarization and pass full raw outputs from web search and document analysis directly to the report generator.
  4. Instruct the synthesis agent to embed source references inline within its summary text using a consistent citation format.
Show answer and explanation

Correct answer: B. Have each agent output structured data separating content summaries from source metadata (URLs, document names, page numbers).

Attribution disappears here because each summarization step compresses findings into prose and drops the record of which source each statement came from. When every agent outputs structured data that keeps content summaries in one field and source metadata (URLs, document names, page numbers) in separate fields, the metadata survives each compression step instead of depending on a summarizer to restate it. The report generator then receives citations as data it can render directly, which fixes the root cause rather than trying to recover attribution after it has been lost.

Why the other options are wrong

  • A. Re-locating sources after the report is written is a guess at which source supported each claim, adds extra search calls, and leaves the summarization steps still discarding metadata.
  • C. Passing full raw outputs floods the report generator's context with far more text than it needs and abandons the summarization that keeps later stages focused.
  • D. Inline references added at the synthesis stage cannot restore metadata that earlier summarization steps already dropped, and free-text citations can still be lost in later rewriting.

Question 2

After the web search agent finds 25 sources (120K tokens of raw content), the document analysis agent extracts key insights (15K tokens), and the synthesis agent produces a coherent narrative draft (3K tokens), the coordinator must pass context to the report generation agent for the final output with proper source citations. What context-passing strategy provides the best balance of completeness and efficiency?

  1. Pass the full accumulated context from all prior agents.
  2. Pass the synthesis draft along with a structured source index that maps key claims to their source URLs and relevant excerpts.
  3. Pass only the synthesis draft and have a separate post-processing pipeline match claims to sources and insert citations after the report is generated.
  4. Pass a condensed summary of all prior stages that preserves the main findings and attributes them to sources by name only.
Show answer and explanation

Correct answer: B. Pass the synthesis draft along with a structured source index that maps key claims to their source URLs and relevant excerpts.

The report generator needs two things: the narrative to turn into a report and enough provenance to cite it accurately. The 3K-token synthesis draft supplies the narrative, and a structured source index mapping key claims to their source URLs and relevant excerpts supplies citation-ready provenance, without forcing the generator to wade through the 135K tokens of raw content and extracted insights. Carrying claim-to-source links forward as structured data is what keeps citations accurate after summarization, so this strategy keeps completeness where it matters while keeping the context lean.

Why the other options are wrong

  • A. Passing the full accumulated context buries the claims that need citing among more than 135K tokens of raw material, raising cost and making it harder for the generator to focus.
  • C. Matching claims to sources after generation means reconstructing links that were never carried forward, so citations can attach to the wrong source or be missed entirely.
  • D. Attributing findings by source name only gives the report no URLs or excerpts, so citations cannot be specific or checked.

Question 3

Your multi-agent research pipeline crashed after processing 12 of 28 documents. The web search agent had identified relevant sources, the document analyzer had partially completed extraction, and the synthesizer had begun pattern identification. You need to resume processing without repeating work or losing fidelity of prior findings. What state management approach best balances information fidelity with context efficiency when restoring agent state?

  1. Have each agent persist a structured export to a known location. On resume, the coordinator loads the manifest and injects relevant state into agent prompts.
  2. Index all agent outputs in a shared vector store. When resuming, each agent queries the store using semantic search to retrieve relevant prior findings.
  3. Have each agent maintain its own persistent state file and reload it independently at the start of each session.
  4. Persist the coordinator’s conversation log containing all task delegations and responses, providing this to agents when resuming.
Show answer and explanation

Correct answer: A. Have each agent persist a structured export to a known location. On resume, the coordinator loads the manifest and injects relevant state into agent prompts.

Combining structured state exports with a coordinator-loaded manifest is the standard recovery pattern for a multi-agent pipeline. Each agent writes its progress (sources found, documents already extracted, partial synthesis patterns) to a known location in a structured format, so nothing depends on memory that was lost in the crash. On resume the coordinator reads the manifest, sees which of the 28 documents are done, and injects only the relevant state into each agent's prompt before dispatching the remaining work. Fidelity is preserved because state is stored explicitly, and context stays efficient because each agent receives only what it needs.

Why the other options are wrong

  • B. Semantic search returns whatever looks similar to a query, so agents can miss prior findings or pull in unrelated ones, which undermines exact resumption.
  • C. Agents reloading their own files independently leaves the coordinator unaware of what each agent completed, so it cannot sequence the remaining work or prevent duplication.
  • D. Replaying the coordinator's full log floods agents with every delegation and response instead of the specific state they need, and it holds no clean record of partially completed extraction.

Question 4

You’ve configured the system so that all four subagents have access to the complete set of 18 tools. During testing, agents frequently call tools outside their specialization: the synthesis agent attempts web searches, and the report generator tries to analyze documents. What is the primary cause of this poor tool selection behavior?

  1. Choosing from 18 tools instead of 4-5 relevant ones increases decision complexity beyond reliable selection thresholds.
  2. The tool definitions consume too much context window space, leaving insufficient room for task content.
  3. The agents’ role descriptions in their system prompts conflict with having access to tools outside that role.
  4. The coordinator cannot track which capabilities each subagent has, leading to misrouted tasks.
Show answer and explanation

Correct answer: A. Choosing from 18 tools instead of 4-5 relevant ones increases decision complexity beyond reliable selection thresholds.

Giving an agent too many tools, such as 18 instead of the 4 or 5 its role needs, degrades tool selection reliability because every decision becomes a choice among many more candidates. The symptoms match this exactly: the synthesis agent reaches for web search and the report generator tries to analyze documents because those tools are available and look plausible, and agents with tools outside their specialization tend to misuse them. The fix is scoped tool access, giving each subagent only the tools for its role, which shrinks the decision space and restores reliable selection.

Why the other options are wrong

  • B. The symptom is choosing the wrong tool, not running out of room for task content, and nothing in the scenario points to the context window being exhausted.
  • C. The role descriptions state the intended specialization; the off-role calls happen because the agents have off-role tools available to pick, not because the prompts contradict anything.
  • D. The coordinator is not misrouting tasks; the subagents themselves choose tools outside their role after receiving correctly routed work.

Question 5

The coordinator provides detailed step-by-step instructions to the web search subagent, specifying exact search queries, source priorities, and date filters. Production monitoring reveals three issues: (1) the subagent reports “insufficient results” rather than trying alternative approaches when pre-specified searches fail, (2) research quality drops for emerging topics that don’t match expected patterns, and (3) the subagent rarely surfaces valuable tangential sources. What’s the most effective way to improve subagent adaptability?

  1. Implement a topic classification step where the coordinator categorizes requests as “well-defined” or “exploratory” and uses different instruction styles for each category.
  2. Add explicit fallback directives to the detailed instructions: “If specified searches yield fewer than N results, attempt alternative query formulations before reporting failure.”
  3. Remove procedural details entirely, delegating with simple goals like “research X thoroughly” and relying on the subagent’s general capabilities.
  4. Specify research goals and quality criteria (coverage breadth, source diversity, recency) rather than procedural steps, letting the subagent determine its search strategy.
Show answer and explanation

Correct answer: D. Specify research goals and quality criteria (coverage breadth, source diversity, recency) rather than procedural steps, letting the subagent determine its search strategy.

All three symptoms come from procedural micromanagement. When the coordinator dictates exact queries, source priorities and filters, the subagent has no mandate to try anything else, so it reports failure when those queries miss, struggles with topics that do not fit the anticipated pattern, and ignores tangential sources. Specifying research goals and quality criteria (coverage breadth, source diversity, recency) tells the subagent what a good result looks like while leaving the search strategy to it. It can then reformulate queries, adapt to emerging topics and follow promising leads, and still be held to clear standards.

Why the other options are wrong

  • A. Classifying requests still leaves procedural scripts in place for the well-defined category and adds a misclassification risk, so the rigidity behind all three symptoms remains.
  • B. A fallback directive patches only the insufficient-results symptom and does nothing for emerging topics or tangential sources, since the subagent still follows a fixed script.
  • C. Dropping all guidance gives the subagent no quality criteria, so results can become unfocused and inconsistent in coverage, diversity and recency.

Question 6

The synthesis agent completes its initial pass but flags that three key research questions remain unanswered because the web search and document analysis agents didn’t find relevant information on those specific subtopics. The coordinator currently proceeds directly to report generation, producing reports with incomplete coverage. What change would most effectively improve research completeness?

  1. Have the report generation agent note which research questions couldn’t be answered, so users understand the limitations of the final output.
  2. Increase the initial breadth of queries sent to web search and document analysis to reduce the probability of missing relevant information.
  3. Have the coordinator evaluate synthesis output for gaps, then re-delegate to web search and document analysis with targeted queries before invoking synthesis again.
  4. Give the synthesis agent direct access to web search tools so it can autonomously fill knowledge gaps without returning control to the coordinator.
Show answer and explanation

Correct answer: C. Have the coordinator evaluate synthesis output for gaps, then re-delegate to web search and document analysis with targeted queries before invoking synthesis again.

The synthesis agent has already identified exactly what is missing, so the coordinator should act on that before producing the report. In an iterative refinement loop the coordinator evaluates the synthesis output for gaps, re-delegates to the web search and document analysis agents with queries targeted at the three unanswered questions, and re-invokes synthesis with the new findings until coverage is sufficient. Keeping the loop in the coordinator also preserves hub-and-spoke orchestration, where all subagent communication passes through one place for observability and consistent error handling.

Why the other options are wrong

  • A. Listing the unanswered questions in the report makes the gaps visible but leaves the coverage just as incomplete.
  • B. Broader initial queries raise cost on every request and still may not reach the three specific subtopics that synthesis flagged.
  • D. Giving the synthesis agent search tools pushes it outside its role and lets it bypass the coordinator, which loses visibility and control over the research flow.

Question 7

The web search agent has gathered several relevant sources for a research topic. The document analysis agent now needs to examine these sources. How does information typically flow between these two specialized subagents?

  1. The agents communicate through an event-driven message queue, with the document analysis agent subscribing to web search completion events.
  2. The web search agent directly invokes the document analysis agent, passing the discovered sources as parameters.
  3. The coordinator agent receives the web search agent’s output and includes relevant findings in the prompt when invoking the document analysis agent.
  4. Both agents access a shared memory store where the web search agent writes findings and the document analysis agent reads them.
Show answer and explanation

Correct answer: C. The coordinator agent receives the web search agent’s output and includes relevant findings in the prompt when invoking the document analysis agent.

In a coordinator-subagent architecture the coordinator manages all communication between subagents. Subagents operate with isolated context and do not see each other's output, so the coordinator receives the web search agent's results and includes the relevant findings in the prompt when it invokes the document analysis agent. Routing everything through the coordinator gives it observability, consistent error handling and control over what each subagent sees.

Why the other options are wrong

  • A. An event-driven queue is infrastructure the coordinator pattern does not use, and it would take the coordinator out of the flow it is meant to control.
  • B. Subagents do not invoke each other directly; peer-to-peer calls would bypass the coordinator's routing, error handling and visibility.
  • D. Subagents receive their context explicitly in the prompt, and a shared store they read and write on their own sidesteps the coordinator's control of information flow.

Question 8

Production reviews reveal inconsistent handling of uncertainty in final reports. Sometimes conflicting subagent findings are synthesized into a single confident statement (losing nuance), while other times reports over-hedge with excessive qualifications (becoming unhelpful). When the web search agent returns “industry analysts estimate $50B market size (methodology varies)” and the document analysis agent returns “peer-reviewed study estimates $35B (±$7B, 95% CI),” the coordinator either picks one arbitrarily or produces vague statements like “the market may be $35B-$50B depending on factors.” What systematic approach best addresses this?

  1. Configure subagents to only report findings meeting a high-confidence threshold, filtering uncertain information before it reaches the coordinator.
  2. Add a verification subagent that cross-references findings across sources, only passing claims to synthesis that are corroborated by at least two independent sources.
  3. Instruct the synthesis agent to structure reports with explicit sections distinguishing well-established findings from contested ones, preserving original source characterizations and methodological context.
  4. Implement a confidence calibration layer that normalizes subagent uncertainty expressions to standardized probability scores (0.0-1.0), then weight-average findings by their calibrated confidence.
Show answer and explanation

Correct answer: C. Instruct the synthesis agent to structure reports with explicit sections distinguishing well-established findings from contested ones, preserving original source characterizations and methodological context.

Both failure modes come from discarding context: one collapses two credible estimates into a single value, the other replaces them with a vague range. The reliable approach is to keep conflicting statistics with their source attribution and to structure the report into sections that separate well-established findings from contested ones. Here the report would present the analysts' $50B estimate (methodology varies) and the peer-reviewed $35B estimate (±$7B, 95% CI) side by side as a contested finding, each with its original characterization, so readers can see why the figures differ and weigh them.

Why the other options are wrong

  • A. A high-confidence filter would discard the analysts' estimate, whose methodology varies, so readers lose a legitimate data point instead of seeing the disagreement.
  • B. Two credible estimates that disagree cannot both be corroborated, so a two-source rule could drop both figures and hide the conflict rather than report it.
  • D. Converting both characterizations into probability scores and averaging them produces a figure neither source reported and strips out the methodology and confidence interval that explain the difference.

Question 9

In production, final reports frequently contain claims without proper source attribution. Investigation shows that while the web search and document analysis agents correctly attach citations to their outputs, the synthesis agent loses track of which sources support which conclusions when combining findings. What’s the most effective architectural change?

  1. Require all subagents to output structured claim-source mappings that the synthesis agent must preserve and merge when combining findings from multiple sources.
  2. Maintain complete transcripts of all subagent interactions and add a citation-resolution agent to analyze logs and determine attributions before report generation.
  3. Add a verification step where the report generator uses semantic similarity matching against original sources to reconstruct which claims came from which documents.
  4. Have the coordinator inject source identifier prefixes into text before each handoff, then parse these prefixes at report generation to reconstruct citations.
Show answer and explanation

Correct answer: A. Require all subagents to output structured claim-source mappings that the synthesis agent must preserve and merge when combining findings from multiple sources.

The subagents already attach correct citations, so attribution is being lost inside synthesis, where findings are combined as unstructured text. Requiring subagents to output structured claim-source mappings, which the synthesis agent must preserve and merge, makes provenance part of the data that flows through the pipeline. When synthesis combines findings, each conclusion keeps its supporting sources attached, so the report generator can cite them directly instead of guessing.

Why the other options are wrong

  • B. A citation-resolution agent reading transcripts has to infer after the fact which sources support each synthesized conclusion, the same link the synthesis step already lost.
  • C. Semantic similarity matching guesses attribution from textual resemblance, so paraphrased or combined claims can be matched to the wrong source or to none.
  • D. Text prefixes are not structured data; they can be dropped or scrambled when synthesis rewrites and merges passages, and parsing them back out is error-prone.

Question 10

After the web search agent and document analysis agent complete their tasks, the coordinator invokes the synthesis agent. However, the synthesis agent responds that it cannot complete the task because no research findings were provided. What is the most likely cause of this issue?

  1. The subagents need to share a single API connection to enable automatic context sharing between invocations.
  2. The synthesis agent needs tools that can fetch results directly from the other agents’ conversation histories.
  3. The coordinator did not include the outputs from the previous agents in the synthesis agent’s prompt.
  4. The synthesis agent’s context window is not large enough to hold the combined outputs from both previous agents.
Show answer and explanation

Correct answer: C. The coordinator did not include the outputs from the previous agents in the synthesis agent’s prompt.

Subagents do not automatically inherit the coordinator's conversation history or share memory with other subagents. Each invocation starts with only what is in its prompt, so if the coordinator leaves out the web search and document analysis outputs when it invokes the synthesis agent, the synthesis agent has no findings to work with and says so. The coordinator must collect the earlier results and pass them explicitly in the synthesis agent's prompt.

Why the other options are wrong

  • A. Context is not shared through an API connection; each request contains only the messages sent with it, so sharing a connection passes nothing between agents.
  • B. Tools for fetching other agents' histories add indirection to retrieve outputs the coordinator already holds and can simply include in the prompt.
  • D. An oversized input would be rejected with a "prompt is too long" error, not arrive as a prompt with no findings at all; the symptom points to data that was never passed.

What people say about the full CCAR-F pack 4.5 from 2

Thanks for your great Anthropic practice questions.
AfraCCAR-F

Question 11

Production monitoring shows that follow-up queries like “summarize what we learned about market trends” consistently take 40+ seconds. Investigation reveals the coordinator spawns the synthesis subagent for each summarization request, passing 80K+ tokens of accumulated findings. The coordinator already has these findings in its context from orchestrating the research. What’s the most effective way to improve response time for these follow-up summaries?

  1. Enable prompt caching on the synthesis subagent to reduce the overhead of repeatedly transferring the same research findings.
  2. Have the coordinator handle straightforward summarization requests directly using its existing context, reserving subagent spawning for complex analysis.
  3. Pre-generate and cache summaries at multiple granularities whenever new findings accumulate.
  4. Spawn the synthesis subagent with reduced context and have it request specific findings from the coordinator on-demand.
Show answer and explanation

Correct answer: B. Have the coordinator handle straightforward summarization requests directly using its existing context, reserving subagent spawning for complex analysis.

The coordinator already holds the accumulated findings in its own context, yet every follow-up summary spawns a synthesis subagent and ships it 80K+ tokens of material it must process from scratch. Letting the coordinator answer straightforward summary requests directly removes the spawn, the transfer and the subagent's separate pass over the findings, which is where the 40+ seconds go. Subagents remain available for complex analysis that benefits from a separate, focused context, so the multi-agent design is kept where it adds value.

Why the other options are wrong

  • A. Caching only speeds up processing of a repeated prefix; the subagent still has to be spawned, receive 80K+ tokens and produce a summary the coordinator could write itself.
  • C. Pre-generating summaries at several granularities adds work every time findings change and still cannot anticipate the specific question a follow-up asks.
  • D. On-demand requests for findings add round trips between subagent and coordinator, increasing latency for information the coordinator already has.

Question 12

Your agent is handling a billing dispute. After calling get_customer and lookup_order, it identifies that the dispute involves a promotional pricing error requiring manager approval, beyond the agent’s authorization level. How should the workflow handle this mid-process escalation?

  1. Compile a structured handoff with customer details, order info, and the identified issue before calling escalate_to_human.
  2. Persist the complete conversation and tool response history to a database, then call escalate_to_human with a reference ID.
  3. Call escalate_to_human passing only the customer’s original message.
  4. Attempt the refund with process_refund anyway, escalating only if the system rejects the transaction.
Show answer and explanation

Correct answer: A. Compile a structured handoff with customer details, order info, and the identified issue before calling escalate_to_human.

Once the agent has established that the promotional pricing error needs manager approval, the right step is to escalate with a structured handoff: customer details, the relevant order information and the identified issue. The human picks up exactly where the agent stopped, with the diagnosis already done, and can move straight to the approval decision. Structured handoffs exist for mid-process escalation so that a human taking over does not have to re-investigate what the agent already found.

Why the other options are wrong

  • B. A reference ID to a stored raw history makes the human retrieve and read the whole conversation to find the diagnosis, instead of being handed it.
  • C. The original message contains only the complaint, not the order details or the identified pricing error, so the human has to redo the investigation.
  • D. Attempting a refund the agent is not authorized to make treats the payment system as the policy check, and if it succeeds it commits a financial action that required manager approval.

Question 13

A customer raises three separate issues during one session: a refund inquiry (turns 1-15), a subscription question (turns 16-30), and a payment method update (turns 31-45). At turn 48, the customer asks “What happened with my refund?” The conversation is approaching context limits. What strategy best maintains the agent’s ability to address all issues throughout the session?

  1. Extract and persist structured issue data (order IDs, amounts, statuses) into a separate context layer.
  2. Summarize earlier turns into a narrative description, preserving full message history only for the active issue.
  3. Rely on MCP tools to re-fetch relevant information on demand when the customer references earlier issues.
  4. Implement sliding window context that retains the most recent 30 turns.
Show answer and explanation

Correct answer: A. Extract and persist structured issue data (order IDs, amounts, statuses) into a separate context layer.

With three separate issues in one long session, the facts that matter are transactional: order IDs, amounts, dates and statuses for each issue. Extracting those into a separate, persistent context layer that is included with every request keeps all three issues answerable no matter how the older conversation turns are trimmed or summarized. When the customer asks about the refund at turn 48, the agent reads its exact order ID, amount and status from that layer instead of relying on turns 1 to 15, which may no longer fit in context.

Why the other options are wrong

  • B. A narrative summary blurs exact values such as order IDs and amounts, which are precisely what the agent needs to answer the refund question accurately.
  • C. Tools return current backend records but not what was discussed and agreed in the conversation, and the agent must still remember which IDs to fetch once those turns are gone.
  • D. A 30-turn window at turn 48 keeps only turns 19 to 48, so everything about the refund from turns 1 to 15 is lost.

Question 14

Your conversational assistant frequently generates multiple clarifying questions when users make ambiguous requests. When a user asks “Can you help me with the report?”, the assistant responds: “I’d be happy to help! Could you tell me: 1) Which report? 2) What kind of help (drafting, reviewing, or formatting)? 3) What’s your deadline?” User analytics show a 40% conversation abandonment rate after these multi-question responses. What’s the most effective way to reduce friction while appropriately handling ambiguity?

  1. Limit the assistant to one clarifying question per turn, using conversation history to accumulate answers over multiple exchanges rather than requesting everything upfront.
  2. Add a preprocessing step using a smaller model to classify request ambiguity on a 1-5 scale, routing high-ambiguity requests to a clarification dialog and low-ambiguity requests directly to the assistant.
  3. Modify the system prompt to instruct the assistant to make reasonable assumptions from available context, state those assumptions explicitly, and offer to adjust if the interpretation is wrong.
  4. Create a lookup table of common request patterns with predefined default interpretations, having the assistant respond with those defaults without stating the assumptions made.
Show answer and explanation

Correct answer: C. Modify the system prompt to instruct the assistant to make reasonable assumptions from available context, state those assumptions explicitly, and offer to adjust if the interpretation is wrong.

Users abandon the conversation when an assistant answers a short request with a list of questions. Instructing it to make reasonable assumptions from the available context, state them explicitly and offer to adjust gives the user something useful immediately, for example a draft or review based on the report most recently discussed. Because the assumptions are stated, the user can correct a wrong guess in one short reply, so ambiguity is still handled while most of the friction disappears.

Why the other options are wrong

  • A. One question per turn still makes the user answer several questions before getting any help, only spread over more exchanges.
  • B. An ambiguity classifier adds latency and infrastructure while high-ambiguity requests still end in the same clarification dialog that drives users away.
  • D. Applying defaults without stating them means users get answers built on wrong guesses with no signal that a correction is needed.

Question 15

The document analysis agent has a single analyze_document tool that takes a document and a free-text instruction parameter. During evaluation, requests like “extract the key financial metrics” often return narrative summaries, while “summarize the methodology” sometimes returns raw data tables. The synthesis agent reports that 35% of analysis results require re-requests with clarified instructions. What’s the most effective way to improve reliability?

  1. Have the coordinator pre-classify each analysis request before passing instructions to the document analysis agent
  2. Keep the single tool but add an analyze_type enum parameter requiring explicit selection between extraction, summarization, and verification modes
  3. Enhance the tool description with detailed examples showing how different instruction phrasings should map to different output formats
  4. Split the generic tool into purpose-specific tools (extract_data_points, summarize_content, verify_claim_against_source), each with defined input/output contracts
Show answer and explanation

Correct answer: D. Split the generic tool into purpose-specific tools (extract_data_points, summarize_content, verify_claim_against_source), each with defined input/output contracts

A single analyze_document tool driven by a free-text instruction leaves the output shape to interpretation, which is why 'extract' sometimes yields narrative and 'summarize' sometimes yields tables, forcing a 35% re-request rate. Splitting it into extract_data_points, summarize_content and verify_claim_against_source makes the intended operation part of the tool choice itself, and each tool's defined input and output contract fixes what comes back: structured data points, a narrative summary or a verification result. The synthesis agent receives a predictable format for each request type instead of whatever a given phrasing happened to produce.

Why the other options are wrong

  • A. A coordinator pre-classification step adds an extra stage but still passes free-text instructions to the same tool, so the output format remains open to interpretation.
  • B. An analyze_type enum still feeds one tool with one loosely defined output, so each mode lacks its own enforced output contract.
  • C. More examples in the description still leave the format to the model's interpretation of each free-text instruction, so the mismatches persist.

Question 16

During testing, you find that when a customer says “I need a refund for my recent purchase,” the agent calls process_refund immediately, but populates the required order_id parameter with a plausible-looking but fabricated value instead of first calling lookup_order to retrieve the actual order ID. The refund call fails because the fabricated ID doesn’t exist. Which change directly addresses the root cause of the agent fabricating the order_id value?

  1. Switch tool_choice from “auto” to “any” to force the agent to make a tool call on every turn.
  2. Update the process_refund tool description to explicitly state that order_id must be obtained from a prior lookup_order call and must never be assumed or invented.
  3. Pre-parse incoming customer messages to extract any order IDs mentioned, and inject them into the conversation context before passing to Claude.
  4. Add server-side validation that checks whether the order_id exists in your database before executing the refund, returning an error to the agent if not found.
Show answer and explanation

Correct answer: B. Update the process_refund tool description to explicitly state that order_id must be obtained from a prior lookup_order call and must never be assumed or invented.

Claude decides how to fill tool parameters largely from the tool's description, and Anthropic recommends detailed descriptions that explain what each parameter means and where its value should come from. The process_refund description apparently says nothing about how order_id must be obtained, so the model treats it as something it may supply itself and invents a plausible value. Stating that order_id must come from a prior lookup_order call and must never be guessed gives Claude the missing dependency, so it calls lookup_order first. That changes the behavior that produces the fabricated ID rather than reacting after it has been sent.

Why the other options are wrong

  • A. Setting tool_choice to any only forces some tool call on every turn, which does nothing to make the agent obtain a real order_id and may even encourage premature calls.
  • C. Pre-extracting IDs only helps when the customer types an order number, and this customer referred only to a recent purchase, so there is nothing to extract.
  • D. Server-side validation catches the bad ID after the agent has already fabricated it, so the refund still fails and the cause of the fabrication is left in place.

Question 17

You are using Claude Code to accelerate software development. Your team uses it for code generation, refactoring, debugging, and documentation. You need to integrate it into your development workflow with custom slash commands, CLAUDE.md configurations, and understand when to use plan mode vs. direct execution. Your team frequently migrates React components to Vue. You’ve written a step-by-step workflow for Claude Code to follow during each migration, and you want every developer on the team to invoke it by typing /migrate-component. The workflow should stay in sync as the team iterates on it. Where should you place the skill file?

  1. In ~/.claude/skills/migrate-component/SKILL.md on each developer’s machine
  2. In .claude/skills/migrate-component/SKILL.md at the project root, committed to version control
  3. In the project’s .claude/settings.json using a skillOverrides entry to register and define the workflow
  4. As a detailed instruction block in the project’s root CLAUDE.md file
Show answer and explanation

Correct answer: B. In .claude/skills/migrate-component/SKILL.md at the project root, committed to version control

Project skills live in .claude/skills/<skill-name>/SKILL.md, and the directory name becomes the slash command, so .claude/skills/migrate-component/SKILL.md is invoked as /migrate-component. Committing the skill to the repository shares it with every developer who clones the project, and changes to the workflow flow through normal version control. This satisfies both requirements: everyone can invoke the same command, and the workflow stays in sync as the team iterates on it.

Why the other options are wrong

  • A. Personal skills in ~/.claude/skills/ are not version-controlled, so each developer's copy drifts as soon as the team changes the workflow.
  • C. skillOverrides in settings only changes the visibility of existing skills, so it cannot register or define a new workflow.
  • D. Instructions in CLAUDE.md load into every session as general guidance and do not create a /migrate-component command for developers to invoke.

Question 18

The coordinator agent has AgentDefinitions configured for all four specialized subagents, each with appropriate descriptions, prompts, and tool restrictions. During testing, you notice the coordinator correctly reasons about when to delegate: it generates messages like “I’ll ask the web search agent to find sources on this topic”, but no subagent execution ever occurs. The coordinator then proceeds as if the delegation happened and continues with incomplete information. Logs show no errors. What is the most likely cause?

  1. The coordinator’s max_tokens setting is too low, causing the Task tool invocation to be truncated before the subagent type parameter can be specified.
  2. The coordinator’s allowedTools configuration doesn’t include “Task”, so while it can reason about delegation, it cannot invoke the tool required to spawn subagents.
  3. The AgentDefinitions are configured correctly, but the coordinator’s system prompt doesn’t explicitly list the available subagent types, preventing the model from knowing they can be invoked.
  4. Subagent context isolation means task descriptions from the coordinator don’t automatically reach subagents; you need to configure explicit context forwarding in ClaudeAgentOptions.
Show answer and explanation

Correct answer: B. The coordinator’s allowedTools configuration doesn’t include “Task”, so while it can reason about delegation, it cannot invoke the tool required to spawn subagents.

AgentDefinitions only describe the available subagents; a subagent runs only when the coordinator calls the Task tool (named Agent in current Agent SDK releases). The coordinator's allowedTools must include Task for that call to happen. Without it, the model still sees the subagent descriptions and can reason and write about delegating, but it never emits the tool call that would spawn a subagent. Nothing fails, so the logs stay clean, and the coordinator simply continues as if the work had been done, which matches every symptom in the scenario.

Why the other options are wrong

  • A. A max_tokens cutoff would end responses with stop_reason max_tokens mid-output, not produce complete delegation messages followed by normal continuation every time.
  • C. The coordinator already names the web search agent and decides when to delegate, so it clearly knows the subagents exist; what is missing is the ability to invoke them.
  • D. Context forwarding concerns what a subagent receives once it is spawned, but here no subagent is ever spawned.

Question 19

You are using Claude Code to accelerate software development. Your team uses it for code generation, refactoring, debugging, and documentation. You need to integrate it into your development workflow with custom slash commands, CLAUDE.md configurations, and understand when to use plan mode vs. direct execution. Your team has three requirements for Claude Code’s behavior in your project: 1. Claude must never modify files in the db/migrations/ directory. 2. Claude should prefer your custom logging module over console.log. 3. All TypeScript files must be auto-formatted with Prettier after every edit. All three are currently written as instructions in your project’s CLAUDE.md. During a complex refactoring session, a developer discovers that Claude edited a migration file, violating requirement #1. How should you restructure these requirements across Claude Code's configuration mechanisms?

  1. Add Edit(./db/migrations/**) to permissions.deny in the project settings, keep the logging preference in CLAUDE.md, and add a PostToolUse hook on the Edit tool that runs Prettier on changed TypeScript files.
  2. Move all three requirements into .claude/rules/ as path-scoped rules: one targeting db/migrations/** that forbids editing those files, and others targeting **/*.ts for the logging convention and formatting instruction.
  3. Rewrite all three requirements in CLAUDE.md using stronger directive language and add few-shot examples that demonstrate Claude refusing to edit migration files and running Prettier after edits.
  4. Configure hooks for all three: a PreToolUse hook script that blocks Edit calls targeting db/migrations/, a PreToolUse hook script that adds logging convention context before edits, and a PostToolUse hook that runs Prettier after TypeScript edits.
Show answer and explanation

Correct answer: A. Add Edit(./db/migrations/**) to permissions.deny in the project settings, keep the logging preference in CLAUDE.md, and add a PostToolUse hook on the Edit tool that runs Prettier on changed TypeScript files.

CLAUDE.md is loaded as context, not enforced configuration, which is why Claude could still edit a migration file during a long session. Each requirement should go to the mechanism that matches its nature. The migration ban is a hard rule, so a permissions.deny entry for Edit on db/migrations/** is enforced by the client no matter what Claude decides. The logging preference is a judgment-based convention that suits CLAUDE.md guidance. Prettier must run after every edit without exception, which is exactly what a deterministic PostToolUse hook on the Edit tool guarantees.

Why the other options are wrong

  • B. Rules in .claude/rules/ are still instructions loaded into context, so the migration ban remains advisory and can be ignored exactly as it was in CLAUDE.md.
  • C. Stronger wording and examples still leave all three requirements as guidance that Claude can miss during a complex session, which is the failure that already happened.
  • D. A custom blocking script reimplements what a declarative deny rule already enforces, and injecting a soft logging preference through a hook on every edit adds machinery for guidance that CLAUDE.md handles directly.

Question 20

You are building a customer support resolution agent using the Claude Agent SDK. The agent handles high-ambiguity requests like returns, billing disputes, and account issues. It has access to your backend systems through custom Model Context Protocol (MCP) tools (get_customer, lookup_order, process_refund, escalate_to_human). Your target is 80%+ first-contact resolution while knowing when to escalate. After expanding the agent’s MCP tools with delivery-specific capabilities (check_delivery_status, contact_driver, issue_credit, apply_promo_code, update_delivery_address, reschedule_delivery), the total tool count has grown from 4 to 10. Your evaluation suite shows tool selection accuracy has dropped from 88% to 71%. Log analysis reveals the majority of errors involve the agent selecting between semantically overlapping tools: calling issue_credit when process_refund was correct, and calling check_delivery_status when lookup_order already returns the needed data. Which approach structurally eliminates the semantic overlap identified in the logs as the error source?

  1. Enable the tool search tool with defer_loading on the six new tools, keeping the original four always loaded, so the agent dynamically discovers specialized tools only when needed.
  2. Split the tools across two sub-agents: a “financial resolution” agent with process_refund, issue_credit, and apply_promo_code, and a “delivery operations” agent with the remaining delivery tools, with a coordinator routing between them.
  3. Add few-shot examples to the system prompt demonstrating correct selection for each ambiguous tool pair, such as showing when issue_credit applies versus when process_refund is appropriate.
  4. Consolidate semantically overlapping tools: merge issue_credit and process_refund into a single resolve_compensation tool with an action parameter, and fold check_delivery_status into lookup_order with an optional include_tracking flag.
Show answer and explanation

Correct answer: D. Consolidate semantically overlapping tools: merge issue_credit and process_refund into a single resolve_compensation tool with an action parameter, and fold check_delivery_status into lookup_order with an optional include_tracking flag.

The logs pinpoint the errors: the agent confuses issue_credit with process_refund and calls check_delivery_status when lookup_order already returns the needed data. Anthropic's tool design guidance favors fewer, non-overlapping tools whose purposes are clearly distinct. Merging issue_credit and process_refund into one resolve_compensation tool with an action parameter, and folding tracking into lookup_order behind an optional include_tracking flag, removes the ambiguous choices entirely. The agent no longer has to pick between near-duplicates; the decision becomes an explicit parameter value, which is the structural change the question asks for.

Why the other options are wrong

  • A. Tool search addresses context size and selection across very large tool libraries, but with only ten tools the overlapping pairs remain separately loadable, so the confusion between them is unchanged.
  • B. Splitting into sub-agents keeps issue_credit and process_refund together in the financial agent and adds a routing decision, so the identified overlap is still there.
  • C. Few-shot examples can nudge selection but leave both overlapping tools in place, so the ambiguity still exists for cases the examples do not cover.

Question 21

A customer returns 4 hours after the initial session about the same billing dispute. The previous 32-turn session contains lookup_order results showing “Status: PENDING, Expected resolution: 24-48 hours.” In testing, you observe that when resuming sessions with stale tool results, the agent often references the outdated data in responses (e.g., “I see your refund is still being processed”) even after subsequent fresh tool calls return different information. What approach most reliably handles returning customers?

  1. Start a new session, inject a structured summary of the previous interaction (issue type, actions taken, resolution status), then make fresh tool calls before engaging.
  2. Resume with full history but filter out previous tool_result messages before resuming, keeping only the human/assistant turns so the agent must re-fetch needed data.
  3. Resume with full history and configure the agent to automatically re-call all previously-used tools at session start to ensure data freshness.
  4. Resume with full history and add a system prompt instruction telling the agent to always prefer the most recent tool results when multiple calls to the same tool exist in context.
Show answer and explanation

Correct answer: A. Start a new session, inject a structured summary of the previous interaction (issue type, actions taken, resolution status), then make fresh tool calls before engaging.

Resuming a 32-turn session carries forward both the old PENDING tool results and the assistant's earlier statements based on them, and testing shows the agent keeps echoing that outdated status even after fresh calls return different data. Starting a new session removes the stale material from context entirely. A structured summary of the earlier interaction (issue type, actions taken, resolution status) preserves the continuity the customer expects, and making fresh tool calls before engaging ensures the agent's picture of the dispute comes from current data. This combines the useful history with reliable, up-to-date facts.

Why the other options are wrong

  • B. Stripping only the tool_result messages leaves the earlier assistant turns in place, and those turns already repeat the outdated PENDING status the agent keeps referencing.
  • C. Re-calling every tool still leaves the stale results and the 32 turns of reasoning built on them in context, which is exactly the condition under which the agent was observed citing old data.
  • D. A prompt instruction to prefer recent results is the kind of guidance already shown to fail, since the agent referenced stale data even when fresher results were present in context.

Question 22

Your control_device tool manages smart home devices through external APIs. When a device doesn’t respond within the timeout period, the tool returns an error. Production logs show that the agent simply tells users “the device is not responding” without offering helpful next steps. Which error response structure would best enable the agent to provide useful follow-up?

  1. Set is_error: true with a structured technical error containing the device ID, timeout duration, and raw API response code for debugging purposes.
  2. Set is_error: true with a brief “Device offline” message and provide a separate tool the agent can call to retrieve context-specific troubleshooting suggestions.
  3. Set is_error: false with an optimistic message indicating the command was dispatched successfully but device acknowledgment is still pending.
  4. Set is_error: true with a message explaining the likely cause and suggesting troubleshooting steps the agent can offer the user.
Show answer and explanation

Correct answer: D. Set is_error: true with a message explaining the likely cause and suggesting troubleshooting steps the agent can offer the user.

The agent has nothing to offer beyond 'the device is not responding' because that is all the error tells it. Keeping is_error: true marks the outcome correctly as a failure, and adding a message that explains the likely cause and suggests troubleshooting steps, such as checking power or network connectivity, gives the agent concrete next steps to pass on in the same turn. The information the user needs arrives with the failure itself, with no extra lookup and no technical translation required.

Why the other options are wrong

  • A. Device IDs, timeout durations and raw response codes are debugging data that the agent cannot turn into practical advice for the user.
  • B. A separate troubleshooting tool adds a call the agent may not make, when the same guidance can travel in the error response itself.
  • C. Setting is_error: false reports a failed command as dispatched, so the agent would tell the user something untrue instead of helping them fix the problem.

Question 23

Your update_user_profile tool accepts a user_id (required) and an optional fields_to_update object. In testing, Claude frequently omits user_id or passes incorrectly structured data. What is most critical for helping Claude understand what parameter values to provide?

  1. Strict JSON Schema type constraints marking user_id as required and defining fields_to_update as an object type
  2. Verbose parameter names encoding format hints, such as user_id_string_uuid_format
  3. Detailed error responses explaining why invalid parameter values were rejected
  4. Clear parameter descriptions explaining expected format, such as “user_id: UUID of the user to update (required)”
Show answer and explanation

Correct answer: D. Clear parameter descriptions explaining expected format, such as “user_id: UUID of the user to update (required)”

Claude decides what values to provide by reading the tool definition, and parameter descriptions are the part that explains meaning and format. A description such as "user_id: UUID of the user to update (required)" tells Claude what the value is, what form it takes and that it must be present, guiding the call before it is made. Anthropic's tool-use guidance names detailed descriptions as by far the most important factor in tool performance, including what each parameter means; schema types support this by stating structure rather than explaining it.

Why the other options are wrong

  • A. Type constraints and a required list state structure but say nothing about what user_id identifies or what format it takes, which is the information Claude is missing when it builds the call.
  • B. Packing format hints into names like user_id_string_uuid_format produces awkward identifiers that still cannot explain meaning or nested structure the way a description can.
  • C. Error responses arrive only after a bad call has been made, so they repair mistakes rather than guiding Claude to the right values the first time.

Question 24

Your infrastructure-as-code repository includes Terraform modules (/terraform/), Kubernetes manifests (/kubernetes/), and CI/CD pipeline scripts (/pipelines/). Each requires different conventions, but your single root CLAUDE.md has grown to 500+ lines. When developers work on Kubernetes files, Terraform-specific rules load into context unnecessarily, consuming tokens. What is the best approach to reorganize so only relevant guidance loads when editing specific file types?

  1. Split content into subdirectory CLAUDE.md files (/terraform/CLAUDE.md, /kubernetes/CLAUDE.md), so Claude loads directory-specific guidance.
  2. Keep the root CLAUDE.md and use @path/to/import syntax to modularly include tool-specific guidance files from separate documents.
  3. Restructure the root CLAUDE.md into clearly labeled sections with headers (e.g., “## Terraform Conventions”), improving organization and readability.
  4. Create files in .claude/rules/ with YAML frontmatter path-scoping (e.g., paths: ["terraform/**/*"]), loading rules only when editing matching files.
Show answer and explanation

Correct answer: D. Create files in .claude/rules/ with YAML frontmatter path-scoping (e.g., paths: ["terraform/**/*"]), loading rules only when editing matching files.

Files in .claude/rules/ can carry YAML frontmatter with a paths field listing glob patterns, and such a rule loads into context only when Claude works with files that match those patterns. Moving the Terraform, Kubernetes and pipeline conventions into separate rule files scoped with patterns like terraform/**/* means Kubernetes work no longer pulls in Terraform guidance, which cuts the token cost of the 500+ line root file. Claude Code's documentation recommends exactly this for instructions that matter only for part of a codebase, and glob patterns can target file types as well as directories.

Why the other options are wrong

  • A. Subdirectory CLAUDE.md files are tied to folder location rather than file patterns, so they cannot scope guidance by file type the way paths globs in rule files can.
  • B. Files pulled in with @path imports load at launch alongside the CLAUDE.md that references them, so every convention still enters context in every session.
  • C. Adding headers improves readability but the whole file still loads every session, so Terraform rules still consume tokens during Kubernetes work.

Question 25

You are using Claude Code to accelerate software development. Your team uses it for code generation, refactoring, debugging, and documentation. You need to integrate it into your development workflow with custom slash commands, CLAUDE.md configurations, and understand when to use plan mode vs. direct execution. Your team has connected a custom MCP server that provides DevOps workflow templates. The server exposes several MCP prompts (such as deploy_checklist and incident_response) in addition to tools. How do these MCP prompts become accessible within Claude Code?

  1. They are surfaced as @-mentionable resources alongside files, fetched and attached to your message when referenced.
  2. They are automatically prepended to every conversation as additional system-level context, influencing Claude’s behavior throughout the session.
  3. They are added to Claude Code’s tool registry alongside the server’s tools, invoked automatically by the model when relevant to the task.
  4. They appear as slash commands (e.g., /mcp__servername__deploy_checklist) that you can invoke, with arguments passed after the command name.
Show answer and explanation

Correct answer: D. They appear as slash commands (e.g., /mcp__servername__deploy_checklist) that you can invoke, with arguments passed after the command name.

In the MCP specification, prompts are user-controlled templates, distinct from model-controlled tools, and Claude Code exposes them as commands. Typing / lists the available commands, including each MCP prompt from a connected server, and a prompt can be run as /mcp__servername__promptname. Arguments are passed space-separated after the command name. A developer could therefore run the server's deploy_checklist or incident_response prompt on demand, supplying values such as a service name as arguments, and the filled template is sent into the conversation.

Why the other options are wrong

  • A. The @ mention mechanism is for files and MCP resources, not prompts, so the server's prompts do not appear there.
  • B. MCP prompts are not injected into every conversation; they run only when the user invokes them.
  • C. Prompts are not added to the tool registry, because MCP keeps prompts user-invoked while tools are the capability the model calls on its own.

25 questions in. Want the rest? The first half of the pack, free by email · The full pack

Question 26

You are using Claude Code to accelerate software development. Your team uses it for code generation, refactoring, debugging, and documentation. You need to integrate it into your development workflow with custom slash commands, CLAUDE.md configurations, and understand when to use plan mode vs. direct execution. You’re implementing a caching layer for API responses to speed up the /products endpoint. You have a rough idea (Redis with a 5-minute TTL), but you’re new to production caching and aren’t sure what other considerations a robust implementation requires. What’s the most effective way to start your iterative workflow?

  1. Start with a minimal request: “Add Redis caching to /products with 5-minute TTL.” Add features and fix issues through follow-up prompts as problems surface during testing.
  2. Write a specification with your known requirements and “TBD” markers for uncertain areas, having Claude propose solutions for each TBD as it implements.
  3. Ask Claude to interview you about the caching requirements before implementing, surfacing considerations like invalidation strategies, cache layers, consistency guarantees, and failure modes.
  4. Use plan mode to analyze the current /products endpoint implementation, then provide your caching requirements once Claude explains how the existing code is structured.
Show answer and explanation

Correct answer: C. Ask Claude to interview you about the caching requirements before implementing, surfacing considerations like invalidation strategies, cache layers, consistency guarantees, and failure modes.

When you are new to a domain, the biggest risk is the requirements you do not know to ask about. Anthropic's Claude Code best practices recommend having Claude interview you before larger features, asking about implementation details, edge cases and tradeoffs you might not have considered. For production caching that means invalidation strategy, consistency guarantees, cache layers and behavior when Redis fails. Answering those questions first produces a complete specification, so the implementation is built for production conditions rather than patched after problems appear.

Why the other options are wrong

  • A. Adding features only as problems surface means issues such as stale data or Redis outages may first appear in production rather than during testing.
  • B. TBD markers only cover gaps you already know about, and the scenario says you are unsure what other considerations a robust cache requires.
  • D. Analyzing the existing endpoint explains its current structure but does not surface caching concerns such as invalidation or failure modes, and you would still supply requirements you do not yet know.

Question 27

Your track_shipment(tracking_id) tool queries an external logistics API that sometimes fails: the API may be temporarily unavailable, the tracking ID may be malformed, or the shipment may not exist. Currently, your tool raises a Python exception when errors occur. Users report the agent gives unhelpful responses like “I’m having trouble with that request” instead of suggesting alternatives such as verifying the tracking number format or checking by order number. How should you handle errors in tool results?

  1. Return a generic error response (e.g., {"success": false, "error": "lookup_failed"}) for all failure cases to maintain a consistent schema and avoid exposing internal error details.
  2. Return structured error information as normal tool output including error type, recoverability status, and actionable context for the user.
  3. Create dedicated error-recovery tools (retry_tracking_lookup, search_by_order_number) that the model can invoke after the primary tracking tool returns a failure indicator.
  4. Implement retry logic with exponential backoff inside the tool implementation so transient errors are automatically handled and only return a result after all retry attempts are exhausted.
Show answer and explanation

Correct answer: B. Return structured error information as normal tool output including error type, recoverability status, and actionable context for the user.

A raised exception gives the agent nothing to reason about, so it can only say it is 'having trouble'. Returning the failure as normal tool output with an error type (service unavailable, malformed tracking ID, shipment not found), whether it is recoverable, and actionable context lets the agent respond to the specific problem: suggest checking the tracking number format, offer to look up the order number, or explain that the logistics service is temporarily down. The error stays inside the agent's decision loop, where it can turn into a helpful next step for the user.

Why the other options are wrong

  • A. A single generic 'lookup_failed' code hides whether the problem is transient, a malformed ID or a missing shipment, so the agent still cannot suggest the right alternative.
  • C. Recovery tools called after a bare failure indicator still leave the agent without knowing which failure occurred, so it cannot tell whether retrying or searching by order number is the right move.
  • D. Retrying inside the tool helps only with transient outages; malformed IDs and nonexistent shipments fail on every attempt and still reach the agent without usable context.

Question 28

After 30+ turns, your conversational assistant shows noticeably slower responses and occasionally produces less coherent outputs. Investigation reveals: (1) average conversations reach 50,000 tokens by turn 35, (2) production logs show 94% of user messages only reference the previous 3-5 exchanges, (3) the 6% of queries referencing earlier context typically ask about information the user could easily re-state. Your goal is to improve response speed and quality while maintaining good user experience. What’s the most effective approach?

  1. Enable prompt caching and continue sending the complete conversation history, using cached prefixes to reduce per-request costs while preserving all context.
  2. Build a retrieval system that stores all conversation turns and uses semantic search to pull in relevant historical context only when the current query appears to reference past information.
  3. Implement a summarization layer that progressively compresses older conversation turns into a running summary while keeping the most recent 5-6 turns verbatim, maintaining full historical context in condensed form.
  4. Implement a sliding window keeping only the system prompt and last 8-10 turns. When users reference earlier context, acknowledge the limitation and ask them to re-state the relevant information.
Show answer and explanation

Correct answer: C. Implement a summarization layer that progressively compresses older conversation turns into a running summary while keeping the most recent 5-6 turns verbatim, maintaining full historical context in condensed form.

Long histories slow every request and dilute the model's attention, which explains both the latency and the drop in coherence after 30+ turns. Since most messages reference only the last few exchanges, keeping the most recent 5-6 turns verbatim preserves the detail that matters for nearly every reply, while compressing older turns into a running summary removes the bulk of the token load. Unlike discarding history, the summary still carries the earlier facts in condensed form, so the occasional question about older context can be answered without making the user repeat themselves. This mirrors the compaction approach Anthropic recommends for long-running interactions.

Why the other options are wrong

  • A. Prompt caching lowers the cost of reprocessing a repeated prefix, but the model still works over the full 50,000-token history, so the coherence problems caused by the oversized context remain.
  • B. A semantic retrieval layer adds infrastructure and depends on correctly detecting when a query refers to the past, and the full verbatim turns it injects can bring back the context bloat it was meant to avoid.
  • D. A hard sliding window throws earlier context away completely and pushes the work of re-stating it onto users, which degrades the experience the design is supposed to maintain.

Question 29

After the web search and document analysis subagents complete their tasks, the coordinator needs to spawn the synthesis subagent to synthesize the findings. What is the correct approach for providing the synthesis subagent with the information it needs?

  1. Spawn the subagent with only a brief task description, relying on automatic context inheritance from the coordinator
  2. Provide the subagent with tool definitions that allow it to request outputs from other subagents via callbacks
  3. Pass reference identifiers and configure the subagent with read access to a shared memory store where other subagents deposited their results
  4. Include the complete findings from both subagents directly in the synthesis subagent’s prompt
Show answer and explanation

Correct answer: D. Include the complete findings from both subagents directly in the synthesis subagent’s prompt

Subagent context must be provided explicitly in the prompt, because subagents do not automatically inherit the parent's context or share memory between invocations. The coordinator already holds the outputs from web search and document analysis, so the reliable approach is to include the complete findings directly in the synthesis subagent's prompt. The synthesis agent then has everything it needs in context from the start, with no extra tools, callbacks or retrieval steps that could fail.

Why the other options are wrong

  • A. There is no automatic context inheritance, so a subagent spawned with only a brief task description receives none of the findings.
  • B. Callback tools add round trips and failure points to retrieve data the coordinator could have placed in the prompt directly.
  • C. A shared memory store adds configuration and a retrieval step that can fail, while subagents are designed to receive their context explicitly in the prompt.

Question 30

Your content curation agent discovers articles, analyzes each for relevance, then adds selected articles to themed collections. With separate discover_articles(topic), analyze_article(id), and add_to_collection(article_id, collection_id) tools, you observe 18+ sequential tool calls per request, causing latency issues. The agent must make editorial judgments about which articles fit a collection’s theme: this requires seeing all candidates with their analysis scores simultaneously to select a cohesive set. What tool composition best addresses efficiency while preserving editorial judgment?

  1. Keep all tools separate but implement response caching for analyze_article calls.
  2. Create a curate_collection(topic, collection_id) tool that handles discovery, analysis, and selection internally using configurable quality thresholds.
  3. Create a discover_and_analyze(topic) composite tool that returns all candidates with their analysis scores, keeping add_to_collection separate for selective calls.
  4. Add a preview_curation(topic, collection_id) tool that shows what would be added based on predefined rules, with an approve_curation() tool to confirm.
Show answer and explanation

Correct answer: C. Create a discover_and_analyze(topic) composite tool that returns all candidates with their analysis scores, keeping add_to_collection separate for selective calls.

Most of the 18+ calls come from discovering articles and then analyzing them one at a time. A discover_and_analyze composite returns every candidate with its analysis score in a single call, which removes that sequential chain and also gives the agent exactly what editorial judgment needs: all candidates and scores side by side. Keeping add_to_collection separate leaves the actual selection with the agent, which can choose a cohesive set and add only those articles. The work that is mechanical is batched, and the decision that needs judgment stays with the model.

Why the other options are wrong

  • A. Caching makes repeated analyze_article calls cheaper but does not remove the sequential discovery and per-article analysis calls that cause the latency.
  • B. Selecting articles by configurable quality thresholds inside the tool takes the editorial judgment away from the agent, which the scenario requires it to keep.
  • D. A preview based on predefined rules replaces the agent's editorial judgment with fixed rules, leaving the agent only to approve or reject the result.

Question 31

You are using Claude Code to accelerate software development. Your team uses it for code generation, refactoring, debugging, and documentation. You need to integrate it into your development workflow with custom slash commands, CLAUDE.md configurations, and understand when to use plan mode vs. direct execution. Your team is configuring MCP servers in Claude Code. You want to add a shared venue lookup server that all team members should have access to, and you personally want to add an experimental music playlist server that only you are testing. Which configuration approach correctly applies MCP server scopes?

  1. Add both servers to your local ~/.claude.json
  2. Add venue server to ~/.claude.json and playlist server to .mcp.json
  3. Add venue server to .mcp.json and playlist server to ~/.claude.json
  4. Add both servers to the project-level .mcp.json file
Show answer and explanation

Correct answer: C. Add venue server to .mcp.json and playlist server to ~/.claude.json

Claude Code stores project-scoped MCP servers in .mcp.json at the project root, which is checked into version control so every team member gets the same servers. Local and user scopes are stored in ~/.claude.json and are private to one developer. The shared venue lookup server therefore belongs in .mcp.json, while the experimental playlist server that only you are testing belongs in your own ~/.claude.json, where it never reaches teammates or the repository.

Why the other options are wrong

  • A. ~/.claude.json is private to your machine, so teammates would never receive the shared venue server.
  • B. This reverses the scopes: the shared venue server would stay private to you while your experimental playlist server would be committed for the whole team.
  • D. Putting the playlist server in the committed .mcp.json pushes an experimental, personal server onto every team member.

Question 32

Your expense reimbursement agent processes employee requests using a process_reimbursement tool. Company policy requires that reimbursements above $500 must be approved by a manager before funds are disbursed. The agent handles hundreds of requests daily, and you need the threshold enforcement to be tamper-proof regardless of how the agent is prompted. Which design ensures the $500 approval threshold cannot be bypassed?

  1. The process_reimbursement tool accepts amount and details, and internally enforces the threshold: amounts <$500 are auto-disbursed and the tool returns a success confirmation; amounts >$500 cause the tool to create a pending approval request and return a status indicating manager review is pending.
  2. The process_reimbursement tool accepts an approved_by_manager: boolean parameter. The system prompt instructs the agent to only set this to true after confirming that a manager has approved the request. A nightly audit script reviews all reimbursements where approved_by_manager was set to true.
  3. Provide two tools: auto_reimburse (hard-coded limit of $500) and request_manager_approval. Include detailed system prompt instructions telling the agent to check the amount and call the appropriate tool. Add a PostToolUse hook that logs which tool was called for auditing.
  4. Implement the threshold check in a PreToolUse hook that inspects the amount parameter before process_reimbursement executes. If the amount exceeds $500, the hook modifies the tool call to add a requires_approval: true flag, which the tool checks before disbursing.
Show answer and explanation

Correct answer: A. The process_reimbursement tool accepts amount and details, and internally enforces the threshold: amounts <$500 are auto-disbursed and the tool returns a success confirmation; amounts >$500 cause the tool to create a pending approval request and return a status indicating manager review is pending.

The $500 rule is a financial control that must hold regardless of what the agent is told, including injected or manipulated instructions. Enforcing it inside process_reimbursement makes the check part of the only path to disbursement: the tool itself decides whether to pay out or create a pending manager approval, based on the amount. The model supplies the amount and details but never decides whether approval is needed, so no prompt, parameter value or tool choice can route a large reimbursement around manager review.

Why the other options are wrong

  • B. An approved_by_manager flag set by the agent leaves the decision with the model, and a nightly audit only finds a bypassed approval after the money has gone out.
  • C. Routing between the two tools is left to the agent's prompt-guided choice, so whether a large request reaches manager approval depends on the model, and the PostToolUse log only records that choice afterward.
  • D. The tool trusts a requires_approval flag in its input instead of checking the amount itself, so any call that does not pass through the hook, such as another client or a misconfigured hook, disburses without approval.

Question 33

Production logs reveal inconsistent error handling: when lookup_order fails, the agent sometimes retries 5+ times (wasteful when the order ID doesn’t exist), sometimes escalates immediately (premature for temporary network issues), and sometimes asks users for clarification (inappropriate when the issue is a backend permission error). Investigation shows your MCP tool returns uniform error responses: {"isError": true, "content": [{"type": "text", "text": "Operation failed"}]}. The agent cannot distinguish between error types. What’s the most effective improvement?

  1. Create an analyze_error MCP tool the agent calls after any failure to determine the error category and recommended action.
  2. Add few-shot examples to the system prompt demonstrating how to interpret error message patterns and select appropriate responses for each.
  3. Enhance error responses with structured metadata: include errorCategory (transient/validation/permission), isRetryable boolean, and a description of what caused the failure.
  4. Implement retry logic with exponential backoff in your MCP server for all errors, returning to the agent only after retries are exhausted.
Show answer and explanation

Correct answer: C. Enhance error responses with structured metadata: include errorCategory (transient/validation/permission), isRetryable boolean, and a description of what caused the failure.

The agent's behavior is inconsistent because every failure returns the same 'Operation failed' text, so it has to guess whether to retry, ask the user or escalate. Adding errorCategory (transient, validation or permission), an isRetryable boolean and a description of the cause gives it explicit grounds for each choice: retry transient network failures, stop and clarify when an order ID does not exist, and escalate permission errors rather than questioning the user. The decision rests on fields the tool sets deliberately instead of on interpreting message text.

Why the other options are wrong

  • A. An analyze_error tool adds a round trip after every failure, and it still receives the same uniform 'Operation failed' text, so it has nothing to categorize.
  • B. Few-shot examples teach the agent to read error message patterns, but every error currently has the identical text, so there are no patterns to distinguish.
  • D. Blanket retries waste time on nonexistent order IDs and permission errors that can never succeed, and the agent still receives an undifferentiated error afterward.

Question 34

A customer sends: “This is frustrating. I’ve explained my issue twice and nothing is being resolved. I want to talk to a real person NOW.” The agent has not yet called any tools to investigate their account. What should the agent do?

  1. Immediately call escalate_to_human with the conversation history.
  2. Briefly explain what the agent can help with and offer to resolve the issue quickly, escalating only if the customer repeats their request.
  3. First call get_customer and lookup_order to gather account context, then escalate to a human agent.
  4. Acknowledge the frustration and ask one targeted question to understand the specific issue before escalating.
Show answer and explanation

Correct answer: A. Immediately call escalate_to_human with the conversation history.

When a customer explicitly and emphatically asks for a human, the agent should honor that request immediately rather than first attempting its own investigation. This customer has already explained the issue twice and demands a real person now, so any further delay or attempt to keep them in the automated flow increases frustration. Calling escalate_to_human with the conversation history gives the human agent the context of what the customer has already said, so the customer does not have to start over. The human agent has full system access and can look up the account as part of handling the case.

Why the other options are wrong

  • B. Pitching the agent's capabilities and escalating only if the customer asks again forces them to repeat a request they have already made clearly and forcefully.
  • C. Running get_customer and lookup_order first delays the handoff the customer demanded immediately, and the human agent can retrieve the same account data directly.
  • D. Asking another question, even a targeted one, makes a customer who has explained the issue twice keep explaining instead of reaching the person they asked for.

That was 34 of 134.

The full Anthropic CCAR-F pack has all 134 questions, each with the answer, the explanation and why the other options are wrong, plus a questions-only copy for timed runs. US$39, paid once, with free monthly updates and a pass-or-your-money-back guarantee.

Get the full pack

Not ready yet? Get the first 42 free as one PDF by email. Get the Half Pack →