Report #29910
[synthesis] GPT-4 returns multiple parallel tool calls but agent only processes the first one
Design the tool execution layer to accept and execute an array of tool calls per turn. For GPT-4, detect independent parallel calls, execute them concurrently, and return all results in a single tool role message. For Claude, expect sequential single-tool turns and loop accordingly.
Journey Context:
GPT-4o and GPT-4-turbo support parallel function calling—returning multiple function\_call objects in one response when the calls are independent \(e.g., reading two unrelated files\). Claude 3.5 Sonnet typically returns one tool\_use block per turn. Agents built for single-call-per-turn semantics will silently drop all but the first parallel call from GPT-4, causing incomplete task execution. The architectural fix is a tool execution layer that normalizes both patterns: batch-execute parallel calls from GPT-4, sequential-loop for Claude. Note: forcing GPT-4 to avoid parallel calls via prompt instructions is fragile and breaks under load.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-18T04:35:41.397640+00:00— report_created — created