20 free CCAR-F sample questions
Taken from the same bank we sell, across all 5 Claude Certified Architect – Foundations domains, each with the correct answer and a written explanation. No signup and no paywall — judge the questions before you decide whether they are worth paying for.
Agentic Architecture & Orchestration27.0% of the exam
Q1
The agent resolves refunds and shipping questions correctly, but in 40% of billing disputes it invents account credit balances that do not exist instead of reading them. What is the best way to fix this?
- AAdd a
fetch_accounttool call so the agent reads the customer's real credit balance before responding to any billing dispute.correct - BLower the model temperature toward zero so its decoding becomes near-deterministic and it stops sampling fabricated numeric balance values during billing replies.
- CAppend a strongly worded system-prompt line that explicitly forbids inventing balances and instructs the agent to never state a credit figure it is unsure about.
- DRoute every billing dispute through
hand_off_to_agentso a human pulls the real balance and the agent never answers credit questions on its own.
Why
The agent lacks grounded data, so it confabulates. Giving it a tool that returns the real balance lets it answer from ground truth rather than guessing. Grounding agent answers in tool output is the standard remedy for fabricated facts the system already owns.
- AAdd a
Q2
Each sub-agent currently returns a free-form paragraph, and the coordinator's merge step fails to align findings in roughly 1 in 3 runs because it cannot tell which claim came from which sub-agent. What is the most effective approach?
- AHave sub-agents return a structured summary with explicit
source,claim, andconfidencefields.correct - BGive the coordinator a larger context window so it can hold every sub-agent's full paragraph in memory at once.
- CInstruct each sub-agent to write much shorter paragraphs so the coordinator can read and merge them faster.
- DRun the merge with a second model pass that votes across the paragraphs and keeps claims both passes agree on.
Why
Merging is unreliable because the return payload is unstructured. A typed summary with provenance lets the coordinator align claims deterministically. Structured hand-back contracts between agents are the standard way to make multi-agent merges reliable.
- AHave sub-agents return a structured summary with explicit
Q3
You are building the agentic loop for a support assistant that answers order questions with
find_orderandcheck_shipping. The current loop ends whenever the assistant's reply text contains the phrase "all set", and tool outputs are pasted back into the conversation as plain narrative text. Transcripts show premature endings and misread tool data. Which two changes should you make? Select TWO.- AContinue the loop when the API returns a
stop_reasonoftool_useand end it only onend_turn.correct - BCap the loop at a fixed ten iterations and treat hitting that ceiling as the normal, expected completion signal.
- CAppend each tool's output to the conversation as a
tool_resultblock paired with the call that produced it.correct - DTighten the phrase-based completion check so "all set" only terminates the loop when it appears in the final sentence.
- EInject each tool's output back into the conversation as a JSON-formatted user message so the model reads structured data.
Why
The API states completion explicitly: a
stop_reasonoftool_usemeans the model is waiting on tool execution, whileend_turnmeans it has finished, so the loop should key off those values. Returning outputs as structuredtool_resultblocks paired with each call keeps the history well-formed and lets the model read the data reliably instead of reparsing narrative text.- AContinue the loop when the API returns a
Q4
An internal chore assistant calls
list_stale_branchesonce, receives the result, and then the run simply ends with the branches never deleted. Reviewing the harness, you see it makes a single API call, executes whatever tool the model requested, and exits. Which two changes turn this into a working agentic loop? Select TWO.- ARaise
max_tokensso the model can finish the whole cleanup in its first response. - BAfter executing the requested tool, append the result to the conversation and call the model again.correct
- CAsk the model to list every tool call it will need up front so the harness can run them in one pass.
- DKeep iterating until the API returns a
stop_reasonofend_turn.correct
Why
An agentic loop alternates model calls and tool executions: each
tool_resultis appended to the history and sent back so the model can decide its next action from what the tool returned. The loop keeps cycling while the model requests tools and terminates whenstop_reasoncomes back asend_turn, the model's explicit signal that the task is complete.- ARaise
Claude Code Configuration & Workflows20.0% of the exam
Q1
A developer keeps re-typing the same instructions about the project's import ordering, preferred test runner, and the fact that the API client lives in
src/lib/api/. These facts apply to every session in the repo. What's the most effective way to make Claude Code apply them automatically?- ARecord the conventions in the repo's
CLAUDE.mdso they load into context for every session.correct - BCreate a path-scoped rule under
.claude/rules/targetingsrc/lib/api/so the notes load when relevant. - CEncode each convention as a separate slash command under
.claude/commands/and invoke them in sequence before coding. - DAdd the conventions to
~/.claude/CLAUDE.mdso they persist automatically without touching the repository.
Why
CLAUDE.mdis loaded into context automatically at session start, making it the canonical place for stable, repo-wide conventions. Centralizing the facts there removes repetitive re-typing and keeps every session consistent.- ARecord the conventions in the repo's
Q2
A developer is about to ask Claude Code to migrate authentication across roughly 18 files and wants to review the full sequence of intended edits before any file is written. What is the best way to do this?
- AUse plan mode so Claude proposes the steps first and waits for approval before editing.correct
- BHave Claude work on a fresh branch so the edits can be reviewed as a diff before merging.
- CSet permissions to deny every write tool so Claude can only describe the intended changes.
- DSplit the work into 18 separate single-file requests so each edit can be reviewed individually.
Why
Plan mode produces a reviewable plan and pauses for approval before touching files, which is exactly suited to a large multi-file change. It surfaces the approach early so the developer can correct course before any edits land.
Prompt Engineering & Structured Output20.0% of the exam
Q1
A pipeline turns insurance claim PDFs into records, and roughly 9% of outputs come back with trailing prose like "Here is the JSON you requested" wrapped around the object, breaking the downstream parser. What is the best way to force clean, parseable output?
- AConstrain the response with a JSON schema so the model emits only a valid object with no surrounding text.correct
- BAdd a regex post-processor that strips any text appearing before the first
{and after the last}character on each response. - CAdd a few-shot example of a bare, correctly formatted JSON response so the model imitates that output shape.
- DFine-tune a dedicated extraction model on several thousand labeled claim PDFs so it learns to omit the surrounding prose.
Why
Schema-constrained output gates the response to a valid object and removes the surrounding prose at the source rather than patching it downstream. Enforcing structure at generation is more reliable than scraping text after the fact and far cheaper than training a model for a formatting issue.
Q2
The support agent resolves billing questions but occasionally invents a refund policy detail that does not exist in the account data returned by
fetch_account. What's the most effective approach to reduce these fabricated policy claims?- ALower the temperature on every model call to zero so that answers become deterministic and the model stops inventing policy details.
- BInstruct the agent to answer only from
fetch_accountdata and say it must escalate when the data is missing.correct - CAdd a second model that fact-checks the first model's policy statements after each reply and rewrites any unsupported claims it finds.
- DAdd few-shot examples of correctly answered refund questions so the model internalizes the real policy wording.
Why
Grounding the agent explicitly in tool-returned data and providing an escalation path for gaps prevents the model from filling in missing facts. Naming the authoritative source and the fallback is a prompt-level fix that directly targets fabrication.
Claude Code Configuration & Workflows20.0% of the exam
Q1
A frontend repo's checked-in
CLAUDE.mdmixes team-wide conventions (component naming, the test runner to use) with one engineer's personal preferences ("respond tersely", "show diffs vim-style"). Teammates complain that their sessions now pick up the personal preferences. Which two changes should you make? Select TWO.- AMove the entire file into that engineer's
~/.claude/CLAUDE.mdso the repository stays clean. - BRelocate the personal preferences into the engineer's own user-level
~/.claude/CLAUDE.md.correct - CConvert the personal preferences into a project slash command that teammates simply avoid running.
- DKeep the team-wide conventions in the project
CLAUDE.mdso every teammate's sessions load them.correct - EDuplicate the team conventions into a
CLAUDE.mdin each subdirectory so they take precedence.
Why
The memory hierarchy separates audiences: user-level
~/.claude/CLAUDE.mdfollows one person across their projects, which is exactly where individual style preferences belong, while the version-controlled projectCLAUDE.mdis the shared home for conventions every teammate should inherit. Splitting the content along that line gives each instruction the scope it was written for.- AMove the entire file into that engineer's
Q2
In a monorepo, guidance about the build tool and the PR checklist applies to work anywhere in the tree, while
packages/api/has handler conventions that only matter when editing that package. Which two placements scope this guidance correctly? Select TWO.- APut the build-tool and PR-checklist guidance in the repository root
CLAUDE.md.correct - BPut the API handler conventions in the root
CLAUDE.mdso they can never be missed. - CPut the API handler conventions in a
CLAUDE.mdinsidepackages/api/.correct - DPut the repo-wide guidance in each engineer's
~/.claude/CLAUDE.mdfor reliability.
Why
The hierarchy assigns each file a scope: the root
CLAUDE.mdloads for sessions across the whole repository, making it the right home for universal guidance, while a directory-levelCLAUDE.mdinsidepackages/api/applies when work happens in that part of the tree. Matching each instruction to the narrowest level that covers its audience keeps context lean and accurate.- APut the build-tool and PR-checklist guidance in the repository root
Prompt Engineering & Structured Output20.0% of the exam
Q1
Your CI review bot posts findings under the instruction "be conservative and only report issues that really matter." Developers now dismiss nearly everything it posts, largely because its dependency-vulnerability category is wrong about 60% of the time. Which two changes should you make? Select TWO.
- AAdd a sentence to the instruction telling the bot to report only the findings it is at least 90% confident about internally.
- BReplace the vague instruction with explicit criteria defining which specific conditions to report and which to skip.correct
- CLower the sampling temperature on the review requests so the bot's flagging decisions become more repeatable across runs.
- DHave the bot state each finding twice in different words and post only findings that survive both phrasings.
- ETemporarily disable the dependency-vulnerability category while its criteria are rewritten.correct
Why
Vague guidance like "really matter" leaves the reporting bar to the model's subjective judgment, so replacing it with explicit report-versus-skip criteria gives every flag a checkable definition. Meanwhile, one category producing 60% false positives erodes trust in every category, so taking it offline until its criteria are reworked lets the trustworthy categories regain credibility.
Q2
A QA prompt reviews support transcripts and flags "unprofessional tone." Team leads overturn nearly half the flags: the model marks casual-but-friendly greetings, while leads only care about dismissive or hostile replies. Which two prompt changes should you make? Select TWO.
- ADefine the violation as specific behaviors, such as dismissing a stated problem or blaming the customer, with one concrete transcript line per behavior.correct
- BTell the model to flag a transcript only in cases where it is very confident, based on its own judgment of the exchange, that the tone is genuinely unprofessional.
- CList acceptable informal patterns, such as casual greetings and light humor, that must never be flagged.correct
- DHave the model rate each transcript's overall tone on a numeric scale from 1 to 10 and automatically flag every transcript whose score comes out above 7.
Why
Naming the exact behaviors that count as violations, each anchored by a concrete example, turns a subjective label into criteria a reviewer can check. Explicitly listing the informal patterns that are acceptable targets the precise class being over-flagged, telling the model what to skip rather than leaving that boundary to taste.
Tool Design & MCP Integration18.0% of the exam
Q1
The MCP server exposes a tool described only as "issue_refund — refunds a customer." In 31% of refund attempts the agent omits the
order_idbecause the description never states which inputs are required or what they mean. What is the best way to improve reliability?- AExpand the tool description to name each parameter, mark
order_idas required, and state when refunds apply.correct - BAdd a system-prompt note telling the agent to always pass a valid order ID whenever it calls the refund tool.
- CAdd server-side validation that rejects calls lacking
order_idso the agent can retry after each failure. - DSplit
issue_refundintostart_refundandconfirm_refundso the agent is forced to make a second confirming call.
Why
The failure stems from an under-specified tool description, so the fix belongs in the tool definition itself: naming parameters, marking
order_idrequired, and stating applicability. A self-describing interface lets the model select inputs correctly without external scaffolding, which is the core of good MCP tool design.- AExpand the tool description to name each parameter, mark
Q2
Invoices are extracted into records, but downstream systems reject 18% of them because
total_amountarrives as strings like "$1,240.00" or sometimes null. The extraction tool's schema currently declarestotal_amountas{"type": "string"}. What is the most effective way to block malformed output?- AAdd a post-processing script that parses the strings and strips currency symbols after extraction.
- BDefine
total_amountas{"type": "number", "minimum": 0}and make it a required field.correct - CInstruct the model in the prompt to always return numeric totals without symbols.
- DAdd a regex
patternto the schema sototal_amountstrings must match a currency format.
Why
Gating output with a typed, required numeric schema forces the model's structured output to conform before it is emitted, preventing string-formatted or null totals at the source. Schema constraints are the strongest guarantee because the output cannot be produced unless it validates.
Q3
A support agent's
issue_refundMCP tool is described in one line: "Handles refunds." Transcripts show the agent omitting the requiredorder_idin a third of calls, and also invoking the tool when customers ask for exchanges, which it does not support. Which two changes to the tool definition should you make? Select TWO.- AAdd a system-prompt instruction reminding the agent to include an order ID with every refund call.
- BDocument each parameter in the description and mark
order_idas required.correct - CHave the server default a missing
order_idto the customer's most recent order so incomplete calls succeed. - DSplit the tool into separate
request_refundandapprove_refundtools so every refund takes two calls. - EState in the description when the tool applies — refunds only — and that exchanges are out of scope.correct
Why
Both defects trace to an under-specified interface, so both fixes belong in the tool definition itself. Documenting the parameters and marking
order_idrequired tells the model what inputs every call needs, while stating the tool's applicability conditions stops it from being selected for exchanges it cannot handle. Descriptions are the primary mechanism the model uses to decide when and how to call a tool.Q4
An internal toolkit exposes
lookup_docsandsearch_docs, both described as "Finds relevant documentation." The assistant's system prompt also says "when in doubt, use search_docs." Engineers report documentation requests landing on the wrong tool about half the time, including cases wherelookup_docswas clearly the fit. Which two changes should you make? Select TWO.- ALower the sampling temperature on requests so the model's tool selection becomes more deterministic.
- BRewrite each tool's description to state the distinct corpus it covers and when to choose it.correct
- CRemove the system-prompt sentence that steers the model toward
search_docsregardless of the request.correct - DRe-register the two tools in the opposite order so the preferred one is encountered earlier in the tool list.
Why
Descriptions are the primary signal the model uses to choose between tools, and two identical ones give it no basis to differentiate — rewriting them to name each tool's distinct corpus and use case removes the ambiguity. Separately, system-prompt wording can create unintended tool associations, and a blanket "when in doubt" directive biases selection toward one tool even when the other is clearly correct.
Context Management & Reliability15.0% of the exam
Q1
The coordinator dispatches 6 parallel sub-agents, each researching one supplier. Each sub-agent returns its full browsing transcript of roughly 18,000 tokens, and the coordinator's window overflows before it can merge them. What is the best way to keep the merge within budget?
- AHave each sub-agent return a structured summary of its findings instead of its full transcript.correct
- BIncrease the coordinator's context window and feed all 6 raw transcripts unchanged.
- CHave each sub-agent write its full transcript to a file and hand the coordinator just the file path.
- DRun the 6 sub-agents sequentially instead of in parallel so their transcripts arrive one at a time.
Why
Sub-agents should compress their own context into a concise structured summary before handing back to the coordinator, so the coordinator merges distilled findings rather than raw transcripts. This handoff pattern keeps the merge step within budget regardless of how much each sub-agent read. It preserves all six suppliers' coverage while shrinking the tokens that cross the boundary.
Q2
A developer keeps pasting the same 400-token explanation of the project's folder layout and naming rules into every Claude Code session before asking for changes. What's the most maintainable way to make this guidance persistent?
- AMove the layout and naming rules into the project's
CLAUDE.mdfile.correct - BAdd the rules to
~/.claude/CLAUDE.md, which loads automatically at session start. - CCreate a custom slash command that inserts the 400-token explanation on demand.
- DHave Claude infer the layout from the directory tree at the start of each session.
Why
Project-level
CLAUDE.mdis loaded automatically into context at session start, so durable conventions belong there rather than in repeated manual pastes. This removes the per-session token re-entry and keeps the guidance versioned with the repository. It is the intended mechanism for persistent project context in Claude Code.- AMove the layout and naming rules into the project's
Q3
A support agent compresses its conversation history into a rolling summary every 10 turns. An audit of escalated billing cases shows handoff notes saying things like "customer disputes a recent charge of around $180" when the customer actually stated $183.42 and was promised a callback by March 12. Which two changes prevent these details from being lost? Select TWO.
- AAdd an instruction to the summarization prompt telling the model to be extra careful when carrying over numbers and dates.
- BExtract exact amounts, dates, and identifiers into a structured case-facts block maintained outside the summarized history.correct
- CDisable the rolling summarization entirely and retain the full transcript in context so that nothing is ever paraphrased away.
- DBuild escalation handoffs from the structured case record rather than from the rolling prose summary.correct
Why
Exact figures survive when they are captured verbatim in a structured case-facts block that summarization never touches, and escalations stay accurate when the handoff is assembled from that structured record instead of the paraphrased narrative. The first change protects the values during the conversation; the second ensures the protected values are what actually reach the human agent.
Q4
A research coordinator concatenates eight sub-agent reports into a single unbroken block before synthesis, and reviewers keep finding that findings from the third through sixth reports never appear in the final brief. Which two changes address this? Select TWO.
- AOpen the aggregated input with a key-findings digest that surfaces each report's main conclusions up front.correct
- BAppend a brief recap at the end of the input and rely on it alone, leaving the reports unlabeled in arrival order.
- CInsert explicit section headers marking where each report begins and which sub-agent produced it.correct
- DAdd an instruction telling the synthesis model to pay equal attention to every report regardless of its position in the input.
- ERandomize report order on each run so no report is permanently stuck in the middle.
Why
Long-context models process the beginning and end of an input most reliably, so leading with a digest of every report's main conclusions puts the essential findings where attention is strongest. Explicit section headers then demarcate the middle reports so each one is a labeled unit rather than an anonymous stretch of a continuous wall of text.
The full CCAR-F bank
Weighted to the published blueprint, with a written explanation on every option — not just the correct one — so a wrong answer tells you why it was wrong.
See CCAR-FNot affiliated with or endorsed by Anthropic. Domain names and weightings are taken from the published exam guide; always check the official guide before booking.