Skip to content
Guides

OpenClaw Slack threads and sessions

How DMs, channels and group DMs map to sessions, thread suffixes and seeded roots, history scope and inherited parents, implicit mentions, reply modes and broadcast, the top-level opt-out, and Agent View DMs

6 min read

Slack threads hide their messages from the channel, which is exactly why the session model has to be precise about which OpenClaw session a message belongs to and where the reply lands. Here is the mapping from Slack surfaces to sessions, the thread rules, the reply controls with the one difference from Telegram worth remembering, and the Agent View experience where Slack itself owns the threading.

Sessions

  • DMs route as direct, channels as channel and group DMs as group; route bindings accept raw peer IDs plus Slack target forms for a channel, a user or a user mention; with the default main DM scope ordinary DMs collapse to the agent's main session while Agent View roots and existing Assistant View threads stay isolated as thread sessions; and channel sessions are keyed by agent, channel and channel ID.
  • Ordinary top-level channel messages stay on the per-channel session even when the reply mode is not off, while channel, group-DM, Agent View and Assistant View thread replies use the parent thread timestamp as a thread suffix; an ordinary DM reply thread stays a UI affordance on the base DM session.
  • OpenClaw seeds an eligible top-level channel root into a thread session keyed by that root's timestamp when the root is expected to start a visible thread, so the root and its later replies share one session; that applies to app-mention events, explicit bot or configured mention-pattern matches, and channels without a mention requirement whose reply mode is not off.
  • The thread history scope defaults to thread, inheriting the parent defaults to false, and the initial history limit decides how many existing thread messages are fetched when a new thread session starts, 20 by default and zero to disable.
Slack threads hide messages from the channel while Telegram replies stay visible inline.

Replies, tags and broadcast

Two implicit-mention flags decide what bypasses mention gating: a reply to the bot's own message, and a follow-up in a thread where the bot has replied, both true by default, with the second set to false when you want a fresh explicit mention in follow-ups; the doctor fix migrates the former require-explicit-mention thread key to this positive flag, account overrides live under the account's implicit-mentions block and shared defaults under the channel defaults. The reply mode is off by default with first, all and batched as the alternatives, settable per channel, per chat type for direct, group and channel, and through the legacy DM reply mode for direct chats. Manual reply tags target the current message or a specific message ID. An explicit thread reply from the message tool can set reply-broadcast so Slack also posts the reply to the parent channel, which maps to the post-message broadcast flag and works only for text or Block Kit sends, not media uploads. A message tool call running inside a thread and targeting the same channel normally inherits the current thread according to the effective account, chat-type or per-channel reply mode, automatic replies and same-channel send or upload calls use the same override, and a top-level flag or a null thread ID forces a new parent-channel message instead. The reply mode off disables optional outbound threading including the explicit tags, which differs from Telegram, where explicit tags are still honoured in off; Agent View and Assistant View are Slack-managed threaded experiences whose replies and status stay on the visible root regardless, and off does not flatten other inbound thread sessions.

Agent View DMs

  • Agent View is Slack's messaging experience for AI apps: Slack marks the app as an agent, each message typed in the top-level composer of the Messages tab starts a new root that Slack threads on its own, follow-ups belong inside that root's thread, and OpenClaw treats every root as a separate conversation with a thread suffix on top of whatever base session the DM scope selects, so roots stay isolated even under the main scope.
  • Follow-ups inside a root's thread stay on that root's session, a new composer message starts a new session, replies and thread status stay on the visible root regardless of the reply mode because Slack owns the threading, and the active-view entities reach the agent only as structured untrusted context in Slack's relevance order, with a DM that carries none clearing them for that turn rather than reusing stale ones.
  • Slack never states which experience an app uses, so OpenClaw records Agent View from the first signal it sees, an app-context-changed event, a DM carrying app context, or the threadless suggested-prompts call it makes when a member opens the Messages tab, where both ok and internal-error count as evidence and a not-agent-app answer means Assistant View; a DM whose thread timestamp equals its own timestamp is recognised as a Slack-managed root by itself, the marker is durable and keyed by account, workspace and app ID, Socket Mode reads the app ID from the app token at startup, HTTP mode learns it from the first signed event and logs it once, and relay mode keeps the marker only in the running process.

OpenClaw on Slack is the channel post these sessions belong to, and OpenClaw Slack message behaviour what the conversation looks like while a reply is being produced.

One session per thread, on purpose

Seeding the root into the thread session is what lets a mention in a busy channel become a private working thread with its own memory, instead of every reply landing back in the channel's shared session. OpenClaw channel routing explains how the channel session picks its agent, and OpenClaw session search how to find one of these thread sessions again later.

On Diali

Slack is one of the channels Diali connects from the dashboard, with the runtime config generated and replaced at each release, so the thread and reply keys here describe how a hosted agent behaves in your workspace rather than a file you maintain. Slack on Diali is the channel on Diali and Hosted OpenClaw on Diali the assistant behind it.

  • A mentioned root and its thread share one session.
  • Off on Slack silences explicit reply tags too; Telegram keeps them.
  • Every Agent View root is its own conversation.
Get started

Stop reading about it, build one

Set up an agent, pick a channel, and have it working inside the app you already keep open.