[BUG] Desktop Commander MCP fails for Cowork/Code sessions (shared-pool): "Version negotiation failed"
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
- Open the Claude desktop app on macOS with the "Desktop Commander" local MCP server already configured (it works fine in the normal chat connection).
- Start a Cowork or Code session.
- Observe that Desktop Commander fails to become available for that session.
- 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.
3 Comments
Same failure on Windows (MSIX / Microsoft Store build) — this is not macOS-only.
Environment
Claude_1.52386.6.0_x64__pzs8sxrjxfjjc)C:\Program Files\WindowsApps\Claude_1.52386.6.0_x64__pzs8sxrjxfjjc\app\Claude.exeSame 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.jsoncontains nomcpServerskey at all, and the log confirms the app launches it with its own bundled Node: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:
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:For comparison, a start on the previous day where the probe completed normally:
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*.logfiles 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.jsonin 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
preferences.localAgentModeTrustedFolderspointed at renamed or deleted directories (verified withTest-Path). Pruning the list to only existing paths and restarting produced no change in the error.Suggest adding the
platform:windowslabel.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.exe24.19.0, not the built-in Node) · other local servers: Filesystem, one custom stdio serverLog under Desktop (failing):
On a successful launch,
initializetook 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
initializein 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.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.exefromclaude_desktop_config.json) already showedEra probe verdict: legacy (exec lane pinned — no sibling probe)→initializewith 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:
Every Era probe gives up ~4 s after "Initializing server" / the previous probe. Desktop Commander needs ~5–6 s to answer
initializestandalone (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.