Repository navigation
update hermes errorΒ #17516
Description
β Have you read and understood the above guidelines?
yes
π Did you run the script with verbose mode enabled?
Yes, verbose mode was enabled and the output is included below
π What is the name of the script you are using?
hermes
π What was the exact command used to execute the script?
update from LXC
π When does the issue occur?
Update of an existing container
π±οΈ Where did you run the command?
SSH into the container
βοΈ What settings are you using?
- Default Settings
- Advanced Settings
π₯οΈ Which Linux distribution is the container running?
Debian
π’ Which version of that distribution?
13
π§± Is this Proxmox host running arm64?
No
π Which Proxmox VE release are you on?
Proxmox VE 9
π’ Exact Proxmox version and kernel
9.2.20
π Provide a clear and concise description of the issue.
update not work
π Steps to reproduce the issue.
update
β Paste the full error output (if available).
βοΈ Stopped Services
β³ Updating Hermes Agentβ€ Updating Hermes Agent...
β Fleet: 1 running service(s) across profiles: default
β Update channel: main
β Fetching updates...
β Source update preparation failed: refusing to update /home/hermes/.hermes/hermes-agent: /home/hermes/.hermes/hermes-agent is owned by uid 1000, not the current uid 0; repair ownership before retrying
βοΈ in line 51: exit code 1 (General error / Operation not permitted): while executing command setsid --wait bash -c '
set -a; source /etc/default/hermes; set +a
/home/hermes/.local/bin/hermes update --yes
'
--- Last 20 lines of log ---
[2026-09-26 01:42:51] [WARN] WARNING: This script will run an external installer from a third-party source (https://hermes-agent.nousresearch.com/).
[2026-09-26 01:42:51] [WARN] The following code is NOT maintained or audited by our repository.
[2026-09-26 01:42:51] [WARN] If you have any doubts or concerns, please review the installer code before proceeding:
[2026-09-26 01:42:51] β hermes update (https://hermes-agent.nousresearch.com/)
[2026-09-26 01:42:51] [INFO] Stopping Services
[2026-09-26 01:42:51] [OK] Stopped Services
[2026-09-26 01:42:51] [INFO] Updating Hermes Agent
[2026-09-26 01:43:19] [ERROR] in line 51: exit code 1 (General error / Operation not permitted): while executing command setsid --wait bash -c '
set -a; source /etc/default/hermes; set +a
/home/hermes/.local/bin/hermes update --yes
'
πΌοΈ Additional context (optional).

Activity
MickLesk commentedon Sep 26, 2026
@steveonjava
netbix commentedon Sep 26, 2026
Is it correct for the Hermes dashboard to be launched as root?
netbix commentedon Sep 26, 2026
Everything seems to be working, but in Hermes Desktop "Connect to Gateway," I see this:
netbix commentedon Sep 26, 2026
and every update performed by the client fails
netbix commentedon Sep 26, 2026
In a clean installation, the service is started with a normal user, not root.
netbix commentedon Sep 26, 2026
by adding:
GATEWAY_HEALTH_URL=http://127.0.0.1:8642/health
to /etc/default/hermes, I resolved this:
netbix commentedon Sep 26, 2026
I also fixed the issue with Telegram being disconnected:
I added:
hermes config set plugins.load_timeout_seconds 60
to the config.yaml file.
steveonjava commentedon Sep 26, 2026
@netbix Thanks for the feedback. This was broken by a hermes-agent fix checked in on September 24th:
NousResearch/hermes-agent@501ab5e
Fixing this is not that easy. The reason why the ProxmoxVE hermes-agent script runs setup and update as root is that they both require interactive privileged escalation via sudo. This breaks automation since the script we execute wants an interactive password. However, they explicitly added a guard upstream that does not allow the update to be called by root.
My recommendation short-term is to run hermes update as the hermes user manually. I will work on a more elaborate fix for this, but it will take some time to get right.
The other feedback on desktop is great as well.
dacog commentedon Sep 27, 2026
Same error here (Debian 13 LXC, PVE 9). I found the root cause (at least in my case) and a working recovery, in case it helps others and the maintainers.
Root cause
The update function runs
hermes updateas root, but/etc/default/hermessetsHOME=/home/hermes. So every update run as root has been writing into the hermes user's home and leaving root-owned files behind. On my instance that was ~120k files across.hermes/installs,.hermes/hermes-agent,.hermes/cache,.hermes/tools,.hermes/profiles,.npm, etc.Older Hermes versions seem to not have checked for this, so it went unnoticed. Recent Hermes refuses to update a source tree owned by a different uid, hence:
After the failed run the install is also left broken. In my case
installs/<id>/facts.jsonwasroot:root 0600, so the hermes user couldn't read it and every command failed with:Recovery (no reinstall needed)
Then restart the gateways (
hermes gateway restart, or<profile> gateway restartper profile) and, as root,systemctl restart hermes-dashboard.After this my agents went back to a working state and the telegram gateway worked again. :)
Suggested fix for the script (I have not tested this, it's only an idea)
I got everything back to work again manually and run
hermes updateas the hermes user. What follows is an idea but I have not had time to confirm it works.Run the update as the service user instead of root, e.g.:
runuser -u hermes -- bash -lc 'hermes update --yes'and optionally
chown -R hermes:hermes /home/hermesbeforehand to heal existing installs.I hope this helps.
steveonjava commentedon Sep 27, 2026
Thanks for the detailed repair instructions, @dacog. That looks correct from my memory. The failed install will leave permissions issues, so fixing permissions is the right fix (the update script normally does this as the last step). The lock file is also a good catch on a failed update.
For the script fix, running as the hermes user will work fine, except when it requires sudo to do root operations. This doesn't happen every update, but does frequently enough that it requires that command to be run interactively. I am working on a scoped sudoers rule to make it run non-interactively, but for security reasons it requires the gateways to be down (which update normally does) and has to fail closed so the rule doesn't accidentally get left behind leaving a security hole.
netbix commentedon Oct 10, 2026
Any updates on the problem?