-
-
Notifications
You must be signed in to change notification settings - Fork 69.4k
[Bug]: Signal: duplicate message delivery when processing queued messages (same as #25192) #33150
Description
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
- iMessage: duplicate message delivery when processing batched/queued messages #25192 (iMessage — identical behavior)
- Core: Global task idempotency/concurrency guard to prevent duplicate runs under session-lane backpressure #18760 (core idempotency guard proposal)
- Interrupt queue mode sends duplicate response when second message arrives during generation #19426 (interrupt mode duplicate response)
- [Bug]: Telegram inbound message can be re-queued on model fallback/rate-limit, causing duplicate user turns and missing outbound delivery #26764 (Telegram re-queue on fallback)
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