[BUG] Branch selector lists no branches for WSL-remote projects after 1.24012.1 (git layer works)
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:
- 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
- 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.
- getRemoteGitInfo is polled every few seconds and never logs an error.
- 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
- Use the Windows desktop app with a project located inside WSL2 (in my case distro
"mahjong", project path /home/<user>/mahjong/Mortal).
- Make sure the repository has several local branches
(git for-each-ref --format='%(refname:short)' refs/heads/ returns 6 in my case).
- Update the desktop app to 1.24012.1 (bundled Claude Code 2.1.217).
- Open the project and open the branch selector.
- 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.