Skip to content

Claude Code brain reports CLI not installed when the app is launched from Finder #5728

Closed

Description

@nocstah

Summary

With the Claude Code provider configured, launching OpenHuman from Finder/Dock fails every chat turn with [claude-code] \claude` CLI not installed` — even though the CLI is installed and works from a terminal launch.

Problem

What happened vs expected: version_check::resolve_binary() searches only $PATH. A macOS app launched from Finder/Dock inherits launchd's stripped PATH (/usr/bin:/bin:/usr/sbin:/sbin), which does not contain the native installer's default ~/.local/bin — so the probe returns CliStatus::NotInstalled and every turn fails instantly. The same install works when the app is started from a terminal (shell PATH), which makes the failure look intermittent/machine-specific.

Steps to reproduce:

  1. Install the Claude Code CLI with the native installer (lands in ~/.local/bin/claude).
  2. Configure the claude-code provider; verify chat works when OpenHuman is launched from a terminal (open /Applications/OpenHuman.app from a shell also works, since it inherits the shell env).
  3. Quit; relaunch OpenHuman from Finder or the Dock.
  4. Send any message → run_chat_task failed … [claude-code] \claude` CLI not installed. Install Claude Code CLI … >= 2.0.0 and retry.`

Version/platform: v0.63.14, macOS (Darwin 25.3.0), desktop bundle; claude CLI 2.1.241 at ~/.local/bin/claude.

Verified against the live process: ps eww <pid> shows PATH=/usr/bin:/bin:/usr/sbin:/sbin for a Finder-launched instance.

Solution (optional)

Fall back to well-known install locations when the PATH search misses (~/.local/bin, ~/.claude/local, bun/npm globals, Homebrew), and prepend the resolved CLI's directory + user bin dirs to the spawned child's PATH so the CLI's own shell-outs (git, rg, node) resolve too. PR attached.

Workaround until then: launchctl setenv OPENHUMAN_CLAUDE_CLI ~/.local/bin/claude and relaunch (the env override is checked first).

Acceptance criteria

  • Repro gone — a Finder/Dock launch with the CLI at ~/.local/bin/claude (and nothing claude-related on the launchd PATH) completes a chat turn.
  • Regression safety — unit tests cover the well-known-location fallback and the child-PATH construction.
  • Diff coverage ≥ 80% — the fix PR meets the changed-lines coverage gate (Vitest + cargo-llvm-cov, enforced by .github/workflows/ci-lite.yml).

Related

Fix PR to follow (same author). Also related: the silent-hang issue filed separately — this failure never reached the UI.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions