Skip to content
CCAR-P Español

Certification Notes

What you need to know cold for the four Claude exams · verified against official documentation, August 2026

These notes cover the common core of the four exams. Each section carries the weight it has in each one, so you can decide where to spend your time. Sections 1-4 and 6 count for three exams at once: they are the best investment in the syllabus.

In a hurry? Start with the flashcards: batches of 10 in three minutes, with spaced repetition. These notes are the long reference to come back to when a card doesn't add up.

1 · Agentic loop and tool use

CCAR-F 27%CCAR-P 17%CCDV-F 14.7%

An agent is, in the definition Anthropic uses, an LLM using tools in a loop autonomously. The cycle has five steps: receive prompt → the model evaluates and responds → the tools it asked for are executed → the results come back → repeat. It ends when the model produces a response with no tool calls.

How you know the loop must continue

At API level, when Claude wants to use a tool the response carries stop_reason: "tool_use" and one or more tool_use blocks with id, name and input. When it has finished, stop_reason: "end_turn". That field is the loop's flow control.

Possible values of stop_reason: end_turn, max_tokens, stop_sequence, tool_use, pause_turn, refusal, model_context_window_exceeded.

How results come back

In a message with role: "user" containing tool_result blocks. Fields: tool_use_id (required), content (optional) and is_error (optional). There is no tool or function role in Claude's API, unlike other chat APIs.

Two formatting rules that return 400 if broken: the message with the tool_result blocks must come immediately after the assistant message that emitted the tool_use, and the tool_result blocks must come first in the content array. Any text goes after them.

Tool errors

A tool failure is not an exception in your application: it is information for the model. It is returned as a tool_result with is_error: true and a readable cause, so the agent can retry with different parameters, escalate or report.

Defining tools

Three required fields: name (regex ^[a-zA-Z0-9_-]{1,64}$), description and input_schema (JSON Schema).

Literal sentence from the docs"Provide extremely detailed descriptions. This is by far the most important factor in tool performance". The target is at least 3-4 sentences per description. In Anthropic's tests, rewriting tool descriptions with a testing agent cut task completion time by 40%.

Official best practices: consolidate related operations into fewer tools with an action parameter, instead of create_pr/review_pr/merge_pr; namespacing by service (github_list_prs); return stable semantic identifiers, not opaque internal references.

The ability to choose the right tool degrades above 30-50 available tools. With large catalogues, tool search is recommended. Splitting the tools across several MCP servers connected at the same time solves nothing: the model still sees the total.

tool_choice: four values

ValueEffect
autoDefault when tools are present. The model decides.
anyForces the use of some tool.
toolForces a specific one, with name.
noneDefault when there are no tools.

With any or tool the API prefills the assistant message, so there will be no natural text before the tool_use. If your interface shows that text as visible reasoning, it disappears.

Parallel tool use is enabled by default; it is disabled with disable_parallel_tool_use: true inside tool_choice.

Client tools vs server tools

Client tools: you define them, the response arrives with stop_reason: "tool_use", you execute and return a tool_result. This also includes the Anthropic-schema ones such as bash, text_editor, memory or computer.
Server tools: they run on Anthropic's infrastructure within the same request, with no round trip on your side — web search, web fetch, code execution, MCP connector.

Anti-patterns that show up as distractors
  • Parsing natural language ("I'm done") to decide whether the loop stops.
  • Using an iteration cap as the primary stopping mechanism (as a safety net yes, as a criterion no).
  • Checking whether there is assistant text to consider the task finished: there can be text alongside a tool_use.
  • Throwing an exception or returning a 500 from a tool instead of is_error.
platform.claude.com/docs/en/agents-and-tools/tool-use/handle-tool-calls · .../define-tools · code.claude.com/docs/en/agent-sdk/agent-loop

2 · Subagents and multi-agent orchestration

CCAR-F 27%CCAR-P 17%CCDV-F 14.7%

Hub-and-spoke architecture: a coordinator manages all communication between subagents, error handling and information routing. It is chosen for observability and control, not for savings — multi-agent systems consume on the order of 15× the tokens of a chat (simple agents, ~4×). That is why they are only justified on high-value tasks.

The most-asked point: context isolation

Central ruleA subagent starts with fresh context. The only thing that crosses the boundary is the prompt string it is invoked with, plus its own system prompt, the project's CLAUDE.md and the tool definitions. It does not inherit the parent's history or tool results. And on the way back, only the subagent's final message reaches the parent as a tool result.

Practical consequence: if the synthesis subagent produces reports empty of detail, it is almost always because the coordinator did not include the previous findings in its prompt. And when passing context between agents it is worth using structured formats that separate content from metadata (source URLs, document names, pages) so attribution is not lost.

