Skip to main content
The Slack app manifest OpenClaw expects, scope by scope, plus the optional settings that extend it.

Manifest and scope checklist

The base Slack app manifest is the same for Socket Mode and HTTP Request URLs. Only the settings block (and the slash command url) differs. Base manifest (Socket Mode default):
For HTTP Request URLs mode, replace settings with the HTTP variant and add url to each slash command. Public URL required:

Additional manifest settings

Surface different features that extend the above defaults. The default manifest enables the Slack App Home Home tab and subscribes to app_home_opened. When a workspace member opens the Home tab, OpenClaw publishes a safe default Home view with views.publish; no conversation payload or private configuration is included. When single slash command mode is enabled, the command hint uses channels.slack.slashCommand.name; installations using native commands or no slash commands omit that hint. The Messages tab remains enabled for Slack DMs. New apps use Slack Agent View through features.agent_view, assistant:write, and app_context_changed. See Agent View DMs for how OpenClaw detects the experience and routes each visible root to its own session. OpenClaw drives Slack session status: processing while a turn runs, suspended while a native approval waits, and active when done. The native Stop button requires the agent_session_stopped event subscription and aborts the run like /stop, with the same authorization checks. Session titles follow the OpenClaw session display name; the agent_session_title_changed subscription lets user renames flow back to OpenClaw. Existing apps that already use features.assistant_view can keep that feature setting. OpenClaw continues to handle assistant_thread_started and assistant_thread_context_changed for those installs; add the same session event subscriptions for Stop and title synchronization. Slack makes migration from Assistant View to Agent View irreversible and requires users to hard refresh afterward, so do not replace assistant_view on an existing app until you intend to migrate the whole workspace.
Multiple native slash commands can be used instead of a single configured command with nuance:
  • Use /agentstatus instead of /status because the /status command is reserved.
  • No more than 25 slash commands can be registered on a Slack app at once (Slack platform limit).
OpenClaw registers handlers for enabled native commands, but Slack manifest entries remain administrator-managed and are not synchronized at runtime. Add /login to the manifest manually; the example below includes it instead of the optional /side alias to remain at 25 commands. /login can be surfaced anywhere, but it issues pairing codes only in private chats or the Web UI.Replace your existing features.slash_commands section with a subset of available commands:
Add the chat:write.customize bot scope if you want outgoing messages to use the active agent identity (custom username and icon) instead of the default Slack app identity.If you use an emoji icon, Slack expects :emoji_name: syntax.
If you configure channels.slack.userToken, typical read scopes are:
  • channels:history, groups:history, im:history, mpim:history
  • channels:read, groups:read, im:read, mpim:read
  • users:read
  • reactions:read
  • pins:read
  • emoji:read
  • search:read (if you depend on Slack search reads)