Skip to content

message tool send action drops replyTo/replyToId for Mattermost threading #14920

@chhotu-claw

Description

@chhotu-claw

Bug

The message tool's send action reads the replyTo parameter (line ~14272 in loader) and uses it for session routing, but sendMessage() (line ~11639) never passes replyToId to deliverOutboundPayloads().

Impact

Thread replies via the message tool are broken for Mattermost (and likely all channels that support threading). Messages always post at channel root instead of in the specified thread.

Root Cause

In loader-Ds3or8QX.js:

  • Line 14272: replyToId is read from replyTo param ✅
  • Line 14287: replyToId is passed to resolveOutboundSessionRoute for session routing ✅
  • Line 14303: executeSendAction is called, which calls sendMessage()
  • Line 11672: sendMessage() calls deliverOutboundPayloads() without replyToId

The Mattermost adapter (send.ts) correctly maps opts.replyToIdrootId in createMattermostPost, so the adapter is fine — it's the plumbing that drops the value.

Contrast

The reply-routing path (line ~16681) correctly passes replyToId to deliverOutboundPayloads. Only the message tool send action path is broken.

Expected

message(action="send", channel="mattermost", channelId="...", replyTo="<post_id>", message="...") should post as a thread reply to the specified post.

Versions

OpenClaw v2026.2.9

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions