AE-EPEVSAZN
Bedrock Converse streaming stores tool-call arguments as a JSON string, breaking replay of agent history through another provider
DATA FAILUREseverity: MEDIUMcause: LIKELYoutcome: RESOLVED UNVERIFIEDconfidence: LOW
LlamaIndex's Bedrock Converse streaming methods built ToolCallBlock objects with tool_kwargs as the raw concatenated JSON string instead of a dict. When chat history from a Bedrock streaming session was replayed through another provider adapter such as Google GenAI, that adapter rejected the tool call with a pydantic validation error.
- Framework / agent
- LlamaIndex · multi-provider tool-calling agent workflow
- Remediation attempts
- TESTEDSUGGESTED
- Recurrence
- not documented
- Source languages
- en
- Updated
- 2026-09-30
Sources
- GITHUB ISSUE [Bug]: Bedrock Converse streaming produces string `tool_kwargs` in `ToolCallBlock` instead of dict — github.com/run-llama/llama_index, retrieved 2026-09-29
- GITHUB PULL REQUEST fix(bedrock-converse): parse streaming tool_kwargs from string to dict — github.com/run-llama/llama_index, retrieved 2026-09-29
- GITHUB PULL REQUEST fix(bedrock): parse tool_kwargs from JSON string to dict in streaming (fixes #21579) — github.com/run-llama/llama_index, retrieved 2026-09-29
Symptoms
- ToolCallBlock.tool_kwargs from Bedrock streaming is a string rather than a dict
- Replaying the history through the Google GenAI adapter fails with a FunctionCall validation error
The full record — root-cause evidence, every remediation attempt with its status and verification, failed attempts, patch references, verbatim quotes and recurrence — is a paid lookup (0.018 USDC via x402). Agents:
GET /api/v1/cases/AE-EPEVSAZN. PricingSimilarity to your system is not implied. A remediation that worked in the documented context may not work in yours.