Spawning and parallelism

  • The spawn tool must be in allowedTools or the invocation is denied.
  • Parallelising = emitting several spawn calls in a single response from the coordinator. One per turn is sequential execution in disguise.
  • AgentDefinition: description and prompt are required. Optional: tools, disallowedTools, model (including 'inherit'), skills, memory, mcpServers, maxTurns, effort, permissionMode. If you omit tools, it inherits all the available ones.
  • Programmatically defined agents take precedence over filesystem ones with the same name.

Designing the coordinator

Prompts of objectives and quality criteria, not procedural steps, so the subagents can adapt. The coordinator must dynamically select which subagents to invoke according to the complexity of the query, instead of always walking the full pipeline, and partition the scope to minimise duplication. The typical failure is a decomposition that is too narrow and leaves gaps: it is fixed with a loop where the coordinator evaluates the synthesis, spots the holes and re-delegates with targeted queries.

Figures from Anthropic's research system

  • Multi-agent (Opus as lead, Sonnet as subagents) beat single-agent by 90.2% on their internal eval.
  • Three factors explain 95% of the performance variance; token usage alone explains 80%. The other two: number of tool calls and model choice.
  • Scaling rules in the lead's prompt: simple fact = 1 agent and 3-10 tool calls; direct comparison = 2-4 subagents with 10-15 calls each; complex research = more than 10 subagents.
  • The lead launches 3-5 subagents in parallel and each uses 3+ tools in parallel: up to 90% less time on complex queries.
  • Each subagent can spend tens of thousands of tokens and return a distilled summary of 1,000-2,000 tokens.
code.claude.com/docs/en/agent-sdk/subagents · anthropic.com/engineering/multi-agent-research-system

3 · Workflow vs agent: the five patterns

CCAR-F 27%CCAR-P 17%CCDV-F 14.7%
Canonical definitionsWorkflow = LLMs and tools orchestrated through predefined code paths. Agent = the LLM dynamically directs its own process and tool usage. Both are "agentic systems".

The criterion: workflows give predictability and consistency on well-defined tasks; agents are chosen when you need flexibility and model-driven decision-making at scale. And the recommendation that comes before all of it: for many applications it is enough to optimise a single call with retrieval and in-context examples. Add complexity only when it demonstrably improves the outcome.

The base building block for everything is the augmented LLM: model + retrieval + tools + memory.

PatternWhenDistinguishing mark
Prompt chainingTask decomposable into fixed subtasksTrades latency for accuracy; allows programmatic "gates" between steps
RoutingInputs of distinct categoriesRequires separable categories and reliable classification
ParallelizationIndependent subtasks (sectioning) or several passes over the same thing (voting)The subtasks are predefined
Orchestrator-workersThe decomposition is not known in advanceThe subtasks are decided by the model at runtime
Evaluator-optimizerThere are clear criteria and feedback demonstrably improves thingsOne LLM generates, another evaluates, you iterate
The confusion they are afterParallelization vs orchestrator-workers. The difference is not how many agents there are or whether they run at the same time: it is whether the subtasks were defined before starting.

Three closing principles: simplicity, transparency (showing the planning steps) and careful design of the ACI (agent-computer interface).

anthropic.com/engineering/building-effective-agents

4 · Context engineering

CCAR-F 15%CCAR-P 13%CCDV-F 11%

Context engineering = curating and maintaining the optimal set of tokens during inference. It is the natural progression from prompt engineering, which was limited to writing instructions. Guiding principle: the smallest possible set of high-signal tokens.

Context rotThe more tokens in the window, the less able the model is to recall accurately. Cause: quadratic attention over n tokens and a training distribution biased towards short sequences. It is a degradation gradient, not a cliff — it fits in the window and still performs worse.

The three techniques for long tasks, and when to use each

TechniqueWhen
CompactionConversational flow with a lot of back and forth
Structured note-taking (agentic memory)Iterative development with clear milestones
Multi-agent architecturesResearch and analysis with parallel exploration

Compaction

The history is passed to the model to summarise. It preserves architectural decisions, unresolved bugs and implementation details; it discards redundant tool outputs. In Claude Code it continues with the compressed context plus the five most recently accessed files. When tuning it: first maximise recall, then iterate on precision.

Practical consequence that comes up in the examCompaction can lose instructions from the initial prompt. Whatever must persist goes in CLAUDE.md, because it is reinjected on every request.

Tool result pruning

"The safest, lightest form of compaction is tool result clearing". The official reasoning: once a tool was called a long time ago, the agent does not need to see its raw result again.

Just-in-time vs monolithic

In JIT the agent keeps lightweight identifiers (paths, saved queries, links) and loads the data at runtime with tools, instead of preloading everything. Advantages: progressive discovery, and metadata as signal (names, folder hierarchy, timestamps). Acknowledged trade-off: runtime exploration is slower than precomputed retrieval. Claude Code uses a hybrid model: CLAUDE.md is loaded up front, glob and grep retrieve just-in-time.

anthropic.com/engineering/effective-context-engineering-for-ai-agents

5 · Claude Code: memory, permissions, hooks, sessions

CCAR-F 20%CCAR-P 7%CCDV-F 3.1%

Watch the split: in the Developer it weighs only 3.1%. If this is your daily territory, it is exactly where you should not spend study time.

CLAUDE.md hierarchy

Order of scope: managed policyuser (~/.claude/CLAUDE.md) → project (./CLAUDE.md) → local (./CLAUDE.local.md).

They concatenate, they do not overwriteThe project one does not replace the user one: they add up. That is why contradictory instructions across levels produce erratic behaviour — you have to remove them, not trust that one will win.

Settings precedence (different from CLAUDE.md's)

Managed (not overridable) → CLI arguments → local → project → user. Permission rules merge across scopes instead of overwriting each other.

Permissions

Three types: allow / ask / deny. They are evaluated in the order deny → ask → allow; the first match decides and specificity does not alter that order. A deny with a bare name (Bash) removes the tool from the context; with a specifier (Bash(rm *)) it blocks only the matches.

Modes: default, acceptEdits, plan, auto, dontAsk, bypassPermissions. Plan mode blocks edits until you approve the plan: its value is in high-impact tasks with uncertainty about the scope of the change.

Hooks

Main events: PreToolUse, PostToolUse, UserPromptSubmit, Stop, SubagentStart/SubagentStop, PreCompact, SessionStart/SessionEnd, Notification, Setup.

  • PreToolUse returns permissionDecision: allow, deny, ask or defer. A deny prevents execution and Claude receives the rejection as a tool result.
  • PostToolUse can add context or replace the output before Claude sees it.
  • Hooks run in your process, outside the context window: they consume no context beyond whatever they return.
  • Exit code 2 = blocking error, not overridable even with an allow.
  • Silence is not approval: a hook can deny, but staying quiet lets the normal permission flow continue.

Sessions: three distinct mechanisms

MechanismWhat it does
continuePicks up the most recent session in the directory, with no ID
resumePicks up a specific session by ID
forkCreates a new session with a copy of the history, with its own ID, leaving the original intact
The nuance of forkIt branches the conversation, not the filesystem. File edits made in the fork are real and visible to other sessions. To revert files you need checkpointing.

Headless

-p/--print with --output-format text|json|stream-json, --allowedTools, --continue/--resume. This is the route for CI and automation.

code.claude.com/docs/en/memory · .../settings · .../permissions · .../hooks · .../headless

6 · Model Context Protocol

CCAR-P 19%CCAR-F 18%CCDV-F 10.6%

Architecture

An MCP Host (the AI application) creates one MCP Client per MCP Server, with a dedicated 1:1 connection. Two layers: data layer (JSON-RPC 2.0, primitives, notifications) and transport layer (framing, channels, authorisation).

The three server primitives and who controls them

The most repeatable MCP questionTools → controlled by the model. Resources → controlled by the application (they are read-only). Prompts → controlled by the user (often exposed as slash commands).

Methods: tools/list, tools/call; resources/list, resources/read; prompts/list, prompts/get. Resources carry a unique URI and a MIME type, in two patterns: Direct Resources (fixed URI) and Resource Templates (parameterised URI).

Transports

Two standard ones: stdio (newline-delimited JSON-RPC over a subprocess launched by the client) and Streamable HTTP (POST to a single endpoint; JSON response or SSE stream).

Authorisation

  • It is optional and applies to HTTP transports. stdio should not use it: it takes credentials from the environment.
  • The MCP Server acts as an OAuth 2.1 Resource Server; the client as an OAuth 2.1 Client.
  • PKCE is mandatory. The token always goes in the Authorization: Bearer header, never in a query string.
  • Codes: 401 unauthorised or invalid token, 403 insufficient scopes, 400 malformed request.

MCP inside Claude Code

Three scopes: local (default, per machine), project (.mcp.json versioned in the repo, requires interactive approval the first time), user (all your projects). Precedence local > project > user.

Naming: tools = mcp__server__tool; prompts = slash commands /mcp__server__prompt; resources = mentions @server:protocol://path.

Official security noticeAnthropic reviews connectors against its listing criteria but does not audit or manage the security of any MCP server. Responsibility for what you expose is yours.
modelcontextprotocol.io/docs/learn/architecture · .../server-concepts · /specification/latest/basic/authorization · code.claude.com/docs/en/mcp

7 · Skill, MCP, hook or CLAUDE.md: the decision tree

CCAR-F 18%CCDV-F 10.6%CCAR-P 7%
SymptomAnswer
Convention misapplied twiceCLAUDE.md
Same prompt retypedSkill the user can invoke
Same playbook pasted for the third timeSkill
Copying data from a tab Claude cannot seeMCP server
Side task that floods the contextSubagent
"It must always happen, without asking"Hook
Second repo with the same setupPlugin
MCP vs Skill, in the official sentence"MCP gives Claude tools for an external system, with connection and authentication managed by the server. Skills give it knowledge about how to use those tools". They are complementary, not alternatives.
Hook vs Skill: determinism"An instruction like "never edit .env" in CLAUDE.md or in a skill is a request, not a guarantee. A PreToolUse hook that blocks the edit is enforcement".

Context cost of each mechanism

  • CLAUDE.md: full content on every request.
  • Skills: only the descriptions at the start.
  • MCP: tool names at the start, schemas deferred.
  • Subagents: isolated context.
  • Hooks: zero, unless they return output.

Agent Skills: progressive disclosure at three levels

LevelWhatCost
L1 Metadataname + descriptionAlways loaded, ~100 tokens per skill
L2 InstructionsBody of the SKILL.mdOn activation; target below 5k tokens
L3 ResourcesBundled filesZero until they are accessed

Required frontmatter in the standard: only name and description. description ≤1024 characters, in the third person, and it must say what it does and when to use it. Body below 500 lines.

code.claude.com/docs/en/features-overview · docs.claude.com/en/docs/agents-and-tools/agent-skills/overview

8 · Messages API, errors, streaming and batch

CCDV-F 33.1%CCAR-P 19%

By far the heaviest domain in the Developer. A good part of it is generic software engineering: cheap points.

Basic structure

POST /v1/messages. Required: model, messages, max_tokens.

There is no system roleThe messages array only accepts user and assistant. The system prompt goes in the top-level system parameter, as a string or an array of text blocks — the latter is what lets you put a cache breakpoint there. Consecutive turns with the same role are combined into one.

Errors

CodeTypeWhat to do
400invalid_request_errorFix the request
401 / 403auth / permissionsCredential
413request_too_largeSplit it up (Messages 32 MB · Batch 256 MB · Files 500 MB)
429rate_limit_errorYour quota. It also fires on sudden traffic spikes: the mitigation is a gradual ramp
529overloaded_errorGlobal API overload, not yours. Exponential backoff

The official SDKs retry transient failures with exponential backoff, 2 retries by default, respecting retry-after. Every response carries a request-id header.

Streaming

Sequence: message_start → for each block content_block_start + N content_block_delta + content_block_stopmessage_deltamessage_stop. The usage figures in message_delta are cumulative.

Error-handling trapStream errors arrive as event: error after an HTTP 200, because the header has already been sent. A handler that only looks at the status code never sees them.

Non-streaming calls are limited to a 10-minute timeout. For long operations: streaming or Batch.

Message Batches API

  • 50% discount on input and output.
  • Limit: 100,000 requests or 256 MB, whichever is hit first.
  • Most finish in under 1 hour; results are available on completion or at 24 h, whichever comes first. Batches expire if they do not complete within 24 h.
  • Results downloadable for 29 days.
  • Batch states: only in_progress and ended. Per request: succeeded, errored, canceled, expired (the last three are not billed).
  • It does not support stream: true. Progress is tracked through the batch counters.
  • A 1-hour cache TTL is recommended, because they usually take more than 5 minutes.
docs.claude.com/en/api/messages · /en/api/errors · /en/build-with-claude/streaming · /en/build-with-claude/batch-processing

9 · Models, thinking, effort and tokens

CCDV-F 16.8%CCAR-P 13%CCAO-F 12%

Selection criterion

The correct answer almost alwaysMatch the model to the task. Never "always use the most capable one". Haiku for volume, speed and cost; Sonnet as the balance; Opus for complex reasoning and long agentic work. The typical distractors are using the top model for everything, disabling features to save money, or switching platform: none of them attacks the trade-off.

Thinking

  • Adaptive thinking: the model decides when and how much to think. In current models it is always on with no configuration.
  • Extended thinking with budget_tokens is the old mechanism, deprecated and rejected with a 400 on recent models.
  • Billing: reasoning tokens are billed as output and count against max_tokens, even though the text is not returned. You are charged for the tokens generated, not those of the visible summary.
  • thinking blocks carry a signature and must be returned unmodified, or 400.

Effort

Levels max, xhigh, high, medium, low, with default high. It is a behavioural signal, not a strict budget, and it affects all tokens including tool calls.

Interaction with the cacheEffort is rendered into the prompt, so changing it between requests breaks the cached prefix. In long sessions you have to keep it constant.

Tokens and limits

  • POST /v1/messages/count_tokens is free, with rate limits independent of those for message creation. It returns an estimate.
  • Rate limits per organisation and usage tier, measured in RPM, ITPM and OTPM.
  • ITPM is cache-aware: input_tokens + cache_creation_input_tokens count; cache_read_input_tokens does not count on most models.
  • max_tokens has no influence on the OTPM calculation: the tokens actually generated are counted.
docs.claude.com/en/about-claude/models/overview · /en/build-with-claude/thinking · /en/api/rate-limits

10 · Prompt caching

CCDV-F 16.8%CCAR-P 13%
ParameterValue
Default TTL5 minutes
Extended TTL1 hour
Maximum breakpoints4 (the automatic one uses up one)
Lookback window20 blocks per breakpoint
5-min write1.25× the base input
1-h write
Read (hit)0.1×
When it pays offWith a 5-minute TTL: an overhead of 0.25× and a saving of 0.9× per read → it pays off on the first read. With a 1-hour TTL you need two. It stacks with the Batch API discount.

Prefix hierarchy

toolssystemmessages, up to and including the marked block. Consequence: changing the tools invalidates everything below. Hence the discipline of keeping the tool catalogue stable in long sessions.

Other invalidations: changes to thinking or to effort invalidate messages; tool_choice and images, only messages. Setting a parameter explicitly to its default value is equivalent to omitting it and does not invalidate.

The silent failureEach model has a minimum number of cacheable tokens (between 512 and 4,096 depending on the model). Below the minimum nothing is cached and no error is returned. The symptom is that cache_creation_input_tokens and cache_read_input_tokens are both zero.

Cache lifetime is measured from the start of the request, and each use refreshes it at no extra cost.

docs.claude.com/en/build-with-claude/prompt-caching

11 · Structured output

CCAR-F 20%CCDV-F 11%

Two features: JSON outputs (schema in the output configuration) and strict tool use. The mechanism is constrained decoding: the grammar guarantees schema compliance, with no retries.

Prefill no longer worksFilling the assistant turn with { to force JSON was the classic technique. Today it is not supported on Claude 4.6 and later and is incompatible with JSON outputs. If it appears as an option, it is a historical distractor.
When the output may still not comply with the schemastop_reason: "refusal" — returns 200, you are billed, and the refusal prevails over the schema.
stop_reason: "max_tokens" — truncated output.
Also, the casing of enum values is not guaranteed: compare case-insensitively.
Defensive validation is still mandatory.

Fine details

  • Property order: the schema's order is respected, but the required ones come first. If order matters, mark everything as required.
  • Grammar caching: the first request with a new schema has extra compilation latency; it is cached for 24 h from the last use. Changing only name or description does not invalidate it.
  • Structured outputs injects an additional system prompt and changing the format invalidates the thread's prompt cache.
  • Citations + structured outputs = 400. They are incompatible.

Consistency without a schema

When there is no schema, the most effective technique is constraining with examples: the docs say explicitly that it is more effective than abstract instructions. Adjectives describe an aspiration; examples define it.

platform.claude.com/docs/en/build-with-claude/structured-outputs · .../strengthen-guardrails/increase-consistency

12 · Evals and hallucinations

CCAO-F 21%CCAR-P 16%CCDV-F 2.6%

Success criteria

They must be specific, measurable, achievable and relevant. Official example of a good criterion: "fewer than 0.1% of outputs over 10,000 trials flagged by the content filter". The bad one: "safe outputs".

The three principles, one of them counter-intuitive1. Be task-specific (reflect the real distribution, include edge cases).
2. Automate wherever possible.
3. Prioritise volume over quality — literally: "more questions with slightly worse signal and automated grading is better than fewer questions graded by hand with high quality".

Grading methods, in the official order of preference

MethodWhen
Code (exact match, string match)The fastest and most reliable. Binary, literal correctness
LLM-as-judgeNuanced judgements. "Test reliability first, then scale"
HumanThe docs say literally "Avoid if possible"

Three pieces of advice for LLM-as-judge: detailed, clear rubrics; empirical and bounded output (only correct/incorrect, or a 1-5 scale); and asking it to reason before scoring and then discarding the reasoning. In Anthropic's research system, a single judge with a single call turned out to be more consistent than several judges.

Methods by criterion, according to the docs: fidelity → exact match; consistency → cosine similarity; relevance and coherence → ROUGE-L; tone → Likert via LLM; privacy → binary classification.

Reducing hallucinations

Basics: allow it to say "I don't know"; use verbatim quotes as an anchor (for documents over 20k tokens, ask for the literal quotes before the task); verify, with retraction if it cannot find a quote backing a claim.

Advanced: chain-of-thought verification; best-of-N (same prompt N times — the inconsistencies give the hallucination away); iterative refinement; restriction to external knowledge (use only the documents provided).

Diagnosis in productionRepeat the same input several times. Inconsistent across runs → hallucination. Systematic, reproducible failure → prompt or model capability. Separating those two before touching anything is the first step.

And the official disclaimer: these techniques reduce, they do not eliminate, hallucinations.

platform.claude.com/docs/en/test-and-evaluate/develop-tests · .../strengthen-guardrails/reduce-hallucinations

13 · Security: injection, least privilege, secrets

CCAO-F 15%CCAR-P 14%CCDV-F 8.1%

Two distinct threat models

Jailbreak or direct injection: the adversary is the user. Indirect injection: the user is trusted, but Claude processes third-party content — websites, emails, documents, tool results.

Indirect injection mitigations (the most examinable part)

  • Put untrusted content only in tool_result blocks, never in the system prompt or in user text blocks. Claude is trained to treat instructions appearing inside tool results with scepticism.
  • Declare what that content is and where it comes from.
  • Declare the policy in the system prompt: content from tools and documents is untrusted data and can never override the system prompt or the original request.
  • Encode untrusted content in JSON: escaping gives unambiguous delimiters and prevents "escaping" the context by closing quotes or tags.
  • Do not put your own instructions inside a tool result: they are ignored or flagged as injection. They go in a later user turn.
  • Screening of tool outputs before Claude acts on them, with a lightweight model and structured output.
  • Red-team your own agent before deploying, and continuous monitoring afterwards.
Least privilege: the correct answer patternFaced with an agent that has capabilities it does not need, the correct answer is to remove the capability. Logging is forensic (the damage has already happened). Confirming depends on an attentive human and suffers from approval fatigue. Instructing in the system prompt is a request, not a control. None of the three closes the vector.

In the MCP connector this is implemented as an allowlist (disable by default and enable specific tools) or a denylist. For a read-only assistant, write and destructive tools are denied.

Keys and secrets

  • Store them in a secrets manager, rotate them periodically and revoke any that is suspected leaked.
  • Use workspaces to segment keys by project and environment — that way an incident is isolated.
  • Expiry is chosen when the key is created and cannot be changed afterwards. After expiry: 401, and they cannot be reactivated.
  • Expiry is no substitute for secrets hygiene.
  • CORS is not supported with zero data retention: you have to route through a backend proxy, never call the API from the browser.
platform.claude.com/docs/en/test-and-evaluate/strengthen-guardrails/mitigate-jailbreaks · .../manage-claude/authentication · .../agents-and-tools/mcp-connector

14 · RAG and retrieval strategies

CCAR-P 19%

Almost exclusive to the Architect Professional. If you are only going for the Foundations, you can skip it.

The decision that comes before building RAGIf the knowledge base fits under ~200,000 tokens (about 500 pages), you can put it entirely in the prompt with no RAG. With prompt caching, latency drops by more than 2× and cost by up to 90%. Building a retrieval pipeline over a corpus that fits in the window is unjustified complexity.

Why embeddings alone are not enough

Embeddings capture semantics and lose exact lexical matches: identifiers, error codes, rare proper nouns. The example in the docs is "Error code TS-999". BM25 retrieves them. They are combined with rank fusion, and that is the recommended baseline.

Contextual Retrieval and its figures

It consists of prepending to each chunk an explanatory context generated by the model (typically 50-100 tokens) before embedding it and indexing it in BM25. Measured as the reduction in retrieval failures against a 5.7% baseline:

ConfigurationFailure reduction
Contextual embeddings only−35% (5.7% → 3.7%)
+ Contextual BM25−49% (→ 2.9%)
+ Reranking−67% (→ 1.9%)

The benefits stack. Reranking: retrieve top-150, rerank and pass top-20 to the model. Top-20 performs better than top-10 and than top-5.

Approaches Anthropic tried and discardedAdding generic document summaries to each chunk ("very limited gains") and summary-based indexing ("poor performance"). They are perfect distractors because they sound reasonable.

Anthropic does not offer its own embedding model: the docs recommend external providers. And the post's final rule: "Always run evals".

anthropic.com/engineering/contextual-retrieval · platform.claude.com/docs/en/build-with-claude/embeddings

15 · Compliance: ZDR, HIPAA, retention

CCAO-F 15%CCAR-P 14%

Certifications

HIPAA-ready (with a BAA), ISO 27001:2022, ISO/IEC 42001:2023 (AI management systems), SOC 2 Type I and II. FedRAMP is not on that corporate list: it comes via third parties (Bedrock on GovCloud, Claude for Government).

The distinction that comes up mostUnder HIPAA, the API blocks with a 400 an ineligible feature.
Under ZDR, the API does not block: using an ineligible feature is opting out of the agreement for that particular piece of data.

Zero Data Retention

  • It is enabled per organisation and does not automatically extend to other organisations in the same account.
  • Not eligible: batch processing (it retains results), Files API, code execution, MCP connector, Agent Skills, and CORS.
  • Retained data is never used for training without express permission.

HIPAA

  • It requires a signed BAA, applies at organisation level and once enabled it is permanent: an admin cannot switch it off. For HIPAA and non-HIPAA workloads you need separate organisations.
  • If you have HIPAA, you do not also need ZDR.
A concrete rule that is easy to breakUnder HIPAA, do not include PHI in JSON schema definitions — not in property names, nor in enum, const or pattern. Schemas are cached separately and do not receive the protections. It is extremely easy to slip up by modelling a field as an enum of real values.

Retention despite any agreement: if the content is flagged by the automated trust & safety systems or there is a legal requirement, it can be retained for up to 2 years.

On Bedrock or Google Cloud the cloud provider is the data processor, not Anthropic: you have to consult their documentation.

support.claude.com/en/articles/10015870 · platform.claude.com/docs/en/manage-claude/api-and-data-retention

17 · Claude Code in a team: permissions, review and portability

CCAR-F 20%CCAR-P 7%CCDV-F 3.1%

This block is worth almost four times more in the Architect Foundations than in the Developer. Study it with the CCAR-F in mind.

The permission mode is a risk decision, not a speed oneIt is chosen by the risk profile of the work and the environment, not by a preference for being asked less. A bypass mode on a development machine against a live repository removes every checkpoint between the agent and your files.

And the nuance that completes the answer: a deny rule on the path that must not be touched, set at project or enterprise level, covers the gap the mode alone does not cover. Mode and rules are distinct layers: the mode decides how much it asks, the rule decides what is flatly unreachable.

AI code review

Findings to triage, not a verdict to applyTrust what the reviewer can prove from the diff in front of it — a missing null check, an unclosed resource — and confirm it in the lines it cites. Treat any claim about runtime behaviour or about another system as a hypothesis to verify, because it made that claim without the evidence that would prove it.

Two design consequences: the human gate goes where a finding turns into an action that is hard to reverse, not on every comment; and the way to raise the reviewer's precision is to give it the team's conventions that it would otherwise have to guess. This is exactly scenario 5 of the CCAR-F (Claude Code in CI/CD), where the stated objective is to give actionable feedback and minimise false positives.

Skill portability

The same SKILL.md runs in Claude Code, in the Messages API and through the Agent SDK, but each runtime loads and isolates it differently: filesystem discovery in Claude Code, beta headers and a code execution container in the API, and setting sources in the SDK.

  • A skill scoped to a clear description and free of assumptions about the local environment ports cleanly. One that takes for granted the terminal it was written in does not.
  • In every runtime, subagents start clean: they do not preload skills automatically.

The four durable-context mechanisms

MechanismProblem it solves
CLAUDE.mdProject memory persisting across sessions. It dilutes as it grows.
Rule filesThey scope the guidance to where it applies
HooksThey apply guardrails deterministically, not probabilistically
SubagentsThey keep exploration work out of the main context
The anti-patternPutting all four into CLAUDE.md. It produces a single file that is harder to maintain and easier to ignore. Each mechanism solves a different problem; if an item offers you "document it all in CLAUDE.md", be suspicious.

Making the setup shareable

A plugin that references an absolute path to the author's home directory installs on one machine and fails on every other. Rules: paths relative to the project root in everything that will be shared, environment variable requirements documented or validated at install time, and testing the installation from a clean machine before distributing.

code.claude.com/docs/en/permissions · .../permission-modes · .../plugins-reference · docs.claude.com/en/docs/agents-and-tools/agent-skills/overview

18 · MCP: transport, scope and enterprise requirements

CCAR-P 19%CCAR-F 18%CCDV-F 10.6%
Transport and scope are independent decisions with dependent consequencesstdio for servers that run on your machine. HTTP for anything hosted remotely or used by several developers.
Local scope keeps the server personal. Project scope shares it with the repository via .mcp.json.
The combination has to match the deployment intent.

Out of that comes the sentence that lends itself best to an item: a stdio server declared in .mcp.json is a configuration that looks shareable and is not. The file travels with the repo, but the process it launches only exists on the machine of whoever wrote it. A team server requires HTTP transport and project or enterprise scope: both at once.

The four requirements a regulated client brings

Client's questionTechnical answer
IdentityOAuth for services with user identity
Service credentialsEnvironment variables, never in the repository
Access loggingPostToolUse hooks for auditing
Configuration controlEnterprise managed settings, which cannot be overridden
Why this gets askedNone of the four is hard to implement, but all of them are hard to shoehorn in after a production deployment has stalled a security review. The correct answer in a scenario item is usually "identify the security requirements before deploying", not the specific mitigation.
code.claude.com/docs/en/mcp · modelcontextprotocol.io/specification/latest/basic/transports · .../basic/authorization · code.claude.com/docs/en/hooks

19 · Numbers that come up

A quick review the night before. If you know this table, you have the memorisation part of all four exams covered.

ConceptValue
Pass mark720 out of 100-1,000
Duration of all the exams120 minutes
Credential validity12 months
Batch API discount50% input and output
Limit of one batch100,000 requests or 256 MB
Batch windowunder 1 h for most; expires at 24 h
Batch results downloadable29 days
Cache TTL5 min by default · 1 h extended
Cache breakpointsMaximum 4
Cache costwrite 1.25× (5 min) / 2× (1 h) · read 0.1×
Degradation in tool selectionAbove 30-50 tools
Recommended tool descriptionAt least 3-4 sentences
Long-context threshold without RAG~200,000 tokens (~500 pages)
Contextual retrieval + BM25 + reranking−67% retrieval failures
Reranking: what is passed to the modelTop-20, out of top-150 retrieved
Verbatim quotes for groundingDocuments over 20k tokens
Agent consumption vs chat~4× simple agent · ~15× multi-agent
Summary a subagent returns1,000-2,000 tokens
Default SDK retries2, with exponential backoff
Non-streaming call timeout10 minutes
Description of a Skillmax. 1024 characters, in the third person
Skill metadata always loaded~100 tokens per skill

20 · Version traps

Anthropic's documentation is rewritten fast. These points appear in third-party material with the old answer, which today is wrong. They are the items where most people fail because they studied on blogs.

Prefill to force JSONBefore: filling the assistant turn with {.
Now: not supported on Claude 4.6+ and incompatible with JSON outputs. Structured outputs is used instead.
Extended thinking with budget_tokensBefore: an explicit reasoning budget was set.
Now: deprecated and rejected with a 400 on recent models. Adaptive thinking is on by default.
Sampling and roots in MCPBefore: standard client primitives.
Now: deprecated in the current spec. The live client primitive is elicitation. And the initialize handshake disappears in the modern spec, which is stateless.
The name of the subagent toolThe exam guide calls it Task; the current documentation has renamed it to Agent, and both names coexist in recent releases. If an item forces you to choose between the two with no version context, the item is badly written — in the real exam, anchor your answer to the guide.
stop_reason: "tool_use"It is a Messages API concept. It does not appear as a possible value in the Agent SDK result, because the SDK's loop does not end on tool_use. If the question is about loop control, think at API level.
The Console's Evaluation ToolIts page was retired and merged into the evals guide. The details of its interface circulating on blogs cannot be confirmed in living documentation. Do not study the UI: study the method.
Outside the scope of the CCAR-P · 1

The CCAR-P does not test this. It stays reachable because knowing what is not examinable saves time too, but don't study it for this exam.

16 · Business judgement (Associate)

All of CCAO-F

Here the exam does not measure technical knowledge but judgement. Switch gears: the correct answer is usually the prudent, verifiable one, never the fastest or the most sophisticated.

Heuristics that solve most items

  • Faced with a fact that looks precise (article number, figure, reference) → verify it against the authoritative source before using it. The confidence the model states is not a signal of accuracy.
  • Faced with regulated personal data → anonymise or remove it before uploading. The fact that the use is internal does not exempt you from the policy, and "instruct the model not to retain" is not a compliance control.
  • Faced with high volume and a simple task → fast, cheap model.
  • Faced with "automate this process" → analyse the process first. Automating a bad process gives you a bad process, faster. Integrating is not redesigning.
  • Faced with a stakeholder asking whether they can rely on it → value and limits, with the verification control built in. Neither overselling nor refusal.
  • Faced with a high-impact decision about people → do not delegate it to the model's output. Human review before anything takes effect.
  • Faced with a long conversation that becomes incoherent → summarise and restart with that summary.
  • Faced with a correction you always make by hand → that is configuration, not work: move it up into the Project instructions.
  • Faced with a prompt that gets worse as you add requirements → isolate, removing and reintroducing them one at a time.

And an objective that gets forgotten: maintenance. A Project that worked and degrades six months later almost always has outdated knowledge sources and instructions that nobody updated.