Repository navigation
[Bug]: macOS Source Control reports installed Homebrew gh as unavailable #7618
Description
Before submitting
- I searched existing issues and did not find a duplicate.
- I included enough detail to investigate the problem.
Area
apps/desktop
Observed sequence
- T3 Code 0.0.33 was installed as the packaged macOS app.
- GitHub CLI was installed and authenticated:
gh --versionsucceeded in Terminal.gh auth statusshowed an authenticated GitHub account.
- In Settings → Source Control, GitHub appeared as unavailable with the instruction to install
gh. - Rescan server environment did not make GitHub available.
This is an observation from one real packaged-app session, not yet a deterministic clean-environment reproduction.
Expected behavior
Following the documented setup—installing gh, authenticating it, and rescanning the server environment—should make GitHub available in Source Control.
Actual behavior
GitHub was shown as:
Not available on this server: Install the GitHub command-line tool (
gh).
T3's logs from the affected session contain:
VcsProcessSpawnError: source-control.discovery.probe: gh
PlatformError: NotFound: ChildProcess.spawn (gh --version)
Error: spawn gh ENOENT
This establishes that Source Control could not resolve the gh executable and failed before GitHub authentication was evaluated.
What has and has not been established
Established:
- The packaged app was T3 Code 0.0.33.
gh2.93.0 was installed and authenticated.- A real executable was available at
/Users/toviastorres/.local/bin/gh; Homebrew also exposed/opt/homebrew/bin/gh. - The Source Control probe failed with
spawn gh ENOENT. - The documented Rescan server environment action did not recover discovery in the affected session.
Not yet established:
- The exact
PATHseen by the original T3 server process was not captured directly. - The outputs or failures of T3's login-shell and
launchctlPATH probes were not captured. - A local application modification and an application restart occurred together afterward, so the later successful discovery does not isolate whether the restart, the modification, or their combination changed the result.
- Therefore, a missing standard-directory fallback is a hypothesis, not a confirmed root cause.
Related issues
- [Bug]: Homebrew-distributed app fails to detect Claude Code (and Codex) provider — works fine when built from source #1787 / Improve shell PATH hydration and fallback detection #1799 address Homebrew-installed provider CLIs not being detected by the packaged macOS app. This may be a regression or an uncovered path through the same environment-hydration area.
- This differs from [Bug]: gh is authenticated but t3 says gh is NOT authenticated #7581, where T3 finds
ghbut reports the wrong authentication state. - This differs from GitHub source control shows "Not authenticated" when
ghis outdated (missingauth status --json) #3806, which involves aghversion too old to support the authentication JSON probe. - This differs from [Bug]: Git integration treats 1Password shell-plugin gh auth as unauthenticated #2187, which involves a shell alias and 1Password-based authentication.
Impact
Major degradation or frequent failure
Version or commit
0.0.33 (3b72d17cbca691f0b64e6d4a10c9e349f42873a5)
Environment
- macOS 26.6.2
- Apple Silicon (arm64)
- Packaged T3 Code desktop app 0.0.33
- GitHub CLI 2.93.0
- GitHub authentication stored in the keyring
Suggested investigation
It may help to log, alongside the failing Source Control probe:
- the effective server
PATH; - whether the login-shell probe succeeded, timed out, or returned an unusable value;
- the value returned by
launchctl getenv PATH; - which environment source was ultimately selected.
That would distinguish a shell-probe failure, environment propagation issue, stale process state, or provider-specific discovery issue without assuming a particular fix.
Workaround status
No workaround was isolated conclusively. Restarting the app was not tested independently from the local application modification. The documented rescan action did not resolve the affected session.
Activity
[-][Bug]: macOS desktop Source Control fails to detect Homebrew gh after PATH hydration fix[/-][+][Bug]: macOS Source Control reports installed Homebrew gh as unavailable[/+]jarrodplacide commentedon Aug 25, 2026
Reproducing this on 0.0.34-nightly, with the PATH measurements the issue lists as
not-yet-established. Short version: the server process runs with the minimal
Finder-launched
.appPATH,launchctl getenv PATHis unset, and so everybare-
ghspawn fails — not just the discovery probe.Effective PATH of the running server process
Taken from the live processes via
ps eww, all five T3 processes (main, helpers,renderer):
That is the bare Finder-launch environment. It contains neither
/opt/homebrew/binnor
~/.local/bin.launchctl
Unset — so a launchctl-based fallback has nothing to contribute on this OS version.
Where gh actually is
Login-shell PATH (for contrast)
Order preserved, home directory and two internal tooling entries redacted:
So the login-shell probe would find
ghif its result reached the spawnenvironment. It does not.
What fails, from the trace logs
Every bare-
ghspawn across a ~14h window (2026-08-24 19:39 → 2026-08-25 09:44),counted from
~/.t3/userdata/logs/server.trace.ndjson*:gh pr listgh pr viewgh api usergh --version(discovery probe)gh pr diffSuccessful
ghspawns: 0. TotalVcsProcessSpawnError: 1246.Two things worth drawing out:
It is not only the discovery probe. The pull-request surface spawns
ghindependently and fails the same way, so this reads as bare-name
ghspawningthroughout the VCS layer rather than one probe with a missing fallback:
gh auth statusnever runs — it appears zero times in the traces. Thatcorroborates the original report's reading that this fails before
authentication is ever evaluated, and distinguishes it from [Bug]: gh is authenticated but t3 says gh is NOT authenticated #7581 / GitHub source control shows "Not authenticated" when
ghis outdated (missingauth status --json) #3806.Environment
com.t3tools.t3code), packaged app, launched from Finder/bin/zsh/usr/local/bin/ghSince the original report was 0.0.33 and this is 0.0.34-nightly, the behaviour is
still present on nightly.