NousResearch/hermes-agent · critical
Hermes install at ${ACTIVE_HERMES_ROOT} is missing or incomp
Error message
Hermes install at ${ACTIVE_HERMES_ROOT} is missing or incomplete. Reinstall via the desktop installer or scripts/install.ps1. What it means
Thrown in ensureRuntime after backend bootstrapping when isHermesSourceRoot(ACTIVE_HERMES_ROOT) is false — the directory the desktop resolved as the active Hermes install no longer looks like a Hermes source checkout (missing .git / source files). The desktop requires a complete checkout before wiring the venv Python into the backend command.
Source
Thrown at apps/desktop/electron/main.ts:4078
bootstrapFailure = bootstrapError
throw bootstrapError
}
rememberLog('[bootstrap] bootstrap complete; marker written. Re-resolving backend.')
// Re-resolve now that the install exists. The new resolution lands in
// step 3 (bootstrap-complete marker) and we recurse to wire venvPython.
return ensureRuntime(resolveHermesBackend(backend.args))
}
// bootstrap=true with a real backend (createActiveBackend path) means we
// have a checkout and need to ensure the venv-derived Python command is
// wired into the backend before launch. Same code path the old factory
// sync flow exited through, minus all the factory/pip/marker machinery
// (install.ps1 owns those concerns now and the bootstrap-complete marker
// attests they ran successfully).
if (!isHermesSourceRoot(ACTIVE_HERMES_ROOT)) {
throw new Error(
`Hermes install at ${ACTIVE_HERMES_ROOT} is missing or incomplete. ` +
'Reinstall via the desktop installer or scripts/install.ps1.'
)
}
// On Windows, preflight Git Bash. Hermes' terminal tool calls bash.exe
// directly (tools/environments/local.py); without it the agent can't run
// terminal commands. install.ps1's Stage-Git puts PortableGit at
// %LOCALAPPDATA%\hermes\git\, which findGitBash() picks up, so for any
// user who completed the bootstrap this is a no-op. For users who got
// here via an external `hermes` on PATH, this check still helps.
if (IS_WINDOWS && !findGitBash()) {
throw new Error(
'Git for Windows is required for Hermes on Windows (provides Git Bash, ' +
"which the agent's terminal tool uses). Install it from " +
'https://git-scm.com/download/win or run `winget install -e --id Git.Git`, ' +
'then relaunch Hermes.'
)View on GitHub (pinned to c896c09c42)
Solutions
- Reinstall via the desktop installer or scripts/install.ps1, as the message says — this restores a complete checkout.
- If the install was intentionally moved, update the desktop's recorded ACTIVE_HERMES_ROOT to the new location.
- Verify the directory contains a Hermes checkout (.git plus source files) before relaunching.
Defensive patterns
Strategy: validation
Validate before calling
const fs = require('fs')
const path = require('path')
function looksLikeHermesCheckout(root) {
return fs.existsSync(path.join(root, '.git')) && fs.existsSync(path.join(root, 'pyproject.toml'))
}
if (!looksLikeHermesCheckout(ACTIVE_HERMES_ROOT)) {
promptReinstall()
} Try / catch
try {
await ensureRuntime(backend)
} catch (e) {
if (/missing or incomplete/.test(e.message)) await offerReinstall()
else throw e
} Prevention
- Don't delete files inside the install root
- Re-run the installer after moving an install
- Keep the installer's bootstrap-complete marker intact
When it happens
Trigger: The checkout at ACTIVE_HERMES_ROOT was deleted, moved, or partially copied after installation; a half-completed installer run left .git missing; the config points ACTIVE_HERMES_ROOT at a wrong/stale path.
Common situations: Users who cleaned up 'unused' folders under the install root; antivirus or disk-cleanup tools removing checkout contents; moving the install directory manually without updating the desktop's config.
Related errors
- Hermes venv missing at ${VENV_ROOT}. Re-run the desktop inst
- Git for Windows is required for Hermes on Windows (provides
- SSH remote mode is selected but no host is configured.
- Hermes backend for profile "${profile}" is HTTP-reachable bu
- Hermes backend start was superseded by a newer connection at
AI-assisted analysis of NousResearch/hermes-agent@c896c09c42 (2026-08-14).
Data as JSON: /api/errors/0ead870e4b873caf.
Report an issue: GitHub.