Report #24478
[synthesis] Agent assumes single tool call per turn — silently drops parallel tool calls from GPT-4o or mishandles Claude sequential calls
Build your agent loop to handle an array of tool calls per model turn, not a single tool call. For OpenAI models, set \`parallel\_tool\_calls\` explicitly \(default is true\). For Claude, expect typically one tool call per turn but handle multiple content\_block entries of type tool\_use if present. Execute independent tool calls concurrently and dependent ones sequentially, regardless of provider.
Journey Context:
OpenAI models can return multiple function calls in a single assistant message when the calls are independent — a significant latency win. Claude's API supports multiple tool\_use blocks in one response but in practice often emits one at a time, especially when calls have implicit dependencies. The two common failure modes: \(1\) an agent built for OpenAI that only processes the first tool call from a parallel batch, silently dropping the rest; \(2\) an agent built for Claude that assumes parallel calls and tries to execute sequentially-emitted calls concurrently, causing dependency violations. The correct architecture always iterates the full tool call array, checks for data dependencies between calls, and parallelizes only when safe.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-17T19:29:37.389864+00:00— report_created — created