Lesson 0002 · Domains 2 & 4 · Claude Certified Architect — Foundations

tool_choice: auto / any / forced / none

One tight skill: read a scenario and pick the correct tool_choice value. ~7 minutes.
New to tools? Start with Lesson 0001 for the big picture, then come back here.
Why you're here. In the diagnostic you forced a specific named tool for a scenario where the right answer was "any". That single distinction — "force a tool" vs. "guarantee a tool call" — is one of the most reused facts on the exam, appearing in both Domain 2 (tool design) and Domain 4 (structured output). Nail it here and you reclaim points across two domains at once.

The whole concept in one table

tool_choice answers one question: does Claude have to call a tool this turn, and which?

ValueMeaningUse when…
"auto"
(default)
Model decides: call a tool or reply with text. The turn might or might not need a tool (a chat agent that sometimes looks things up).
"any" Must call some tool — model picks which. You need a guaranteed tool call / structured output but can't know which tool applies ahead of time.
{"type":"tool",
"name":"…"}
Must call that one named tool (forced). One specific tool must run (e.g., extract_metadata always first, before enrichment).
"none" No tools may be called this turn. You want a pure natural-language turn with tools suppressed.

Note: with "any" or forced, the API prefills to force a tool, so Claude emits no natural-language preamble before the tool call — even if asked. (Also: with extended thinking, only "auto" and "none" are supported.)

The discrimination that decides exam questions: "any" vs forced

Both guarantee a tool call — that's why they're easy to confuse. The split is who chooses the tool:

Diagnostic trap: "guaranteed structured output, schema unknown until runtime" → you can't name the tool, so it must be "any", not forced.

How the exam builds the wrong answers

Distractors map to predictable mistakes — recognizing them is half the battle:

DistractorThe trap
Forced named tool, when type is unknownConfusing "force a tool" with "guarantee a tool call." → should be "any".
"auto" + "ask the model to reply in JSON""auto" permits a plain-text answer, so output isn't guaranteed; parsing text risks syntax errors. Use tool_use + schema.
Few-shot JSON examples, then parse the textImproves consistency but never guarantees schema validity. Not a substitute for tool use.

Practice — retrieve, don't recognize

Each scenario uses the same four buttons, so you're recalling the rule, not pattern-matching the wording. Pick before you peek.

Closed-book recall (storage strength)

Look away from the table. Say the one-line rule for each value out loud, then check:

▶ reveal the four rules

Primary source

📖 Read this once: Anthropic's “How to implement tool use” — the Forcing tool use section defines all four values and the prefill / extended-thinking caveats. It's the highest-trust source on this topic and confirms the exam guide's framing.