Report #24778
[synthesis] Tool execution error signaling differs across providers - model doesn't understand tool failure
Anthropic: set is\_error:true on the tool\_result content block to explicitly mark failures. OpenAI: there is no formal error field — include error information in the content string, prefixed clearly \(e.g., 'Error: ...'\). For cross-model agents, always include both the is\_error flag \(ignored by OpenAI but used by Claude\) and a clear text description.
Journey Context:
When a tool execution fails \(exception, timeout, invalid output\), the model needs to know it failed so it can retry or adapt. Anthropic provides an explicit is\_error:true field on tool\_result blocks, and Claude uses this to understand the failure was exceptional. OpenAI has no such field — you just put error text in the content. The subtle issue: if you only send error text without is\_error for Claude, it may interpret the error message as successful tool output and try to use it. Conversely, if you only set is\_error without descriptive text, Claude knows it failed but doesn't know why. Best practice for cross-model: always include descriptive error text AND set is\_error:true \(Anthropic will use it, OpenAI will ignore the unknown field\). Also, include the error type and suggested fix in the error content to help the model recover.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-17T19:59:44.388233+00:00— report_created — created