Skip to content

[Bug] update_message fails with parameter validation error when SessionMessage.message_id is a Strands positional integer index #556

Description

@rr-shashank-thota

Describe the bug
When redact_latest_message is triggered (e.g. via guardrail redaction), update_message attempts to delete the old AWS event using session_message.message_id as the eventId.

However, Strands' SessionMessage.message_id is a sequential integer index (e.g. 4), not an AWS eventId string (e.g. "4#abc123f"). The AWS delete_event API requires eventId to be a string matching [0-9]+#[a-fA-F0-9]+, so botocore rejects the integer at parameter validation, causing the redaction to fail with

Error

Failed to update message: could not delete old event: Parameter validation failed: Invalid type for parameter eventId, value: 4, type: <class 'int'>, valid types: <class 'str'>

To Reproduce

  • Strands' RepositorySessionManager.initialize_agent calls session_repository.create_message() directly with SessionMessage objects whose message_id is a sequential integer index (0, 1, 2...). It then sets _latest_agent_message[agent_id] to the last such SessionMessage.
  • When redact_latest_message is subsequently called, it reads _latest_agent_message[agent_id] and passes it to update_message.
  • update_message extracts old_message_id = session_message.message_id -> this is the integer 4, not an AWS eventId string.
  • It then calls gmdp_client.delete_event(eventId=old_message_id), but the AWS API requires eventId to match pattern [0-9]+#[a-fA-F0-9]+ (e.g. "4#abc123f"), so botocore rejects the integer with a ParamValidationError.

Expected behavior
_latest_agent_message[agent_id].message_id should always contain the AWS eventId string returned by create_event, not the Strands positional integer index.

Where
src/bedrock_agentcore/memory/integrations/strands/session_manager.py, update_message -> delete_event call.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions