The CCAR-F weights Agentic Architecture & Orchestration at 27%, its largest domain, and builds every question on a production scenario. These ten sample questions cover all five domains.
| Fact | Detail |
|---|---|
| Exam code | CCAR-F |
| Number of items | 60 |
| Item format | Multiple-choice and multiple-response; each item states how many responses to select |
| Exam structure | 4 scenarios, drawn from a bank of 6 |
| Time limit | 120 minutes |
| Delivery | Proctored, online or at a Pearson VUE test center |
| Passing score | Scaled score of 720 on a scale of 100 to 1,000 |
| Exam fee | $125 USD |
| Validity | 12 months from the date the credential is awarded |
Source: the Claude Certified Architect - Foundations Exam Guide, version 1.0, effective July 2026. Anthropic notes that the guide is subject to change without notice.
The Claude Certified Architect - Foundations certification covers decisions about tradeoffs when implementing solutions with Claude. The exam guide lists four technology areas: Claude Code, the Claude Agent SDK, the Claude API and the Model Context Protocol (MCP). Questions are grounded in scenarios such as customer support agents, multi-agent research pipelines, Claude Code in CI/CD workflows, developer productivity tools and structured data extraction.
10 free CCAR-F practice questions
These questions come from CertCompanion's CCAR-F bank of 314 questions, the same pool the full practice exam draws from. Choose an answer before you open the explanation.
Question 1
You are configuring a hook in the Agent SDK. You want the hook to match all tools from an MCP server named 'memory'. Which matcher string should you use? (Select one!)
- A. 'mcp__memory__.*'
- B. '^mcp__memory'
- C. 'memory'
- D. 'mcp__memory'
Show answer and explanation
Correct answer: A. 'mcp__memory__.*'
Matchers that contain only letters, digits, underscores, or pipes are treated as exact strings with '|' as alternation. 'mcp__memory' contains only letters and underscores, so it is an exact string and matches no tool (since tool names include the method suffix). To match all tools from that server, use a regex pattern like 'mcp__memory__.*'. The wildcard 'memory' is not a valid matcher syntax, and '^mcp__memory' would match only the server prefix, not the full tool names.
Question 2
You are defining a custom subagent in Claude Code. You have set the model field in the subagent's frontmatter to 'sonnet'. You also set the environment variable CLAUDE_CODE_SUBAGENT_MODEL to 'opus'. When the subagent is invoked without a per-invocation model parameter, which model will be used? (Select one!)
- A. The model is determined randomly between the environment variable and the frontmatter.
- B. opus, because the environment variable takes precedence over the frontmatter.
- C. The main conversation's model, because the frontmatter is ignored when an environment variable is set.
- D. sonnet, because the frontmatter is specific to the subagent.
Show answer and explanation
Correct answer: B. opus, because the environment variable takes precedence over the frontmatter.
The official Claude Code subagent documentation specifies the exact model resolution order: CLAUDE_CODE_SUBAGENT_MODEL environment variable, per-invocation model parameter, subagent definition's model frontmatter, then the main conversation's model. Because the environment variable is set to 'opus' and no per-invocation parameter overrides it, the environment variable takes precedence over the subagent's 'sonnet' frontmatter setting. The frontmatter is not ignored; it simply sits lower in the deterministic resolution order.
Question 3
You are using the Agent SDK. Your agent's context window is filling up, and you notice that auto-compaction is triggered near the limit, emitting a system message with subtype 'compact_boundary'. You are concerned that specific early instructions may not survive compaction. What is the recommended way to ensure persistent rules are preserved? (Select one!)
- A. Use a system prompt instruction that tells the model to remember all early instructions.
- B. Rely on the auto-compaction summary to include all instructions, since it preserves everything.
- C. Place persistent rules in CLAUDE.md, which is re-injected every request, and optionally add a free-form section telling the compactor what to preserve.
- D. Increase the context window size to avoid compaction entirely.
Show answer and explanation
Correct answer: C. Place persistent rules in CLAUDE.md, which is re-injected every request, and optionally add a free-form section telling the compactor what to preserve.
Auto-compaction replaces older messages with a summary, so specific early instructions may not survive. Persistent rules belong in CLAUDE.md because it is re-injected every request. You can also add a free-form CLAUDE.md section that the compactor matches on intent. Relying on the summary, increasing the context window, or using a system prompt are not reliable structural fixes.
Question 4
You are building an agent that uses a custom tool for a rarely-used but very large operation. You want to keep the initial system prompt small and only include the tool's full definition when the agent actually needs it. Which optional tool-definition property enables this behavior, and what is its effect? (Select one!)
- A. eager_input_streaming: streams the tool's input schema incrementally to reduce the initial token footprint
- B. defer_loading: excludes the tool from the initial system prompt and expands it inline when tool search returns a tool_reference
- C. allowed_callers: restricts which callers can invoke the tool, preventing unauthorized agents from loading it
- D. cache_control: adds a prompt-cache breakpoint at the tool definition so it is not re-sent on subsequent requests
Show answer and explanation
Correct answer: B. defer_loading: excludes the tool from the initial system prompt and expands it inline when tool search returns a tool_reference
The defer_loading property is designed exactly for this scenario: it keeps the tool definition out of the initial system prompt and expands it inline only when the tool search mechanism returns a tool_reference for that tool. cache_control affects prompt caching, not initial inclusion. allowed_callers restricts invocation, not loading. eager_input_streaming is about streaming input data, not deferring the schema. This property is available on all tools and is the official mechanism for surfacing only relevant tools per query.
Question 5
You are designing a tool for an e-commerce agent that retrieves order details. The tool will be called with a customer ID and an optional order ID. You want to ensure the model provides valid inputs and that the tool call structure is strictly enforced. Which configuration should you use? (Select one!)
- A. Set strict: true on the tool definition and rely on the model to infer missing optional parameters.
- B. Set strict: true on the tool definition and use tool_choice: auto to allow the model to decide when to call it.
- C. Set strict: true on the tool definition and use tool_choice: none to prevent tool calls.
- D. Set strict: true on the tool definition and use tool_choice: any to force a tool call every turn.
Show answer and explanation
Correct answer: B. Set strict: true on the tool definition and use tool_choice: auto to allow the model to decide when to call it.
The principle is that strict: true guarantees the model's tool calls match your JSON schema exactly, but it does not force the model to call the tool. Using tool_choice: auto allows the model to decide when to call the tool while still enforcing schema validity. Forcing a tool call with 'any' or a named tool is not needed here and could cause errors with certain models. Setting tool_choice to none would prevent the tool from being used at all, which is not the goal.
Question 6
A developer wants to enforce a critical business rule that must never be violated, such as blocking all file deletions. They are considering whether to put the rule in CLAUDE.md or use a hook. What is the correct approach? (Select one!)
- A. Use a combination of CLAUDE.md and a hook, because CLAUDE.md provides the rule and the hook enforces it.
- B. Put the rule in CLAUDE.md because it is loaded at the start of every session and will shape behavior.
- C. Use a permission deny rule, because it is evaluated before hooks and will block the tool call.
- D. Use a PreToolUse hook that denies the tool call, because CLAUDE.md is context, not enforced configuration.
Show answer and explanation
Correct answer: D. Use a PreToolUse hook that denies the tool call, because CLAUDE.md is context, not enforced configuration.
CLAUDE.md is treated as context, not enforced configuration; it shapes behavior but cannot block actions. For a hard guarantee like blocking file deletions, you need a deterministic enforcement mechanism, such as a PreToolUse hook that denies the call or a permission deny rule. A hook is appropriate because it runs before the tool call and can block it. The other options either rely on probabilistic CLAUDE.md guidance or incorrectly state that deny rules are evaluated before hooks (they are evaluated after hooks).
Question 7
A developer is working on a multi-file feature refactor in a codebase they have never seen before. They want Claude Code to explore the codebase and propose a plan without making any edits, and they want to ensure that no file modification can be auto-approved even if the session has permissive allow rules. Which approach satisfies this requirement? (Select one!)
- A. Use default mode and add a CLAUDE.md instruction stating that no files should be edited until the plan is approved
- B. Enter plan mode via the /plan command; file edits are never auto-approved and route to the canUseTool callback regardless of allow rules
- C. Use bypassPermissions mode and add a deny rule for the Edit tool
- D. Use acceptEdits mode and rely on the model to follow a prompt asking it not to edit files
Show answer and explanation
Correct answer: B. Enter plan mode via the /plan command; file edits are never auto-approved and route to the canUseTool callback regardless of allow rules
Plan mode is designed for exploration and planning without editing source files. In plan mode, file edits are never auto-approved and always route to the canUseTool callback, regardless of any allow rules, so the requirement is met structurally. A CLAUDE.md instruction is only context and cannot block edits, so it is not a hard guarantee. acceptEdits mode explicitly auto-approves edits, which is the opposite of the requirement. bypassPermissions mode runs all allowed tools without prompts, and a deny rule for Edit would block edits but would not provide the planning workflow the developer wants.
Question 8
A team is building a classification system that categorizes support tickets into 'billing', 'technical', or 'account'. They have a few ambiguous tickets that don't fit neatly into any category. They want to ensure the model handles these edge cases gracefully. Which schema design approach is most effective? (Select one!)
- A. Use an enum with the three categories plus an 'other' value for unclassifiable inputs.
- B. Make the category field nullable and allow the model to return null for ambiguous cases.
- C. Use a free-text field instead of an enum to allow the model to describe the category.
- D. Use an enum with only the three known categories and rely on the model to choose the closest one.
Show answer and explanation
Correct answer: A. Use an enum with the three categories plus an 'other' value for unclassifiable inputs.
For categorical fields, using an enum constrains output to valid values. To handle unclassifiable inputs, the enum should include an 'other' value. This allows the model to indicate that none of the predefined categories apply, rather than forcing a potentially incorrect choice. Making the field nullable would allow null, but 'other' is more informative for downstream processing. Free-text loses the constraint benefit of an enum.
Question 9
A developer is building a tool that extracts customer information from support tickets. The schema includes a field 'customer_email' that is marked as required. In many tickets, the email is not present. The model often fabricates a plausible email address. What is the most effective schema design change to reduce fabrication? (Select one!)
- A. Add a regex pattern to the schema to validate the email format.
- B. Keep the field required but add a few-shot example showing a fabricated email.
- C. Make the field nullable and only mark it required when the information is expected in every case.
- D. Remove the field from the schema entirely.
Show answer and explanation
Correct answer: C. Make the field nullable and only mark it required when the information is expected in every case.
Marking a field required when the source information is often absent encourages the model to fabricate a value. The correct design is to make uncertain fields nullable, allowing the model to return null instead of inventing a value. Adding a few-shot example of fabrication is counterproductive. Removing the field loses information. A regex pattern validates format but does not prevent fabrication when the email is absent.
Question 10
Your agent is processing a long document and the model returns a response with stop_reason 'model_context_window_exceeded'. The response is truncated mid-sentence. What is the correct interpretation and remediation? (Select one!)
- A. The response is truncated but usable; extract what you can and continue
- B. The stop_reason indicates a model error; retry with the same context
- C. The response is complete; the stop_reason is informational only
- D. The response is truncated and should be discarded; you must reduce the context and retry
Show answer and explanation
Correct answer: D. The response is truncated and should be discarded; you must reduce the context and retry
stop_reason 'model_context_window_exceeded' means the response filled the context window and is truncated. The correct handling is to treat the response as incomplete, discard it, reduce the context (e.g., by trimming tool outputs or summarizing), and retry. Treating it as complete risks acting on partial information. Extracting usable fragments is unreliable because the truncation point is arbitrary. Retrying with the same context will hit the same limit again.
CCAR-F domains and weights
The exam guide splits the blueprint into five domains. Per-domain percentages on your score report are informational; pass or fail depends on the total scaled score.
| Domain | Weight |
|---|---|
| 1. Agentic Architecture & Orchestration | 27% |
| 2. Tool Design & MCP Integration | 18% |
| 3. Claude Code Configuration & Workflows | 20% |
| 4. Prompt Engineering & Structured Output | 20% |
| 5. Context Management & Reliability | 15% |
The six exam scenarios
Each sitting presents four of these six scenarios at random:
- Customer Support Resolution Agent
- Code Generation with Claude Code
- Multi-Agent Research System
- Developer Productivity with Claude
- Claude Code for Continuous Integration
- Structured Data Extraction
Practice across all six, since you cannot know which four you will see.
Frequently Asked Questions
How many questions are on the CCAR-F? The exam has 60 items to complete in 120 minutes. Items are multiple-choice and multiple-response, and each item states how many responses to select.
What is the CCAR-F passing score? The cut score is 720 on a scaled range of 100 to 1,000. The score was set through a formal standard-setting study. Your result shows pass or fail, the scaled score and the percentage correct in each domain.
How much does the CCAR-F cost? The exam fee is $125 USD per attempt. The fee shown at checkout reflects any discount that applies to a partner tier.
What is the retake policy? After a failed attempt you wait 14 days before the second attempt, 30 days before the third and 90 days before the fourth. You can take an exam up to four times in a rolling twelve-month period, and the fee applies to each attempt.
How long is the credential valid? The credential is valid for 12 months from the date it is awarded. On-time renewal is a free, non-proctored assessment on the Anthropic Partner Academy. If the credential lapses, you retake the full exam at the full fee. If exam content changes significantly, Anthropic may require holders to retake the full exam instead.
Who is the exam designed for? The guide describes the ideal candidate as a solution architect who designs and implements production applications with Claude, with typically six or more months of hands-on experience with the Claude API, Agent SDK, Claude Code and MCP.
How do I register? Registration runs through the Anthropic Partner Academy and Pearson VUE. You choose online proctoring or a Pearson VUE test center, and you can cancel or reschedule up to 24 hours before the appointment.
Next steps
Work through the full CCAR-F practice exam for every domain with explanations. For the advanced tier, see the CCAR-P free practice questions, and browse every Anthropic certification practice exam to compare the tracks.
Practice all five CCAR-F domains with full explanations at CertCompanion's CCAR-F exam page.