Discord plugin tools work, but inbound notifications/claude/channel are not injected into the session
Description
I configured the official Discord plugin in Claude Code and found that:
- the Discord bot can come online successfully
- Discord MCP tools work (for example
reply) - but inbound messages sent from Discord to the bot are not injected into the current session
- permission-related Discord interactions also do not advance the current session
This looks like:
- standard MCP tool transport works
- but experimental
claude/channel/claude/channel/permissionnotification bridging does not
Environment
- Claude Code CLI
- macOS Darwin 24.6.0
- shell: zsh
bunversion:1.3.11- official Discord plugin version:
0.0.4
The Discord plugin is enabled locally, and the bot token, allowlist, and Message Content Intent are all configured correctly.
What I verified
1. The Discord bot can log in successfully
When I run the plugin script manually, I see:
discord channel: gateway connected as cc#1872
Previously, before enabling Message Content Intent, it failed with:
discord channel: login failed: Error: Used disallowed intents
After enabling Message Content Intent, login succeeds.
2. Discord MCP tools work in the hosted session
In the normal Claude Code hosted session, I can successfully use Discord tools such as reply(chat_id, text).
Discord receives the message correctly.
This shows that:
- the plugin process is being hosted by Claude Code
- the MCP tool path is working
3. When the plugin is run manually, inbound Discord messages are captured and converted into channel notifications
I ran the plugin for a short window like this:
python3 -c 'import time; time.sleep(20)' | bun "/Users/.../discord/0.0.4/server.ts"
During that window, I sent a DM to the bot, and the plugin emitted:
{"method":"notifications/claude/channel","params":{"content":"测试","meta":{"chat_id":"1487099066042159255","message_id":"1487101777500180591","user":"_nsssssss_00692","user_id":"1319856077243682837","ts":"2026-03-27T14:51:32.771Z"}},"jsonrpc":"2.0"}
This shows that:
- the Discord DM definitely reaches the plugin
- the plugin definitely emits
notifications/claude/channel
4. But in hosted mode, inbound messages do not appear in the session
When the plugin is hosted normally by Claude Code:
- the bot is online
- the
replytool works - but text messages sent to the bot via Discord DM do not appear as
``text``
<channel source="discord" ...>
So the inbound channel notification emitted by the plugin is not being injected into the main session.
5. Permission interactions show the same pattern
The Discord plugin declares both:
claude/channelclaude/channel/permission
and permission handling depends on:
notifications/claude/channel/permission
In practice:
- Discord receives permission-related messages
- but clicking buttons or replying in Discord does not advance the current Claude session
This matches the same failure mode as normal channel notifications.
Expected behavior
When the Discord plugin is hosted by Claude Code, and the bot is online with the sender allowlisted:
- Discord DMs should be injected into the current session as:
``text``
<channel source="discord" chat_id="..." message_id="..." ...>
- Permission replies/interactions from Discord should reach the session through
claude/channel/permissionnotifications and advance the workflow
Actual behavior
- tools work
- experimental channel notifications do not
In practice:
replyworks- Discord DMs do not appear in the session
- Discord permission interactions do not advance the session
Relevant source locations
Discord plugin capabilities declaration:
capabilities: {
tools: {},
experimental: {
'claude/channel': {},
'claude/channel/permission': {},
},
}
Inbound notification emission:
mcp.notification({
method: 'notifications/claude/channel',
params: { ... }
})
Permission notification emission:
method: 'notifications/claude/channel/permission'
Suspected cause
My suspicion is that the current host environment supports standard MCP tools, but does not fully support or bridge the official Discord plugin’s experimental claude/channel / claude/channel/permission notifications.
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