npx claudepluginhub axiumfoundry/claude-discord-threads-pluginDiscord plugin with per-session thread routing for multi-session Claude Code. Includes full permission context in messages and session-isolated threads.
Share bugs, ideas, or general feedback.
Discord plugin for Claude Code with per-session thread routing. Fork of the official Discord plugin with added support for session-isolated threads and full permission context in messages.
When the bot receives a message, the MCP server forwards it to Claude and provides tools to reply, react, and edit messages.
Default pairing flow for a single-user DM bot. See ACCESS.md for groups and multi-user setups.
1. Create a Discord application and bot.
Go to the Discord Developer Portal and click New Application. Give it a name.
Navigate to Bot in the sidebar. Give your bot a username.
Scroll down to Privileged Gateway Intents and enable Message Content Intent — without this the bot receives messages with empty content.
2. Generate a bot token.
Still on the Bot page, scroll up to Token and press Reset Token. Copy the token — it's only shown once. Hold onto it for step 6.
3. Invite the bot to a server.
Discord won't let you DM a bot unless you share a server with it.
Navigate to OAuth2 → URL Generator. Select the bot scope. Under Bot Permissions, enable:
Integration type: Guild Install. Copy the Generated URL, open it, and add the bot to any server you're in.
For DM-only use you technically need zero permissions — but enabling them now saves a trip back when you want guild channels or session threads later.
4. Install the plugin.
These are Claude Code commands — run claude to start a session first.
Add the marketplace:
/plugin marketplace add axiumfoundry/claude-discord-threads-plugin
Install the plugin:
/plugin install discord-threads@axiumfoundry-plugins
5. Restart Claude Code.
Exit and start a new claude session. The skill commands (/discord-threads:configure, /discord-threads:access) won't be available until you restart.
6. Give the server the token.
/discord-threads:configure MTIz...
This saves the token to ~/.claude/channels/discord/.env and auto-approves the Discord MCP tools so replies don't trigger permission prompts (~/.claude/settings.json).
You can also write the .env file by hand, or set the variable in your shell environment — shell takes precedence.
To run multiple bots on one machine (different tokens, separate allowlists), point
DISCORD_STATE_DIRat a different directory per instance.
7. Relaunch with the channel flag.
The server won't connect without this — exit your session and start a new one:
claude --dangerously-load-development-channels plugin:discord-threads@axiumfoundry-plugins
The
--dangerously-load-development-channelsflag is required until the plugin is listed in the official Claude plugin directory. For convenience, add a shell alias:alias claude-discord='claude --dangerously-load-development-channels plugin:discord-threads@axiumfoundry-plugins'
8. Pair.
With Claude Code running from the previous step, DM your bot on Discord — it replies with a pairing code. If the bot doesn't respond, make sure you launched with the channel flag (step 7). In your Claude Code session:
/discord-threads:access pair <code>
Your next DM reaches the assistant.
9. Lock it down.
Pairing is for capturing IDs. Once you're in, switch to allowlist so strangers don't get pairing-code replies. Ask Claude to do it, or /discord-threads:access policy allowlist directly.
When running multiple Claude Code sessions simultaneously, each session can create its own Discord thread so messages are routed to the correct session instead of being broadcast to all of them.
Setup: Enable Developer Mode in Discord (User Settings → Advanced), right-click the text channel where threads should be created → Copy Channel ID. Then run:
/discord-threads:configure threads <channel_id>
This saves DISCORD_THREAD_CHANNEL_ID to ~/.claude/channels/discord/.env. To disable: /discord-threads:configure threads off.
How it works:
myapp/feature-auth 2026-03-27 a3f1).Optional env vars (add manually to ~/.claude/channels/discord/.env):