[BUG] Branch selector lists no branches for WSL-remote projects after 1.24012.1 (git layer works)

Status Open
Reported on v2.1.217
Maintainer reply None cached
Activity 0 comments · opened Jul 22, 2026

Preflight Checklist

  • [x] I have searched existing issues and this hasn't been reported yet
  • [x] This is a single bug report (please file separate reports for different bugs)
  • [x] I am using the latest version of Claude Code

What's Wrong?

After updating the Windows desktop app, the git branch selector is empty for my WSL
project. It lists no branches at all, so switching branches from the app is impossible.
This worked before the update.

The important part: this is NOT a git or WSL access failure. The plumbing works
perfectly, the data just never reaches the selector.

I verified the following:

  1. The repository has 6 local branches, and the exact command the app would use returns

all of them from inside WSL:

$ git for-each-ref --format='%(refname:short)' refs/heads/
freeparlor
main
phase2-freeparlor-reward
phase3-sweep
phase4-chip-reward
ppo-migration

  1. The app DOES successfully run git over its SSH remote. In ssh.log it spawned git

448 times (plus realpath 128 times) against the correct working directory, and every
single invocation exited code=0.

  1. getRemoteGitInfo is polled every few seconds and never logs an error.
  1. Despite all of that, the app's frontend state (Local Storage leveldb) contains only

the CURRENT branch (ppo-migration). None of the other five local branches appear
anywhere in it, and there is no branch-list key at all.

So the branch data is available, the app fetches it successfully, and the selector is
still empty. This looks like a frontend regression specific to WSL-remote projects.

For context, this update also changed how the app reaches WSL: it now bundles
claude-ssh-linux-amd64 and spawns remote processes over SSH, where previously it used a
\\wsl.localhost\... UNC path. I suspect the branch selector was not updated for the new
remote path.

What Should Happen?

The branch selector should list the repository's local branches for WSL-remote projects,
and allow switching between them, as it did before the update.

Error Messages/Logs

No error is produced for the branch fetch itself. That is part of the problem: every
layer reports success while the selector stays empty.

Representative log lines:

  [info] LocalSessions.getRemoteGitInfo: target=wsl:mahjong, path=/home/<user>/mahjong/Mortal

  [info] [RemoteProcess:4d2a00ca] Creating process: git [11 arg(s)]
  [info] [RemoteProcess:4d2a00ca] Working directory: /home/<user>/mahjong/Mortal
  [info] [RemoteProcess:4d2a00ca] Spawning: git [11 arg(s)]
  [info] [RemoteProcess:4d2a00ca] Spawn confirmed
  [info] [RemoteProcess:4d2a00ca] Exited, code=0, duration=6ms

Counted across ssh.log: 448 git spawns, 128 realpath spawns, all exit code=0.

Steps to Reproduce

  1. Use the Windows desktop app with a project located inside WSL2 (in my case distro

"mahjong", project path /home/<user>/mahjong/Mortal).

  1. Make sure the repository has several local branches

(git for-each-ref --format='%(refname:short)' refs/heads/ returns 6 in my case).

  1. Update the desktop app to 1.24012.1 (bundled Claude Code 2.1.217).
  2. Open the project and open the branch selector.
  3. The selector lists no branches. Switching branches from the app is not possible.

Meanwhile "git switch <branch>" from a terminal still works normally.

Claude Model

Not sure / Multiple models

Is this a regression?

Yes, this worked in a previous version

Last Working Version

_No response_

Claude Code Version

2.1.217

Platform

Anthropic API

Operating System

Windows

Terminal/Shell

WSL (Windows Subsystem for Linux)

Additional Information

Desktop app version: 1.24012.1 (Windows MSIX package Claude_pzs8sxrjxfjjc)
Bundled Claude Code: 2.1.217
Host: Windows 11 + WSL2, distro "mahjong"

Workaround: switching branches from a terminal with "git switch <branch>" works
normally. I could not find any in-app workaround.

The same update also orphaned my entire session history, which I filed separately.

View original on GitHub ↗