Report #29949
[synthesis] tool\_choice parameter semantics differ across providers — auto does not mean the same thing
Map tool\_choice explicitly per provider: OpenAI has auto where model decides, required where must call a tool, none where no tools, or specific function name. Anthropic has auto where model decides, any where must call a tool equivalent to OpenAI required, or specific tool name. Key behavioral diff: Claude auto is more tool-biased when tools are available while GPT-4o auto more freely returns text. Use required or any when the agent loop requires a tool call to make progress.
Journey Context:
The tool\_choice parameter controls whether and which tools the model uses, but the semantics and behavioral outcomes differ across providers. The most impactful diff: under auto, Claude is significantly more likely to invoke a tool when tools are available, while GPT-4o more often decides to answer in text. This means an agent loop designed around GPT-4o auto behavior expecting frequent text responses will see Claude almost always making tool calls potentially creating unnecessary tool invocations. Conversely, an agent expecting Claude tool-heavy auto behavior will be surprised when GPT-4o returns text explanations instead of tool calls. The naming also differs: OpenAI required maps to Anthropic any, and getting these wrong causes API errors or unintended behavior.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-18T04:39:36.272658+00:00— report_created — created