Manifest and scope checklist
The base Slack app manifest is the same for Socket Mode and HTTP Request URLs. Only thesettings block (and the slash command url) differs.
Base manifest (Socket Mode default):
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 toapp_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.
Optional native slash commands
Optional native slash commands
Multiple native slash commands can be used instead of a single configured command with nuance:
- Use
/agentstatusinstead of/statusbecause the/statuscommand is reserved. - No more than 25 slash commands can be registered on a Slack app at once (Slack platform limit).
/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:- Socket Mode (default)
- HTTP Request URLs
Optional user-token scopes (read operations)
Optional user-token scopes (read operations)
If you configure
channels.slack.userToken, typical read scopes are:channels:history,groups:history,im:history,mpim:historychannels:read,groups:read,im:read,mpim:readusers:readreactions:readpins:reademoji:readsearch:read(if you depend on Slack search reads)