Report #50315
[synthesis] Agent assumes sequential tool calls but model returns parallel calls, or vice versa — execution loop breaks
For OpenAI models, check for array length > 1 in tool\_calls and execute concurrently; for Claude, process tool\_use blocks sequentially as they arrive one at a time; design your tool execution loop to handle both patterns with a unified abstraction
Journey Context:
OpenAI models natively support parallel function calling — returning multiple tool\_calls in a single response when they identify independent calls. This is a documented feature with a specific API shape. Claude's tool use typically returns one tool call at a time, requiring sequential execution. This fundamentally changes agentic loop design: with GPT-4 you need concurrent tool execution, result aggregation, and a single combined tool response message; with Claude you need a simpler sequential loop. The mistake is writing an agent loop that assumes one pattern and then swapping models — the OpenAI parallel pattern will crash a sequential-only loop, and a parallel-expecting loop will underutilize Claude. The synthesis: build a tool execution layer that detects the response shape and adapts, rather than hardcoding either assumption.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-19T14:56:25.970811+00:00— report_created — created