openclaw - 💡(How to fix) Fix Slack proactive DM delivery fails while direct chat.postMessage to user ID succeeds [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#62042Fetched 2026-04-08 03:09:52
View on GitHub
Comments
0
Participants
1
Timeline
0
Reactions
0
Participants

Slack proactive DM delivery appears broken in OpenClaw's delivery path, even though the underlying Slack app can successfully send a DM directly via chat.postMessage to the same user.

Root Cause

This blocks a useful workflow where OpenClaw should proactively DM Slack users with digests, alerts, or cron-generated summaries, even though the Slack app itself clearly has working DM capability.

RAW_BUFFERClick to expand / collapse

Summary

Slack proactive DM delivery appears broken in OpenClaw's delivery path, even though the underlying Slack app can successfully send a DM directly via chat.postMessage to the same user.

Expected

When a Slack bot can successfully send a DM using chat.postMessage with channel=<USER_ID>, OpenClaw should also be able to deliver proactive Slack DMs to that user (for example via cron output or message.send).

Actual

  • Channel replies in Slack work
  • Mentions in channels work
  • User resolution works
  • Direct Slack API call works:
    • chat.postMessage(channel=U078T4P5FHP, text=...) returns ok: true
  • But OpenClaw proactive/cross-context Slack DM delivery fails
  • In our testing, cron-triggered Slack DM delivery did not arrive, and related attempts surfaced missing_scope behavior even though direct DM send via Slack API succeeded

Reproduction

  1. Configure Slack in Socket Mode with a working bot/app token pair
  2. Verify the bot can reply in channels
  3. Verify direct Slack API DM works:
    • chat.postMessage with channel=<USER_ID> succeeds
  4. Attempt proactive DM delivery through OpenClaw (for example cron or cross-context send to the same user)
  5. Delivery fails even though the same Slack app can DM that user directly outside OpenClaw

What we verified

  • Slack channel integration is healthy
  • Bot token works
  • Socket Mode connected
  • App can post to channels
  • App can DM the target user directly via Slack API
  • The target Slack user resolves correctly
  • This does not look like a simple app-scope misconfiguration

Likely cause

OpenClaw's Slack DM delivery path may be:

  • normalizing the target incorrectly
  • using the wrong target form for Slack DMs
  • attempting a conversations-open flow unnecessarily
  • or otherwise not using the working Slack pattern of chat.postMessage(channel=<USER_ID>)

Useful detail

In our case:

  • target user ID: U078T4P5FHP
  • direct Slack API call returned ok: true
  • opened/used DM channel looked like D08RBGEATT2
  • channel replies were already functioning normally

Why this matters

This blocks a useful workflow where OpenClaw should proactively DM Slack users with digests, alerts, or cron-generated summaries, even though the Slack app itself clearly has working DM capability.

extent analysis

TL;DR

The most likely fix for OpenClaw's broken Slack DM delivery is to ensure that the target user ID is used correctly in the chat.postMessage call, potentially by passing the user ID as the channel parameter.

Guidance

  • Verify that OpenClaw is using the correct target user ID (U078T4P5FHP) when attempting to send proactive DMs.
  • Check if OpenClaw is using the chat.postMessage method with the channel parameter set to the target user ID, as this is the working pattern for direct Slack API calls.
  • Investigate if OpenClaw is attempting to open a conversation or use a conversations-open flow unnecessarily, which may be causing the missing_scope behavior.
  • Review the OpenClaw configuration to ensure that it is not normalizing the target user ID incorrectly or using the wrong target form for Slack DMs.

Example

# Example of a working direct Slack API call
response = slack_client.chat_postMessage(channel="U078T4P5FHP", text="Hello, this is a test message")
print(response)  # Should print {'ok': True, ...}

Notes

The issue may be specific to the OpenClaw implementation or configuration, and further investigation is needed to determine the root cause. The provided information suggests that the Slack app itself has working DM capability, but OpenClaw's delivery path is not using the correct pattern.

Recommendation

Apply a workaround by modifying the OpenClaw configuration to use the correct target user ID and chat.postMessage method, as this is the working pattern for direct Slack API calls. This may involve updating the OpenClaw code or configuration to pass the user ID as the channel parameter.

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

openclaw - 💡(How to fix) Fix Slack proactive DM delivery fails while direct chat.postMessage to user ID succeeds [1 participants]