Hermes Agent Discord setup takes eight steps, and one of them decides whether your bot ever comes online.
That step is the Message Content Intent toggle in the Discord Developer Portal.
Below is the exact order I'd run it in, the access rules I'd set before anyone else joins, and the fixes for a bot that sits offline or goes quiet.
If you'd rather have my team map out how a server bot fits your business first, book a free SEO strategy session.
What Happens To Every Discord Message Before Hermes Answers
Hermes on Discord is not a stateless webhook, according to the official Discord page in the Hermes docs.
Each message runs through the full messaging gateway in a fixed order.
- Authorization against your allowlist.
- Mention and free-response checks.
- Session lookup.
- Loading that session's transcript.
- A normal agent run, with tools, memory and slash commands.
- Delivery of the reply back to Discord.
So two settings shape everything: who is allowed, and when the bot is supposed to speak.
The gateway itself is one background process that serves every platform you connect, runs cron jobs and handles sessions, as the messaging overview explains.
Step 1: Create The Application And Bot User
Open the Discord Developer Portal, click New Application, name it and accept the terms.
Note the Application ID on the General Information page, because a manual invite link needs it.
Click Bot in the sidebar and Discord creates the bot user for you.
Under Authorization Flow, set Public Bot to ON if you want the Installation tab to generate your invite, and leave Require OAuth2 Code Grant OFF.
Prefer a private bot? Leave Public Bot off and use the manual invite URL in Step 4 instead.
Step 2: Turn On The Two Intents Hermes Needs
Stay on the Bot page and scroll to Privileged Gateway Intents.
| Intent | What it unlocks | Hermes needs it? |
|---|---|---|
| Message Content | The text of messages | Required |
| Server Members | Member list and username lookups for the allowlist | Required |
| Presence | Online or offline status | Optional |
Hermes always asks Discord for message content.
With that intent off, Discord refuses the connection and the bot never appears online.
The docs call this the number one reason Discord bots don't work, and the log line to look for reads "Discord rejected the connection because privileged Gateway Intents are not enabled".
Click Save Changes before you leave the page.
Below 100 servers you can flip these freely; at 100 or more, Discord wants a verification application for privileged intents.
🔥 Get the Discord bot setup on video, click by click Inside the AI Profit Boardroom you get step-by-step video trainings on Hermes and messaging bots, the installable Agent OS, four coaching calls a week and 3,400+ members comparing server setups. → Join the AI Profit Boardroom
Step 3: Copy The Token Once And Store It
Under Token, click Reset Token, enter your 2FA code if asked, and copy the value straight away.
Discord shows it once.
Lose it and you reset it again; anyone holding it controls your bot, so it goes in a password manager and never into Git.
Step 4: Build The Invite Link With The Right Permission Level
You have two routes.
The Installation tab route: enable Guild Install, pick Discord Provided Link, and select the bot and applications.commands scopes.
The manual route: build the URL yourself with your Application ID and a permissions integer.
https://discord.com/oauth2/authorize?client_id=YOUR_APP_ID&scope=bot+applications.commands&permissions=309237763136
| Level | Integer | Adds |
|---|---|---|
| Minimal | 117760 | View Channels, Send Messages, Embed Links, Attach Files, Read Message History |
| Recommended | 309237763136 | Create Public Threads, Send Messages in Threads, Add Reactions |
| Full | 309240908864 | Connect and Speak for voice channels |
I'd go Full if there's any chance you'll want voice later.
Existing installs don't pick up newly requested permissions on their own, so changing your mind means re-inviting.
You need Manage Server on the target server to authorize the invite; otherwise hand the link to an admin.
The bot then shows in the member list as offline until the gateway starts.
Step 5: Let The Wizard Write The Config (Or Do It By Hand)
The shortcut is the setup wizard.
hermes gateway setup
Pick Discord and paste the token.
The wizard checks the token with Discord before saving it, warns you if Message Content is still off, prints a ready-made invite link with the Full permission set, and offers to allowlist you as owner.
That last part means you can skip Developer Mode entirely.
Doing it by hand instead? Turn on Settings → Advanced → Developer Mode, right-click your name, choose Copy User ID, and add two lines to ~/.hermes/.env.
DISCORD_BOT_TOKEN=your-bot-token
DISCORD_ALLOWED_USERS=284102345871466496
Step 6: Lock Access With Users, Roles And Channels
Hermes fails closed on Discord.
With no allowed users, no allowed roles, no allowed channels and no allow-all flag, the bot connects fine and then denies every inbound message.
That's the right default, because the docs warn that authorized users get the agent's full abilities, including tools and system access.
Here are the four access controls I actually use.
DISCORD_ALLOWED_USERS: numeric user IDs, comma-separated. Usernames resolve too, but display names and nicknames never match.DISCORD_ALLOWED_ROLES: role IDs. Anyone holding the role is in, which suits a team where people come and go.DISCORD_ALLOWED_CHANNELS: the only channels where the bot will answer.DISCORD_IGNORED_CHANNELS: channels where it never speaks, even when tagged.
Leave DISCORD_ALLOW_ALL_USERS off unless the guild is private and fully trusted.
For DMs from people not yet on a list, the gateway can hand out a one-time pairing code that expires after an hour; the messaging docs show the approve and revoke commands.
Step 7: Decide Mentions, Threads And Free-Response Channels
Out of the box, Hermes answers every DM and only answers in server channels when you @mention it.
Each @mention in a text channel spins up its own thread, because DISCORD_AUTO_THREAD defaults to true.
Once it has joined a thread, it keeps replying there without a fresh tag.
If a message tags somebody else but not the bot, it stays out of it.
For a help channel where nobody should need to tag it, list that channel in DISCORD_FREE_RESPONSE_CHANNELS.
Free-response channels answer inline rather than threading, unless you also set free_response_auto_thread: true.
Running several bots in one thread? Set thread_require_mention: true so each one only fires when called by name.
Step 8: Run The Gateway As A Service
hermes gateway # foreground, for the first test
hermes gateway install # user service (launchd on macOS)
sudo hermes gateway install --system # Linux boot service
Test in the foreground first: the bot should come online within seconds.
Send it a DM, then tag it in a channel it can see.
Once both work, install it as a service so it survives a reboot.
Since v0.23.0, one gateway per machine owns every session, so the CLI, desktop app, bots and cron share the same chats and history.
The Config Block I'd Start A Small-Business Server With
discord:
require_mention: true
auto_thread: true
free_response_channels: "HELP_CHANNEL_ID"
ignored_channels: ["ANNOUNCEMENTS_ID"]
reactions: true
history_backfill: true
allow_mentions:
everyone: false
roles: false
group_sessions_per_user: true
Every key above is in the documented config.yaml reference, and env vars win when both are set.
Two defaults deserve a second look.
The mention guard stops the bot from pinging @everyone, @here or roles, even if a reply happens to contain those strings, so leave it on.
And group_sessions_per_user: true gives each person their own conversation inside a shared channel, so one person's long task doesn't bloat everyone else's context.
Switching it to false makes the whole room one session, with shared token costs and people interrupting each other's runs.
Three Server Layouts For Real Small Businesses
A design agency with private client channels
- Create one channel per client and add only those channel IDs to
DISCORD_ALLOWED_CHANNELS. - Give each channel its own
channel_promptsentry with that client's tone and brief. - A designer tags the bot in the channel; Hermes opens a thread, reads the recent scrollback through history backfill, and drafts copy or a task list.
- Write "draft only, nothing goes to the client" into the channel prompt, and a human posts the final version.
A board game shop with a members server
- Create a
Regularsrole and add its ID toDISCORD_ALLOWED_ROLES, because nobody gets an answer until they pass the allowlist. - Make
#ask-the-shopa free-response channel and give it a channel prompt with opening hours, the events calendar and the returns rule. - A regular asks about Friday's tournament; Hermes answers inline, in that person's own session.
- Limit regulars to a short
user_allowed_commandslist, since anyone authorized reaches the agent's tools; plenty of shops will keep the bot staff-only.
A plumbing firm whose crew sends voice notes
- Each plumber records a Discord voice message in a free-response
#job-noteschannel after a job. - Hermes transcribes it with the configured speech-to-text provider; local faster-whisper needs no key.
- It replies with a tidy job summary in the thread.
- A cron job posts a "draft only" end-of-day digest to the home channel set with
/sethome.
For a deeper support build on top of this, see my walkthrough of Hermes Agent for customer support.
📞 Want help picking which channel to automate first? Book a free SEO strategy session and my team will walk through your server with you, free. → Grab a free call with my team
Voice Channels, Forum Channels And Files
Voice messages are transcribed automatically, and /voice tts adds spoken audio to text replies.
Hermes can also join a voice channel, listen and talk back, which is what the Full invite permissions are for.
It leaves after 300 idle seconds by default; set voice_channel_inactivity_timeout_seconds: 0 to keep it in until /voice leave.
Forum channels only accept thread posts, so Hermes creates a new post on each send and names it from the reply's first line.
Uploads of any file type are accepted, up to 32 MiB per file by default via DISCORD_MAX_ATTACHMENT_BYTES.
Small text files under 100 KiB get pulled straight into the prompt, and binaries come through as a file path the agent can inspect.
Slash Commands, The Model Picker And Approvals
Every installed skill registers as a native Discord slash command on the next gateway restart.
Discord caps a bot at 100 application commands, so extra skills get skipped with a warning.
Send /model with no arguments for a dropdown picker that times out after 120 seconds.
To keep regular users from running everything, add allow_admin_from and user_allowed_commands under the Discord extra block; /help and /whoami always stay open.
Risky commands come up as approval cards with buttons, and Discord's buttons wait 300 seconds by default under approvals.discord_prompt_timeout.
🔥 Steal the exact server config I would start from Inside the AI Profit Boardroom you get the full Hermes video trainings, the Agent OS you can install today, four live coaching calls every week and a community of 3,400+ members who share their bot setups. → Join the AI Profit Boardroom
Troubleshooting: Offline, Silent, Or 403
| Symptom | Likely cause | Fix |
|---|---|---|
| Bot stays offline | Message Content Intent off, gateway not running, or a stale token | Enable the intent, run hermes gateway, update DISCORD_BOT_TOKEN |
| Online but ignores everyone | No access policy set | Add DISCORD_ALLOWED_USERS or roles, then hermes gateway restart |
| Ignores you only | Your ID isn't on the list | Add your user ID and restart |
| Can't see one channel | Bot role lacks View Channel | Grant View Channel and Read Message History |
403 or error 50001 on /thread | Missing permissions or a channel override | Re-invite with the right integer or fix the override |
For the silent case, check ~/.hermes/logs/gateway.log for "No Discord access policy configured".
That line means the bot is doing exactly what the defaults tell it to.
If you're on Hermes Cloud with Team Gateway, Discord reaches your agent through a shared Hermes bot rather than your own, as the relay docs and the Telegram page describe; running your own beside it needs GATEWAY_RELAY_ALLOW_DIRECT_PLATFORMS=true and keeps the instance awake.
The v0.23.1 release notes, dated 9 November 2026, describe a patch that rolls up the work since v0.23.0 and raises the plugin catalog cap.
They carry no Discord-specific notes, and curated notes for the window are promised with v0.24.0.
So treat the Discord doc at the v0.23.1 tag as the source of truth for every setting on this page.
Also On Our Network
- 🌐 Five small-business Discord setups and the risks an owner should weigh
- 🌐 A nine-criteria scorecard with the strengths, limits and a final rating
- 🌐 Five copy-paste prompts that make your agent secure and run its own Discord bot
- 🌐 Which AI model to run on each Discord channel, by real GoldieBench scores
FAQ: Hermes Agent Discord
Why is my Hermes Discord bot offline?
Most often the Message Content Intent is off in the Developer Portal, so Discord refuses the connection. Otherwise the gateway is not running or the token is out of date.
Why does the bot come online but never reply?
Hermes denies everyone until you set an access policy. Add DISCORD_ALLOWED_USERS or DISCORD_ALLOWED_ROLES to ~/.hermes/.env and restart the gateway.
Which invite permission integer should I use?
309237763136 is the documented Recommended set. 309240908864 adds Connect and Speak for voice channels and is what hermes gateway setup prints.
Can Hermes answer in a channel without being tagged?
Yes. Add the channel ID to DISCORD_FREE_RESPONSE_CHANNELS, or set DISCORD_REQUIRE_MENTION=false to drop the mention rule everywhere.
Do people in the same channel share one conversation?
Not by default. group_sessions_per_user is true, so each person gets their own session inside a shared channel.
📺 Video notes + links to the tools 👉
🎥 Learn how I make these videos 👉
🆓 Get a FREE AI Course + Community + 1,000 AI Agents 👉
About Julian
I'm Julian Goldie, an SEO entrepreneur, author and founder of the AI Profit Boardroom, which has 3,400+ members.
I help business owners scale with AI agents, automation and SEO.
- I've built a 7-figure SEO and link building agency, Goldie Agency, with a team of 70+ SEO experts.
- I've grown a YouTube channel to 400,000+ subscribers.
- I wrote "Link Building Mastery".
- My Udemy courses have taught over 29,000 students.
→ Get my best AI training inside the AI Profit Boardroom
Flip the two intents, run the wizard and test one DM tonight, and if you want my team beside you for the rollout, book a free strategy session about your Hermes Agent Discord setup.











