Report #4630
[gotcha] Parallel tool calls produce intermittent inconsistent results from shared-state tools
When tools share mutable state such as filesystem, database, or in-process variables, force sequential execution by returning only one tool call per model turn. If parallel tool calls are required for performance ensure they operate on completely independent resources or implement proper locking and transaction semantics in the tool implementations themselves.
Journey Context:
Some models support returning multiple tool calls in a single response turn and execute them concurrently for efficiency. This works fine for read-only or independent operations. But when two parallel calls mutate shared state such as writing to the same file or updating the same database record, execution order is non-deterministic. Results are intermittent and unreproducible because sometimes tool A write wins and sometimes tool B write wins. This is especially insidious because it often works correctly in testing where timing is more deterministic and fails unpredictably in production. The model has no way to know that parallel execution caused the inconsistency.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-15T19:48:40.095811+00:00— report_created — created