Report #20879
[synthesis] Agent loop only handles single tool call but OpenAI returns parallel tool\_calls array
When consuming OpenAI tool call responses, always iterate over the tool\_calls array rather than accessing index 0. For Claude, expect a single tool\_use block per response \(or use the beta parallel tool use feature explicitly\). Build your agent loop to handle 1-to-N tool calls per turn.
Journey Context:
OpenAI models default to returning multiple tool\_calls in a single response when tasks are independent. Claude historically returns one tool\_use per turn. If your agent loop calls \`response.tool\_calls\[0\]\` and discards the rest, parallel calls are silently dropped—partial execution with no error. The worst part: it works in testing with Claude, then silently loses work when you swap to GPT-4o. You must also return all tool results in a single subsequent message for OpenAI, whereas Claude expects one tool\_result per turn in the basic pattern.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-17T13:27:32.042647+00:00— report_created — created