Desktop app's git detection fails on macOS 26 CLT layout — false "Git is required" for local sessions
Environment
- macOS 26.5.1 (Build 25F80)
- Claude Desktop app version: 1.32885.0
- Bundled Claude Code CLI (local): 2.1.234
- Command Line Tools package:
com.apple.pkg.CLTools_Executables26.6.0.0.1781586589 - Git: fully installed and functional —
/usr/bin/git→git version 2.50.1 (Apple Git-155)
Summary
After updating Claude Desktop, starting a local session shows:
"Install Git — Git is required to run local sessions. Run xcode-select --install in Terminal to install the Command Line Tools, or download Git directly — or switch to a remote environment."
This appears even though git is fully installed and working from Terminal. xcode-select --install does not resolve it, since Command Line Tools are already installed.
Root cause
Traced this in Claude.app/Contents/Resources/app.asar. The git-availability check (function b() in the bundle) does:
- Run
/usr/bin/xcode-select -pto get the active Developer Directory (succeeds, returns/Library/Developer/CommandLineTools). - Require both
<devdir>/usr/bin/xcrunand<devdir>/usr/bin/gitto exist as literal files, via:
``jsxcrun
let n = (await Promise.all([,git].map(n => t.ix(path.posix.join(e,usr,bin,n))))).every(Boolean);``
- If either is missing → logs
"[git] active developer dir "<path>" lacks a usable xcrun+git; treating git as unavailable"and shows the install-Git screen.
On this OS/CLT combination, Apple's CLT package no longer ships an xcrun binary inside <devdir>/usr/bin/ — confirmed via:
$ pkgutil --files com.apple.pkg.CLTools_Executables | grep -i xcrun
Library/Developer/CommandLineTools/usr/lib/libxcrun.dylib
Library/Developer/CommandLineTools/usr/share/man/man1/xcrun.1
No usr/bin/xcrun entry — it's not part of the package manifest, so it will never be there regardless of reinstalling CLT. The real xcrun lives only at the top-level /usr/bin/xcrun, and it resolves git correctly:
$ xcrun -f git
/Library/Developer/CommandLineTools/usr/bin/git
So the check is stricter than necessary — it should either check for xcrun at /usr/bin/xcrun (or just use xcrun -f git / rely on PATH resolution) rather than requiring a redundant copy inside the active Developer Directory's usr/bin.
Steps to reproduce
- On macOS 26.x with CLT package ≥ 26.6.0, run
xcode-select -pand confirm it returns a valid path. - Confirm
<that path>/usr/bin/gitexists but<that path>/usr/bin/xcrundoes not. - Open Claude Desktop and start a local session.
Expected behavior
Git is detected as available (it is — git --version works fine).
Actual behavior
App reports git is missing and blocks local sessions.
Workaround
sudo ln -s /usr/bin/xcrun "$(xcode-select -p)/usr/bin/xcrun"
Creates a symlink at the path the check expects; satisfies the existence check without changing any real git/xcrun behavior.