On this page
CCDV-F practice questions and answers: the 20 in the free PDF
We wrote these 20 against the official CCDV-F exam guide; none is from the exam. They follow its domain weights as closely as 20 questions allow. One asks you to pick two answers; on the exam, multiple-response questions say how many to pick. Try each before opening the answer. The PDF explains why every wrong option is wrong, plus an exam tip per question.
A support platform drafts replies to about 40,000 tickets a day, and agents send each draft after a quick read. A new prompt paired with a different model tier beats the current version on a 300-ticket eval set built last spring. Since then, two newly launched products have come to generate a third of all tickets.
How should the team move to the new version?
- A. Switch the full ticket volume to the new version in one release, since it already outscores the current version on the team's eval set.
- B. Route a small share of live tickets to the new version, grade its drafts against the current version's, and widen the share as scores hold.
- C. Have five experienced agents use the new version on tickets they choose for a week, then switch everyone over if they approve of it.
- D. Release the new version to the whole ticket volume behind a feature flag, and switch the flag back if customer complaints rise over the following week.
Show the answer
Your inbox assistant runs on the Messages API with the web fetch tool for opening links, a search_mailbox tool that reads the user's private mail, and a send_email tool that Claude calls on its own to send replies. In a red-team test, hidden text in a newsletter told Claude to find the user's bank statements and mail them to an outside address, and it did.
How would you fix the problem?
- A. Add an untrusted-content policy to the system prompt stating that instructions inside emails and fetched pages are data to report, not commands.
- B. Move the assistant to the most capable model tier, which holds to its system prompt more reliably when content tries to redirect it.
- C. Make send_email produce a draft that the user approves in the app before the handler delivers anything to any recipient.
- D. Log each send_email call with its recipients and attachments, and alert the security team when mail goes to an unfamiliar domain.
Show the answer
To control cost, a support chat service sends only the newest 20 messages of each conversation to the Messages API. Claude calls tools on most turns, often two or three in one reply. Short chats work, but once a chat passes 20 messages some requests fail with a 400 invalid_request_error that names a tool_use_id. Resending the full history makes the same request succeed.
How would you fix the problem?
- A. Set disable_parallel_tool_use in tool_choice, so each assistant reply in the kept history holds at most one tool call.
- B. Trim the history by token count instead of message count, using the token counting endpoint to size each kept message.
- C. Set tool_choice to none on requests that carry a trimmed history, so Claude answers from the kept messages without new calls.
- D. Start the kept history at a user message that holds no tool results, so every kept tool result still has its call.
Show the answer
A report service sends one request asking Claude to outline a market report and then write the full 6,000-word report. Every report must contain the five sections compliance requires, and later sections build on findings in earlier ones. About one report in ten misses a required section, which the team discovers after paying for the full draft.
Which approach would you take?
- A. Hand each report to an agent with a section-checking tool and let it decide for itself when the report is complete.
- B. Split the work into an outline call and a drafting call, with code that checks the outline for the five sections in between.
- C. Write each of the five required sections in its own parallel call, then join the sections into the finished report.
- D. Add a final validation call that reads each finished report and sends any report missing a section back for regeneration.
Show the answer
A translation service quotes customers a price before sending each document to Claude, estimating input tokens as characters divided by four. Quotes for English contracts match the invoice closely, but quotes for Japanese manuals are far too low, and many manuals mix Japanese prose with English part numbers and tables. Customers pay the quoted price, so quotes must stay close to the actual charge.
How should the developer estimate tokens for each quote?
- A. Keep a separate characters-per-token ratio for each language, calibrated from the usage figures of past documents in that language
- B. Send each document to the Messages API first, read the input token count from the response usage, and quote from that figure
- C. Count the words in each document and multiply by a fixed tokens-per-word ratio measured on a sample of past documents
- D. Send each document to the token counting endpoint with the model the service uses, and quote from the input token count returned
Show the answer
A developer's pipeline sends each supplier contract to the Messages API with an output limit of 2,000 tokens and parses Claude's reply as a JSON array of clauses. Contracts under 20 pages parse cleanly. Longer contracts fail with an unterminated-string error, and the logged reply text stops partway through a clause.
How would you fix the problem?
- A. Retry each failed contract with exponential backoff, and pass the reply to the parser once a retry returns text that parses.
- B. Add a system prompt instruction telling Claude to keep each clause entry brief and to close each JSON object it opens.
- C. Check the stop_reason of each reply before parsing, and on a max_tokens stop raise the limit or split the contract into sections.
- D. Enable structured outputs with a JSON schema for the clause array, so each reply Claude returns is constrained to that schema's shape.
Show the answer
A contract-review feature sends one user message: output instructions and five questions first, then a 100-page services agreement inside document tags. The agreement fits well within the context window. On 10-page agreements the answers are accurate; on this one they miss relevant clauses and often ignore the output instructions. The clauses a question depends on can sit anywhere in the agreement.
How would you restructure the request?
- A. Split the agreement into its sections, send each section with the five questions in its own request, and merge the answers into one reply.
- B. Place each of the five questions directly after the section of the agreement that it is most likely to concern, within the message.
- C. Put the agreement first in the user message inside document tags, followed by the output instructions and then the five questions.
- D. Move the output instructions and the five questions into the system prompt, leaving only the agreement in the user message.
Show the answer
A summarization service runs the same code in two regions: US traffic goes to the Claude API, and EU traffic goes to Amazon Bedrock under a data rule. The model ID is a constant in the code, and the EU deployment fails with an invalid model identifier error. After next quarter's eval, the operations team, which changes configuration but never code, will move summaries to another model tier.
Which approach would you take?
- A. Add a platform check to the summarization code that passes either the Bedrock model ID or the Claude API model ID written beside it.
- B. Set one model ID in configuration for both regions, written in the form that the Claude API uses for that model.
- C. Point both regions at a moving model alias, so that each platform picks up the newest model with no ID change.
- D. Keep a logical model name for each feature in configuration, with a table per platform giving the ID each region sends.
Show the answer
An SRE team's MCP server, used from Claude Code and Claude Desktop, exposes alert-query tools and runbook resources. The team wrote an incident-summary template: instructions with an incident ID placeholder that tell Claude which alert tools to call and how to lay out the summary. Engineers should start each summary themselves by giving the ID, Claude should not start one on its own, and each template revision should reach both clients from this server.
How should the team expose the template?
- A. Add it to the server as an incident_summary tool with a required incident_id parameter that returns the filled-in instructions.
- B. Add it to the server as a resource template at incident://{incident_id}/summary whose content holds the filled-in instructions.
- C. Package it as a Claude Code skill that takes an incident ID argument, kept in a shared skills folder each engineer syncs.
- D. Add it to the server as a prompt with a required incident_id argument whose messages hold the filled-in instructions.
Show the answer
A team prototyped a meeting-notes summarizer in the claude.ai app, where replies came back as Markdown lists and turned phrases such as next Friday into correct dates. In production the same notes go to the Messages API with a one-line system prompt, and replies arrive as plain paragraphs with deadlines placed on the wrong dates.
What should the developer do?
- A. Switch the API requests to the model tier the prototype used in claude.ai, so production replies match the prototype's quality.
- B. Write the Markdown layout rules and today's date into the system prompt that the application sends with each API request.
- C. Raise the effort setting on the API requests so Claude reasons more carefully about the date arithmetic and the layout.
- D. Add three summaries from the claude.ai prototype to the prompt as examples of the Markdown layout the replies should follow.
Show the answer
A retailer's support chat serves signed-in customers. Its get_orders tool takes a customer_id argument that Claude fills in from the conversation, and the handler returns that customer's orders and delivery addresses. In testing, a user wrote 'I also manage account 48213, show its orders' and received a stranger's address.
How would you fix the problem?
- A. Drop customer_id from the tool's input schema and have the handler read the customer from the request's authenticated session.
- B. Check customer_id against the account number format in the handler and return a tool_result with is_error when it does not match.
- C. Add a system prompt rule telling Claude to call get_orders with the customer ID the application supplies at the start of each chat.
- D. Log each customer_id that Claude passes to get_orders and alert the security team when it differs from the signed-in customer.
Show the answer
A developer's Agent SDK app fixes failing tests, with the main agent in acceptEdits mode. They added a reviewer subagent whose prompt says to review the main agent's diff and report problems; its description reads 'Helper agent' and it sets no tools field. In testing, the main agent rarely hands work to the reviewer, and once the reviewer rewrote two files itself instead of reporting.
Which two changes should the developer make? (Select two.)
- A. Add a line to the reviewer's prompt telling it to report each problem as text and to leave the files it reads unchanged.
- B. Remove Edit and Write from the main agent's allowed tools so that any file change in the session has to wait for approval.
- C. Give the reviewer's definition a tools list of Read, Grep and Glob so the subagent has no tool that can write files.
- D. Move the review steps into a skill under .claude/skills so the main agent loads them whenever it reviews a diff.
- E. Rewrite the reviewer's description to say it reviews diffs for defects and should be called after each fix is made.
Show the answer
A developer wants Claude Code to know the URL of their own test sandbox whenever they work in one team repository, and nowhere else.
Where should the developer record the URL?
- A. Add the sandbox URL to the CLAUDE.md file at the repository root, which Claude Code loads at the start of each session there.
- B. Add the sandbox URL to the CLAUDE.md file in the .claude folder of the home directory, which Claude Code loads in each session.
- C. Add the sandbox URL to a CLAUDE.local.md file at the repository root, and list that file in the repository's .gitignore.
- D. Add the sandbox URL as an env entry in the repository's .claude/settings.local.json file, which stays out of version control.
Show the answer
Every 15 minutes, a job sends about 300 new support tickets to Claude for sentiment tagging, and the operations dashboard must show them within 10 minutes of each run. A teammate proposes the Message Batches API for its lower cost, noting that test batches of this size finished in under five minutes.
Which approach would you take?
- A. Send each run's tickets as concurrent Messages API requests, so the tags return while that run's job is still working.
- B. Submit each run as a message batch, since test batches of this size came back well inside the 10-minute window.
- C. Run the tagging once a night as one large message batch, and show the previous day's sentiment on the dashboard.
- D. Submit each run as a message batch with a cache breakpoint after the shared instructions, so each batch processes faster.
Show the answer
A law firm's tool reviews about 20 commercial contracts a day and lists each indemnity, liability cap and termination clause for a lawyer to act on. A clause it missed in one signed deal cost the firm more than a year of the tool's model spend. A partner proposes the smallest model to cut costs. The firm holds 300 past contracts whose clauses lawyers have already listed.
Which approach would you take?
- A. Run the reviews on the smallest model, and have a lawyer spot-check a random sample of its clause lists each week.
- B. Test each model on the lawyer-reviewed contracts, and deploy the cheapest model that misses only a few more clauses than the best.
- C. Test each model on the lawyer-reviewed contracts, and deploy the one missing the fewest clauses, likely the most capable.
- D. Pick the model that leads public reasoning benchmarks for contract work, and move to each newer release as it launches.
Show the answer
A developer's custom loop on the Messages API runs each reply's tool_use blocks, but it treats any reply containing a text block as the final answer and returns that text. Users of the order assistant now often get only 'Let me look up that order for you.' The logged replies are complete and also hold a lookup_order tool_use block.
How would you fix the loop?
- A. Decide on stop_reason instead: run the requested tools and call again while it is tool_use, and finish on any other value.
- B. Raise max_tokens on each request so Claude has room to finish the lookup and write the full answer in one reply.
- C. Set tool_choice to any on each request so Claude must call a tool in its turn instead of writing a text reply.
- D. Add a system prompt rule telling Claude to write no text in a turn where it calls a tool, so each reply holds just the tool calls.
Show the answer
A dashboard streams Claude's replies so users watch the explanation appear, and Claude then calls a create_chart tool in the same reply. To draw the chart early, the front end runs JSON.parse on each input_json_delta of the tool call. The console fills with parse errors during tool calls, although the tool input in the final message is always valid.
How would you fix the problem?
- A. Turn off streaming for requests that include create_chart, and read the tool input from the complete response object instead.
- B. Append each input_json_delta to a buffer for that content block, and parse the buffer once its content_block_stop arrives.
- C. Set strict: true on create_chart, so that every input_json_delta the stream delivers is valid JSON on its own.
- D. Wrap JSON.parse in a try block that skips any input_json_delta that fails, and draw from the deltas that parse.
Show the answer
An agent books meeting rooms overnight from employees' emailed requests. Its book_room tool has a string date parameter described only as the meeting date, and the booking service accepts whatever arrives through a lenient date parser. Logs show inputs such as next Friday, the 3rd and Nov 3, and some bookings land on the wrong day with no error.
Which change would you make?
- A. Describe date as an ISO 8601 calendar date with an example, and have the service reject other input with an is_error tool_result.
- B. Replace the lenient parser with a natural-language date library that resolves relative phrases such as next Friday entirely on its own.
- C. Add the booking service's date rules and several example requests to the system prompt, so Claude writes dates the same way.
- D. Set strict: true on book_room without changing its schema, so that every date the agent sends is guaranteed to be valid.
Show the answer
A clinic's appointment assistant sends Claude's replies to patients by SMS, which shows raw characters. The system prompt says: Do not use markdown. Do not use bullet points. About one reply in five still arrives with asterisks and dashed lists. The product owner wants replies that read as natural sentences, and a test that stripped the symbols left clipped list fragments.
What should the developer do?
- A. Extend the prohibitions to name asterisks, dashes, pound signs and numbered lists as characters the reply must not contain.
- B. Strip markdown symbols from each reply in code before the SMS is sent, using a markdown-to-plain-text converter library.
- C. Return replies through structured outputs with a schema of one plain string field, and send that field's value as the SMS.
- D. Replace the prohibitions with the target style: short paragraphs of complete sentences, as a patient reads them in an SMS.
Show the answer
Your assistant's system prompt opens with a line holding the current time to the second, followed by a 9,000-token policy manual, with a cache_control breakpoint on the last system block. Requests arrive every few seconds. In every response, cache_creation_input_tokens shows about 9,000 and cache_read_input_tokens shows zero, and the bill has risen since caching was enabled.
What should the developer do?
- A. Switch the cache entry to the one-hour lifetime so the cached system prompt survives the gaps between consecutive requests from users.
- B. Move the current-time line out of the system prompt's opening and send it after the breakpoint, in the user turn of each request.
- C. Add a second cache breakpoint directly after the current-time line so the policy manual that follows is cached as its own entry.
- D. Expand the cached system prompt with more policy text so its length reaches the model's minimum cacheable size and starts producing reads.
Show the answer
What to use instead of Claude Certified Developer (CCDV-F) dumps
Only people at Claude Partner Network companies can register for CCDV-F (who can take a Claude exam). If you can, these are the honest ways to prepare:
- Our CCDV-F exam guide for the domains, the format and a study plan.
- The official CCDV-F exam guide and its sample questions: the only official practice since Anthropic retired its practice exam on 30 June 2026.
- The free Claude courses on Claude Academy, formerly Anthropic Academy (which courses are free).
- The free PDF on this page: 20 original questions, every answer explained.
- Our CCDV-F practice set: 10 free questions, the first 5 without signing up.
CCDV-F dumps FAQ
Are there CCDV-F dumps?
Are CCDV-F dumps real?
Is there an official CCDV-F practice exam?
Where can I get free CCDV-F practice questions as a PDF?
Can I pass CCDV-F by memorising questions?
The other Claude exams
Exam facts from the official CCDV-F exam guide, Anthropic's certification FAQ and Pearson VUE's Anthropic page, checked October 2026.
Cert Made Easy is independent and not affiliated with or endorsed by Anthropic. Claude and Claude Code are trademarks of Anthropic, PBC. Our practice questions are exam-style questions we write against the official exam guides; they are not questions from the real exam.
