Bug Description
When using AgentCoreMemorySessionManager with AgentCoreBrowser (Browser Tool) in Strands Agents, the conversation history becomes corrupted after the first message, leading to ValidationException errors.
Environment
- bedrock-agentcore: Latest version
- Strands Agents: Latest version
- strands-agents-tools: Latest version
- Region: us-east-1
- Memory ID: memory_agentcore_demo_complex-MOvGs2AZQ5
Problem Description
Error Message
Session message history has an orphaned toolUse with no toolResult.
Adding toolResult content blocks to create valid conversation.
ValidationException: The number of toolResult blocks at messages.27.content
exceeds the number of toolUse blocks of previous turn.
Behavior
- ✅ First message in session: Works correctly
- ❌ Subsequent messages in same session: Fails with ValidationException
- ✅ Without Browser Tool: Memory works correctly with other tools (Gateway tools)
- ❌ With Browser Tool: Memory appears to save corrupted conversation history
Code Example
from bedrock_agentcore.memory.integrations.strands.config import AgentCoreMemoryConfig
from bedrock_agentcore.memory.integrations.strands.session_manager import AgentCoreMemorySessionManager
from strands import Agent
from strands_tools.browser import AgentCoreBrowser
# Memory configuration
memory_config = AgentCoreMemoryConfig(
memory_id="memory_agentcore_demo_complex-MOvGs2AZQ5",
session_id="test_session_123",
actor_id="test_user"
)
session_manager = AgentCoreMemorySessionManager(
agentcore_memory_config=memory_config,
region_name="us-east-1"
)
# Browser Tool
browser_tool = AgentCoreBrowser(region="us-east-1")
# Agent with Browser Tool + Memory
agent = Agent(
model="us.anthropic.claude-sonnet-4-5-20250929-v1:0",
system_prompt="You are a helpful assistant.",
session_manager=session_manager,
tools=[browser_tool.browser]
)
# First call: SUCCESS ✅
result1 = agent("Hello")
# Second call in same session: FAILS ❌
# Memory loads corrupted history with orphaned toolUse
result2 = agent("How are you?")
Root Cause Hypothesis
The issue appears to be in how AgentCoreMemorySessionManager saves and loads conversation history when Browser Tool is involved:
Possible Causes:
-
Incomplete tool call persistence:
- Browser Tool creates
tool_use blocks
- Memory saves the conversation
- On reload,
tool_use blocks are missing or corrupted
- But
tool_result blocks are preserved
- This creates "orphaned toolUse"
-
Serialization/Deserialization issue:
- Browser Tool's conversation format may not be fully compatible with Memory's storage format
- Some data is lost during save/load cycle
-
Context truncation without cleanup:
- Memory may truncate conversation history
- But doesn't properly clean up orphaned tool blocks
Logs
2026-02-02T10:12:24.909000+00:00 Session message history has an orphaned toolUse with no toolResult. Adding toolResult content blocks to create valid conversation.
2026-02-02T10:12:25.876000+00:00 botocore.errorfactory.ValidationException: An error occurred (ValidationException) when calling the ConverseStream operation: The number of toolResult blocks at messages.27.content exceeds the number of toolUse blocks of previous turn.
Testing Results
| Configuration |
Result |
| Memory + Gateway Tools |
✅ Works |
| Memory + Browser Tool |
❌ Fails after first message |
| No Memory + Browser Tool |
❓ Not tested (Memory required) |
| Memory + Gateway + Browser |
❌ Fails after first message |
This strongly suggests the issue is in how Memory handles Browser Tool's conversation history.
Questions
- Is Browser Tool + Memory a tested and supported combination?
- Are there known limitations or special handling required for Browser Tool with Memory?
- Does Memory have special serialization logic for different tool types?
- Is there documentation on conversation history format requirements?
Expected Behavior
AgentCore Memory should correctly save and restore conversation history when Browser Tool is used, maintaining proper tool_use/tool_result pairing.
Actual Behavior
After the first message, Memory loads corrupted conversation history with orphaned tool blocks, causing Bedrock API to reject subsequent requests.
Related Issues
Suggested Investigation
- Add logging to show exactly what Memory saves vs. what it loads
- Compare conversation history format for Browser Tool vs. other tools
- Check if Browser Tool's message format requires special handling
- Verify that all tool blocks are properly paired during save/load
Suggested Fix
Add validation and cleanup in AgentCoreMemorySessionManager:
- Before saving: Validate that all
tool_use blocks have corresponding tool_result blocks
- After loading: Sanitize conversation history to remove orphaned tool blocks
- Add specific handling for Browser Tool if its format differs from standard tools
Impact
This bug prevents using Browser Tool with Memory, which is a critical limitation for building context-aware agents that need web browsing capabilities.
Bug Description
When using
AgentCoreMemorySessionManagerwithAgentCoreBrowser(Browser Tool) in Strands Agents, the conversation history becomes corrupted after the first message, leading to ValidationException errors.Environment
Problem Description
Error Message
Behavior
Code Example
Root Cause Hypothesis
The issue appears to be in how AgentCoreMemorySessionManager saves and loads conversation history when Browser Tool is involved:
Possible Causes:
Incomplete tool call persistence:
tool_useblockstool_useblocks are missing or corruptedtool_resultblocks are preservedSerialization/Deserialization issue:
Context truncation without cleanup:
Logs
Testing Results
This strongly suggests the issue is in how Memory handles Browser Tool's conversation history.
Questions
Expected Behavior
AgentCore Memory should correctly save and restore conversation history when Browser Tool is used, maintaining proper
tool_use/tool_resultpairing.Actual Behavior
After the first message, Memory loads corrupted conversation history with orphaned tool blocks, causing Bedrock API to reject subsequent requests.
Related Issues
Suggested Investigation
Suggested Fix
Add validation and cleanup in
AgentCoreMemorySessionManager:tool_useblocks have correspondingtool_resultblocksImpact
This bug prevents using Browser Tool with Memory, which is a critical limitation for building context-aware agents that need web browsing capabilities.