Integration
Hermes Agent Slack Integration: Team Bot, Threads, and Scheduled Work
Connect Hermes Agent to Slack with Socket Mode, generated app manifests, channel allowlists, thread commands, scheduled delivery, and team-safe gateway controls.
Quick answer
Hermes Agent connects to Slack through the modern Bolt SDK and Socket Mode, so your laptop or private server does not need a public webhook URL. Generate the app manifest, install it, provide both the xoxb- bot token and xapp- app token, allowlist Slack Member IDs and channels, then prove a real reply in the target workspace. Use FlyHermes when the requirement is managed channel uptime rather than another gateway process your team must operate.
Managed browser and connected-channel access · Socket Mode, tokens, scopes, and tests
Best for
Internal team assistance where Slack is already the source of truth
Workflow alerts from CI, GitHub, or scheduled Hermes jobs
Threaded handoffs that should stay visible to teammates
Teams that want a safer gateway profile than the full local CLI setup
Multi-workspace Slack deployments that need separate bot identities
Features
- ✓Socket Mode over WebSockets — no public webhook URL required
- ✓Hermes-generated Slack app manifest with OAuth scopes, events, and slash commands
- ✓App mentions, direct messages, group DMs, and thread-aware replies
- ✓Channel and user allowlists for fail-closed team access
- ✓Scheduled reports through a dedicated Slack home channel
- ✓Per-channel prompts, skill bindings, rich Block Kit replies, and feedback controls
Setup path
- 1Generate the recommended manifest with
hermes slack manifest --agent-view --write, then create the app from that manifest in Slack. - 2Install the app and copy both required credentials: the
xoxb-bot token andxapp-app-level Socket Mode token. - 3Run
hermes gateway setup, select Slack, and add authorized Slack Member IDs; Hermes denies messages by default without an allowlist. - 4Start the gateway, invite the bot to one test channel with
/invite @Hermes Agent, and begin with an explicit @mention. - 5Prove one DM, one channel reply, and any scheduled delivery in the exact target before widening channel access.
How Hermes Agent connects to Slack
Hermes uses Slack Bolt with Socket Mode. Slack sends events and commands over a WebSocket authenticated by an app-level token, while a separate bot token reads allowed messages and posts replies. This removes the public-callback requirement without removing the need to keep the Hermes gateway running.
- •Use the generated manifest instead of hand-copying every scope, event, and command.
- •Store
xoxb-andxapp-tokens in the active profile environment, never in prompts or source control. - •Classic RTM Slack apps are deprecated; create or migrate to a current Socket Mode app.
Mentions, threads, commands, and session behavior
In 1:1 DMs Hermes responds without a mention. In channels, an @mention starts the conversation and Hermes replies in a thread; later replies in that active thread can continue naturally. Slack blocks native slash commands inside thread replies, so Hermes also accepts the !command prefix there.
- •Keep
group_sessions_per_user: truewhen each teammate should have isolated context. - •Use
strict_mention: truein busy channels where automatic thread re-engagement would surprise people. - •Use a shared channel session only when the team explicitly accepts shared context, token growth, and shared resets.
Team-safe Slack access controls
A Slack bot is a shared work surface, not a copy of your unrestricted personal CLI agent. Pair a dedicated Hermes profile with SLACK_ALLOWED_USERS, SLACK_ALLOWED_CHANNELS, mention gating, narrow tools, and project-specific prompts or skill bindings.
- •Hermes denies Slack messages by default when no authorized Member IDs are configured.
- •Channel allowlists silently ignore non-approved channels before mention logic runs.
- •Group DMs are shared surfaces and should follow channel-style allowlist and mention controls.
Slack workflows worth operating
The strongest Slack workflows keep a decision or alert visible to the whole team: incident summaries, GitHub and CI handoffs, scheduled operating reports, research threads, and approval steps. Set a Slack home channel for proactive cron delivery, then test the actual destination instead of stopping at a healthy-process indicator.
- •Use per-channel prompts for recurring tone, constraints, or domain rules.
- •Use per-channel skill bindings when a support, research, or operations channel should preload a known capability.
- •Enable rich Block Kit replies only after the plain-text workflow is stable.
Slack, Discord, Telegram, or managed cloud?
Choose Slack for internal company workflows and durable threaded handoffs, Discord for community and support-server workflows, and Telegram for direct mobile control. Choose FlyHermes when browser/mobile access and connected-channel uptime matter but your team does not want to own the server, gateway restarts, provider keys, upgrades, and delivery monitoring.
- •Self-host when private infrastructure control is the goal and someone owns operations.
- •Use managed cloud when channel silence, server restarts, and provider failures would interrupt business work.
- •Keep setup and product-decision intent separate: this page explains the Slack integration; the how-to guide carries the exact installation sequence.
Channel-scoped assistance with app mentions and threads
Hermes joins Slack as an app you mention in a channel, replying in threads so conversations stay tidy. Scope it to the channels where it's useful rather than the whole workspace, and the same agent — with the same memory and skills — is available to the team without anyone leaving Slack.
Keeping the Slack agent reliably available
Because Slack access runs through the Hermes gateway, the agent is only as available as the process behind it. For a team that expects the bot to answer at any hour, the operational question is uptime, not setup — running the gateway on a managed host like FlyHermes avoids the agent going quiet when a self-hosted box reboots or an update interrupts it.
Common setup issues
- DMs work but channels do not: add the
message.channelsandmessage.groupsevents, add the matching history scopes, reinstall the app, invite it to the channel, and @mention it. - Slack commands are missing after a Hermes update: regenerate with
hermes slack manifest --write, replace the App Manifest, save, and reinstall when Slack requests it. - Native slash commands do not work inside Slack threads because Slack never delivers them there. Use
!queue,!stop,!model,!approve, or the matching!commandform. - Uploaded files are invisible: add
files:read, reinstall the app, and retry with a harmless attachment. - Duplicate or delayed interactive-action messages often mean two Socket Mode consumers are competing to acknowledge the same envelope. Keep one owner or use an external bridge that acknowledges and deduplicates immediately.
- Use the Hermes dashboard for logs and gateway state, but call the integration healthy only after a real DM, channel/thread reply, or cron delivery lands in Slack.
Keep building the workflow
Set up Hermes Agent in Slack
Generate the app manifest, configure both tokens, allowlist users, and verify Socket Mode.
Troubleshoot the Hermes gateway
Diagnose a healthy-looking service that still does not deliver channel replies.
Schedule reliable Hermes reports
Target cron output to an explicit channel and verify delivery status.
Isolate team bots with Hermes profiles
Separate Slack tools, memory, secrets, and gateway state from personal work.
Compare self-hosted and managed Hermes
Price gateway uptime and maintenance, not only model tokens and VPS rent.
FAQ
Does Hermes Agent Slack require a public URL?
No. Hermes uses Slack Socket Mode over WebSockets, so it works on a laptop, behind a firewall, or on a private server without a public webhook endpoint. The gateway must still remain online.
Which Slack tokens does Hermes Agent need?
Hermes needs a Bot User OAuth Token beginning xoxb- and an App-Level Token beginning xapp- with connections:write for Socket Mode.
Why does Hermes work in Slack DMs but not channels?
The usual cause is missing channel event subscriptions or history scopes, a missing app reinstall, the bot not being invited, or no @mention. Public and private channels require different events and scopes.
Why do Hermes slash commands fail inside Slack threads?
Slack blocks native slash commands in thread replies before Hermes can receive them. Use the matching exclamation form, such as !queue, !stop, !model, !approve, or !deny.
Can Hermes send scheduled Slack alerts?
Yes. Set an explicit Slack home channel or cron delivery target, invite the bot to that channel, and verify a real test delivery before relying on production reports.
Should a Slack Hermes bot use my personal profile?
Usually no. A dedicated Slack profile gives team-visible work narrower tools, memory, skills, secrets, and gateway state than a personal terminal agent.