/desktop command fails on Windows Store (MSIX) installation
Bug Description
The /desktop slash command fails with "Failed to open Claude Desktop. Please try opening it manually." when Claude Desktop is installed via the Microsoft Store (MSIX package) on Windows.
Environment
- OS: Windows 11 Pro 10.0.26200
- Claude Code CLI: v2.1.143 (installed at
~\.local\bin\claude.exe) - Claude Desktop: Microsoft Store package
Claude_1.7196.0.0_x64__pzs8sxrjxfjjc - Remote Control: Enabled and working (mobile app connects successfully)
Steps to Reproduce
- Install Claude Desktop from the Microsoft Store
- Start a Claude Code CLI session with
remoteControlAtStartup: true - Run
/desktopin the CLI session - Observe: "Failed to open Claude Desktop. Please try opening it manually."
Root Cause
The /desktop command likely searches for the Desktop app at a traditional install path (e.g., %LOCALAPPDATA%\Programs\Claude\Claude.exe), which doesn't exist for MSIX/Store installations. The Store app is at:
C:\Program Files\WindowsApps\Claude_1.7196.0.0_x64__pzs8sxrjxfjjc\app\Claude.exe
This path is not directly launchable via Start-Process for Store apps.
Working Workaround
The Claude Desktop MSIX package registers the claude:// protocol handler. Launching via protocol URI works perfectly:
# Read the bridge session ID from the active session file
$session = Get-Content "$env:USERPROFILE\.claude\sessions\<PID>.json" | ConvertFrom-Json
Start-Process "claude://code/$($session.bridgeSessionId)"
This correctly opens the CLI session in the Desktop app with full Remote Control functionality.
Proposed Fix
The /desktop command should fall back to the claude://code/<bridgeSessionId> protocol handler when:
- The Desktop executable is not found at the expected path, OR
- The platform is Windows and the Store package is detected (
Get-AppxPackage -Name "Claude")
The protocol handler approach is more robust across all installation methods (Store, traditional installer, and Chocolatey/Scoop) since it delegates app resolution to the OS.
Additional Context
- The
claude://protocol is registered in the MSIX manifest as<uap3:Protocol Name="claude" Parameters="%1" /> - The app's AUMID is
Claude_pzs8sxrjxfjjc!Claude - Mobile Remote Control works correctly (same
bridgeSessionId), confirming the issue is solely in how/desktoplocates/launches the app
This issue has 7 comments on GitHub. Read the full discussion on GitHub ↗