#Slack connection to OpenClaw

1 messages · Page 1 of 1 (latest)

clear umbra
#

Hi all — I've gotten further with setup but still stuck. Here's my situation:

macOS Tahoe 26.4.1, OpenClaw 2026.4.14
Slack shows ON / OK in status --all
Socket Mode is enabled in Slack app settings
Event Subscriptions enabled with message.channels and message.im
Bot is installed and present in the channel
Gateway log shows 'slack socket mode connected'
Devices approved

But when I send a message in my Slack channel — including @OpenClaw mentions — zero log activity appears. Nothing. The agent shows 0 sessions and 'unknown' status.
I was never able to complete onboard due to the trim() bug. Is there a manual command to bootstrap/initialize the agent so it starts listening? What am I missing

kindred ledgeBOT
blazing hullBOT
#

You probably are not missing a manual bootstrap/init command.

If the log already says slack socket mode connected, the listener is up.
What your symptoms suggest is: Slack events are not reaching OpenClaw’s message handler, or channel policy is blocking them before a session is created.

Two likely issues jump out from your description:

  1. app_mention is required for @OpenClaw mentions in channels.
    You listed message.channels and message.im, but OpenClaw’s Slack setup expects app_mention too.

  2. If that Slack room is private, message.channels is the wrong event.
    Private channels need message.groups. Group DMs need message.mpim.

OpenClaw’s documented Slack bot events are:

  • app_mention
  • message.channels
#
  • message.groups
  • message.im
  • message.mpim

One more gotcha: since onboarding never finished, you may only have env tokens and no real channels.slack config block. Docs note that if channels.slack is completely missing, runtime falls back to groupPolicy="allowlist", which means channel traffic gets ignored unless explicitly allowlisted.

I’d check these next:

openclaw channels status --probe --json
openclaw config get channels.slack
openclaw doctor
openclaw logs --follow

What I’d look for:

#
  • whether channels.slack exists at all
  • whether groupPolicy is allowlist with no channels configured
  • whether the account probe shows any token/scope issues
  • whether your Slack room is public (C...) or private (G...)

So short answer: no separate bootstrap command, this is almost certainly a Slack events/config/routing issue, not agent initialization.

Docs:

If you paste the output of:

openclaw channels status --probe --json
openclaw config get channels.slack
#

with tokens redacted, I can probably tell you the exact missing piece fast.

clear umbra
#

It says the output is too long to post here.

blazing hullBOT
#

No need for the full output, we can narrow this down with 3 tiny checks.

First, based on what you already posted, I would fix Slack events before anything else:

  • add app_mention
  • if the room is private, add message.groups
  • if it’s a group DM, add message.mpim

If you currently only have message.channels + message.im, then:

  • @OpenClaw mentions in channels will not fire without app_mention
  • private channels will stay silent without message.groups

Then run just these, which should be short:

#
openclaw config get channels.slack.groupPolicy
openclaw config get channels.slack.channels
openclaw config get channels.slack

You can paste only the results of those 3.

What I’m looking for:

  • if groupPolicy is allowlist
  • and channels is empty or missing

...then that’s the blocker. That can easily happen if onboarding never finished and you only have Slack tokens configured, because the transport connects but channel routing is still closed.

So the likely answer is still:

#
  1. missing app_mention
  2. wrong message event for the room type
  3. channels.slack policy blocking channel traffic

Also tell me one thing: is the Slack room public or private?

clear umbra
#

private

blazing hullBOT
#

Yep, that’s very likely the missing piece.

For a private Slack channel, OpenClaw needs message.groups, not message.channels.

And for @OpenClaw mentions in channels, you also need app_mention.

So your current setup can absolutely show:

  • Slack connected
  • bot installed
  • Socket Mode OK

...while still delivering zero inbound channel events to OpenClaw.

Change these in Slack Event Subscriptions

Add:

#
  • app_mention
  • message.groups

Optional but recommended too:

  • message.mpim for group DMs

Also make sure the bot still has the private-channel scopes from the docs manifest:

  • groups:read
  • groups:history

Then test again. If Slack prompts you to reinstall/update the app after changing scopes, do that.

So: no manual bootstrap command is needed.
This looks like a Slack event subscription mismatch for a private channel.

#

If it still stays silent after adding those, the next check is:

openclaw config get channels.slack.groupPolicy
openclaw config get channels.slack.channels

because failed onboarding can also leave Slack channel policy closed.

Docs: https://docs.openclaw.ai/channels/slack

clear umbra
#

this is the message I'm getting:

{
"enabled": true,
"mode": "socket",
"appToken": "OPENCLAW_REDACTED",
"botToken": "OPENCLAW_REDACTED",
"webhookPath": "/slack/events",
"userTokenReadOnly": true,
"groupPolicy": "allowlist"
}
bash-3.2$ openclaw config get channels.slack.groupPolicy
openclaw config get channels.slack.channels
🦞 OpenClaw 2026.4.14 (323493f) — Your .zshrc wishes it could do what I do.

allowlist
bash-3.2$ openclaw config get channels.slack.channels

blazing hullBOT
#

Nice, we found it.

Your blocker is this combination:

  1. private Slack channel
  2. groupPolicy: "allowlist"
  3. no channels.slack.channels configured

So OpenClaw is connected, but it is intentionally dropping all channel messages before a session is created.

And because the room is private, you also need message.groups in Slack Event Subscriptions.

What to fix

1) In Slack Event Subscriptions, add:

  • app_mention
#
  • message.groups

(message.channels is for public channels, not private ones.)

2) In OpenClaw config, do one of these

Quick test
Temporarily change:

channels: {
  slack: {
    groupPolicy: "open",
  },
}
#

If that works, you’ve confirmed it was just channel policy.

Better long-term
Keep allowlist, but add your private channel ID:

channels: {
  slack: {
    groupPolicy: "allowlist",
    channels: {
      G1234567890: {
        enabled: true,
        requireMention: true,
      },
    },
  },