THRONE
See report Verify server

registry / record

@wonderwhy-er/desktop-commander

npm / sealed 2026-06-16 / No. 6c68a889

Does @wonderwhy-er/desktop-commander MCP work in Claude Code and Cursor? Throne executed @wonderwhy-er/desktop-commander mcp in a single-use Firecracker microVM and replayed both recorded client behaviours. Compatibility verdict: inconclusive. Is @wonderwhy-er/desktop-commander mcp safe? Static security scan: 14 finding(s) to review under security ruleset v1. The full per-step results, security findings, scan date, and evidence hash are below.

> throne registry @wonderwhy-er/desktop-commander sealed
This target couldn't be started as an MCP servernever completed an MCP handshake, this target may not be an MCP server, or may need a manual build / non-Node runtime
receiptsealed evidence
scan id
6c68a8890928487c8dbc7f9c1a91b1ed
target
@wonderwhy-er/desktop-commander
sealed at
2026-06-16 18:32:57Z
evidence hash
sha256:2ff90ad657ab00a1519d3457bec90cbc48396af36cef9e9fc0ba41ff7d2ba953
01connectFAIL11.4s

RuntimeError: connect failed: McpError: Connection closed

02discoverSKIPPED0ms

not run, connect failed

03validate_schemasSKIPPED0ms

not run, connect failed

04smoke_test_toolsSKIPPED0ms

not run, connect failed

05error_handlingSKIPPED0ms

not run, connect failed

06streamingSKIPPED0ms

not run, connect failed

07resource_lifecycleSKIPPED0ms

not run, connect failed

08concurrent_callsSKIPPED0ms

not run, connect failed

09reconnectSKIPPED0ms

not run, connect failed

01connectFAIL12.5s

RuntimeError: connect failed: McpError: Connection closed

02discoverSKIPPED0ms

not run, connect failed

03validate_schemasSKIPPED0ms

not run, connect failed

04smoke_test_toolsSKIPPED0ms

not run, connect failed

05error_handlingSKIPPED0ms

not run, connect failed

06streamingSKIPPED0ms

not run, connect failed

07resource_lifecycleSKIPPED0ms

not run, connect failed

08concurrent_callsSKIPPED0ms

not run, connect failed

09reconnectSKIPPED0ms

not run, connect failed

chatgpt desktop calibratingemulation profile pending real-traffic captureCOMING SOON
SECURITY: REVIEW / 14 finding(s) (3 high, 9 medium) / review recommended
HIGH/CRITICAL findings block clean ship. Review before shipping.
HIGHTHR-INSTALL-03 / Install-time script execution (npm lifecycle)

"postinstall" runs arbitrary code on every npm install: 'node dist/track-installation.js && node dist/npm-scripts/verify-ripgrep.js || node -e "process.exit('

package/package.json
LOWTHR-INSTALL-03 / Install-time script execution (npm lifecycle)

"prepare" runs on git-dependency installs and local dev (not registry installs): 'npm run build'

package/package.json
MEDIUMTHR-EXEC-04 / Arbitrary command execution from tool arguments

spawn() called with a dynamically built command (heuristic, review): 'whichCommand, [commandName], { windowsHide: true }); // Prevent visible console '

package/dist/remote-device/desktop-commander-integration.js:79
HIGHTHR-EXEC-04 / Arbitrary command execution from tool arguments

spawn() called with a dynamically built command (heuristic, review): 'rgPath, args, { windowsHide: true }); // Prevent visible console windows on Wind'

package/dist/search-manager.js:36
MEDIUMTHR-EXEC-04 / Arbitrary command execution from tool arguments

exec() called with a dynamically built command (heuristic, review): 'xml)) !== null) {'

package/dist/search-manager.js:428
MEDIUMTHR-EXEC-04 / Arbitrary command execution from tool arguments

exec() called with a dynamically built command (heuristic, review): 'actualCommand, { timeout: 10000 }, (error, stdout, stderr) => {'

package/dist/setup-claude-server.js:544
HIGHTHR-EXEC-04 / Arbitrary command execution from tool arguments

