openclaw - 💡(How to fix) Fix [Slack] DM top-level messages incorrectly generate :thread: session keys with replyToMode != off [1 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#58832Fetched 2026-04-08 02:32:11
View on GitHub
Comments
0
Participants
1
Timeline
0
Reactions
0
Participants

Root Cause

  • #32353 / #32285 / PR #32320 — same bug for channels, fixed in v2026.3.1
  • Root cause was roomThreadId falling through to threadContext.messageTs when replyToMode != "off"

Fix Action

Workaround

Set accounts.<name>.dm.replyToMode: "off" for the DM account:

"accounts": {
  "default": {
    "dm": { "replyToMode": "off" }
  }
}

This prevents the :thread: suffix and creates a persistent parent DM session.

Code Example

{
    "session": { "dmScope": "per-channel-peer" },
    "channels": { "slack": { "replyToMode": "all" } }
  }

---

agent:romeo:slack:direct:u0710thrrnc

---

agent:romeo:slack:direct:u0710thrrnc:thread:1775027682.537589

---

"accounts": {
  "default": {
    "dm": { "replyToMode": "off" }
  }
}
RAW_BUFFERClick to expand / collapse

Bug Description

Top-level Slack DM (direct message) messages incorrectly receive a :thread: session key suffix when replyToMode is not "off", identical to the channel bug fixed in #32353 / PR #32320.

The channel fix only addressed channel messages. DMs with dmScope: "per-channel-peer" still exhibit the same behavior.

Environment

  • Version: 2026.3.24
  • Channel: Slack
  • Configuration:
    {
      "session": { "dmScope": "per-channel-peer" },
      "channels": { "slack": { "replyToMode": "all" } }
    }

Reproduction

  1. Configure dmScope: "per-channel-peer" and replyToMode: "all"
  2. Send a top-level DM to the bot (not a thread reply)
  3. Observe the generated session key

Expected

agent:romeo:slack:direct:u0710thrrnc

Actual

agent:romeo:slack:direct:u0710thrrnc:thread:1775027682.537589

The timestamp is the message's own ts, not a thread parent — indicating a top-level DM, not a reply.

Impact

  • Every DM creates an isolated session → complete context loss between messages
  • Delivery messages injected into the DM session cannot share context with user replies
  • Parent DM session (agent:romeo:slack:direct:u0710thrrnc without :thread:) is never created

Workaround

Set accounts.<name>.dm.replyToMode: "off" for the DM account:

"accounts": {
  "default": {
    "dm": { "replyToMode": "off" }
  }
}

This prevents the :thread: suffix and creates a persistent parent DM session.

Related

  • #32353 / #32285 / PR #32320 — same bug for channels, fixed in v2026.3.1
  • Root cause was roomThreadId falling through to threadContext.messageTs when replyToMode != "off"

extent analysis

TL;DR

Set accounts.<name>.dm.replyToMode to "off" to prevent the :thread: suffix and create a persistent parent DM session.

Guidance

  • The issue is caused by the replyToMode not being "off" for direct messages, which is similar to a previously fixed channel bug.
  • To verify the fix, send a top-level DM after applying the workaround and check that the generated session key does not have the :thread: suffix.
  • The workaround involves setting accounts.<name>.dm.replyToMode to "off" for the DM account, which will prevent the :thread: suffix and create a persistent parent DM session.
  • This workaround may have implications for reply behavior in DMs, so test thoroughly to ensure it meets your requirements.

Example

"accounts": {
  "default": {
    "dm": { "replyToMode": "off" }
  }
}

Notes

This workaround may not be suitable for all use cases, especially if reply behavior in DMs is critical. The root cause of the issue is related to roomThreadId falling through to threadContext.messageTs when replyToMode != "off", similar to the previously fixed channel bug.

Recommendation

Apply the workaround by setting accounts.<name>.dm.replyToMode to "off", as it is a proven solution that addresses the issue, although it may have implications for reply behavior in DMs.

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…

Still need to ship something?

×6

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

Back to top recommendations

TRENDING