Hermes v0.22.2: The Release 0.22.1 Was Meant to Be


You set Hermes up as a systemd service months ago and it has restarted cleanly through every reboot since — until one morning the service is dead, systemctl start says it is already active somewhere, and the only clue in the log is a PID that belongs to something else entirely. Or you are on a laptop, running a local model, and a long turn just… stops: the status line sits there, you close the lid for a while, and when you come back the turn has given up. Both of those have a fix in v0.22.2, and so does a more unusual problem: the release before it was built from the wrong commit.

What actually happened to v0.22.1

v0.22.1 was published on October 14, 2026 and pointed at the wrong tree. Two consequences were visible from the outside: the tag shipped gateway work that had not been released yet, and the Microsoft Store package could hang on “Connecting.” instead of finishing its first launch.

v0.22.2 was published the next morning, built from the commit the earlier tag was supposed to use, with the published v0.22.1 as its parent. The official release body is blunt about the relationship: “0.22.2 is the release 0.22.1 was meant to be.” From v0.22.1 to v0.22.2 the compare range is 11 commits — a rebuild, not a feature drop.

One honest caveat travels with the rebuild: sessions that ran under the 0.22.1 gateway cannot be deleted in 0.22.2. They are readable and resumable; deleting them fails. If that matters to you, archive or export the session instead of relying on deletion.

First, find out which build you are on

Patch releases are where “am I actually on the fixed version” stops being a rhetorical question, so check before you do anything else:

hermes version

The desktop app shows it in Settings ▸ About (that is also where the update channel switch lives, if you followed the stable-channel guide). Docker users read the tag they pulled: nousresearch/hermes-agent:stable moves to the new patch the next time you pull.

If you are on 0.22.1, update. If you are on 0.22.0, the same hermes update carries you straight to 0.22.2 and you get both fixes below.

hermes update

Fix 1: a supervised gateway starts after a reboot again

The gateway needs to know whether another gateway is already running on this machine before it takes over. It used the process ID it recorded, and there was a hole in that: after a reboot, Linux can hand a very early PID to an unrelated process. If the recycled PID happened to match the recorded one, the gateway concluded a live gateway was holding the machine and refused to start. Under systemd, launchd or Docker — where something is waiting to restart the service — that means a service that never comes up.

The fix is to stop trusting a bare PID and record something a reboot cannot fake:

  • Hermes records which boot it started in, and compares that against the current boot.
  • When the record cannot be compared — an older record format, or a boot time that cannot be read — it asks the host lock instead. The host lock is a file only a live gateway holds, so holding it is proof of life in a way that a PID is not.
  • The liveness check no longer creates the lock file as a side effect of looking, and argv identity was dropped from the check entirely, because a recycled PID can match a start time and a command line at the same time.

If your gateway has been refusing to start after reboots, upgrading fixes it without touching your unit file. Verify with the command your supervisor uses:

systemctl status hermes-gateway

Fix 2: long local-model turns survive on a laptop

Running a model locally changes the failure modes, because the model is now the slowest thing in the room and the machine it runs on can go to sleep. One pull request (#138560) closes four of them at once:

Symptom What changed
A long prompt looks like a hung turn Local requests always stream, and the status line shows prompt-reading progress while the server ingests
A turn that was asleep counts as thinking time Stall timers skip the time the machine spent suspended
Every message fails after one timeout, even after the server is back A recovered local server gets another attempt instead of a breaker that stays open
Compression times out while the model is still reading Compression no longer gives up while the server is ingesting a long conversation

On Windows machines with unified memory there is a fifth piece: model launch and the prompt cache are sized against free memory rather than total memory, so a machine that is already busy does not over-commit itself.

This matters most exactly where local models are most attractive — a laptop with a few GB of headroom, a long agent turn, and a user who closes the lid. If you are setting that up for the first time, the llama.cpp local-model guide walks through the runtime Hermes installs.

What else is in the 0.22 line since v0.22.0

Because 0.22.2 republishes the whole 0.22 line, a few smaller changes ride along that are worth knowing about:

  • Model picker: a curated model list sits at the top of the picker, NVIDIA NIM gains its default model list, and Nemotron 3.5 Super VL ships with default parameters.
  • Mistral routes: composite tool ids are re-paired before the provider sees them — Mistral caps tool ids at nine characters.
  • Profiles: a new profile inherits the bare custom launch model together with its endpoint, including env-referenced providers.
  • Terminal and search: your own tools come before Hermes’s on PATH, and local file search uses Hermes’s pinned ripgrep instead of the first rg on the machine.
  • Catalog: Korean and Brazilian Portuguese desktop language packs arrive, plus new catalog entries (author-feed, wait-ledger, openinvest, TeamoRouter, Hermes AAC, Agent Mixer).
  • Dependencies: httpx2/httpcore2 to 2.12.0 and the pinned npm packages bumped to clear audit findings.

The full curated notes for the 0.22 line live on the v0.22.0 Threshold release page and in the v0.22.2 release notes.

The takeaway

A patch release that replaces another patch release is worth one minute of your attention: check hermes version, run hermes update, and if you were on 0.22.1, treat the undeletable sessions as the one loose end and archive rather than delete. If you are setting up a fresh install, the install guide has the current one-liners.


Sources: the v0.22.2 release body and the compare range v0.22.1...v0.22.2 on the Hermes Agent repository; the gateway boot-identity work is PR #138594 (fixing issue #133744) and the local-model work is PR #138560.