openclaw - 💡(How to fix) Fix Discord room events can suppress final assistant replies into transcript-only mode [1 comments, 2 participants]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…
GitHub stats
openclaw/openclaw#84022Fetched 2026-05-20 03:45:08
View on GitHub
Comments
1
Participants
2
Timeline
9
Reactions
1
Author
Timeline (top)
labeled ×7commented ×1cross-referenced ×1

Discord room/thread events can produce a complete final assistant answer in the session transcript while nothing is posted back to Discord. The visible channel only gets tool/status messages, which makes the user experience look like messages are being dropped.

Error Message

On an OpenClaw 2026.5.18 gateway:

Root Cause

  • dist/source-reply-delivery-mode-*.js: no longer returns message_tool_only solely for InboundEventKind === "room_event".
  • dist/dispatch-*.js: no longer sets strictMessageToolOnly solely because the inbound event is a room event.
  • dist/get-reply-*.js: passes through opts?.sourceReplyDeliveryMode instead of forcing room events to message_tool_only.
  • dist/tool-resolution-*.js: no longer adds message-tool-only mode solely for room events.

Fix Action

Fix / Workaround

// dist/dispatch-*.js strictMessageToolOnly: ctx.InboundEventKind === "room_event",

Local hotfix tested

As a runtime hotfix on the installed dist package, removing the room-event hard-force and allowing the configured visible-reply policy to resolve normally passes node --check on the edited dist files.

Code Example

// dist/source-reply-delivery-mode-*.js
if (params.ctx.InboundEventKind === "room_event") return "message_tool_only";

// dist/dispatch-*.js
strictMessageToolOnly: ctx.InboundEventKind === "room_event",

// dist/get-reply-*.js
sourceReplyDeliveryMode: isRoomEvent ? "message_tool_only" : opts?.sourceReplyDeliveryMode,
RAW_BUFFERClick to expand / collapse

Summary

Discord room/thread events can produce a complete final assistant answer in the session transcript while nothing is posted back to Discord. The visible channel only gets tool/status messages, which makes the user experience look like messages are being dropped.

Observed behavior

On an OpenClaw 2026.5.18 gateway:

  • Discord ingress succeeds.
  • The agent run completes and writes the final answer to the session transcript.
  • Discord does not receive the final assistant text.
  • Users only see tool/error/status output in the Discord thread/channel.

This reproduced in at least two Discord surfaces:

  • A Discord thread/session keyed by 1506182302055665705 contained the full final answer in the session file, but Discord showed only the user message plus a tool failure status.
  • #command-deck showed the same pattern: final diagnosis existed in the session, but was not delivered to Discord.

Likely cause

Room events are hard-forced into sourceReplyDeliveryMode: "message_tool_only", even when config asks for automatic visible replies:

// dist/source-reply-delivery-mode-*.js
if (params.ctx.InboundEventKind === "room_event") return "message_tool_only";

// dist/dispatch-*.js
strictMessageToolOnly: ctx.InboundEventKind === "room_event",

// dist/get-reply-*.js
sourceReplyDeliveryMode: isRoomEvent ? "message_tool_only" : opts?.sourceReplyDeliveryMode,

With that mode active, normal final assistant text is treated as transcript/private unless the model explicitly uses the message tool. If it does not, the final answer is effectively invisible on Discord.

Expected behavior

When messages.groupChat.visibleReplies: "automatic" or messages.visibleReplies: "automatic" is configured, Discord room/thread events should deliver normal final assistant text back to the source conversation.

If message_tool_only is required for some room-event cases, OpenClaw should have a fallback: when counts.final === 0 and no visible message tool send occurred, deliver the final assistant text or emit a clear visible delivery failure.

Local hotfix tested

As a runtime hotfix on the installed dist package, removing the room-event hard-force and allowing the configured visible-reply policy to resolve normally passes node --check on the edited dist files.

Changed locally:

  • dist/source-reply-delivery-mode-*.js: no longer returns message_tool_only solely for InboundEventKind === "room_event".
  • dist/dispatch-*.js: no longer sets strictMessageToolOnly solely because the inbound event is a room event.
  • dist/get-reply-*.js: passes through opts?.sourceReplyDeliveryMode instead of forcing room events to message_tool_only.
  • dist/tool-resolution-*.js: no longer adds message-tool-only mode solely for room events.

Environment

  • OpenClaw version: 2026.5.18
  • Gateway service: openclaw-gateway.service
  • Channel: Discord room/thread events
  • Config relevant setting: messages.groupChat.visibleReplies: "automatic"

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

FAQ

Expected behavior

When messages.groupChat.visibleReplies: "automatic" or messages.visibleReplies: "automatic" is configured, Discord room/thread events should deliver normal final assistant text back to the source conversation.

If message_tool_only is required for some room-event cases, OpenClaw should have a fallback: when counts.final === 0 and no visible message tool send occurred, deliver the final assistant text or emit a clear visible delivery failure.

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING

openclaw - 💡(How to fix) Fix Discord room events can suppress final assistant replies into transcript-only mode [1 comments, 2 participants]