Skip to content
Guides

OpenClaw Slack manifest and scopes

The base manifest shared by Socket Mode and HTTP, the App Home and Agent View settings, session status and the Stop button, the irreversible Assistant View migration, optional native slash commands within the 25-command limit, the authorship scope, and user-token read scopes

6 min read

Most Slack setup pain is a missing scope or a missing event subscription, and the manifest is where both live. OpenClaw's docs publish one base manifest and then the optional additions one at a time, each with the reason it exists. Here is the base manifest scope by scope, the App Home and Agent View behaviour it enables, the native command list with its limits, and the two optional scope groups.

The base manifest

  • The base manifest is the same for Socket Mode and HTTP request URLs; only the settings block and the slash command URL differ, with the HTTP variant replacing the socket flag by event subscription and interactivity request URLs that all point at the same endpoint.
  • It declares the app name and description, a bot user marked always online, an App Home with the Home tab and a writable Messages tab, an Agent View description with three suggested prompts, and one slash command named after OpenClaw that does not escape its input.
  • The bot scopes cover app mentions, assistant write, channel, group, DM and group-DM history and read, chat write, commands, emoji read, files read and write, DM and group-DM write, pins read and write, reactions read and write, user-group read and users read; the Minimal manifest on the setup page drops the file, reaction, pin, group-DM, emoji and user-group scopes for restrictive workspaces.
  • The bot events are Home opened, app mention, app context changed, agent session stopped and title changed, channel rename, member joined and left, the four message events, pin added and removed, and reaction added and removed; each one feeds a feature described elsewhere in the channel docs, from join introductions to the Stop button.
OpenClaw registers handlers for enabled native commands, but Slack manifest entries remain administrator-managed and are not synchronized at runtime.

App Home, Agent View, session status

The default manifest enables the Home tab and subscribes to the Home opened event, and when a workspace member opens the tab OpenClaw publishes a safe default Home view through the views API with no conversation payload or private configuration; in single slash-command mode the command hint uses the configured command name, while installations with native commands or no slash commands omit the hint, and the Messages tab stays enabled for DMs. New apps use Agent View through the agent view feature, the assistant write scope and the app context changed event, and the threads post explains how OpenClaw detects that experience and gives each visible root its own session. OpenClaw drives Slack's session status, processing while a turn runs, suspended while a native approval waits, and active when done; the native Stop button requires the session-stopped subscription and aborts the run like the stop command with the same authorisation checks, and session titles follow the OpenClaw session display name with the title-changed subscription letting user renames flow back. Existing apps on the Assistant View feature can keep it: OpenClaw still handles the assistant thread started and context changed events for those installs, and they should add the same session events for Stop and title synchronisation; because Slack makes the migration from Assistant View to Agent View irreversible and requires users to hard refresh afterwards, the docs say not to replace the assistant view setting on an existing app until you intend to migrate the whole workspace.

Native commands and optional scopes

  • Multiple native slash commands can replace the single configured command, with two nuances: use agentstatus instead of status because status is reserved by Slack, and no more than 25 slash commands can be registered on an app; OpenClaw registers handlers for the enabled commands but the manifest entries remain administrator-managed and are not synchronised at runtime, so the login command must be added by hand, and the example list keeps to 25 by including it instead of the optional side alias, with login issuing pairing codes only in private chats or the Web UI.
  • The example list replaces the slash-commands section with new, reset, compact, stop, session, think, verbose, fast, reasoning, elevated, exec, approve, model, models, help, commands, tools, agentstatus, tasks, context, whoami, skill, btw, login and usage, each with a description and a usage hint, and the HTTP variant repeats the same request URL on every entry.
  • Two optional scope groups extend the base: the chat write customize bot scope lets outgoing messages use the active agent identity, a custom username and icon, instead of the default app identity, with emoji icons in colon syntax; and a configured user token typically takes read scopes for channel, group, DM and group-DM history and read, users, reactions, pins, emoji and search when you depend on Slack search reads.

OpenClaw on Slack is the channel post this manifest serves, and OpenClaw Slack setup the walkthrough where you paste it.

Manifests are not synced

The line that saves the most support time is the one about runtime: OpenClaw never edits your Slack app, so a command that exists in the config but not in the manifest simply does not appear, and a scope the docs list but the manifest lacks fails quietly at the API. OpenClaw Slack message behaviour explains how the single command and the native ones behave once registered, and OpenClaw Slack threads and sessions the Agent View sessions the manifest's agent view feature switches on.

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 scopes and events above are the vocabulary behind that connection rather than a manifest you maintain by hand. Slack on Diali describes the channel on Diali and Diali security the boundary every connected channel shares.

  • One base manifest; only the settings block differs by transport.
  • Status is reserved, so it is agentstatus; 25 commands at most.
  • Never swap Assistant View for Agent View until the whole workspace moves.
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.