Bug description
hermes update updated the shared checkout but silently skipped restarting the running default-profile systemd user gateway. The next Telegram turn loaded a mixture of old in-memory modules and newly updated source files and failed with an ImportError.
Steps to reproduce
- Run the default profile gateway as the installed Linux systemd user service.
- Confirm the gateway is active.
- Run
hermes update while the gateway remains active.
- Send the bot a Telegram message after the update.
Actual behavior
The update started at 2026-08-04T00:02:48, pulled 462 commits, and finished successfully. The update log ends with:
✓ Update complete!
Tip: You can now select a provider and model:
hermes model
There is no gateway drain or restart step. Earlier updates in the same log include:
→ hermes-gateway: draining (up to 195s)...
✓ Restarted hermes-gateway
The gateway process remained the one started before the update. The next Telegram turn failed with:
ImportError: cannot import name 'is_trivial_prompt' from 'agent.memory_provider'
Trace path:
gateway/run.py -> _run_agent -> _run_agent_inner
run_agent.py: from agent.memory_provider import is_trivial_prompt
A manual hermes gateway restart immediately fixed Telegram.
Expected behavior
As documented, hermes update should detect and restart every running gateway that uses the updated checkout. If restart detection or restart itself fails, the update should exit nonzero or print a clear warning and manual recovery command. It should not report a clean update while leaving a stale gateway running against replaced source files.
Environment
- Hermes Agent:
v0.20.0 (2026.8.3) after update
- Host: WSL2 Linux
- Gateway: default profile, installed systemd user service
- Python: 3.11.15
- SQLite: 3.53.1
- Gateway persistence: systemd linger enabled
Additional evidence
The same update.log demonstrates that gateway auto-restart worked on earlier updates but was omitted entirely from this run. This is the default profile on Linux, so it is distinct from reports limited to stale non-default profiles or macOS launchd behavior.
Bug description
hermes updateupdated the shared checkout but silently skipped restarting the running default-profile systemd user gateway. The next Telegram turn loaded a mixture of old in-memory modules and newly updated source files and failed with anImportError.Steps to reproduce
hermes updatewhile the gateway remains active.Actual behavior
The update started at
2026-08-04T00:02:48, pulled 462 commits, and finished successfully. The update log ends with:There is no gateway drain or restart step. Earlier updates in the same log include:
The gateway process remained the one started before the update. The next Telegram turn failed with:
Trace path:
A manual
hermes gateway restartimmediately fixed Telegram.Expected behavior
As documented,
hermes updateshould detect and restart every running gateway that uses the updated checkout. If restart detection or restart itself fails, the update should exit nonzero or print a clear warning and manual recovery command. It should not report a clean update while leaving a stale gateway running against replaced source files.Environment
v0.20.0 (2026.8.3)after updateAdditional evidence
The same
update.logdemonstrates that gateway auto-restart worked on earlier updates but was omitted entirely from this run. This is the default profile on Linux, so it is distinct from reports limited to stale non-default profiles or macOS launchd behavior.