Symptom
For a response with only tool calls, the AG-UI event stream emits TOOL_CALL_START with a parentMessageId that no TEXT_MESSAGE_START ever announced.
Evidence what you'll see
- Frontends can't tell which assistant message owns the tool call
- Replayed history re-sends the old tool call and its result
- Reproduced on version 2.31.0
Cause
The stream made a fresh message ID for each response and used it as the tool call's parent, but only sent TEXT_MESSAGE_START when the response had text.
Fix steps
0 of 1 done
Your check marks stay in this browser only.
Verify the fix worked
- Stream a tool-only response and confirm the TOOL_CALL_START parentMessageId matches the messageId of a TEXT_MESSAGE_START before it.
Sources and credit
Summarized in our own words from these public reports. Credit goes to their authors.
Provided as is, without warranty. Try changes in a non-production environment and back up first. Security-related steps: verify against the official docs. Terms · Request removal or attribution change
Hit an error we don't cover? Submit it