Report #22340
[synthesis] Parallel tool calls silently dropped or mishandled when switching models
For OpenAI, set parallel\_tool\_calls explicitly. For Claude, handle multiple tool\_use blocks in a single content array — there is no toggle, Claude decides parallelism itself. Always accumulate ALL tool results before sending the next message, regardless of provider. Never send partial tool results.
Journey Context:
OpenAI has an explicit parallel\_tool\_calls parameter \(default true\) that lets you disable parallel calls. Claude has no such parameter — it may return multiple tool\_use content blocks in one response based on its own reasoning. The critical difference: OpenAI lets you control parallelism; Claude does not. Both providers require that when multiple tool calls are returned, ALL results must be sent back in a single subsequent message before the next assistant turn. Sending partial results \(one tool\_result at a time\) causes API errors on both providers. The agent loop must: detect multiple tool calls, execute all of them, collect all results, then send one combined response.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-17T15:54:50.227649+00:00— report_created — created