The quickest way to run Hermes Agent Slack is to generate a Slack app manifest with one Hermes command, paste it into api.slack.com, install the app, and add two tokens to Hermes. It connects over Socket Mode, so you need no public URL. It works from a laptop, behind a firewall or on a private server.
📺 Watch: NEW Hermes Agent Update is WILD!
🔥 Get the Agent OS as a free bonus: AI Profit Boardroom members get the full Agent OS zip, prompt libraries, daily tutorials and weekly live coaching calls. → Get inside
Below is the full setup, how the bot behaves in DMs, channels and threads, and the allowlist that keeps the rest of your workspace out. If you want to see how other business owners use agents inside their team chat, the AI Profit Boardroom has members sharing their Hermes builds every week.
What you need before you start
Three things. A Slack workspace where you can install apps. Hermes installed on the machine that will run the gateway. And about fifteen minutes.
Hermes uses Slack's modern Bolt SDK with Socket Mode, a WebSocket connection that the gateway opens outward to Slack. The Hermes docs flag that classic Slack apps using the RTM API were fully deprecated in March 2025. If you have an old classic app, make a new one.
You will collect two tokens:
- Bot token, starting with xoxb-. This goes in SLACK_BOT_TOKEN.
- App-level token, starting with xapp-, with the connections:write scope. This goes in SLACK_APP_TOKEN.
People are identified by Slack Member IDs, which look like U01ABC2DEF3, not by display names.
Hermes Agent Slack setup in six steps
- Generate the manifest. Run hermes slack manifest --agent-view --write. It writes ~/.hermes/slack-manifest.json. The docs say the manifest declares every built-in slash command, every OAuth scope and every event subscription, and turns on Socket Mode in one go. New apps must use Agent view, and Agent view cannot be switched back to Assistant view later.
- Create the app. Go to api.slack.com/apps, click Create New App, choose From an app manifest, pick your workspace, paste the JSON, then Next and Create.
- Create the app-level token. Under Settings, Basic Information, App-Level Tokens, generate a token with connections:write. Copy the xapp- value.
- Check the Messages tab. Under Features, App Home, Show Tabs, the Messages Tab must be on, with "Allow users to send Slash commands and messages from the messages tab" ticked. Without this, the docs say DMs to the bot are blocked completely.
- Install to your workspace. Settings, Install App, Install to Workspace, Allow. Copy the Bot User OAuth Token (xoxb-).
- Connect Hermes. Run hermes gateway setup and pick Slack, or add SLACK_BOT_TOKEN, SLACK_APP_TOKEN and SLACK_ALLOWED_USERS to ~/.hermes/.env. Start with hermes gateway, or keep it running with hermes gateway install.
Then invite the bot to each channel you want it in with /invite @Hermes Agent. It never joins channels by itself.
Two maintenance notes. If you change scopes or events, reinstall the app or the change will not apply. After a hermes update adds commands, run hermes slack manifest --write again and paste the new JSON under Features, App Manifest, Edit.
📺 Watch: 776 NEW Hermes Agent Updates Are INSANE! 🤯
Who gets in: allowlist and pairing
The Hermes docs state that by default the gateway denies every user who is not on an allowlist or paired via DM. That matters on Slack, where a whole company can find your app.
Find Member IDs. Click a person's name, View full profile, the more menu, then Copy member ID. You need your own at minimum.
Set the allowlist. SLACK_ALLOWED_USERS=U01ABC2DEF3,U04XYZ9KLM1 in your .env.
Or use pairing. With unauthorized_dm_behavior set to pair, the default, someone not on the list who DMs the bot gets a one-time code. You approve it with hermes pairing approve slack followed by the code. hermes pairing list shows who is pending, and hermes pairing revoke removes someone. Codes expire after one hour. Set unauthorized_dm_behavior to ignore if you would rather drop those messages silently.
Lock channels. allowed_channels (or SLACK_ALLOWED_CHANNELS) limits the bot to a fixed list of channel IDs. Messages anywhere else are dropped, even with an @mention. One-to-one DMs are exempt. Group DMs are not.
Avoid GATEWAY_ALLOW_ALL_USERS=true. The docs mark it as not recommended for a bot with terminal access.
📺 Watch: Hermes Agent Just Made Multi-Device AI Agents INSANE!
How the bot behaves in Slack
| Where you message it | What Hermes does | Tip |
|---|---|---|
| DM | Answers every message, no mention needed | Best place for private work |
| Channel | Answers only when @mentioned, and replies in a thread on that message | Invite it first with /invite |
| Thread it is active in | Follows the conversation with no further mentions | Keep one task per thread |
| Slash command | Runs the command and replies only to you (ephemeral) | Output never spams the channel |
| Slash command in a thread | Slack blocks it, so use the ! prefix: !stop, !model, !approve | Works after an @mention too |
Every Hermes command, such as /btw, /stop, /new and /model, shows up as a native Slack slash command in the / picker. The Hermes Agent slash commands page lists them. When the agent needs you to choose between options, Slack shows one-tap buttons, with an Other button for a typed answer.
One point on Agent view: Slack can tell Hermes which channel you are looking at, but the docs say Hermes only gets that as a label. It does not read that channel's history.
Not sure which of your team's Slack tasks to hand to an agent first? Book a free AI strategy session.
Options worth knowing
Home channel. Set SLACK_HOME_CHANNEL to a channel ID and scheduled jobs post there. Daily summaries and reports land in one place. Pair it with a Hermes Agent cron job.
Live progress. With streaming on, Hermes uses Slack's native live-typing replies where available. Turn on native_task_cards and tool calls show as Slack task cards that update in place.
Several workspaces. One gateway can serve more than one Slack workspace. Put several bot tokens in SLACK_BOT_TOKEN, comma-separated, and keep one app-level token.
Reactions and other bots. Both are opt-in. reaction_triggers routes emoji reactions into the agent. By default Hermes ignores messages from other bots, and allow_bots changes that.
Thread silence. Since v0.22.7 there is an opt-in thread_followup_silence setting, off by default. It lets the bot stay silent on replies in a channel thread that are not aimed at it, for threads where people talk to each other without mentions.
Voice. Incoming voice messages are transcribed, the same as on other platforms.
One gateway for Slack and everything else
Since v0.23.0, released on 5 November 2026, one gateway per machine owns every session. Nous Research describes the CLI, TUI, desktop app, editors, bots and cron as clients of that gateway, with one queue and one history. A thread you start in Slack is the same session wherever else you open it, and it stops the double replies older builds could produce.
That also means Slack can sit next to Telegram or Discord in the same process. The Hermes multi-gateway connections guide walks through running several at once, and the best messaging app for Hermes Agent page helps you choose a main one. Platform guides in this set: Hermes Agent Telegram, Hermes Agent Discord and Hermes Agent WhatsApp.
For the bigger picture of how an agent runs your business tasks, read the Agent OS guide. For which model to run behind the bot, see Goldie Bench.
Members of the AI Profit Boardroom post the Slack workflows they run for clients and staff, so you can copy what already works. If you want a plan built around your own team, take a free AI strategy session.
FAQ
Do I need a public URL or a server for Hermes on Slack?
No. Socket Mode uses an outbound WebSocket, so the gateway runs on a laptop or behind a firewall.
Why can't people DM my Hermes Slack bot?
The Messages Tab is off in App Home, or the person is not on SLACK_ALLOWED_USERS and has not been paired. Fix the tab, then add their Member ID or approve their pairing code.
Why does the bot ignore messages in a channel?
In channels it only answers @mentions, and only in channels it has been invited to. Also check allowed_channels, which drops messages from any channel not on the list.
Can Hermes read channels it has not joined?
No. It only gets messages from conversations it is part of. The Agent view context is a label, not the channel's history.
Want Hermes answering questions in your team's Slack this week? Book a free AI strategy session and map out the first workflows.











