Skip to content
Guides

OpenClaw Slack message behaviour

Ack reactions and their global scope, the four streaming modes and the native task card, the Block Kit fallback and compact style, the Open in OpenClaw link, streaming delivery rules and rate-limit retries, the typing reaction, and one slash command versus native commands

7 min read

While an OpenClaw agent works on a Slack message, the workspace sees a reaction, then a card or a draft that changes as tools run, then the answer, and commands arrive either through one slash command or through native ones. Every piece of that is configurable, and the defaults changed in 2026.8.1. Here is the acknowledgement model, the four streaming modes with their card surfaces, the delivery rules that decide when a preview can be edited in place, and the command options.

Acknowledgements

  • The ack reaction sends an acknowledgement emoji while an inbound message is processed and the scope decides when it is sent; the acknowledgement stays static during work, and with status reactions enabled an actual failure briefly shows an error reaction before restoring it, while tool calls, thinking, compaction and long tools never cycle or accumulate reactions and a successful completion never flashes a success emoji.
  • The emoji resolves from the account, then the channel, then the global setting, then the agent identity emoji with the eyes as the last fallback; Slack expects shortcodes, and an empty string disables the reaction for the account or globally.
  • The scope is read from the global setting with no account or channel override: all reacts in DMs and groups including ambient room events, direct in DMs only, group-all on every group message except ambient events, group-mentions, the default, in groups only when the bot is mentioned and never in DMs, and off never; to see the emoji on DMs and quiet room events set the scope to all, and scope changes apply to the next message without reconnecting.
  • Reply threading, history limits, chunk limits, streaming, typing reactions and unfurl settings apply to the next admitted message without reconnecting, an active reply keeps the settings it started with, and account overrides behave the same way.
The acknowledgement stays static during work.

Streaming and the cards

The streaming mode is off, partial, block or progress: off disables live previews, partial replaces the preview text with the latest partial output and restores the pre-2026.8.1 default, block appends chunked updates, and progress, the default, shows structured progress in one native task card when Slack supports it with a Block Kit session card as the fallback. Progress is quiet by default; the tool-progress flag adds one task row on the native card or one activity line on the Block Kit card per tool call plus tool, file and time counters on the Block Kit card, the preview tool-progress flag governs partial and block, and the command-text setting keeps compact tool lines with raw command text hidden unless set to raw. In progress mode the native agent card is the default: the whole turn is one streamed message that interleaves narration with a live plan or task card and ends with the answer in that same message, showing authored plan steps when the agent publishes a plan or one stable work-summary row otherwise, with approval requests on their own row, intermediate tool failures and non-zero exits hidden so successful answers do not accumulate failure rows, routine updates coalescing at one-second intervals while approvals, visible failures and completion bypass the delay, and the card appearing only once a turn does real work so a plain question is answered without one. Setting native task cards to false falls back to the Block Kit session card, a separate message with title, narration, plan checklist and commentary that finalises to success or error and lists recent tool activity and totals when tool progress is on. The compact style gives one plain-text progress draft instead of either card, is also selected when tool progress is explicitly false with the style unset, keeps commentary as italic text with reasoning and approvals visible, and always uses normal final delivery; in the other draft modes the final response is posted as a new message and the temporary preview deleted once Slack confirms delivery, older previews displaced by human replies are cleaned up too, and durable messages and videos stay. For streamed preambles Slack waits for the first complete preamble before creating the message so the notification carries the whole thought, and later preambles stream as edits. Both card surfaces link the session with an Open in OpenClaw button only when the gateway's public origin is set and the Control UI is not disabled, with a base path when the UI sits under a prefix; installations without a public origin get no link rather than a dead one.

Delivery rules, typing, commands

  • Native text streaming and session status need a reply thread chosen by the reply mode, channel and top-level DM roots fall back to the ordinary draft preview when native streaming is unavailable or there is no thread, top-level DMs stay off-thread by default and get an edited draft instead, custom outbound username or icon settings keep the preview app-authored and deliver the customised final separately because Slack does not allow impersonated messages to be deleted, media and non-text payloads fall back to normal delivery, native streamed replies wait for Slack's acknowledgement before delivery counts as successful with each complete block flushed separately, explicit 429 rejections are retried up to twice after the Retry-After delay for streaming, ordinary messages and upload completion while lost responses and server errors are not replayed, definite recipient or scope rejections fall back to normal delivery for buffered text, and ambiguous streaming failures report failure without replaying text Slack may already have accepted.
  • The native-transport flag under streaming controls Slack native text streaming when the mode is partial and is true by default, so partial with native transport off gives a draft preview instead; the legacy stream-mode values, the boolean streaming key and the top-level chunk-mode and native-streaming keys are aliases that are not read at runtime, and the doctor fix rewrites persisted config to the canonical keys; the typing reaction adds a temporary reaction to the inbound message while a reply is processed and removes it afterwards, most useful outside thread replies, which use Slack's processing session status, resolved from the account then the channel, expecting a shortcode and cleaned up best-effort.
  • Slash commands appear either as a single configured command, enabled by default, named after OpenClaw, with a slash session prefix and ephemeral replies, or as multiple native commands that need additional manifest settings and an explicit native flag on the channel or globally, because native auto-mode is off for Slack; native argument menus render as an overflow menu for three to five short options, an external select above 100 options with async filtering, button blocks for one or two options or an over-long value, and otherwise a static select chunked at 100, and slash sessions use isolated keys per user while still routing command executions to the target conversation session.

OpenClaw on Slack is the channel post this behaviour belongs to, and OpenClaw Slack setup where the manifest that enables slash commands comes from.

The card is the product

Slack's native agent card turns a long tool run into something a team can watch without being flooded, which is why progress became the default and why the tool log stays opt-in. OpenClaw Telegram message behaviour shows how the same 2026.8.1 change looks on a channel with no card surface, and Connect your first channel in five minutes the walkthrough where you pick these defaults before the first message.

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 acknowledgement, streaming and command keys here describe what a hosted agent does in your workspace rather than a file you maintain. Slack on Diali is the channel on Diali and Diali security the boundary every connected channel shares.

  • One static acknowledgement; no reaction in DMs by default.
  • Progress is the default: one card, quiet unless tool progress is on.
  • One slash command by default; native commands are never automatic on Slack.
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.