spawn() called with a dynamically built command (heuristic, review): 'spawnConfig.executable, spawnConfig.args, spawnOptions);'

package/dist/terminal-manager.js:193
MEDIUMTHR-EXEC-04 / Arbitrary command execution from tool arguments

spawn() called with a dynamically built command (heuristic, review): 'process.execPath, [tempFile], {'

package/dist/tools/improved-process-tools.js:28
MEDIUMTHR-EXEC-04 / Arbitrary command execution from tool arguments

execSync() called with a dynamically built command (heuristic, review): "`ps -p ${ppid} -o command=`, { encoding: 'utf8' }).trim();"

package/dist/track-installation.js:109
MEDIUMTHR-EXEC-04 / Arbitrary command execution from tool arguments

exec() called with a dynamically built command (heuristic, review): 'actualCommand, { timeout: 10000 }, (error, stdout, stderr) => {'

package/dist/uninstall-claude-server.js:422
MEDIUMTHR-EXEC-04 / Arbitrary command execution from tool arguments

execSync() called with a dynamically built command (heuristic, review): "`${whichCmd} ${systemRg}`, { encoding: 'utf-8' }).trim().split(/\\r?\\n/)[0];"

package/dist/utils/ripgrep-resolver.js:38
MEDIUMTHR-EXEC-04 / Arbitrary command execution from tool arguments

execSync() called with a dynamically built command (heuristic, review): '`${cmd} --version`, {'

package/dist/utils/system-info.js:374
LOWTHR-NET-05 / Hardcoded outbound endpoints

12 non-local endpoint host(s) referenced in code, verify each is expected for this server's purpose: (package/dist/ui/file-preview/src/markdown/editor.js:662), calendar.app.google (package/dist/setup-claude-server.js:621), claude.ai (package/dist/setup-claude-server.js:645), dc-telemetry-proxy-83847352264.europe-west1.run.app (package/dist/setup-claude-server.js:15), desktopcommander.app (package/dist/utils/dockerPrompt.js:24), discord.com (package/dist/setup-claude-server.js:622), mcp.desktopcommander.app (package/dist/remote-device/device.js:12), prosemirror.net (package/dist/ui/file-preview/preview-runtime.js:92), schemas.openxmlformats.org (package/dist/utils/files/docx.js:405), tally.so (package/dist/tools/feedback.js:76), telemetry.desktopcommander.app (package/dist/setup-claude-server.js:14), www.google.com (package/dist/tools/pdf/markdown.js:269)

package/dist/remote-device/device.js:12
MEDIUMTHR-OBF-06 / Obfuscated embedded payload

base64-like blob of 4504 chars in a file that also decodes/executes data

package/dist/ui/file-preview/preview-runtime.js:217
VERDICT: INCONCLUSIVESANDBOXED RUN, submitted server executed in a disposable microVM, compatibility not assessable: the server process ran but never completed an MCP handshake, this target may not be an MCP server, or may need a manual build / non-Node runtime / security: review, 14 finding(s), 3 highsealed by THRONE / No. 6c68a889 / 2026-06-16
scopeattestation tuple
target
@wonderwhy-er/desktop-commander npm
engine
sandboxed
claude code
calibration: partial recorded=9,spec=0,assumed=9
cursor
calibration: partial recorded=11,spec=0,assumed=7
chatgpt desktop
calibration: unavailable recorded=0,spec=2,assumed=16
steps exercised
18 of 18
test suite
v1.0.0
security ruleset
v1.0.0
sealed at
2026-06-16 18:32:57Z
evidence hash
sha256:2ff90ad657ab00a1519d3457bec90cbc48396af36cef9e9fc0ba41ff7d2ba953
valid until
2026-09-14
executed in a disposable microVM, created for this scan and destroyed after it. nothing outlives a run.

maintainer of this server? challenge this record: hello@usethrone.dev. tell us what we got wrong and we re-run it in the open.

this page renders the stored record of a real run. nothing on it is asserted without the execution that proved it.