Desktop + WSL: composer branch chip shows '—' and worktree toggle silently creates no worktree (session runs in main checkout)

Status Fixed / completed
Reported on v2.1.209
Maintainer reply None cached
Activity 0 comments · opened Jul 16, 2026 · closed Aug 25, 2026

Summary

On the Windows desktop app with a WSL (Ubuntu) environment, the new-session composer's branch/worktree chip renders a dash () instead of the branch name for a healthy repo on the WSL filesystem. Additionally, with the worktree toggle enabled, the session starts directly in the main checkout — no worktree is ever created (git worktree list shows only the main checkout).

The same composer shows the branch correctly (main) for a repo in a cloud environment, so the chip UI itself works — the failure is specific to the WSL path.

Environment

  • Desktop app: Windows (Microsoft Store install, Claude_pzs8sxrjxfjjc), WSL environment = Ubuntu
  • WSL: WSL 2, kernel 6.18.35.2-microsoft-standard-WSL2, systemd enabled
  • Bundled remote CLI: ~/.claude/remote/ccd-cli/2.1.209 (standalone CLI in distro: 2.1.211, native install)
  • Repo: a private repo under /home/<user>/... (Linux filesystem, not /mnt/c), branch master, clean, owned by the session user (no safe.directory issue)
  • git inside distro: 2.53.0 at /usr/bin/git only (no Windows git on PATH)

What I verified (it's not the WSL setup)

  • git branch --show-current inside the distro instantly returns master; git rev-parse --is-inside-work-treetrue.
  • The desktop's WSL bridge (~/.claude/remote/srv/.../server --serve/--bridge) is running and spawning sessions fine.
  • The bridge log (~/.claude/remote/run/<id>/remote-server.log) shows the app polling git in this repo every ~20s–3min, and every git process exits with code 0 — no errors in current or rotated logs. So the branch data is being fetched successfully but not rendered.

Repro

  1. Windows desktop app → new session → environment: WSL Ubuntu → folder: a git repo under /home/... (branch master).
  2. Composer branch/worktree chip shows instead of master. (A cloud-environment repo in the same composer shows its branch correctly.)
  3. Enable the worktree toggle and start the session.
  4. In the session: pwd = the main checkout path (not a worktree); git worktree list = main checkout only. No worktree was created, despite the toggle.

Expected

  • The chip shows the current branch for WSL repos (docs state branch status "works, backed by the git inside the distribution" — https://code.claude.com/docs/en/desktop-wsl.md).
  • With the worktree toggle on, the session runs in a freshly created worktree, or surfaces an error if creation fails — rather than silently running in the main checkout while the UI implies isolation.

Impact

Sessions the user believes are isolated in a worktree are actually mutating the primary checkout.

View original on GitHub ↗