-
Notifications
You must be signed in to change notification settings - Fork 17.4k
[BUG] Claude Code Desktop (MSIX) does not render responses in SSH/WSL2 mode — ANSI escape code in model argument #37613
Description
Preflight Checklist
- I have searched existing issues and this hasn't been reported yet
- This is a single bug report (please file separate reports for different bugs)
- I am using the latest version of Claude Code
What's Wrong?
When using the Code tab with an SSH connection to WSL2, Claude Code Desktop spawns the ccd-cli process on the Linux side but never renders any response in the UI. The interface stays blank indefinitely after sending a message.
Additionally, the Desktop passes an ANSI bold escape code ([1m) appended to the model name when spawning the process:
--model claude-opus-4-6[1m]
Multiple ccd-cli processes accumulate without exiting across sessions, suggesting the Desktop is not consuming or rendering the streamed output correctly.
What Should Happen?
- The model argument should be passed as a clean string:
--model claude-opus-4-6 - Responses from the
ccd-cliprocess should be rendered in the Desktop UI - Completed sessions should terminate their associated
ccd-cliprocesses
Error Messages/Logs
No explicit error is shown in the UI. From `~/.claude/remote/remote-server.log`, the pipeline appears functional — RPC ping/pong, process spawn, and stdout streaming all succeed — but output is never rendered on the Windows side:
[Server] RPC request: method=process.spawn, id=6
[process.Manager] Process started, PID=3566, command=/home/davi/.claude/remote/ccd-cli
[process.Manager] Read 4096 bytes from stdout for process ...
[process.Manager] writeFrame success: wrote 5561 bytes ...
From `ps aux` on WSL2, the leaked escape code is visible in the spawned process arguments:
/home/davi/.claude/remote/ccd-cli \
--output-format stream-json \
--verbose \
--input-format stream-json \
--model claude-opus-4-6[1m] \
--permission-prompt-tool stdio \
--setting-sources user,project,local \
--permission-mode default \
--allow-dangerously-skip-permissions \
--include-partial-messagesSteps to Reproduce
- Install Claude Desktop via MSIX on Windows 11
- Configure WSL2 with OpenSSH server and mirrored network mode (
networkingMode = mirroredin.wslconfig) - Set up SSH key authentication (ED25519)
- Open Claude Code Desktop → Code tab → SSH connection → select a WSL2 project folder
- Send any message
- Observe: UI stays blank;
ccd-clispawned on WSL2 but output never appears in Desktop
Claude Model
None
Is this a regression?
I don't know
Last Working Version
No response
Claude Code Version
2.1.81 (Claude Code)
Platform
Anthropic API
Operating System
Windows
Terminal/Shell
Windows Terminal
Additional Information
- Claude Desktop: 1.1.7714.0 (MSIX / WindowsApps)
- ccd-cli: 2.1.78
- OS: Windows 11
- WSL2 distro: Ubuntu (network mode: mirrored)
The standard .exe installer from claude.com/download wraps the same MSIX package, so switching installers does not resolve the issue
Forcing a valid model name via ~/.claude.json (claude-sonnet-4-6) does not fix the rendering issue — the two bugs appear independent
SSH authentication, ccd-cli deployment, RPC socket, and OAuth are all confirmed working
ccd-cli responds normally when run interactively in the WSL2 terminal
Workaround: use ccd-cli directly in the WSL2 terminal