install.sh: hint at root-owned npm cache when desktop npm install fails - #39688
Merged
OutThisLife merged 1 commit intoJun 7, 2026
Merged
Conversation
When apps/desktop's `npm ci`/`npm install` fails, install_desktop printed a
single "Desktop workspace npm install failed" line and aborted, leaving the
user with a wall of raw npm output. A common trigger is a root-owned ~/.npm
cache left by an earlier `sudo npm`/`sudo npx`: the non-root install then
cannot write the shared cache, and npm reports it as EEXIST / "File exists"
while the real errno is EACCES (-13) -- so it reads like an installer bug.
Add a targeted remediation hint on that failure path pointing at:
sudo chown -R "$(id -un)" ~/.npm && npm cache verify
followed by the manual rebuild command. The stage stays a hard failure by
design (a silent skip yields a "complete" install with no app); only the
failure output changes.
OutThisLife
enabled auto-merge (squash)
June 7, 2026 17:51
Collaborator
|
danke |
changman
pushed a commit
to changman/hermes-agent
that referenced
this pull request
Jun 10, 2026
…ls (NousResearch#39688) When apps/desktop's `npm ci`/`npm install` fails, install_desktop printed a single "Desktop workspace npm install failed" line and aborted, leaving the user with a wall of raw npm output. A common trigger is a root-owned ~/.npm cache left by an earlier `sudo npm`/`sudo npx`: the non-root install then cannot write the shared cache, and npm reports it as EEXIST / "File exists" while the real errno is EACCES (-13) -- so it reads like an installer bug. Add a targeted remediation hint on that failure path pointing at: sudo chown -R "$(id -un)" ~/.npm && npm cache verify followed by the manual rebuild command. The stage stays a hard failure by design (a silent skip yields a "complete" install with no app); only the failure output changes.
alt-glitch
pushed a commit
that referenced
this pull request
Jun 14, 2026
…ls (#39688) When apps/desktop's `npm ci`/`npm install` fails, install_desktop printed a single "Desktop workspace npm install failed" line and aborted, leaving the user with a wall of raw npm output. A common trigger is a root-owned ~/.npm cache left by an earlier `sudo npm`/`sudo npx`: the non-root install then cannot write the shared cache, and npm reports it as EEXIST / "File exists" while the real errno is EACCES (-13) -- so it reads like an installer bug. Add a targeted remediation hint on that failure path pointing at: sudo chown -R "$(id -un)" ~/.npm && npm cache verify followed by the manual rebuild command. The stage stays a hard failure by design (a silent skip yields a "complete" install with no app); only the failure output changes.
davidgut1982
pushed a commit
to davidgut1982/hermes-agent
that referenced
this pull request
Jun 17, 2026
…ls (NousResearch#39688) When apps/desktop's `npm ci`/`npm install` fails, install_desktop printed a single "Desktop workspace npm install failed" line and aborted, leaving the user with a wall of raw npm output. A common trigger is a root-owned ~/.npm cache left by an earlier `sudo npm`/`sudo npx`: the non-root install then cannot write the shared cache, and npm reports it as EEXIST / "File exists" while the real errno is EACCES (-13) -- so it reads like an installer bug. Add a targeted remediation hint on that failure path pointing at: sudo chown -R "$(id -un)" ~/.npm && npm cache verify followed by the manual rebuild command. The stage stays a hard failure by design (a silent skip yields a "complete" install with no app); only the failure output changes.
T02200059
pushed a commit
to T02200059/hermes-agent
that referenced
this pull request
Jun 18, 2026
…ls (NousResearch#39688) When apps/desktop's `npm ci`/`npm install` fails, install_desktop printed a single "Desktop workspace npm install failed" line and aborted, leaving the user with a wall of raw npm output. A common trigger is a root-owned ~/.npm cache left by an earlier `sudo npm`/`sudo npx`: the non-root install then cannot write the shared cache, and npm reports it as EEXIST / "File exists" while the real errno is EACCES (-13) -- so it reads like an installer bug. Add a targeted remediation hint on that failure path pointing at: sudo chown -R "$(id -un)" ~/.npm && npm cache verify followed by the manual rebuild command. The stage stays a hard failure by design (a silent skip yields a "complete" install with no app); only the failure output changes.
waefrebeorn
pushed a commit
to waefrebeorn/slermes
that referenced
this pull request
Jul 2, 2026
…ls (NousResearch#39688) When apps/desktop's `npm ci`/`npm install` fails, install_desktop printed a single "Desktop workspace npm install failed" line and aborted, leaving the user with a wall of raw npm output. A common trigger is a root-owned ~/.npm cache left by an earlier `sudo npm`/`sudo npx`: the non-root install then cannot write the shared cache, and npm reports it as EEXIST / "File exists" while the real errno is EACCES (-13) -- so it reads like an installer bug. Add a targeted remediation hint on that failure path pointing at: sudo chown -R "$(id -un)" ~/.npm && npm cache verify followed by the manual rebuild command. The stage stays a hard failure by design (a silent skip yields a "complete" install with no app); only the failure output changes.
santhreal
pushed a commit
to santhreal/hermes-agent
that referenced
this pull request
Jul 13, 2026
…ls (NousResearch#39688) When apps/desktop's `npm ci`/`npm install` fails, install_desktop printed a single "Desktop workspace npm install failed" line and aborted, leaving the user with a wall of raw npm output. A common trigger is a root-owned ~/.npm cache left by an earlier `sudo npm`/`sudo npx`: the non-root install then cannot write the shared cache, and npm reports it as EEXIST / "File exists" while the real errno is EACCES (-13) -- so it reads like an installer bug. Add a targeted remediation hint on that failure path pointing at: sudo chown -R "$(id -un)" ~/.npm && npm cache verify followed by the manual rebuild command. The stage stays a hard failure by design (a silent skip yields a "complete" install with no app); only the failure output changes.
donbowman
pushed a commit
to donbowman/hermes-agent
that referenced
this pull request
Jul 13, 2026
…ls (NousResearch#39688) When apps/desktop's `npm ci`/`npm install` fails, install_desktop printed a single "Desktop workspace npm install failed" line and aborted, leaving the user with a wall of raw npm output. A common trigger is a root-owned ~/.npm cache left by an earlier `sudo npm`/`sudo npx`: the non-root install then cannot write the shared cache, and npm reports it as EEXIST / "File exists" while the real errno is EACCES (-13) -- so it reads like an installer bug. Add a targeted remediation hint on that failure path pointing at: sudo chown -R "$(id -un)" ~/.npm && npm cache verify followed by the manual rebuild command. The stage stays a hard failure by design (a silent skip yields a "complete" install with no app); only the failure output changes.
Gravezzz
pushed a commit
to Gravezzz/hermes-agent
that referenced
this pull request
Jul 21, 2026
…ls (NousResearch#39688) When apps/desktop's `npm ci`/`npm install` fails, install_desktop printed a single "Desktop workspace npm install failed" line and aborted, leaving the user with a wall of raw npm output. A common trigger is a root-owned ~/.npm cache left by an earlier `sudo npm`/`sudo npx`: the non-root install then cannot write the shared cache, and npm reports it as EEXIST / "File exists" while the real errno is EACCES (-13) -- so it reads like an installer bug. Add a targeted remediation hint on that failure path pointing at: sudo chown -R "$(id -un)" ~/.npm && npm cache verify followed by the manual rebuild command. The stage stays a hard failure by design (a silent skip yields a "complete" install with no app); only the failure output changes.
leewenjie
pushed a commit
to leewenjie/hermes-agent
that referenced
this pull request
Aug 7, 2026
…ls (NousResearch#39688) When apps/desktop's `npm ci`/`npm install` fails, install_desktop printed a single "Desktop workspace npm install failed" line and aborted, leaving the user with a wall of raw npm output. A common trigger is a root-owned ~/.npm cache left by an earlier `sudo npm`/`sudo npx`: the non-root install then cannot write the shared cache, and npm reports it as EEXIST / "File exists" while the real errno is EACCES (-13) -- so it reads like an installer bug. Add a targeted remediation hint on that failure path pointing at: sudo chown -R "$(id -un)" ~/.npm && npm cache verify followed by the manual rebuild command. The stage stays a hard failure by design (a silent skip yields a "complete" install with no app); only the failure output changes.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
When the desktop build can't install its workspace dependencies,
install_desktopprints a single line —Desktop workspace npm install failed— and aborts. If the underlying npm failure is the (surprisingly common) root-owned cache problem, the user is left staring at a wall of npm output with no hint that it's a local permissions issue rather than a problem with the installer.The trigger:
~/.npmholds cache entries owned byroot, left behind by an earliersudo npm/sudo npx. A later non-rootnpm installthen can't write those cache paths and fails. npm surfaces this asEEXIST/ "File exists" witherrno -13, which is actuallyEACCES(permission denied).What this changes
On the desktop-install failure path only, print a short, targeted hint pointing at the fix:
…followed by the manual rebuild command. This mirrors the "Run manually: …" guidance already used elsewhere in the same function. No behavior change on success, and the stage stays a hard failure as intended.
Why not just make the stage non-fatal?
The hard
return 1is deliberate — see the comment aboveinstall_desktop: a silent skip produces a "complete" install with no app and a confusing launch-time error. This keeps that contract and only makes the failure self-explanatory.Notes
Scoped to the bash installer (
scripts/install.sh), the path most users hit;scripts/install.ps1carries the same message and could get a parity hint in a follow-up. Verified withbash -n.