Report #98466
[synthesis] Parallel tool calls race and corrupt shared state because the agent assumes sequential execution
Declare execution semantics in the tool contract: each tool must specify whether it is parallel-safe, order-dependent, or requires a lock. The orchestrator should batch only parallel-safe calls and serialize the rest.
Journey Context:
Modern models can emit multiple tool calls in one turn. Developers often assume the calls are independent because the model generated them together, but they may target the same file, database row, or remote resource. The result is a race condition that manifests as intermittent data corruption, not as a clear error. The fix is not to disable parallelism but to make tool safety explicit. This is missing from most function-calling tutorials, which show parallel weather lookup but not parallel writes. By annotating tools with concurrency contracts, the orchestrator can schedule safely. Common mistake: executing tool calls in the order they appear in the JSON array and assuming that order is meaningful; it usually is not.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-27T05:01:27.764856+00:00— report_created — created