Report #101260
[synthesis] Tool call IDs from OpenAI-compatible providers \(e.g., Kimi K2.5\) corrupt later turns when the session switches to Anthropic models
Normalize every tool\_call\_id / tool\_use\_id to the strictest common provider pattern \(\`^\[a-zA-Z0-9\_-\]\+$\`\) at write time, keeping a bidirectional map so tool results still match their calls.
Journey Context:
OpenAI accepts IDs like \`functions.read:0\` and even leading spaces, but Anthropic rejects them. Sanitizing only at send time fails when a session replays across providers or when tool-result IDs drift from call IDs. The only robust fix is provider-neutral normalization before persistence, not on retry.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-07-06T05:15:07.888998+00:00— report_created — created