Skip to content

[Bug]: Homebrew-distributed app fails to detect Claude Code (and Codex) provider — works fine when built from source #1787

@jonathanperis

Description

@jonathanperis

Before submitting

  • I searched existing issues and did not find a duplicate.
  • I included enough detail to reproduce or investigate the problem.

Area

apps/desktop

Steps to reproduce

  1. Install T3 Code via Homebrew (v0.0.15 Alpha, installed as a macOS .app bundle).
  2. Ensure Claude Code CLI is installed and fully authenticated — claude --version returns v2.1.92, /usage shows an active session, and the CLI works normally in any terminal window.
  3. Ensure Codex CLI is similarly installed and available on PATH in a terminal.
  4. Launch T3 Code from the Applications folder (i.e. as a GUI app, not from the terminal).
  5. Open Settings → Providers.
  6. Observe the status message for both the Codex and Claude Code providers.

Expected behavior

Both providers should detect their respective CLIs, confirm authentication, and become ready to use — matching the behavior seen when the app is run locally via bun dev or bun start from a terminal.

Actual behavior

Both providers are perpetually stuck on:

"Checking provider status — Waiting for the server to report installation and authentication details."

Neither provider ever transitions to a ready or authenticated state. The Settings page shows no error — just an indefinite spinner/pending message for both Codex and Claude Code.

Notably, cloning the repo and running the app from source (via a terminal) works perfectly: providers are detected and authenticated immediately.

Key contrast: Homebrew bundle vs. built from source

Launch method Provider detection
Homebrew .app (from Applications) Stuck on "Checking provider status…"
bun dev / built from source (via terminal) Works immediately

This strongly suggests the Homebrew-distributed .app bundle does not inherit the user's login shell PATH (where claude and codex are installed), while running from a terminal naturally has the correct PATH already set.

Hypothesis / suspected root cause

macOS GUI applications launched from Finder or the Dock do not source the user's shell profile (~/.zshrc, ~/.zprofile, etc.). The bundled app must explicitly probe the login shell to reconstruct PATH. If that probe fails or produces an incomplete PATH, neither claude nor codex will be found — even though they are perfectly accessible in any terminal.

This is the same root-cause class as:

The claude CLI is typically installed by the Claude Code installer into a non-standard location (e.g. ~/.claude/local/claude, or via a shell shim under ~/.local/bin) that is added to PATH only via shell profile scripts. If readPathFromLoginShell / readEnvironmentFromLoginShell fails for any reason — shell probe timeout, non-POSIX shell, or simply not capturing the right profile — the binary is invisible to the app process.

Impact

Blocks work completely

Version or commit

0.0.15

Environment

  • Machine: Mac Mini M1, 16 GB RAM
  • OS: macOS Tahoe 26.3.1 (a) (Darwin arm64)
  • Install method: Homebrew cask (.app bundle)
  • App version: 0.0.15 Alpha (shown as "Up to Date" in-app)
  • Claude Code CLI: v2.1.92, authenticated, Claude Max plan active (/usage confirms current session active, 6% used)
  • Subscription: Claude Max

Logs or stack traces

# No error logs visible in the app UI.
# Both providers show indefinite pending state.
# Claude Code CLI in terminal works normally:
$ claude --version
# Claude Code 2.1.92
$ claude /usage
# (shows active session, current period usage ~6%)

Screenshots, recordings, or supporting files

Image

The Settings page shows both the Codex and Claude Code providers stuck on "Checking provider status — Waiting for the server to report installation and authentication details." Side-by-side with a Claude Code terminal session showing v2.1.92 authenticated and /usage reporting active usage. (Screenshot available on request — not attached as it contains a local file path.)

Workaround

Running the app from source via a terminal (clone repo → bun installbun dev) works correctly because the terminal process already has the correct PATH from the shell profile. No known workaround for the Homebrew-distributed binary.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions