claude-code - 💡(How to fix) Fix [BUG] notifications/claude/channel MCP notifications silently dropped on Windows for online-mode plugins [1 participants]

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…
GitHub stats
anthropics/claude-code#45485Fetched 2026-04-09 08:04:19
View on GitHub
Comments
0
Participants
1
Timeline
4
Reactions
0
Author
Participants
Timeline (top)
labeled ×4

Error Message

Error Messages/Logs

On Windows → nothing appears, no error ✗

Code Example

No errors surface in Claude Code UI. The plugin's stdio probe file shows NOTIF_OK (the .then() on mcp.notification() resolves successfully), confirming the bytes were written to the MCP stdio transport. Claude Code silently drops the notification with no feedback
RAW_BUFFERClick to expand / collapse

Preflight Checklist

  • I have searched existing issues and this hasn't been reported yet
  • This is a single bug report (please file separate reports for different bugs)
  • I am using the latest version of Claude Code

What's Wrong?

Bug

MCP channel notifications (notifications/claude/channel) are silently dropped on Claude Code for Windows when the MCP plugin connects to a remote (non-localhost) WebSocket server. The same plugin + same notification code works correctly on Linux and in local mode on Windows.

Environment

  • Platform: Windows 11 (10.0.26200)
  • Claude Code: native install, --dangerously-load-development-channels flag active
  • Plugin: legion-chat (dual-mode MCP chat bridge)

Reproduction

  1. MCP plugin connects to a remote WebSocket server (WSS or plain WS via SSH tunnel)
  2. Plugin receives a chat message from a peer
  3. Plugin calls mcp.notification({ method: 'notifications/claude/channel', params: { content: '...', meta: { user, message_id, ts } } })
  4. The Promise resolves (NOTIF_OK confirmed in probe file — bytes were written to stdio)
  5. No <channel> tag appears in the Claude Code conversation on Windows

Evidence

Probe file (os.tmpdir()/legion-ws-probe.txt) confirms NOTIF_OK fires for every incoming message — the notification is sent successfully over stdio. But Claude Code Windows never surfaces it as a <channel source="..."> tag.

What works on Windows: Same plugin in local mode (WebSocket to localhost daemon) → <channel> tags appear correctly.

What works on Linux: Same plugin in online mode (WSS to remote server) → <channel> tags appear correctly (confirmed by peer Claude instance).

Tested: WSS (wss://...) and plain WS via SSH tunnel (ws://localhost:8789) both fail the same way on Windows. The WebSocket protocol is not the cause.

Conclusion

The mcp.notification() call succeeds (Promise resolves), but the Windows Claude Code client silently drops notifications/claude/channel notifications that arrive from a plugin whose WebSocket connection is remote. This appears to be a platform-specific bug in notification routing on the Windows client.

What Should Happen?

When mcp.notification({ method: 'notifications/claude/channel', ... }) is called by an MCP plugin on any platform, Claude Code should surface the notification as a <channel source="..."> tag in the active conversation — regardless of whether the plugin's underlying WebSocket connection is local or remote.

Error Messages/Logs

No errors surface in Claude Code UI. The plugin's stdio probe file shows NOTIF_OK (the .then() on mcp.notification() resolves successfully), confirming the bytes were written to the MCP stdio transport. Claude Code silently drops the notification with no feedback

Steps to Reproduce

Steps to reproduce:

  1. Write an MCP plugin that maintains a persistent WebSocket connection to a remote server (e.g. a chat relay)
  2. Register it in ~/.claude.json as a stdio MCP server
  3. Launch Claude Code with --dangerously-load-development-channels
  4. When the plugin receives a message over the WebSocket, call: mcp.notification({ method: 'notifications/claude/channel', params: { content: 'hello', meta: { user: 'peer', message_id: 'abc', ts: '2026-04-08T...' } } })
  5. On Linux → <channel> tag appears in conversation ✓ On Windows → nothing appears, no error ✗

Claude Model

Opus

Is this a regression?

I don't know

Last Working Version

No response

Claude Code Version

2.1.97

Platform

Anthropic API

Operating System

Windows

Terminal/Shell

VS Code integrated terminal

Additional Information

No response

extent analysis

TL;DR

The Windows Claude Code client may be silently dropping notifications/claude/channel notifications from remote WebSocket connections due to a platform-specific bug in notification routing.

Guidance

  • Verify that the mcp.notification() call is correctly formatted and that the NOTIF_OK confirmation is being received, as indicated by the probe file.
  • Check the Claude Code documentation to see if there are any known issues or limitations with remote WebSocket connections on Windows.
  • Test the plugin with a local WebSocket connection on Windows to confirm that the issue is specific to remote connections.
  • Consider testing the plugin on a different Windows machine or environment to rule out any machine-specific issues.

Example

No code snippet is provided as the issue seems to be related to the Claude Code client's handling of remote WebSocket connections, rather than a specific code error.

Notes

The issue appears to be specific to the Windows platform and remote WebSocket connections. The fact that the same plugin works correctly on Linux and with local WebSocket connections on Windows suggests that the issue is related to the Claude Code client's handling of remote connections.

Recommendation

Apply a workaround, such as using a local WebSocket connection or a different notification method, until the issue can be resolved. The reason is that the issue appears to be a platform-specific bug in the Claude Code client, and a workaround may be necessary to ensure that notifications are received correctly.

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