hermes - 💡(How to fix) Fix Bug: Dashboard plugin install can falsely report git missing due to PATH [4 pull requests]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…

Installing a plugin from the Dashboard/API can fail with:

git is not installed or not in PATH.

…even when git is installed and available in normal shell sessions.

Error Message

  • Keeps existing error text when git truly does not exist.

Root Cause

hermes_cli/plugins_cmd.py invokes git as a bare "git" in subprocess calls:

  • clone path in _install_plugin_core
  • pull path in _git_pull_plugin_dir

If the process PATH is minimal, subprocess.run(["git", ...]) raises FileNotFoundError even though git exists in standard absolute locations.

Fix Action

Fixed

RAW_BUFFERClick to expand / collapse

Summary

Installing a plugin from the Dashboard/API can fail with:

git is not installed or not in PATH.

…even when git is installed and available in normal shell sessions.

Reproduction

  1. Ensure git is installed (e.g. /usr/bin/git exists and works in shell).
  2. In a runtime where Hermes Dashboard/API is launched with a reduced PATH, install a plugin from dashboard (or call the same dashboard install route).
  3. Observe failure: git is not installed or not in PATH.

Root cause

hermes_cli/plugins_cmd.py invokes git as a bare "git" in subprocess calls:

  • clone path in _install_plugin_core
  • pull path in _git_pull_plugin_dir

If the process PATH is minimal, subprocess.run(["git", ...]) raises FileNotFoundError even though git exists in standard absolute locations.

Proposed fix

Resolve git executable once with fallback absolute paths:

  • first shutil.which("git")
  • then /usr/bin/git, /usr/local/bin/git, /bin/git when executable

Use the resolved executable for both clone and pull paths.

Impact

  • Fixes false-negative install/update failures in dashboard/non-interactive runtimes.
  • Keeps existing error text when git truly does not exist.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING