Slack Threading in OpenClaw: Actually Working Now (Finally)
If you’ve been using OpenClaw with Slack, you’ve probably noticed threads are a mess. Your bot replies in a thread, but then the next message goes to the main channel. File uploads disappear. It’s annoying. Good news: 2026.2.23 fixed it. Here’s how to set it up right.
What Actually Changed
- Thread context persists across multiple turns. Your bot remembers it’s in a thread and stays there.
- replyToMode finally works. If you tell it to stay in threads, it actually listens.
- File uploads work now. They were broken before. Now they go to the right place.
- Extension routing is fixed. If you use the OpenClaw browser extension, replies route to the correct thread.
Basic Setup (If You Haven’t Done This Yet)
If threading wasn’t working before, add this to your config:
{
"channels": {
"slack": {
"botToken": "xoxb-your-token-here",
"appToken": "xapp-your-token-here",
"replyToMode": "on"
}
}
}
Restart your gateway and you’re done.
Understanding replyToMode (Three Options)
replyToMode: “on” (Default – What You Probably Want)
Bot sees a thread? Replies in the thread. Someone mentions it in the main channel? Replies to main. Adaptive and smart.
Good for: Team workspaces where conversations naturally happen in threads.
replyToMode: “off”
Ignore threads completely. Everything goes to the main channel.
Good for: High-volume channels where you want everything visible (e.g., monitoring alerts, log streaming).
replyToMode: “force”
Always create a new thread, even if someone messages in the main channel.
Good for: Support channels where you want to isolate each conversation.
Common Setups (Copy-Paste Ready)
Support Channel (Isolate Each Ticket)
{
"channels": {
"slack": {
"replyToMode": "force",
"groups": {
"support": {
"requireMention": false
}
}
}
}
}
Team Chat (Natural Threading)
{
"channels": {
"slack": {
"replyToMode": "on",
"groups": {
"*": {
"requireMention": true
}
}
}
}
}
Monitoring Channel (No Threads)
{
"channels": {
"slack": {
"replyToMode": "off"
}
}
}
When Things Go Wrong
Bot replies are still going to the main channel.
Check your replyToMode setting. If it’s “off”, change it to “on”. Restart and test again.
openclaw gateway --restart
The bot sees my thread message but replies at the top level anyway.
This usually means replyToMode isn’t set to “on” or “force”. Or the original message wasn’t actually in a thread. Run openclaw doctor --verbose to see what’s happening.
File uploads still don’t work.
Upgrade to 2026.2.23. This was a bug in 2026.2.22 that’s now fixed.
I want threading for some channels but not others.
{
"channels": {
"slack": {
"groups": {
"announcements": {
"replyToMode": "off"
},
"support": {
"replyToMode": "force"
},
"*": {
"replyToMode": "on"
}
}
}
}
}
Specific channels get specific behavior. Everything else follows the default.
Real-World Pro Tips
- requireMention is your friend. In open channels, set it to true. Prevents your bot from replying to everything and cluttering threads.
- Each thread has its own conversation history. Context doesn’t bleed between threads. Clean and isolated.
- Check your thread depth. Slack doesn’t expose thread depth via API. If you have 200+ messages in a thread, context loading might slow down. Consider archiving old threads.
- Long responses? If your bot takes >30 seconds to reply, Slack shows a typing indicator. Users might resend. Either speed it up or explain delays in your SOUL.md.
Monitoring Your Threads
See recent thread activity:
openclaw sessions list --activeMinutes 60
Each session corresponds to a thread the bot participated in.
For debug info:
openclaw gateway --verbose --port 18789 2>&1 | grep -i thread
Advanced: Thread Metadata (For Custom Skills)
If you’re building custom skills, you can access thread info:
{
"meta": {
"threadId": "1234567890.123456",
"threadStartTime": 1708865432,
"threadReplyCount": 5
}
}
Use this to build smart behavior: escalate to a human after 10 messages in a thread, mark threads as resolved, whatever.
Next Steps
- Test threading with your actual Slack workspace
- Set requireMention to reduce noise
- Read the full Slack channel docs for advanced options
- Jump on the Discord and let the community know how it’s working for you