[BUG] Desktop Commander MCP fails for Cowork/Code sessions (shared-pool): "Version negotiation failed"

Status Open
Maintainer reply None cached
Activity 3 comments · opened Sep 15, 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?

The locally-configured "Desktop Commander" MCP server fails to start for Cowork and Code sessions (the "shared-pool" connection path), while its normal chat/renderer connection continues to work fine.

Confirmed right now via get_device_info on this device (mac-mini-de-lobo-local, app version 1.52386.6):

localMcpServers: [{ "name": "Desktop Commander", "state": "failed", "lastErrorUntrustedServerOutput": "Version negotiation failed: the connection closed during the server/discover probe (this transport probed in place — the disposable sibling probe requires the SDK's base StdioClientTransport)" }]

Note a second, lowercase-named entry "desktop-commander" shows state "announced" (working) — so there appear to be two separate registrations of the same server, and only the capitalized "Desktop Commander" one hits this failure.

From the app's own internal MCP connection log (pasted by the user from the desktop app UI), this failure is isolated to a specific mechanism used only for Cowork/Code sessions: an "Era probe" ("Era probe verdict: legacy (sibling did not complete the exchange)") followed by a "disposable sibling probe" using a StdioClientTransport. Example from the log:

2026-08-17T20:02:20.743Z [Desktop Commander] [info] Initializing server...
2026-08-17T20:02:20.743Z [Desktop Commander] [info] Using built-in Node.js for MCP server: Desktop Commander
2026-08-17T20:02:26.754Z [Desktop Commander] [info] Era probe verdict: legacy (sibling did not complete the exchange)
2026-08-17T20:02:28.787Z [Desktop Commander] [info] Using built-in Node.js for MCP server: Desktop Commander
2026-08-17T20:02:28.802Z [Desktop Commander] [info] Server started and connected successfully
...
2026-08-17T20:03:27.625Z [Desktop Commander] [error] Couldn't start this server for Cowork and Code sessions (they run their own copy of it), so they can't use its tools: Request timed out { metadata: { context: 'shared-pool', stack: undefined } }

The error wording later shortened (around 2026-08-25) and has stayed like this since, recurring on effectively every app start/session since:

2026-09-14T11:22:11.008Z [Desktop Commander] [error] Couldn't start for Cowork and Code sessions. Error: Version negotiation failed: the connection closed during the server/discover probe (this transport probed in place — the disposable sibling probe requires the SDK's base StdioClientTransport) { metadata: { context: 'shared-pool', stack: undefined } }

Key observations:

  • The main Desktop Commander connection (used by regular chat) succeeds every time, including today — full initialize/tools-list/resources-list handshake completes normally.
  • - Only the shared-pool connection (used to give Cowork and Code sessions their own copy of the server) fails, on essentially every attempt since 2026-08-17.
  • - - Restarting the app resets the retry counter but does not fix it — same error recurs.
  • - - - This is still happening today (2026-09-15), confirmed live via get_device_info.
  • - - - - The "Era probe" / "disposable sibling probe" / StdioClientTransport mechanism does not appear anywhere in the log before 2026-08-17 — it looks like it was introduced in an app update around that date, and the failure has been effectively 100% reproducible since.

There may be a related report already open: #27492 ("Claude cowork MCP Issue continues") — possibly the same root cause, possibly not; flagging for triage.

What Should Happen?

The "Desktop Commander" MCP server should connect for Cowork and Code sessions the same way it already does for the regular chat connection, which works fine right now.

Error Messages/Logs

Version negotiation failed: the connection closed during the server/discover probe (this transport probed in place — the disposable sibling probe requires the SDK's base StdioClientTransport)

Steps to Reproduce

  1. Open the Claude desktop app on macOS with the "Desktop Commander" local MCP server already configured (it works fine in the normal chat connection).
  2. Start a Cowork or Code session.
  3. Observe that Desktop Commander fails to become available for that session.
  4. Check the desktop app's MCP connection log or call get_device_info: the "Desktop Commander" entry shows state "failed" with the error above, under metadata context "shared-pool".

This has been reproducible on effectively every app start/session since around 2026-08-17, independent of restarting or reinstalling the extension. The regular chat connection to Desktop Commander continues to work throughout.

Claude Model

None

Is this a regression?

Yes, this worked in a previous version

Last Working Version

Unknown exact version — desktop app auto-updates. Last confirmed working: before ~2026-08-17 (when the "Era probe"/shared-pool mechanism first appears in the app's MCP log)

Claude Code Version

N/A — this is the Claude desktop app (Cowork/Code), not the claude CLI. Desktop app version: 1.52386.6, Electron 44.2.0, Node 24.20.0 (confirmed live via get_device_info)

Platform

Anthropic API

Operating System

macOS

Terminal/Shell

Other

Additional Information

Possibly related: #27492 ("Claude cowork MCP Issue continues") — may or may not share the same root cause, flagging for triage.

Device: mac-mini-de-lobo-local, macOS, arm64.

View original on GitHub ↗

3 Comments

mezashi · 28 days ago

Same failure on Windows (MSIX / Microsoft Store build) — this is not macOS-only.

Environment

  • Platform: Windows 11 Pro (build 10.0.26200.0), x64
  • Desktop app: 1.52386.6.0 (MSIX package Claude_1.52386.6.0_x64__pzs8sxrjxfjjc)
  • Executable: C:\Program Files\WindowsApps\Claude_1.52386.6.0_x64__pzs8sxrjxfjjc\app\Claude.exe

Same app version as the original report (1.52386.6), different OS.

Difference from the original report: this is a built-in connector

The failing server here is the built-in Filesystem connector, not a user-configured third-party extension. claude_desktop_config.json contains no mcpServers key at all, and the log confirms the app launches it with its own bundled Node:

[Filesystem] [info] Using built-in Node.js for MCP server: Filesystem

So the shared-pool probe regression is not specific to Desktop Commander — it also breaks a connector that ships with the app.

Symptom

Two dialogs on every app launch:

MCP Filesystem: Server disconnected. For troubleshooting guidance, please visit our debugging documentation
MCP Filesystem: Couldn't start for Cowork and Code sessions. Error: Version negotiation failed: the connection closed during the server/discover probe (this transport probed in place — the disposable sibling probe requires the SDK's base StdioClientTransport)

Timeline matches the ~Aug 17 regression

Final entries in mcp-server-filesystem.log, dated 2026-08-19. The sibling probe is already failing to complete the exchange here:

2026-08-19T00:27:32.954Z [Filesystem] [info] Initializing server...
2026-08-19T00:27:32.966Z [Filesystem] [info] Using built-in Node.js for MCP server: Filesystem
2026-08-19T00:27:36.970Z [Filesystem] [info] Era probe verdict: legacy (sibling did not complete the exchange)
2026-08-19T00:27:36.992Z [Filesystem] [info] Using built-in Node.js for MCP server: Filesystem
2026-08-19T00:27:37.042Z [Filesystem] [info] Server started and connected successfully
2026-08-19T00:27:37.043Z [Filesystem] [info] Shutting down server...

For comparison, a start on the previous day where the probe completed normally:

2026-08-18T07:03:05.180Z [Filesystem] [info] Era probe verdict: legacy
2026-08-18T07:03:05.587Z [Filesystem] [info] Server started and connected successfully

Additional data point: application logging has stopped entirely

No application log has been written since 2026-08-19, even though the app runs daily and the dialogs appear on every launch.

The logs directory (MSIX-virtualised at %LOCALAPPDATA%\Packages\Claude_pzs8sxrjxfjjc\LocalCache\Roaming\Claude\logs) contains nothing newer than 2026-08-19. A recursive search of the entire package container for *.log files modified in the last 14 days returns only Chromium/LevelDB internals (IndexedDB, Local Storage, Session Storage, shared_proto_db) — no application logs at all.

Meanwhile claude_desktop_config.json in the same directory is actively read and written by the running app, so the container path itself is correct.

This makes the failure impossible to diagnose locally, and may be worth treating as a separate defect.

Ruled out locally

  • Stale allowed-folder paths. 13 of the 16 entries in preferences.localAgentModeTrustedFolders pointed at renamed or deleted directories (verified with Test-Path). Pruning the list to only existing paths and restarting produced no change in the error.
  • Reconnecting folders from the project UI. Re-adding a folder does not prune stale entries; the list stays at 16.
  • A second installation. Only one Claude process tree is running, from the MSIX package above.

Suggest adding the platform:windows label.

reza0khoyazim · 15 days ago

Same shared-pool failure on Windows 11, but here the main connection also times out, not just Cowork/Code. Measurements show the delay is on the Claude Desktop side, not the server.

Env: Claude Desktop (latest auto-updated build as of 2026-09-29) · Desktop Commander 0.2.52 (global npm, launched with system node.exe 24.19.0, not the built-in Node) · other local servers: Filesystem, one custom stdio server

Log under Desktop (failing):

15:31:33.337Z Server started and connected successfully
15:31:42.176Z Message from client: method="initialize" id=0
15:32:27.737Z [error] Couldn't start for Cowork and Code sessions. Error: Request timed out { context: 'shared-pool' }
15:32:42.170Z Message from client: method="notifications/cancelled"
15:32:42.171Z Server transport closed (renderer released port); shutting down server

On a successful launch, initialize took 49.8 s (15:25:44 → 15:26:33), ~10 s under the 60 s cutoff.

Same binary, same node.exe, spawned manually on the same machine:

| Test | initialize reply |
|---|--:|
| Piped stdin, 4 variants (protocol 2024-11-05 / 2025-06-18 × clientInfo) | 5.2–6.7 s |
| 3 instances in parallel (rules out load contention) | 4.6–4.7 s each |
| stdin held open, like an MCP client | 2.6 s |

So the server answers initialize in under 7 s in every configuration I can reproduce, but takes 50 s or more (or never) when Claude Desktop launches it. That points at the Desktop spawn/shared-pool path, e.g. the Era probe ("legacy (exec lane pinned — no sibling probe)" on this machine), not server startup. A fixed 60 s cutoff with no retry turns this into a hard failure.

reza0khoyazim · 15 days ago

Follow-up to my comment above: reproduces on a second Windows 11 machine, this time with Desktop Commander installed as a Claude Extension (built-in Node 24.21.0, MCP_DXT=true) instead of global npm + system Node. Same failure: main connection "Not responding", plus the shared-pool toast.

Dating: on this machine the last successful Desktop Commander tool calls were 2026-08-21 01:21Z; the next launch (01:42Z, then launched via cmd.exe from claude_desktop_config.json) already showed Era probe verdict: legacy (exec lane pinned — no sibling probe) → initialize with no reply → cancelled at 60 s. It has failed across three launch methods since (npm/config, cmd.exe/config, extension).

Intermittent, and the probe may be the trigger. Today's log for the extension server:

17:11:37Z Era probe verdict: legacy (sibling did not complete the exchange)
17:11:49Z initialize id=0            -> no reply; shared-pool "Request timed out" 17:12:28Z
17:47:29/33/38Z Era probe ... legacy (sibling did not complete the exchange)   x3
17:47:38Z initialize id=0            -> no reply logged
17:50:19/24/28/32/37Z Era probe ... legacy (sibling did not complete the exchange)   x5
17:50:37Z initialize id=0
17:50:45Z id=0 result                -> connected (8.0 s)

Every Era probe gives up ~4 s after "Initializing server" / the previous probe. Desktop Commander needs ~5–6 s to answer initialize standalone (measured on the first machine), so the sibling probe likely can never complete for it, and every launch falls back to the legacy path, which is where the 60 s timeouts happen. Suggest: a longer probe budget, or not letting a probe timeout push the server onto the path that then hangs.