OpenClaw Slack /focus Not Working: Messages Ignore Runtime Binding
If you're using OpenClaw on Slack and /focus appears to succeed โ it
confirms the binding, writes to current-conversations.json โ but messages
in the bound channel still route to the default agent shell instead of your target
session, this is issue #67739. The binding is written correctly; Slack inbound routing
just isn't reading it. Here's the workaround.
What's Happening
OpenClaw's /focus command is supposed to bind a Slack channel to a
specific ACP session โ so messages in that channel route to your target agent rather
than the default responder. The command writes the binding to
~/.openclaw/bindings/current-conversations.json correctly. You can
verify it's there. The problem is on the inbound routing side: when a message arrives
in that channel, the Slack inbound router doesn't check the bindings file and falls
through to the agent shell anyway.
The binding exists. The router ignores it. Messages never reach the intended session.
Who Gets Hit
This affects anyone running multi-agent Slack setups where different channels are supposed to route to different specialized agents. It's particularly painful for:
- Teams using Slack as their primary agent interface with multiple agents per workspace
- ACP (Claude Code) sessions that are supposed to receive tasks from specific Slack channels
- Setups where
/focusis used to context-switch between agents during a session
Workaround #1 โ Use Discord Instead of Slack (If Possible)
Discord's channel binding and thread-based routing don't have this bug. If your use
case allows switching channels, Discord is the more reliable multi-agent surface
right now. Both sessions_spawn with thread: true and
channel-based routing work as expected on Discord.
Workaround #2 โ Route via sessions_send Instead of /focus
Rather than relying on channel-level focus binding, have your orchestrator agent
route messages explicitly using sessions_send:
// Instead of /focus โ type in channel
// Have your main agent relay the message directly:
sessions_send({
sessionKey: "your-target-session",
message: "the task or message content"
})
This bypasses the broken inbound routing entirely. The target session receives the message reliably. Downside: requires an intermediary agent turn to relay, rather than direct channel-to-session binding.
Workaround #3 โ Pin to 4.12
If Slack focus binding is central to your workflow, 4.12 predates this regression:
npm install -g openclaw@2026.4.12
openclaw gateway restart
Diagnosing vs Other /focus Issues
This specific bug has a signature: /focus returns success, and if you
check ~/.openclaw/bindings/current-conversations.json you'll see the
binding entry โ but messages still go to the wrong place. If /focus
is throwing an error, or if the bindings file isn't being written at all, that's a
different issue.
# Check if binding was written
cat ~/.openclaw/bindings/current-conversations.json
If the entry is there but routing is wrong โ issue #67739 (this bug).
If the file is empty or missing โ different root cause, check gateway logs.
Status
Issue #67739 is open as of April 16, 2026. No patch timeline confirmed yet. Watching for 4.15 stable.
TL;DR
/focuson Slack writes the binding but inbound router ignores it โ messages fall through to agent shell- Workaround A: switch to Discord for multi-agent routing
- Workaround B: use
sessions_sendexplicitly instead of channel binding - Workaround C: pin to 4.12
- Tracking: GitHub issue #67739
Multi-agent Slack setup not behaving?
ClawReady configures multi-agent routing that works reliably โ whether you're on Slack, Discord, or both. We know the current bug landscape and design around it.
Book a Free Call โ