claude-code - 💡(How to fix) Fix Discord plugin inbound notifications silently dropped on CC 2.1.153 (Windows)

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…

The official discord plugin (v0.0.4) successfully sends notifications/claude/channel JSON-RPC notifications to Claude Code, but they are silently dropped — never converted into <channel source=\"discord\" ...> tool-result blocks in the session. Outbound tools (reply, fetch_messages, etc.) work normally. The asymmetry isolates the bug to the client-side notification dispatch / experimental capability handling.

Error Message

  • OK confirms the mcp.notification('notifications/claude/channel', ...) promise resolved successfully in ~1ms (no error path hit).

Root Cause

The official discord plugin (v0.0.4) successfully sends notifications/claude/channel JSON-RPC notifications to Claude Code, but they are silently dropped — never converted into <channel source=\"discord\" ...> tool-result blocks in the session. Outbound tools (reply, fetch_messages, etc.) work normally. The asymmetry isolates the bug to the client-side notification dispatch / experimental capability handling.

Fix Action

Fix / Workaround

The official discord plugin (v0.0.4) successfully sends notifications/claude/channel JSON-RPC notifications to Claude Code, but they are silently dropped — never converted into <channel source=\"discord\" ...> tool-result blocks in the session. Outbound tools (reply, fetch_messages, etc.) work normally. The asymmetry isolates the bug to the client-side notification dispatch / experimental capability handling.

Code Example

2026-05-28T01:08:43.853Z ATTEMPT msg=1509362826270085213 chat=... user=... content=\"test after mcp reconnect\"
2026-05-28T01:08:43.854Z OK msg=1509362826270085213
RAW_BUFFERClick to expand / collapse

Summary

The official discord plugin (v0.0.4) successfully sends notifications/claude/channel JSON-RPC notifications to Claude Code, but they are silently dropped — never converted into <channel source=\"discord\" ...> tool-result blocks in the session. Outbound tools (reply, fetch_messages, etc.) work normally. The asymmetry isolates the bug to the client-side notification dispatch / experimental capability handling.

Environment

  • Claude Code: 2.1.153 (Windows)
  • Discord plugin: 0.0.4 (claude-plugins-official/discord/0.0.4)
  • OS: Windows 11 Home 10.0.26200
  • MCP server: bun, parented correctly to the active claude.exe (verified via wmic)

Repro

  1. Install the official discord plugin, configure access (~/.claude/channels/discord/access.json) with requireMention: false.
  2. Start a CC session — discord MCP child spawns cleanly (verified ready event fires, gateway connects).
  3. From an allowlisted Discord user, post a message in an allowlisted channel.
  4. Observe: the message never appears in the CC session as a <channel> block. Calling fetch_messages from CC retrieves it normally.

Evidence — bug is client-side, not server-side

I instrumented server.ts to log every inbound message at the mcp.notification(...) call site. After sending one Discord test message:

2026-05-28T01:08:43.853Z ATTEMPT msg=1509362826270085213 chat=... user=... content=\"test after mcp reconnect\"
2026-05-28T01:08:43.854Z OK msg=1509362826270085213
  • ATTEMPT confirms server received the message and built the notification.
  • OK confirms the mcp.notification('notifications/claude/channel', ...) promise resolved successfully in ~1ms (no error path hit).
  • Despite that, the message never appeared as a <channel> block in the CC session.

Diff snippet of the instrumentation:

```ts const debugLog = (line: string) => { try { appendFileSync(join(homedir(), '.claude', 'channels', 'discord', 'inbound-debug.log'), `${new Date().toISOString()} ${line}\n`) } catch {} } debugLog(`ATTEMPT msg=${msg.id} ...`) mcp.notification({ method: 'notifications/claude/channel', params: { ... } }) .then(() => debugLog(`OK msg=${msg.id}`)) .catch(err => debugLog(`FAIL msg=${msg.id} err=${err}`)) ```

Things ruled out

  • ❌ Stale spawn args (a full quit + relaunch of claude.exe did not fix it).
  • /mcp reconnect not re-running the experimental capability handshake (full restart should have re-done it; still broken).
  • ❌ Server-side delivery failure (mcp.notification(...) resolves, doesn't reject).
  • ❌ Access config (sender allowlisted, requireMention: false, server passes the gate).
  • ❌ Discord-side delivery (server logs every message arriving at the gateway).

Hypothesis

Either:

  1. CC 2.1.153 stopped declaring the claude/channel experimental capability during initialize (so the server's notification is accepted at the JSON-RPC transport but no handler exists for the method), or
  2. The handler exists but the path that converts notifications/claude/channel<channel> block injection regressed.

The official plugin's server.ts declares the capability correctly:

```ts capabilities: { tools: {}, experimental: { 'claude/channel': {}, 'claude/channel/permission': {}, }, } ```

Asks

  • Confirm whether notifications/claude/channel injection is still expected to work in 2.1.153.
  • If yes — needs a fix; happy to provide a debug build of the plugin that adds the file logging if helpful.
  • If no — please document the version it broke in and any replacement mechanism.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING

claude-code - 💡(How to fix) Fix Discord plugin inbound notifications silently dropped on CC 2.1.153 (Windows)