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), branchmaster, clean, owned by the session user (nosafe.directoryissue) - git inside distro: 2.53.0 at
/usr/bin/gitonly (no Windows git on PATH)
What I verified (it's not the WSL setup)
git branch --show-currentinside the distro instantly returnsmaster;git rev-parse --is-inside-work-tree→true.- 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
- Windows desktop app → new session → environment: WSL Ubuntu → folder: a git repo under
/home/...(branchmaster). - Composer branch/worktree chip shows
—instead ofmaster. (A cloud-environment repo in the same composer shows its branch correctly.) - Enable the worktree toggle and start the session.
- 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.