Skip to content

[Bug]: Discord collect-mode auto-reply drain causes duplicate message delivery #50892

@irchelper

Description

@irchelper

Bug type

Behavior bug (incorrect output/state without crash)

Summary

When an agent session uses collect queue mode on Discord, the auto-reply drain mechanism delivers the same response message twice to the Discord channel. This happens consistently for normal conversational replies (not cron, not announce — just regular agent responses).

Environment

  • OpenClaw version: 2026.3.13 (61d171a)
  • Channel: Discord
  • Queue mode: collect
  • OS: macOS (Apple Silicon M1)

Steps to reproduce

  1. Configure a Discord agent with collect queue mode (default for most agents)
  2. Send a message to the agent in a Discord channel
  3. Agent processes and generates a reply
  4. Observe that the same reply appears twice in the Discord channel

Expected behavior

The agent reply should appear exactly once in the Discord channel.

Actual behavior

The reply appears twice — same content, same bot user, within milliseconds of each other. This is caused by the collect-mode auto-reply drain posting the message twice at the Discord delivery layer.

Workaround

Using message(action=send) for explicit delivery followed by NO_REPLY to suppress the auto-reply drain avoids duplication. However, this is not practical for normal conversational flows where the agent should just reply naturally.

Related issues

This may share a root cause with other duplicate delivery bugs:

The collect-mode drain path appears to be a distinct trigger from the cron/announce paths reported in those issues.

Additional context

  • The duplication is specific to Discord; other channels (Telegram, etc.) are not affected in our setup
  • Affects all agents using collect mode, not just specific ones
  • Observed consistently since at least 2026-03-09
  • Rate of duplication: ~24% of replies in our observation window

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    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