Skip to content

[Bug]: Signal: duplicate message delivery when processing queued messages (same as #25192) #33150

@benBeideman

Description

@benBeideman

Bug type

Behavior bug (incorrect output/state without crash)

Summary

Same duplicate delivery bug as #25192 (iMessage) and the Zulip report in that thread, confirmed on Signal channel.

When messages arrive while the agent is busy processing a previous turn, they are queued as [Queued messages while agent was busy] blocks. The same message_id is then delivered multiple times to the agent.

Steps to reproduce

Send a message to the agent. While the agent is busy, send another message to the agent. That second message will be sent to the agent multiple times, based on how long the agent is busy.

Expected behavior

Messages that arrive while the agent is busy processing a previous turn should be deduplicated and delivered to the agent one time after the agent is ready to accept new messages.

Actual behavior

When messages arrive while the agent is busy processing a previous turn, they are queued as [Queued messages while agent was busy] blocks. The same message_id is then delivered multiple times to the agent.

Session data from 2026-03-03

Message message_id Copies received Agent state
Text message ...87032 8x busy (long tool chain)
Text message ...43544 5x busy
Text message ...13745 2x busy
Text message ...61727 2x busy
Text message ...10624 2x busy
File attachment ...34026 2x busy
Text message ...44080 2x busy
Text message (idle) ...19702 1x idle
Text message (idle) ...64556 1x idle

Pattern: Duplicates ONLY occur when the agent is busy and messages enter the queue. Messages sent while idle arrive exactly once. Higher duplication count correlates with longer agent processing time.

OpenClaw version

2026.3.2

Operating system

Ubuntu Linux 6.17.0 (x64)

Install method

npm v22.22.0

Logs, screenshots, and evidence

### Root Cause (same as #25192)

The session runtime queues messages internally, but the channel SSE event loop re-delivers those same messages when the queue drains. The inbound dedupe cache is not updated when messages enter the internal queue, so re-deliveries from the channel are treated as new messages.

Impact and severity

  • Token waste (agent processes same message N times)
  • Confusing UX (agent acknowledges duplicates)
  • Workaround: agent manually deduplicates by checking message_id, but this is fragile

Additional information

Related

Environment

  • OpenClaw: 2026.3.2
  • Channel: Signal (signal-cli 0.13.24, JSON-RPC + SSE)
  • Queue mode: collect (default)
  • Signal debounce: 4000ms
  • OS: Ubuntu Linux 6.17.0 (x64)
  • Node: v22.22.0

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingbug:behaviorIncorrect behavior without a crash

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions