@slack/bolt) or HTTP Mode (for production
behind a reverse proxy with HMAC-SHA256 signed event subscriptions).
You don’t need to understand the technical details to use this feature. The configuration examples below are copy-paste ready.
Prerequisites
- Comis installed and running (Quickstart)
- A Slack workspace where you have permission to install apps
Setup
Create a Slack App
Go to the Slack API portal and sign in.Click Create New App and choose From scratch. Give your app a name
(e.g. “Comis Agent”) and select the workspace you want to install it in.
Configure bot permissions
In the left sidebar, go to OAuth & Permissions.Scroll down to Bot Token Scopes and add the following scopes:
chat:write— Send messageschannels:history— Read public channel messagesgroups:history— Read private channel messagesim:history— Read direct messagesmpim:history— Read group direct messagesreactions:read— View reactionsreactions:write— Add reactionsfiles:read— Access shared filesfiles:write— Upload filesusers:read— Look up user information
Choose your connection mode
- Socket Mode (Recommended)
- HTTP Mode
Socket Mode uses a WebSocket connection — no public URL or reverse
proxy needed.
- In the left sidebar, go to Settings then Socket Mode
- Toggle Enable Socket Mode on
- Click Generate to create an App-Level Token
- Give it a name (e.g. “comis-socket”) and add the
connections:writescope - Copy the token starting with
xapp-— you will need it later
- In the left sidebar, go to Event Subscriptions
- Toggle Enable Events on
- Under Subscribe to bot events, add:
message.channelsmessage.groupsmessage.immessage.mpimapp_mention
- Click Save Changes
Install to workspace
In the left sidebar, go to Install App and click Install to Workspace.Authorize the app when prompted. After installation, copy the
Bot User OAuth Token starting with
xoxb-.Configure Comis
Add the Slack channel to your Comis configuration file (Set the environment variables in your
~/.comis/config.yaml):- Socket Mode
- HTTP Mode
~/.comis/.env file:Restart and verify
Restart the Comis daemon to pick up the new configuration:Check the logs for a successful connection:Look for a line containing “Slack adapter connected” or
“channel-slack activated”. If you see this, your bot is online.Go to your Slack workspace. The bot must be invited to a channel before it
can see messages there — type
/invite @your-bot-name in any channel.
Send a message to confirm it responds.Configuration
These options go underchannels.slack in your config.yaml:
| Option | Type | Default | What it does |
|---|---|---|---|
enabled | boolean | false | Turns on the Slack adapter |
botToken | string / SecretRef | (required) | Bot User OAuth Token (xoxb-...) from the Install App page |
mode | "socket" or "http" | (required) | Connection mode — Socket Mode or HTTP Mode |
appToken | string / SecretRef | (Socket Mode only) | App-Level Token (xapp-...) for Socket Mode |
signingSecret | string / SecretRef | (HTTP Mode only) | Signing Secret for HTTP request verification |
allowFrom | string[] | [] (all) | Restrict to specific Slack user IDs. Empty means all users can talk to the bot. |
mediaProcessing.transcribeAudio | boolean | true | Transcribe voice messages to text before passing to the agent |
mediaProcessing.analyzeImages | boolean | true | Describe images sent to the bot using AI vision |
mediaProcessing.describeVideos | boolean | true | Extract descriptions from video content |
mediaProcessing.extractDocuments | boolean | true | Extract text from PDFs, DOCX, and other documents |
mediaProcessing.understandLinks | boolean | true | Fetch and summarize URLs included in messages |
What your agent can do
Once connected to Slack, your agent can:- Send, edit, and delete messages in any channel it has been invited to
- React to messages with emoji shortnames (
thumbsup,eyes, etc.) - Reply in threads (Slack reply chains via
thread_ts) - Send files and images (up to 1 GB per attachment)
- Create interactive buttons for user choices
- Send Block Kit sections, contexts, and image blocks for rich formatting
- Use mrkdwn formatting (bold
*text*, italic_text_, strikethrough~text~, code, links, lists) - Stream responses with live editing (updates every 400 ms)
- Mention users and channels (
<@userId>,<#channelId>) - Fetch message history for conversation context (
conversations.history) - Pin/unpin messages, set channel topic and purpose, archive or unarchive channels, create new channels, invite or kick members, list members, and add channel bookmarks via platform actions
Platform limits
| Limit | Value | What Comis does about it |
|---|---|---|
| Message length | 4,000 characters | Automatically splits long responses into multiple messages at paragraph boundaries |
| Attachment size | 1,000 MB | Generous limit, rarely hit in practice |
Complete walkthrough: from zero to first reply
This walks through Socket Mode — the easiest way to get started.Create the Slack app
Open api.slack.com/apps, click
Create New App -> From scratch. Name it MyTeamBot and pick
your workspace.
Add bot scopes
Under OAuth & Permissions, add the bot scopes from Step 2 above
(
chat:write, channels:history, groups:history, im:history,
mpim:history, reactions:read, reactions:write, files:read,
files:write, users:read).Enable Socket Mode and event subscriptions
Under Settings -> Socket Mode, toggle Socket Mode on, click
Generate, name the token
myteambot-socket, and copy the
xapp-... token.Under Event Subscriptions, toggle events on and subscribe to
message.channels, message.groups, message.im, message.mpim,
and app_mention.Install to workspace
Under Install App, click Install to Workspace and accept.
Copy the Bot User OAuth Token (
xoxb-...).Troubleshooting
Socket Mode requires appToken
Socket Mode requires appToken
What happened: You configured
mode: "socket" but did not provide an
app-level token.How to fix it: Go to the Slack API portal,
select your app, navigate to Settings then Socket Mode, and generate an
App-Level Token with connections:write scope. Copy the xapp-... token
into your .env file.HTTP Mode requires signingSecret
HTTP Mode requires signingSecret
What happened: You configured
mode: "http" but did not provide a
signing secret.How to fix it: Go to the Slack API portal,
select your app, navigate to Basic Information under App Credentials,
and copy the Signing Secret into your .env file.Bot doesn't respond in channels
Bot doesn't respond in channels
What happened: The bot has not been invited to the channel. Slack bots
can only see messages in channels they have been explicitly added to.How to fix it: In the Slack channel where you want the bot, type
/invite @your-bot-name and press Enter. The bot will start receiving
messages in that channel immediately.Delivery Infrastructure
How streaming, typing indicators, and retry logic work under the hood.
Multiple users & teams
Run one install for a whole team - private per person, isolated per agent.
All Channels
Compare all 9 supported platforms side by side.
Agent Configuration
Set up your agent’s personality, tools, and behavior.
Secret Management
Learn how to manage API keys and tokens securely.
