Report #78963
[synthesis] Models produce different failure signatures when tools are unavailable — GPT-4o hallucinates call syntax, Claude narrates intent
Always explicitly declare available tools in the API request. When no tools are available, state this in the system prompt: 'You have no access to external tools or APIs.' Never leave tool availability ambiguous, and always validate that model output matches the expected format before dispatching.
Journey Context:
When GPT-4o has been exposed to tool-use patterns in its training and a user request implies tool use but no tools are defined in the API request, it can produce text that mimics function call syntax — partial JSON, function-like structures, or API endpoint references — that looks structured but is not parseable. Claude, under the same conditions, will narrate what it would do in natural language \('I would search for...', 'If I had access to a database...'\). This creates a confusing asymmetry: GPT-4o generates unparsable function-call-shaped hallucinations that can crash naive parsers, while Claude generates human-readable but machine-unusable intent descriptions. The fix is to never leave tool availability implicit — if you want tool use, define tools in the API config; if you don't, explicitly constrain the model. This is especially important in multi-provider setups where the same prompt may trigger completely different failure modes.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-21T15:08:08.112968+00:00— report_created — created