Skip to content

[BUG] Claude Code Desktop (MSIX) does not render responses in SSH/WSL2 mode — ANSI escape code in model argument #37613

@davinogueiradev

Description

@davinogueiradev

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-cli process should be rendered in the Desktop UI
  • Completed sessions should terminate their associated ccd-cli processes

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-messages

Steps to Reproduce

  1. Install Claude Desktop via MSIX on Windows 11
  2. Configure WSL2 with OpenSSH server and mirrored network mode (networkingMode = mirrored in .wslconfig)
  3. Set up SSH key authentication (ED25519)
  4. Open Claude Code Desktop → Code tab → SSH connection → select a WSL2 project folder
  5. Send any message
  6. Observe: UI stays blank; ccd-cli spawned 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

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:desktopbugSomething isn't workinghas reproHas detailed reproduction stepsplatform:windowsIssue specifically occurs on Windowsplatform:wslIssue specifically occurs on WSL

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions