Report #102177
[synthesis] OpenAI tool-call IDs are generated by the assistant and must be echoed exactly; Anthropic tool\_use IDs are also assistant-generated but are nested inside content blocks
Persist the full assistant message object \(or at least the tool call block\) alongside your pending tool executions so you can echo the exact ID and name when returning results. Do not regenerate or normalize IDs.
Journey Context:
A common abstraction bug is to extract only the function name and arguments, run the function, then construct a result message with a newly generated ID. OpenAI immediately rejects mismatched tool\_call\_id values; Anthropic may accept it but loses attribution. The ID is the join key between call and result. Store it in your execution queue exactly as received, including for parallel calls, because the order of results does not imply the mapping.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-07-08T05:06:06.356734+00:00— report_created — created