[BUG] Claude Desktop Windows + Cowork: stdio MCP child processes fail with WEPollSelectorImpl loopback error

Resolved 💬 3 comments Opened Mar 31, 2026 by Ekvinto Closed Apr 3, 2026

Preflight Checklist

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

What's Wrong?

This is a Claude Desktop bug, not a Claude Code CLI bug. Filing here as it is the only public Anthropic repository that accepts bug reports.

Manually configured stdio MCP servers that spawn external JVM processes (e.g. JetBrains WebStorm, IntelliJ IDEA) fail with a Java NIO WEPollSelectorImpl loopback connection error on every Claude Desktop launch when Cowork is installed. Installing Claude Desktop without Cowork resolves the issue entirely. The same Java command works perfectly when run manually from a terminal.

What Should Happen?

Manually configured stdio MCP servers should spawn in a process environment with the same capabilities as a regular user-launched process, regardless of whether Cowork is installed. Cowork's VM sandbox should not affect the process environment of unrelated stdio MCP child processes.

Error Messages/Logs

Exception in thread "DefaultDispatcher-worker-1" java.io.IOException: Unable to establish loopback connection
    at java.base/sun.nio.ch.PipeImpl$Initializer.init(PipeImpl.java:96)
    at java.base/sun.nio.ch.PipeImpl.<init>(PipeImpl.java:186)
    at java.base/sun.nio.ch.WEPollSelectorImpl.<init>(WEPollSelectorImpl.java:78)
    at java.base/sun.nio.ch.WEPollSelectorProvider.openSelector(WEPollSelectorProvider.java:33)
    at io.ktor.network.selector.ActorSelectorManager$1.invokeSuspend(ActorSelectorManager.kt:40)
Caused by: java.net.SocketException: Invalid argument: connect
    at java.base/sun.nio.ch.UnixDomainSockets.connect0(Native Method)
    at java.base/sun.nio.ch.UnixDomainSockets.connect(UnixDomainSockets.java:138)
    at java.base/sun.nio.ch.PipeImpl$Initializer$LoopbackConnector.run(PipeImpl.java:123)

Followed by:
io.ktor.client.plugins.sse.SSEClientException: Connect timeout has expired [url=http://localhost:64714/sse]

Key divergence in main.log (lines 108-111):
[info] Checking if UtilityProcess should be used for extension Todoist MCP Server
[info] Using UtilityProcess for extension Todoist MCP Server: appConfig.isUsingBuiltInNodeForMcp is true and built-in node is compatible
[info] Checking if UtilityProcess should be used for extension idea
[warn] UtilityProcess Check: Extension idea not found in installed extensions

Desktop Extensions (Todoist) → spawned via UtilityProcess → works
Manually configured stdio servers (idea, webstorm) → spawned as regular child processes → fail

Cowork VM initializes at 11:31:18, MCP servers begin spawning at 11:31:19.

Steps to Reproduce

  1. Install Claude Desktop WITH Cowork on Windows 11
  2. Configure any JVM-based stdio MCP server in claude_desktop_config.json, e.g.:
   {
     "mcpServers": {
       "webstorm": {
         "command": "C:\\...\\WebStorm\\jbr\\bin\\java",
         "args": ["-classpath", "...mcpserver-frontend.jar;...", "com.intellij.mcpserver.stdio.McpStdioRunnerKt"],
         "env": { "IJ_MCP_SERVER_PORT": "64714" }
       }
     }
   }
  1. Launch Claude Desktop; MCP server fails with WEPollSelectorImpl loopback error
  2. Run the exact same java command manually in PowerShell with the same env var set; it works perfectly
  3. Uninstall Claude Desktop, reinstall WITHOUT Cowork, same config; MCP server works

Note: The bug also reproduces on auto-update. After installing the non-Cowork build (which works), Claude Desktop auto-updates to the Cowork build in the background. On the next restart, Cowork's VM initializes and all stdio MCP servers begin failing. This created a misleading "works once, breaks on every restart" pattern.

Tested across: WebStorm 2025.3.3, 2025.3.4, 2026.1 and IntelliJ IDEA 2026.1 with identical failure on all versions, confirming this is not a JetBrains issue.

Claude Model

Not sure / Multiple models

Is this a regression?

Yes, this worked in a previous version

Last Working Version

Any version without Cowork. Last confirmed working: non-Cowork build of Claude 1.1.9669 (aea25d) 2026-03-30T20:17:34.000Z. Breaks on any build with Cowork installed regardless of version number

Claude Code Version

Claude Desktop on Windows Bug (not Claude Code)

Platform

Anthropic API

Operating System

Windows

Terminal/Shell

Other

Additional Information

The following are logs through which the aforementioned can be determined:

View original on GitHub ↗

This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