Hermes releases & changes

Official releases and merged development work from the Hermes repository, plus headlines from around the web, all linking to the original records. We flag guides on this site that may need a second look.

New release? Get the next one explained.Notify me

The Weekly Watch is coming. Every Hermes Agent change that matters, explained in five minutes.

We'll only use your email to send the newsletter. Unsubscribe anytime. Privacy

Last successful collection: Oct 30, 2026. Dates shown in Pacific time.

Stable releasev0.22.5

Hermes Agent v0.22.5

Read the full upstream release notes

Hermes Agent v0.22.5

Release Date: October 22, 2026

> Patch release. This tag rolls up the ~81 PRs merged since v0.22.4 into a stable release for the GitHub release (CLI and installers), the Microsoft Store app, Docker and Hermes Cloud. Full curated notes for this window ship with v0.23.0.

<!-- HERMES_BUILDS_TABLE -->

About this release

Measured at commit bf0203a794a, the window since v0.22.4 contains 231 non-merge commits across 804 changed files (+35,212 / −17,885), 81 merged PRs and 30 closed issues.

Also in the window, undocumented here on purpose: Nous sign-in reworked (every sign-in is the plain device login, the free-tier guest hands over to your account, the result shows who signed in, connectors offer sign-in instead of opening a guest), hermes update holding back a stable release it refuses instead of offering it, Windows hermes update no longer stuck on the old launcher after a Python repin, usage-window plan support (plan gauges, limit cards and model-switch recovery for window-based plans), pluggable delegation backends (route subagents by model map or profile, switchable per session), plugin slash commands that can ask you to pick an option, hermes import-agent, OpenClaw migration, hermes mcp serve and the Singularity backend moving out of core into plugins (setup offers the importer when it finds another agent), Desktop drag-to-pin in the sidebar and one-click plugin installs with tier badges, the Electron 44 upgrade, Pillow 13 and a batch of dependency security bumps, a clear message when a chat's working folder is gone, hermes update recovering paused gateways after a damaged .git, long Claude DirectSDK answers no longer cut off by the stall timer, Desktop group chats showing which bot is working again, and the experimental webhook-mode MCP events client.

Full curated release notes for this window ship with v0.23.0, which will document everything from v0.22.0 onward — highlights, feature areas, and complete contributor credits. Nothing in this window is skipped.

Updating

  • Microsoft Store app: updates through the Store.
  • Desktop app installed from the installer (.exe / .dmg): no change in this release; it updates with the next bundled release.
  • CLI: hermes update, or re-run the installer one-liner.
  • Docker / Hermes Cloud: nousresearch/hermes-agent:stable (or :latest).

Full Changelog: v0.22.4...v0.22.5

Official release on GitHub (opens in a new tab)

Stable releasev0.22.4

Hermes Agent v0.22.4

Read the full upstream release notes

Hermes Agent v0.22.4

Release Date: October 21, 2026

> Patch release. Desktop stops showing suggestion pills above the composer, plus small plugin and dashboard fixes, for the CLI and installer, the Microsoft Store app, Docker and Hermes Cloud.

<!-- HERMES_BUILDS_TABLE -->

Fixes

  • Desktop no longer shows suggestion pills above the composer. The pills appeared for no clear reason, mostly nudging you to set up MCP servers. They and the helpers that only they used are gone. (#142559)
  • Plugins that install nothing skip the dependency consent step. A plugin that declares no dependencies, or whose pyproject.toml installs nothing, now enables without an empty consent prompt. (#142569)
  • Dashboard: WhatsApp can be safely re-paired after logging out. (#142439)
  • Desktop plugin review: the surface lint no longer flags prototype writes; reviewers check them by hand. (#142586)
  • Desktop: the approval-mode chip follows the active profile's mode. (#142565)
  • Release builds: the desktop bundle's pre-build check gets enough time to verify archived build inputs when storage is slow. (#142623)

Also new in the plugin catalog: bubblewrap (bwrap terminal backend on Linux), Singularity/Apptainer, mcp-serve (Hermes as an MCP server), agent-importers (hermes import-agent, now with Cursor), inbox and workflow-record from Hermes Labs. Telegram Business moves to the Hermes Labs community tier.

About this release

Measured at commit 4d04303818b, the window since v0.22.3 contains 14 non-merge commits across 82 changed files (+1,475 / −3,022) and 13 merged PRs.

Updating

  • Microsoft Store app: updates through the Store.
  • Desktop app installed from the installer (.exe / .dmg): no change in this release; it updates with the next bundled release.
  • CLI: hermes update, or re-run the installer one-liner.
  • Docker / Hermes Cloud: nousresearch/hermes-agent:stable (or :latest).

Full Changelog: v0.22.3...v0.22.4

Official release on GitHub (opens in a new tab)

Stable releasev0.22.3

Hermes Agent v0.22.3

Read the full upstream release notes

Hermes Agent v0.22.3

Release Date: October 21, 2026

> Patch release. This tag rolls up the ~620 PRs merged since v0.22.2 into a stable release for the CLI and installer, the Microsoft Store app, Docker and Hermes Cloud. Full curated notes for this window ship with v0.23.0.

<!-- HERMES_BUILDS_TABLE -->

About this release

Measured at commit 5b147ab036d, the window since v0.22.2 contains 2,911 non-merge commits across 4,206 changed files (+360,278 / −64,308), about 620 merged PRs and 326 closed issues.

Also in the window, undocumented here on purpose: MCP progress notifications streamed as live tool progress, a refreshed classic CLI layout (glyph transcript, status line under the composer, two-line header), OAuth clients that plugins declare and Hermes signs in and refreshes, hermes plugins update offering every available plugin update plus an Update button for git-installed plugins in Desktop, steering and editing a queued prompt from Desktop, a guided subagent model and provider picker in Desktop, a live /loop countdown row in the CLI and TUI, opt-in Telegram DM topic transfer, a post_compaction plugin hook, a capabilities catalog, the Microsoft Store build going live automatically when a release publishes, session auto-prune back to opt-in with a one-time prompt when disk runs low, Nemotron 3.5 Bolt and one-slot DFlash drafts in the local runtime, and dozens of new plugin catalog entries.

Full curated release notes for this window ship with v0.23.0, which will document everything from v0.22.0 onward — highlights, feature areas, and complete contributor credits. Nothing in this window is skipped.

Updating

  • Microsoft Store app: updates through the Store.
  • Desktop app installed from the installer (.exe / .dmg): no change in this release; it updates with the next bundled release.
  • CLI: hermes update, or re-run the installer one-liner.
  • Docker / Hermes Cloud: nousresearch/hermes-agent:stable (or :latest).

Full Changelog: v0.22.2...v0.22.3

Official release on GitHub (opens in a new tab)

Stable releasev0.22.2Explained

Hermes Agent v0.22.2

Replaces the mis-built v0.22.1 and gets supervised gateways starting after a reboot again

v0.22.2 is the release v0.22.1 was meant to be: 0.22.1 was built from the wrong commit, shipped unreleased gateway work, and could leave the Microsoft Store app stuck on 'Connecting.' On top of the fixes 0.22.1 was supposed to carry, it stops gateways refusing to start after a reboot and makes long local-model turns hold up on laptops.

  • A gateway run under systemd, launchd or Docker starts again after a reboot. Hermes no longer mistakes a recycled process ID for a gateway that is already running.
  • Long local-model turns are sturdier: requests stream with prompt-reading progress in the status line, stall timers ignore time the laptop was asleep, a local server that recovers gets another try, and compression no longer times out while a long conversation is still being read.
  • On Windows machines with unified memory, the local model launch and prompt cache are sized to the memory that is actually free.
  • New profiles created from the TUI inherit a bare custom launch model and its endpoint correctly, including endpoints written as ${VAR} references.
  • Tool calls on Mistral routes stay paired with their results, and the model picker shows a curated list at the top (Nemotron Super 3.5 defaults added).
  • When a CDN firewall blocks an update download, the error now says so instead of showing a bare HTTP 403.
After updating
  • If you installed v0.22.1, update to v0.22.2 (hermes update, the desktop updater, or the Microsoft Store).
  • Known issue: sessions that ran under the 0.22.1 gateway cannot be deleted in 0.22.2. Leave them alone for now rather than trying to force removal.
Read the full upstream release notes

Hermes Agent v0.22.2

Release Date: October 15, 2026

v0.22.1 was built from the wrong commit. It shipped unreleased gateway work, and the Microsoft Store app could stick on "Connecting." 0.22.2 is the release 0.22.1 was meant to be.

> Known issue: Sessions that ran under the 0.22.1 gateway can't be deleted in 0.22.2.

<!-- HERMES_BUILDS_TABLE -->

Highlights

  • The gateway starts after a reboot again. After a restart, Linux can hand an early PID to an unrelated process, and the gateway could mistake it for a running gateway, so a supervised gateway (systemd, launchd, Docker) refused to start. Hermes now records the boot it started in, and when it can't tell, it asks the host lock, which only a live gateway holds. (#138594, fixes #133744)
  • Long local-model turns survive on laptops. Local requests always stream with prompt-reading progress (shown in the status line), stall timers skip time the machine was asleep, a recovered local server gets another try instead of a breaker that failed every later message, and compression no longer times out while the server is still reading a long conversation. On Windows unified-memory machines, model launch and the prompt cache are sized to free memory. (#138560)

Below is everything in the 0.22 release line since v0.22.0: the fixes 0.22.1 was meant to ship, plus the two above. Work that is only on main ships with v0.23.0.

✨ Features

  • Release: split the Microsoft Store bundle into its own windows-store lane (f9d8a740) — @ethernet8023
  • Agent: add nemotron super 3.5 default parameters (c59d2994) — @elisam0
  • Cli: add nemotron to NVIDIA NIM default model list (cc55270e) — @elisam0
  • Cli: add curated model list at the top in the model picker list (e6835fd3) — @elisam0
  • Release: choose what a stable release builds and tests with lanes (36a8ee18) — @ethernet8023
  • Plugin-catalog: add hermes-lang-ko — Korean Desktop language pack (e5f49b6a) — @dandacompany
  • Plugin-catalog: add hermes-lang-pt-br (Brazilian Portuguese language pack) (0169e80c) — @StudioCodeAI
  • Contributors: add 2867297362mjb-sketch email mapping (9ab40641) — @2867297362mjb-sketch
  • Plugin-catalog: add teamorouter (TeamoRouter model providers) (ef223406) — @2867297362mjb-sketch
  • Plugin-catalog: add author-feed (5f6d6836) — @TakeshiTGAL
  • Plugin-catalog: bump aux-ledger to 1.4.0 (6048066e) — @olric3015
  • Plugin-catalog: add the wait-ledger catalog card (77cb58e5) — @olric3015
  • Plugin-catalog: add wait-ledger (97e65322) — @olric3015
  • Community plugin: lightningai + lightningai-rate-limit (07515466) — @dinosauria123
  • Catalog: add Hermes AAC 0.1.0 at reviewed exact source pin (7c9adda8) — @TREE-Ind
  • Plugin-catalog: add openinvest (b6e86101) — @longsizhuo
  • Catalog: add hermes-agent-mixer (v0.2.0 @ 04c4e13) (2e7e3859) — @Sahil-SS9
  • Plugins: move Kumiho Memory to memory catalog shelf (46f95e08) — @kaveone
  • Release: dispatch Stable Release from the default branch (667e6639) — @ethernet8023

🔧 Improvements

  • Agent: keep the Mistral tool-id rule beside its only consumer (c5fc0958) — @kshitijk4poor
  • Profiles: build the seed routing view once; expand enabled too (311155fa) — @kshitijk4poor
  • Profiles: simplify the model seed and trim its tests (d9dfb124) — @kshitijk4poor
  • Update nemotron super 3.5 name (3224993a) — @elisam0
  • Hermes_cli: update nemotron 3.5 name (108ae4e7) — @elisam0
  • Catalog: re-pin showly to the build without the upstream self-update check (6462f64a) — @slchris
  • Catalog: update Model Router to v0.4.3 native preferences (6a097ee9) — @metamindedu

🐛 Bug Fixes

  • Gateway: a recorded boot epoch that cannot be compared is unprovable (79b3b724) — @ethernet8023
  • Local: keep long local-model turns alive on laptops (518ce272) — @emozilla
  • Gateway: a read-only host-record check never creates the lock file (91e63f84) — @kshitijk4poor
  • Gateway: let the host lock decide a legacy record that looks older than this boot (4d984677) — @ethernet8023
  • Gateway: anchor the legacy host-record check on boot time, not a live create_time (5b416e42) — @ethernet8023
  • Gateway: drop argv identity from host rendezvous liveness (c7fa3cbf) — @sin5ddd
  • Gateway: reject a recycled PID that only matches start ticks (7934442e) — @sin5ddd
  • Tui: keep a ${VAR} bare-custom endpoint as a ref in the new profile (dd2db134) — @kshitijk4poor
  • Tui: a new profile inherits a bare custom launch model with its endpoint (463d4019) — @kshitijk4poor
  • Release: a Store-only Windows build gets no signing vars; Store-plus-macOS smokes record only macOS (a8cc19eb) — @ethernet8023
  • Agent: keep composite tool ids paired on Mistral routes (0c1bfb7d) — @kshitijk4poor
  • Agent: rewrite split tool ids before Mistral sees them (b33ed359) — @xxxigm
  • Release: macOS smoke runs when no receipt was staged (f546ea2f) — @ethernet8023
  • Install-e2e: preserve bundled Windows process arrays (6db1934d) — @Oceanswave
  • Profiles: match env-referenced endpoint names when seeding a profile (7b755ed5) — @kshitijk4poor
  • Profiles: drop every same-identity destination entry when merging (9a9a6e43) — @kshitijk4poor
  • Profiles: match endpoint identity the way runtime does when merging (ef57cbd9) — @kshitijk4poor
  • Profiles: keep URL-less destination entries when merging the endpoint seed (2aa469f7) — @kshitijk4poor
  • Profiles: inherited endpoint is not shadowed by the profile's own entries (ac0b63af) — @kshitijk4poor
  • Profiles: select the seeded endpoint from an env-referenced provider (c85302a2) — @kshitijk4poor
  • Profiles: keep bare custom provider tuning in the model seed (424aa90f) — @kshitijk4poor
  • Profiles: reuse named provider lookup without credential reads (c8a777ff) — @helix4u
  • Profiles: align model seed with provider resolution (5fee8d77) — @helix4u
  • Profiles: inherit canonical and legacy custom endpoints (2d3e75aa) — @helix4u
  • Drop the VPN/proxy advice from the CDN-block message (300228d2)
  • Scope the no-cf-cache-status block signal to our R2 host; keep it on 429s (ec5fa1e4)
  • Name a CDN firewall block instead of a bare HTTP 403 (#128295) (#128295)
  • Release: termux-only claims finish and partial releases keep the shared downloads page (6743ab71) — @ethernet8023
  • Ci: packaged-update acceptance retries a download whose connection resets (db4a6a9e) — @ethernet8023
  • Catalog: re-pin Agent Mixer after maintainer review (4297a692) — @Sahil-SS9
  • Pin Activity v0.2.1 public credential routes (3dac1f07) — @hassan-kamel
  • Plugin-catalog: update jp-egov-law to f1dd47e (c029046d) — @TakeshiTGAL
  • Plugin-catalog: update switchbot-control to d0e6f77 (c4bf61b1) — @TakeshiTGAL
  • Install-e2e: the Windows packaged-app feed serves byte ranges (1f6c02c0)
  • Pm: re-merge the uv cache seed on volumes marked by a seedless image (1226894b) — @ethernet8023
  • Release: publish replaces the stable head instead of create-only (df8c3ca5)
  • Release: keep a stable run on main from using the controller commit or cancelling pushes (0dbd96ab) — @ethernet8023
  • Pm: stage a version for version-less buildable plugin members too (3d8dfc1d) — @ethernet8023
  • Pm: don't stamp project.version on members declaring it dynamic (2a10164c) — @Ieqzya
  • Pm: give generated virtual workspace members a project.version ([357986e5](https://github.com/NousResearch/hermes-agent/commit/3579

Official release on GitHub (opens in a new tab)

Stable releasev0.22.1Explained

Hermes Agent v0.22.1

A short-lived patch built from the wrong commit; skip it and take v0.22.2

v0.22.1 was announced as a small patch with fixes for the Windows Store, plugin updates and more. According to the v0.22.2 notes, it was actually built from the wrong commit, shipped unreleased gateway work, and could leave the Microsoft Store app stuck on 'Connecting.' v0.22.2, released the next day, replaces it.

  • Intended changes, all of which are in v0.22.2: Nemotron Super 3.5 default parameters and a curated model list at the top of the model picker.
  • New plugin catalog entries, including Korean and Brazilian Portuguese Desktop language packs and the TeamoRouter model providers.
  • The notes also list a long run of internal gateway, session and worker changes. Per the v0.22.2 notes, this unreleased gateway work should not have shipped in a stable release.
  • Microsoft Store installs could get stuck on 'Connecting' after this update.
After updating
  • Do not stay on v0.22.1. Update to v0.22.2.
  • If the Microsoft Store app is stuck on 'Connecting', updating to v0.22.2 through the Store is the fix the notes describe.
  • Sessions that ran under the 0.22.1 gateway cannot be deleted in 0.22.2 (known issue listed in the v0.22.2 notes).
Read the full upstream release notes

Hermes Agent v0.22.1 (rc.5-v0.22.1)

Release Date: October 14, 2026

This is a patch release, with a handful of fixes for the Windows Store, plugin updates, and more.

✨ Features

  • Agent): add nemotron super 3.5 default parameters (c59d2994) — @elisam0
  • Cli): add curated model list at the top in the model picker list (e6835fd3) — @elisam0
  • Plugin-catalog): add hermes-lang-ko — Korean Desktop language pack (e5f49b6a) — @dandacompany
  • Plugin-catalog: add hermes-lang-pt-br (Brazilian Portuguese language pack) (0169e80c) — @StudioCodeAI
  • Plugin-catalog: add teamorouter (TeamoRouter model providers) (ef223406) — @2867297362mjb-sketch
  • Plugin-catalog): add author-feed (5f6d6836) — @TakeshiTGAL
  • Plugin-catalog): bump aux-ledger to 1.4.0 (6048066e) — @olric3015
  • Plugin-catalog): add the wait-ledger catalog card (77cb58e5) — @olric3015
  • Plugin-catalog): add wait-ledger (97e65322) — @olric3015
  • Community plugin: lightningai + lightningai-rate-limit (07515466) — @dinosauria123
  • Catalog: add Hermes AAC 0.1.0 at reviewed exact source pin (7c9adda8) — @TREE-Ind
  • Plugin-catalog): add openinvest (b6e86101) — @longsizhuo
  • Catalog: add hermes-agent-mixer (v0.2.0 @ 04c4e13) (2e7e3859) — @Sahil-SS9
  • Plugins): move Kumiho Memory to memory catalog shelf (46f95e08) — @kaveone
  • Add canonical group attachment controls (4673f17c)
  • Consume event-bound hosted files through canonical admissions (e87bd098)
  • Connect Desktop groups to canonical driver controls (3c2c9d47)
  • Transport hosted producers through authenticated owner sockets (51189b05)
  • Retain hosted room work evidence across authority changes (0af2c714)
  • Route hosted room workers through session authority (bd22e0f9)
  • Wire canonical hosted group controls (fa2179bb)
  • Gateway): resolve --resume <title> and -c <title> [--create-if-missing] in the authority (11a83ad4)
  • Retain terminal identity tombstones during history retirement (ba435291)
  • Route native CLI and ACP actions through prepared controls (27b0f7f2)
  • Publish real prepared compression in the mutation receipt transaction (b6540276)
  • Prepare and atomically publish local model changes (7e7fa7c6)
  • Commit independent local branch policy and route atomically (f98eaec1)
  • Project managed tool progress without private arguments or results (61ccd894)
  • Bridge managed worker approvals clarification and stop (a0b5118f)
  • Launch admission-owned tool workers from the ordinary daemon (510e32be)
  • Enforce safe defaults at bare agent construction (1eeac867)
  • Suppress rules skills and memory readers in private safe workers (25cda66a)
  • Bypass plugin providers and hook execution in safe workers (33921e6f)
  • Bind immutable private worker config before runtime imports (4cc3f420)
  • Expose verified canonical ACP editor MCP attachment (1bda56a1)
  • Rebind exact editor MCP credentials on canonical ACP resume (5bfa2f2c)
  • Borrow editor MCP configurations with frozen session manifests (394f00f6)
  • Isolate execution-owned MCP registry overlays (96e4d296)
  • Commit local reset targets with runtime mutation receipts (821137c3)
  • Expose profile-scoped Bot relay mailbox RPCs on the authority (792aa35a)
  • Migrate queued Bot mailbox identities without replaying claims (af49e2fc)
  • Send local Bot DMs to the discovered canonical authority (47ba694e)
  • Admit identified Bot Chat relay deliveries through session authority (998df8cc)
  • Reserve exact owner-started admission worker claims (fbdfd46d)
  • Expose authenticated owner mutation snapshots (d6331c48)
  • Freeze ACP tool policy and bind execution-owned edit consent (e2f5cfc6)
  • Reserve hosted API identities through the authority (6b278ca4)
  • Admit API runs before acknowledging execution (f2d9cea3)
  • Run bound API turns on the shared cached agent (dea4f0c5)
  • Restore server-bound API session identities (76532ae1)
  • Retain claim-fenced structured admission results (262e0ebf)
  • Compose worker compression lifecycle and delegation persistence (6c57ad37)
  • Publish committed worker completions through authenticated owner bridge (d94ccc2d)
  • Fence delegation receipts with shared worker sequence and epoch (be85ca24)
  • Route registered worker delegation writes through durable outbox (1ee6545f)
  • Add execution-bound delegation ledger operations (8128e88f)
  • Persist worker titles activity and route sidecars with receipts (235e4f12)
  • Add assignment-fenced worker constructor and finalization handlers (b7de5a8e)
  • Atomically compact and advance worker transcript assignments (c2e77eba)
  • Preserve worker history and cache lineage identities (e63e1101)
  • Add receipted worker compression guards and leases (d51afe4c)
  • Route REST imports and deletion through mutation receipts (2cdd103d)
  • Route REST sidebar edits through the shared authority (eb329d21)
  • Coordinate shared mutations and publish committed revisions (eb42a002)
  • Reuse transactional rewind with generation and receipt fences (6777ffa4)
  • Import session histories atomically with retry receipts (b9194595)
  • Fence destructive deletion without erasing runtime obligations (e5249c9a)
  • Commit sidebar edits with canonical mutation receipts (0b1b8e0f)
  • Project execution-owned approvals to ACP viewers (97a24c10)
  • Attach ACP transport to canonical session execution (8dd92a30)
  • Persist assigned worker prompt context and usage anchors (c6540cb9)
  • Admit local automation through owner durable FIFO (1642b339)
  • Queue due gateway heartbeat ticks through canonical admission (ab44af2c)
  • Admit trusted gateway completions to the durable session FIFO (7cd1b000)
  • Fence worker terminal receipt after sequenced durable writes (21a48aea)
  • Authenticate live worker persistence and explicit restart adoption (9d7d7e2a)
  • Receipt worker main and auxiliary usage in canonical transactions (9d896c49)
  • Atomically receipt structured worker transcripts and turn leases (2abe47de)
  • Dispatch bound local slash commands through gateway handlers (b0377e92)
  • Share authenticated canonical slash discovery with legacy catalogs (fcf50e03)
  • Authenticate native HTTP through private daemon grants (75764b2a)
  • Com

Official release on GitHub (opens in a new tab)

Stable releasev0.22.0Explained

Hermes Agent v0.22.0 — The Threshold Release

The Threshold Release: guided first launch, connectors, one-click local models and stable update channels

v0.22.0 is the largest Hermes release so far and fully documents everything since v0.21.0, including the v0.21.1 to v0.21.7 patches. For day-to-day users the big shifts are how Hermes is installed and updated (signed desktop packages, tested stable releases by default), how it reaches other apps (Connectors) and the option to run models entirely on your own machine. Several things also moved: memory providers became plugins and all profiles now share one gateway.

  • A fresh desktop install opens with a short setup chat on a free trial model (nous/welcome), so you can start without an API key. Skip setup ends it, and Settings → Run onboarding again brings it back.
  • Connectors let the agent act in hosted apps such as Linear and Notion after one browser sign-in, with no Nous account needed to start. A new Connectors page in Desktop lists hosted apps and your MCP servers together (it replaces the MCP tab), and /connectors or hermes connectors manage named accounts such as work and home.
  • Local models in one click: Hermes installs and maintains llama.cpp for your hardware, rates catalog models against your GPU and RAM, and starts or stops the server with Hermes. Open Settings → Providers → Local Models, or hermes model → Local models in a terminal.
  • Source installs now update from one tested release to the next instead of following every commit on main. Moving to an older release is labelled a rollback and never happens without asking.
  • One messaging gateway and one desktop backend now serve every profile on a machine. Each profile keeps its own credentials, allowlists, cron jobs and sessions, and new profiles go live without a restart.
  • New models (Claude 5.5 family, GPT-6 family, Gemini 4 Argon), a picker that shows favorites, remaining subscription quota and reasoning effort (/model X --reasoning high), prior reasoning replayed across resume and compaction, and brief provider outages (503/529/timeouts) waited out instead of ending your turn.
After updating
  • If you want to keep tracking every commit, run hermes update --set-channel main (or use the channel switch in Desktop Settings → About). Otherwise you will now only move between published releases.
  • Memory providers (Honcho, Supermemory, Hindsight, Mem0, OpenViking, Holographic) plus Home Assistant, Spotify and Langfuse now ship as catalog plugins. Existing users are migrated automatically, but check that your memory provider and these integrations still load after updating.
  • Per-profile gateway setups are migrated to the single shared gateway by hermes update. Afterwards, confirm each profile's bots still respond.
Read the full upstream release notes

Hermes Agent v0.22.0

Release Date: October 13, 2026

Since v0.21.0: ~24,200 commits · ~6,080 merged PRs · ~15,600 files changed · ~2,045,000 insertions · ~1,140,000 deletions · ~7,180 issues closed · ~2,520 contributors

> The Threshold Release. Hermes was the god of thresholds: the doorway, the crossing, the boundary stone. v0.21.0 assembled the pantheon; v0.22.0 is about getting through the door. A fresh desktop install now opens on a guided setup chat that runs on a free trial model, so a newcomer is talking to Hermes before they own an API key. Connectors carry the agent across into the apps you already use, with no account needed to start. Local models bring it home to your own hardware with a one-click llama.cpp runtime. And the threshold itself got sturdier: tested SemVer stable releases that installs follow by default, signed desktop packages (including the Microsoft Store), and one package manager underneath everything. Around that spine: a 600-plugin catalog, the Claude 5.5 / GPT-6 model wave, password-manager sign-in for the browser, a bot screen you can take over, one backend and one gateway for every profile, and a codebase a third smaller. This is the largest window Hermes has shipped, about 2.5x the v0.21.0 cycle, and it rolls up and fully documents the v0.21.1–v0.21.7 patch releases.

<!-- HERMES_BUILDS_TABLE -->

---

✨ Highlights

  • A first launch that sets itself up — Open the desktop app on a computer where you have never used Hermes and it starts a short setup chat instead of a settings screen. One card at a time it asks your name, an accent color and a layout, which apps to connect, which plugins to install, then gives a quick tour and offers up to four first tasks picked for you. It runs on a free trial model (nous/welcome, once per OS user), so it needs no key; Skip setup ends it and Settings → Run onboarding again brings it back. The agent also gained set_theme, so "make it violet, dark mode" works in any desktop chat. (#137429, #137522, #137807, #134209, #105258 — @alt-glitch, @OutThisLife, @ethernet8023, @rewbs)
  • Connectors: Hermes works inside your apps — The agent can now act in hosted apps such as Linear and Notion through the Nous tool gateway: ask for an app, sign in once in your browser, and the tools are usable in the same turn. You do not need a Nous account to start; the first time you use an app, Hermes creates a free connectors-only identity. The desktop has a new Connectors page that puts hosted apps and your MCP servers in one list (it replaces the MCP tab), the same setup card appears in the TUI and CLI, and you can connect several named accounts of one app (a work and a home account) and manage them with /connectors or hermes connectors. (#106842, #111008, #119074, #135143, #135072, #135097, #135151, #135173, #137426 — @alt-glitch, @rewbs)
  • Local models in one click — Hermes can now run open models entirely on your machine with nothing leaving it: no account, no API key. It installs and maintains llama.cpp with the right engine for your hardware (CPU, CUDA, Metal, Vulkan or ROCm), rates every catalog model against your GPU and RAM, and picks the highest-quality build that fits. Downloads pause and resume, the server starts and stops with Hermes, and engine updates are one click. Start from Settings → Providers → Local Models on Windows, macOS and Linux, or hermes model → Local models in a terminal. The catalog includes Qwen3.8 27B, Qwen3.8 Flash Next (with its MTP speculative head), Qwen3.6 35B-A3B and DeepSeek V4 Flash, plus any GGUF from Hugging Face. (#100667, #101823, #128768, #111423, #133111, #134116 — @jquesnelle, @ethernet8023)
  • Stable release channels — Hermes now ships tested SemVer releases. Every release passes source CI, Docker, Nix, signed desktop builds and install/upgrade runs on every OS before it is published, and source installs now move from release to release by default instead of tracking every commit on main. Prefer the bleeding edge? hermes update --set-channel main, or the new channel switch in Desktop Settings → About. Moving to an older release is labelled a rollback and never happens without asking, and installer reruns keep you on the channel you chose. (#102765, #135847, #135949, #136313, #137780 — @ethernet8023, @KoNit-K)
  • Signed desktop packages, the Microsoft Store, and one package manager — The desktop app is now a sealed, signed package that carries its own Python and Node and updates itself, so first launch builds nothing. Windows gets a signed MSIX (x64 and ARM64) through App Installer or the Microsoft Store; macOS gets a signed, notarized build for Apple Silicon. Underneath, a new unified package manager (hermes pm) owns every pinned, hash-checked tool and Python environment: updates build a new environment and switch only once it passes its check, so a failed or killed update can no longer leave you half-applied. (#102765, #132361, #132386, #120339, #122221 — @ethernet8023)
  • The Plugin Catalog: 600 reviewed plugins — The plugin catalog launched this cycle and grew to 600 entries, each pinned to a reviewed commit and installable from Hermes Desktop or the CLI. Browse by category and star ranking with a page per plugin and per author; catalog rules keep listed plugins from patching Hermes internals or shipping unscannable binaries. Memory providers now live with their makers (Honcho, Supermemory, Hindsight, Mem0, OpenViking, Holographic), as do Home Assistant, Spotify and Langfuse: existing users are migrated automatically, and the default install got leaner. (#69446, #111415, #117808, #113381, #114732, #131267, #132476, #136436 — @itpartypattaya, @happy5318, and 400+ plugin authors)
  • The Claude 5.5 and GPT-6 model wave — Claude Fable 5.1, Opus 5.5, Sonnet 5.5 and Haiku 5.5, GPT-6 Astra, Sol and Luna plus GPT-6.1 Sol, and Gemini 4 Argon are pickable on Nous Portal, OpenRouter and native routes where offered. Prior reasoning is now replayed by default on every provider that can read it, across resume, branches and compaction, so long multi-step work keeps its train of thought. And when a provider has a bad hour, Hermes waits out transient 503/529/timeouts in visible, bounded cycles instead of ending your turn. (#100577, #119304, #126842, #134759, #128248, #137955, #136358, #116353 — @kshitijk4poor, @unsupportedpastels, @100yenadmin, @mssteuer, @xxxigm)
  • Sign in to websites with your password manager — The browser agent can log into sites with logins from 1Password, Bitwarden or Hermes's own encrypted vault, and the model never sees the password. If nothing is saved, you get a masked prompt in the CLI, TUI or Desktop to save it, one-time codes are filled without entering the conversation, and card and address fills at checkout need your confirmation. (#106480, #107585, #137084)
  • Bot Screen: watch your bot work, take over when it needs you — A bot running on a Linux gateway can have its own desktop that Hermes Desktop streams live. When it hits a login, a 2FA prompt or a CAPTCHA, you take the screen, finish the step yourself, and hand control back while the bot carries on with your session. With a Docker, SSH or Singularity backend, the bot's screen, computer use and the browser run inside the sandbox, never on your host. (#108914, #121169, #121110)
  • One backend and one gateway for every profile — Hermes now runs a single messaging gateway and a single desktop backend per machine that serve all of your profiles, instead of one process per profile. Creating a profile makes its bots live without a restart, each profile keeps its own credentials, allowlists, cron jobs and sessions, and hermes update migrates existing per-profile setups automatically. Fewer processes, no token clashes, one thing to start and stop. (#112854, #108928, #118273, #117983, #118246, #118027)
  • See and steer your subagents live — Running subagents now stay visible above the composer in the CLI (F6), TUI (Ctrl+T) and Desktop with each child's task, elapsed time and live transcript, plus Steer and Stop buttons. /stop reaches background children and hands back their partial work, and delegate_task can pass screenshots and mocks to vision-capable children. (#105593, #115616, #97689)
  • A model picker that knows your plans — Star your favorite models, see a subscription running low ("17% left · resets 3:00 PM") and when a rate limit lifts right in the picker, and pick reasoning effort as part of choosing a model in hermes model, /model (/model X --reasoning high) and Desktop. You switch before you hit the wall instead of after. (#126535, #133392, #133408, #110346, #113117 — @OutThisLife, @anotherchu)
  • Hermes in your language, everywhere — Every user-facing string in the CLI, messaging gateway, TUI and Desktop now goes through one translation catalog with full coverage in all 16 bundled languages. New languages can ship as plugins, and any profile can override individual strings with a small YAML file. (#126296)
  • Leaner in every sense — The whole codebase was simplified with zero behavior change: source went from about 1.06M to 698K lines (−34%) and gateway/run.py shrank from 34,847 lines to 5,512. Prompts got lighter too: about 19 rarely used tools now load only when the agent searches for them, roughly halving the desktop tool schema sent on every call, and another ~2.1k tokens came off the fixed prompt. Local models prefill less on every turn. (#102117, #97979, #106676, #137084 — @alt-glitch)
  • Small comforts that add up — Opt-in vim keys in the CLI prompt, a git-branch field in the status bar, a bell and desktop notification when Hermes is waiting on y

Official release on GitHub (opens in a new tab)

Stable releasev0.21.7Explained

Hermes Agent v0.21.7

Source installs now update to tagged releases instead of every commit

A patch that rolls about 204 merged PRs into a stable build for the desktop app, Microsoft Store and MSIX, the installer, Docker and Hermes Cloud. The change most people will notice is that a git-based install now updates to the latest published release rather than the tip of main. Fuller notes for this window are in the v0.22.0 release.

  • hermes update on a source install of the official repo now moves to the latest published vX.Y.Z release. Forks and mirrors keep following main, and Store, MSIX and bundled desktop installs are unchanged.
  • An install that is already newer than the latest release stays where it is and waits for the next one. Nothing is moved backwards.
  • The desktop app has an Update channel switch (Stable releases / Every commit) under Settings ▸ About ▸ Updates, and the update dialog shows which channel you are on.
  • Reasoning carries over after hermes chat --resume and on the next gateway turn, and Bedrock Converse reasoning models no longer get rejected on resumed sessions.
  • Updates no longer fail behind some regional firewalls, and the stable check uses your GitHub token when one is set and reports a rate limit as a rate limit.
After updating
  • To keep following every commit on main, run hermes update --set-channel main.
  • If update checks hit GitHub rate limits, set GITHUB_TOKEN or run gh auth login so the check uses your token.
Read the full upstream release notes

Hermes Agent v0.21.7

Release Date: October 11, 2026

> Patch release. This tag rolls up the ~204 PRs merged since v0.21.6 into a stable release for the desktop app (macOS Apple silicon, Windows), the Microsoft Store and MSIX, the installer, Docker and Hermes Cloud. Full curated notes for this window ship with v0.22.0.

<!-- HERMES_BUILDS_TABLE -->

What this patch ships for source installs (hermes update and the desktop app's updater on a git checkout):

  • Updates now follow tagged releases. A source install of the official repository updates to the latest published vX.Y.Z release instead of every commit on main. An install already newer than the latest release stays where it is and waits for the next one; nothing is moved back. To keep following every commit: hermes update --set-channel main. Forks and mirrors keep following main. Store, MSIX and bundled desktop installs are unchanged.
  • Choose the channel in the desktop app. Settings ▸ About ▸ Updates has an *Update channel* switch (Stable releases / Every commit) for source installs, and the update dialog now shows which channel you are on.
  • Reasoning survives resume. Signed thinking replays after hermes chat --resume and on the next gateway turn, and Bedrock Converse reasoning models no longer get rejected on resumed sessions.
  • Updates no longer fail behind some firewalls. Installs on main no longer fetch a release record that regional firewalls could answer with 403. The stable check uses your GitHub token when one is set (GITHUB_TOKEN or gh auth login) and reports a GitHub rate limit as a rate limit.

About this release

Measured at commit 1fd18277267152893a8a24792b79213e7ca3f899, the window since v0.21.6 contains 740 non-merge commits across 4,156 changed files (+86,775 / −26,980), 204 merged PRs and 69 closed issues.

Also in the window, undocumented here on purpose: plugins running built-in Desktop app actions (ctx.runAction) and a plugin SDK pet bubble (ctx.pet.say); core-made Codex requests so plugins never hold the token; skills installed mid-session reaching the model without a prompt rebuild; Krea 2 Medium Turbo as the default image lane for new paid subscribers, with a FAL fallback when managed Krea refuses a request; faster desktop updates (the React Compiler pass cached by content, the compiled renderer reused when only the install stamp changed, unchanged native inputs left in place); pinned installs that check out only the pin; compaction marks emitted to Relay; and new community plugins including memory-shield, command-ledger, Memoria, Model Router, wyoming-voice-bridge, codex-account-switch and redline.

Full curated release notes for this window ship with v0.22.0, which will document everything from v0.21.0 onward — highlights, feature areas, and complete contributor credits. Nothing in this window is skipped.

Updating

  • Desktop app: updates itself. Microsoft Store installs update through the Store.
  • CLI: hermes update, or re-run the installer one-liner.
  • Docker / Hermes Cloud: nousresearch/hermes-agent:stable (or :latest).

Full Changelog: v0.21.6...v0.21.7

Official release on GitHub (opens in a new tab)

Stable releasev0.21.6Explained

Hermes Agent v0.21.6

Security fixes for dashboard sign-in, untrusted git repos and email sender checks

The first release cut by the new stable pipeline, shipped as a tag, a GitHub release and a Docker image; the desktop app, Termux and Microsoft Store stayed on their existing builds. Its notes itemize only security fixes, covering dashboard sign-in, git filters in untrusted repositories and the email gateway allowlist. The roughly 2,100 other PRs in the window are documented in v0.22.0.

  • Dashboard sign-in hardening: spoofed X-Forwarded-For headers can no longer reset the login rate limit, login codes can no longer be sent to a non-local redirect (which allowed session takeover), and the public /auth/ routes now have request size limits.
  • Automatic git operations (workspace snapshots, subagent worktrees, kanban, hermes -w) no longer run filter programs defined in an untrusted repository's own config.
  • The email gateway no longer lets a crafted display name in the From header pass the sender allowlist.
  • Also in this window, without detail in these notes: live transcription while you speak (stt.streaming), approval prompts for credential uploads and invisible Unicode in terminal commands, a summary-first hermes status (--short, --full), and a Discord setup that checks the bot token.
After updating
  • If you expose the dashboard beyond your own machine, use the email gateway, or let Hermes work in repositories you did not write, update promptly.
  • Desktop app and Termux users get these changes with the next bundled release. This tag does not update them.
Read the full upstream release notes

Hermes Agent v0.21.6

Release Date: October 8, 2026

> Patch release. This tag rolls up the ~2,100 PRs merged since v0.21.5 into a stable tagged release for Docker and Hermes Cloud. Full curated notes for this window ship with v0.22.0.

<!-- HERMES_BUILDS_TABLE -->

About this release

This is the first release cut by the new stable release pipeline: one attempt ref, a tested Docker image, and a receipt tag at publish. It ships the tag, this GitHub release and the Docker image. The desktop app, Termux packages and the Microsoft Store stay on their current build for now and move with the next bundled release.

Measured at commit 818c13be1dc4fd28987e1e881a9408224afd4535, the window since v0.21.5 contains 8,867 non-merge commits across 8,342 changed files (+772,490 / −225,600), 2,106 merged PRs and 3,027 closed issues.

Also in the window, undocumented here on purpose: live transcription while you speak on CLI, TUI and Desktop (stt.streaming); spoken voice turns routed to their own model (auxiliary.voice_chat) with reasoning off by default; third-party plugins running in a per-profile plugin host (plugins.isolation: host) and one Settings ▸ Plugins home for their settings pages; favorite and pinned models at the top of the Desktop picker, a usage chip before a subscription hits its wall, and rate-limited providers that say why and until when; local models in hermes model plus llama.cpp CUDA on Linux x64 and arm64; pluggable, layered language packs across core, Desktop and TUI; a summary-first hermes status (--short, --full); a review-pane diff scope selector (Uncommitted / Branch / Last turn) and keep-awake that follows the turn; cron, doctor and home-channel warnings when the cron store goes unwritable; approval flags for credential uploads and invisible Unicode in terminal commands; a Discord setup that checks the bot token and prints the invite link; a unified Kanban workflow definition; activate.fish; GPT-6.1 Sol and Claude Sonnet 5.5 / Haiku 5.5 in the catalogs; and dozens of new community plugins.

Full curated release notes for this window ship with v0.22.0, which will document everything from v0.21.0 onward — highlights, feature areas, and complete contributor credits. Nothing in this window is skipped.

Updating

  • Docker / Hermes Cloud: nousresearch/hermes-agent:stable (or :latest).
  • CLI (git installs): hermes update, or re-run the installer one-liner.
  • Desktop app and Termux: no change in this release; they update with the next bundled release.

Security Fixes

Dashboard authentication hardening

  • Spoofed X-Forwarded-For headers could reset the password-login rate limit and get around the per-IP cap on native sign-in (#133367)
  • Unauthenticated login requests could write unbounded values to the auth audit log (#133369)
  • The public /auth/ routes had no request-body size limit (#133370)
  • Native sign-in could send login codes to a non-loopback redirect, which allowed session takeover (#130685)

Thanks to Tenable Research for reporting all four issues (TRA-725, TRA-726, TRA-727, TRA-728). The native sign-in redirect issue was also reported independently and fixed by @Froraut. The X-Forwarded-For fix builds on community work by @hinotoi-agent and @BearHuddleston (#40285).

Repository git filter hardening

  • Automatic git calls (session workspace snapshot, subagent worktrees, kanban, worktree cleanup, hermes -w) could run clean/smudge/process filter programs defined by an untrusted repository's own config, before the first prompt (#130661)

Thanks to 燕涛 for reporting this privately. It was also reported and fixed publicly by @jonpol01 (#126017, #126019) and @JoaoMarcos44 (#126075).

Email gateway sender hardening

  • A quoted display name in the From header (e.g. "Victim <victim@example.com>" <attacker@evil.test>) could make an attacker's message pass the email allowlist as an allowed sender (#125212)

Thanks to Daniel Steele (@keeltrace) for reporting this and writing the fix (#124322).

Full Changelog: v2026.9.24...v0.21.6

Official release on GitHub (opens in a new tab)

Stable releasev2026.9.24Explained

Hermes Agent v0.21.5 (v2026.9.24)

v0.21.5 rollup: Desktop Connectors page, Simple/Advanced mode and new model catalog entries

A patch release (v0.21.5) that rolls about 460 merged PRs into a tagged build for Docker images, Hermes Cloud and hosted deployments. The notes only summarize the window, and the full details are in the v0.22.0 release notes.

  • Desktop gained a Simple/Advanced interface mode, and a Connectors page replaced the MCP tab, with Connect now for a newly installed plugin's MCP servers.
  • Tools and skills from newly installed plugins go live in every open chat without restarting.
  • Full French, German and Spanish Desktop translations, plus a right-to-left/left-to-right text direction setting.
  • Custom model entry from the composer and Settings pickers, and GPT-6 Sol/Terra/Luna and Claude Opus 5.5 in the Nous and OpenRouter catalogs.
  • Per-profile stop, start and restart under the shared gateway host, with gateway.standalone to opt a profile out, and the CLI/TUI live dock now shows the standing /goal and queued prompts.
  • Webhook deliveries are mirrored into the target chat session, and performance work landed across config loading, the tool registry, gateway message handling and the model picker.
Read the full upstream release notes

Hermes Agent v0.21.5 (v2026.9.24)

Release Date: September 24, 2026

> Patch release. This tag rolls up the ~460 PRs merged since v0.21.4 into a stable tagged release for downstream consumers (Docker images, Hermes Cloud, hosted deployments). Full curated notes for this window are deferred to v0.22.0.

About this release

Measured at commit f97608f178d1ffeca59860195ab7da295f7c8e5f, the window since v0.21.4 contains 1,610 non-merge commits across 4,828 changed files (+164,132 / −149,440), 460 merged PRs and 475 closed issues.

Also in the window, undocumented here on purpose: a Desktop plugin SDK wave (composer draft API, session-list and row-decoration slots, sidebar nav prefs, model-pill label providers, typed settings/skills/toolsets/profiles bridges, a sandboxed embed primitive, appearance-settings slot, and a public event bridge for plugin backends); a Simple/Advanced interface mode for Desktop; the Connectors page replacing the MCP tab, with "Connect now" for a freshly installed plugin's MCP servers and installed plugins' tools and skills going live in every open chat; onboarding that offers catalog plugins beside connectors; complete French, German and Spanish Desktop catalogs plus an RTL/LTR text direction setting; custom model entry from the composer and Settings pickers; function-key and dictation voice shortcuts; per-profile stop/start/restart under the host multiplexer and gateway.standalone to opt a profile out; the live dock showing the standing /goal and queued prompts in the CLI and TUI; a kanban design pass with a two-column ticket modal and markdown task text; webhook deliveries mirrored into the target chat session; Bot Screen on hosted -desktop images; GPT-6 Sol/Terra/Luna and Claude Opus 5.5 in the Nous and OpenRouter catalogs; an official Blender Lab integration and NVIDIA app/Broadcast plugins; a long run of hot-path performance work across config loading, the tool registry, gateway message handling and the model picker; and dozens of new community plugins in the catalog.

Full curated release notes for this window ship with v0.22.0, which will document everything from v0.21.0 onward — highlights, feature areas, and complete contributor credits. Nothing in this window is skipped.

Updating

  • hermes update (git installs), or re-run the installer one-liner.
  • Docker / Hermes Cloud: images build from this tag (nousresearch/hermes-agent:v2026.9.24).

Full changelog: https://github.com/NousResearch/hermes-agent/compare/v202…

Official release on GitHub (opens in a new tab)

Stable releasev2026.9.21Explained

Hermes Agent v0.21.4 (v2026.9.21)

v0.21.4 rollup: one gateway per host, pinned skills and better session search

A patch release (v0.21.4) that rolls about 1,800 merged PRs into a tagged build for Docker, Hermes Cloud and hosted deployments. The notes summarize the window in one paragraph, and the full details are in the v0.22.0 release notes.

  • A host-wide gateway lock keeps a second gateway from starting, and Desktop attaches to the already-running backend instead of spawning another.
  • skills.auto_load pins chosen skills into every new session's prompt.
  • session_search accepts after/before date bounds and retries recall with looser matching, and hermes sessions set-journal-mode is new.
  • The CLI can emit structured JSONL output with --format stream-json, and mcp.discovery_concurrency caps how many MCP servers connect at once during discovery.
  • The gateway gained a decline behavior for unauthorized DMs, and Desktop added a font picker, one-click local engine updates and plugin uninstall from the Plugins hub.
  • Many fixes for profile isolation, cron, kanban, Desktop and the session database.
Read the full upstream release notes

Hermes Agent v0.21.4 (v2026.9.21)

Release Date: September 21, 2026

> Patch release. This tag rolls up the ~1,800 PRs merged since v0.21.3 into a stable tagged release for downstream consumers (Docker images, Hermes Cloud, hosted deployments). Full curated notes for this window are deferred to v0.22.0.

About this release

Measured at commit 4b8a8134009a8727a289bcabeb0019fedd353128, the window since v0.21.3 contains 5,071 non-merge commits across 5,169 changed files (+312,961 / −62,855), 1,812 merged PRs and 2,116 closed issues.

Also in the window, undocumented here on purpose: a host-wide gateway singleton lock with a rendezvous record, and Desktop attaching to the running host backend instead of spawning a second one; one backend-owned connector operation with a setup card on Desktop, TUI and CLI; --format stream-json structured JSONL output for the CLI; skills.auto_load pinning skills into every new session's prompt; a Desktop chat/UI font picker, one-click local engine updates, and plugin uninstall from the Plugins hub; a decline unauthorized-DM behavior for the gateway; a configurable MCP discovery connect cap (mcp.discovery_concurrency); session_search after/before bounds plus OR-relaxed recall retry; hermes sessions set-journal-mode; LTX 2.5 and Kling O3 in the video catalogs; a website page for every catalog plugin and author, with pinned-commit READMEs and added/updated sorting; a dozen new community plugins in the catalog (tailscale, ssh, shodan, terminal, rss, resetwatch, done-bell, kiwi, cognee, Octen); and a large run of profile/multiplex isolation, cron, kanban, Desktop and state.db fixes.

Full curated release notes for this window ship with v0.22.0, which will document everything from v0.21.0 onward — highlights, feature areas, and complete contributor credits. Nothing in this window is skipped.

Updating

  • hermes update (git installs), or re-run the installer one-liner.
  • Docker / Hermes Cloud: images build from this tag (nousresearch/hermes-agent:v2026.9.21).

Full changelog: https://github.com/NousResearch/hermes-agent/compare/v202…

Official release on GitHub (opens in a new tab)

Stable releasev2026.9.14Explained

Hermes Agent v0.21.3 (v2026.9.14)

v0.21.3: remote Desktop and Cloud sessions stop getting signed out

A patch release (v0.21.3) published mainly so that remote-gateway sign-in fixes reach Hermes Cloud agents, which auto-update to the newest release tag. It also stops long-running processes from opening duplicate session database writers. The rest of the roughly 338 PRs in the window are documented in v0.22.0.

  • Remote dashboard and Desktop sessions no longer get revoked when the app wakes up and fires several token refreshes at once, and a slow identity provider no longer freezes /api/status.
  • The gateway, dashboard/Desktop backend, ACP and CLI no longer leak duplicate session database writer handles, so the N live SessionDB handles warning stops on a healthy setup.
  • Also in the window: reasoning-effort selection in every model picker, OpenRouter sign-in through OAuth, HEIF/HEIC/AVIF image support, and MCP OAuth refresh tokens bound to their issuer with a daily re-auth reminder in Desktop.
  • Slack handles pasted tables, and fixes landed for multi-profile isolation and gateway liveness.
Read the full upstream release notes

Hermes Agent v0.21.3 (v2026.9.14)

Release Date: September 14, 2026

> Patch release. This tag rolls up the ~338 PRs merged since v0.21.2 into a stable tagged release for downstream consumers (Docker images, Hermes Cloud, hosted deployments). It exists so the remote-gateway sign-in fixes below reach Cloud agents, which auto-update to the newest release tag.

What this patch ships for remote Desktop / Cloud users

  • Remote dashboard sessions no longer expire on refresh bursts (#110061, fixes #55712; salvage #71548 @Doud-FR, #55717 @liuhao1024). Both refresh paths on the gateway (cookie gate and the desktop's native bearer route) now coalesce concurrent requests carrying the same rotating refresh token, so a Desktop wake burst can no longer replay an already-rotated token into the Portal's reuse detection and revoke the whole session. Refresh also runs off the event loop, so a slow identity provider no longer freezes /api/status. Pairs with Portal-side NousResearch/hermes-portal#1209 (sliding 30-day idle horizon, 5-minute rotated-token grace).

Also requested for this tag

  • Long-lived processes stop leaking duplicate state.db writer handles (#110934, fixes #100896 #103339; salvage #107974 @kshitijk4poor, mapping @Rroven): gateway, dashboard/Desktop backend, ACP and CLI readers attach read-only and in-process writers share the registry handle, so the N live SessionDB handles precursor stops firing on a healthy topology.

About this release

Measured at commit 9b419a2d3c2657c192008e732149d61170b32c01, the window since v0.21.2 contains 1,036 non-merge commits across 2,642 changed files (+131,690 / −37,096) and 338 merged PRs.

Also in the window, undocumented here on purpose: server→client JSON-RPC requests and a Pydantic wire-contract registry with generated TS/OpenRPC for the TUI/Desktop gateway (#110521, #110522); reasoning-effort selection on every model picker, a composer pill and per-auxiliary control in Desktop; OpenRouter OAuth PKCE login; HEIF/HEIC/AVIF image decoding; the Honcho peer-model setup rework; MCP OAuth refresh tokens bound to their issuer; a daily MCP re-auth nudge in Desktop; Wan 3.0, Kling 3.0 / Kling Image v3, MiniMax H3 Max Turbo, Gemini Omni Flash 1.1 and Meta Muse in the FAL catalogs; Slack pasted tables and the Agent Sessions API; multiplexed-profile isolation and gateway-liveness fixes; and the state.db WAL refusal on cross-VM filesystems.

Full curated release notes for this window ship with v0.22.0, which will document everything from v0.21.0 onward — highlights, feature areas, and complete contributor credits. Nothing in this window is skipped.

Updating

  • hermes update (git installs), or re-run the installer one-liner.
  • Docker / Hermes Cloud: images build from this tag (nousresearch/hermes-agent:v2026.9.14).

Full changelog: https://github.com/NousResearch/hermes-agent/compare/v202…

Official release on GitHub (opens in a new tab)

Stable releasev2026.9.11Explained

Hermes Agent v0.21.2 (v2026.9.11)

v0.21.2: the session database patch for installs where state.db broke after v0.21.0

v0.21.0 rewrote how the session store handles connections, and on some installs that made state.db fragile, with lock conflicts, healthy databases reported as corrupt, and single bad rows breaking session listings. v0.21.2 fixes the root causes and also tightens isolation between profiles that share one gateway. It rolls up everything else merged in the four days since v0.21.1.

  • Background components no longer open competing writers on a live state.db, so the gateway's locks are not cancelled underneath it, and doctor --fix refuses a checkpoint it cannot prove is safe.
  • Damage to the search index no longer ends your conversation: search degrades, the index rebuilds later and your transcripts are untouched.
  • One corrupt row no longer crashes sessions list, export or insights. Bad rows show ? with a warning naming the session.
  • A one-off hermes command run while a busy gateway is up no longer stalls and fails with 'database is locked'.
  • Profiles under one gateway no longer leak allowlists, credentials, MCP secrets or session search results into each other.
  • Cron fixes: a manual run now no longer cancels the next scheduled run, a killed manual run no longer blocks the next one, and a one-shot job changed to recurring keeps firing.
After updating
  • If you are on v0.21.0 or v0.21.1 and have seen session database errors, update to this release or later.
  • RSS and Reddit reading no longer turn on by default. Re-enable them if you relied on them.
  • hermes backup now keeps only the newest 3 zips, and config.yaml backups move to a single backups/config/ folder. Copy older backups elsewhere if you want to keep them.
Read the full upstream release notes

Hermes Agent v0.21.2 (v2026.9.11) — The state.db Patch Release

Release Date: September 11, 2026

> Patch release. v0.21.0 shipped a large rewrite of the session store's connection handling, and for some installs it made state.db fragile: second writers cancelling each other's locks, healthy databases reported as corrupt, one bad row killing sessions list. This release closes that class and rolls up everything else that landed on main in the four days since v0.21.1.

About this release

Measured at commit 04dd80a977f40b05e5b2054111747af07a61886a, the window since v0.21.1 contains 947 non-merge commits across 1,869 changed files (+182,504 / −15,564) and 312 merged PRs. 140 contributors appear in commits, co-author trailers, or salvage credits.

✨ Highlights

state.db reliability campaign (six PRs, 44 issues closed)

If your state.db broke after 0.21.0, this is the release for you. Six PRs fix the root causes rather than the symptoms:

  • No more second writers. Profile gateways wrote hosted-room state into the *root* state.db every 5 seconds; the dashboard opened a writable handle on startup; cron's lifecycle guard did a raw open() on a live database (which cancels the gateway's POSIX locks — the classic "how to corrupt SQLite" recipe); doctor --fix would checkpoint under a live holder. All four are gone: hosted rooms live in shared-state.db, the dashboard opens read-only first, the guard goes through the tracked connection registry, and doctor --fix refuses a checkpoint it can't prove is safe. (#108076 — salvage #103489 @RikETS, #102682 @JoaoMarcos44, #108012 @Halldrix, #105428 @TaoMasterCoder)
  • Healthy WAL databases stop wedging. OpenZFS (deleted) dentries and a close() racing an append_message both produced a sticky DeletedWalGenerationError on a perfectly good store; the read pool was handed out under an unconfirmed journal mode; a transient disk I/O error on WSL2 killed get_session on the first attempt; and a "state.db locked" banner was broadcast after the lock had already cleared. (#108082 — salvage #107411 @chelsealong, #105578 @ca-shrimp, #105711 @gaoanze888, #106958 @nikkoxgonzales; co-authored @QDung210, @fangliquanflq, @Sahilvishnaliya)
  • FTS damage no longer kills your turn. An error scoped to the full-text-search index was classified as whole-file corruption and fail-closed the conversation. It's now fts_index: search degrades, the index rebuilds later, the transcript store is untouched. Same PR: doctor names structural damage honestly instead of "FTS write corruption", the FTS write probe catches the stale-index shape that passed every check while every write failed, .recover output no longer fails startup on orphan FTS5 shadow tables, header-zeroed databases recover instead of being refused, and the dashboard analytics poller returns a 503 instead of 520K tracebacks a day. (#108130 — salvage #97843 @SulthanZahran1 + #97841 @Finn763, #88604 #56824 #103657 @liuhao1024, #106890 @nftpoetrist, #103321 @jangomango76, #91413 @leegunwoo98, #102808 @TaoMasterCoder)
  • One corrupt row no longer kills sessions list, export, or insights. A TEXT timestamp or a 1e30 epoch used to crash the whole listing; malformed marker JSON crashed json_extract; more than 999 ids crashed bulk delete/prune. One coerce_epoch() helper on every reader (bad rows render ? with a WARNING naming the session), a json_valid guard, IN-list chunking, and batched export hydration. (#108086 — salvage #106071 @Xipong, #101726 @efe-arv, #94701 @liuhao1024, #102679 @mssteuer, #100658 @Mi55ed)
  • Sessions never bind to or read another profile's database. The Desktop launch backend could pin itself to the wrong profile's state.db under a HERMES_HOME override race; session_search by bare ID silently scanned every profile and returned someone else's transcript; recovery guidance pointed at the wrong file; profile delete kept a handle open (WinError 32). (#108074 — salvage #102534 @HexLab98, #106975 @Sora-bluesky)
  • Opening state.db no longer takes the write lock when nothing needs writing. A one-shot hermes process opening the store behind a busy gateway stalled 4–20 s and then failed with "database is locked". Now 0.01 s. (#108067 — salvage #106751 @kshitijk4poor, #101881 @jonpol01)

Also in the window from the same subsystem: a fresh state.db no longer publishes FTS tables before owning the rebuild lock (#106311), a handle that lost its WAL generation no longer checkpoints stale frames at shutdown (#106315, #106840), a clobbered first page is quarantined with its WAL instead of opened destructively (#106587), WAL setup leaves an unverifiable database untouched (#106568), and quarantined handles refuse VACUUM/FTS optimize (#106343, #106349). Most of these salvaged community diagnoses by @kshitijk4poor.

Multi-profile isolation hardening

A cluster of fixes for installs running several profiles under one gateway (multiplex): secondary-profile bots no longer inherit the default profile's allow-lists (#107616), adapters no longer send credentials to the default profile's host (#107617), stdio MCP servers no longer receive the default profile's vault secrets (#107630), MEDIA: delivery can no longer attach another profile's .env / auth.json / state.db (#107609), Feishu drive callbacks and /p/<profile>/ webhook replies stay on the routed profile (#107620, #107626), and secondary profiles no longer get a sibling's Nous bearer from per-process memos (#107611).

Desktop backend spawn storms are over

Bot Mode used to spawn or dial one backend per profile on launch and on every roster tick, hovering the Bots roster spawned a backend per row, and profile switches could spawn a duplicate primary. (#108069, #108107, #108118, #108134, #107969, #108112 — salvage #102512, #103634, #103399, #107997 and others by @kshitijk4poor)

Password-blind credential vault

The agent can now sign in, pay, and fill addresses from 1Password, Bitwarden, or the local Hermes vault without ever seeing a secret; two-factor codes come from a saved authenticator key or are asked for in the user's UI (#106480, #107585). Private git plugins install with the user's stored credentials (#106981).

Plugin catalog and one Plugins page

A curated, SHA-pinned plugin index with CLI, admission CI, docs and dashboard (#69446); Desktop gets one Plugins page owning agent + desktop plugins, install, catalog and per-commit pinning (#107212, #107314, #107321); Radio ships as an opt-in SDK plugin (#107072).

Nous free tier and guided first launch

Free inference and connectors out of the box with one command to sign in (#105258, #105260), /login from a chat (#105261), connector tools (Gmail, Linear, Notion, ...) searchable through tool_search (#106842), and a guided first launch behind HERMES_GUEST_ONBOARDING=1 (#107697, #107958, #107985, #108211).

🐛 Notable Bug Fixes

Gateway & platforms

  • A bare display: key in config.yaml no longer crashes every gateway turn (#106305); a queued-lane final refused by the platform is recorded and redelivered (#106316); a stalled WebSocket send no longer blocks every later event (#106581); the first turn no longer waits on the Python toolchain probe (#106556).
  • Telegram bots must @mention when bots_require_mention is on, breaking bot-to-bot loops (#106534); Matrix renders LaTeX (#106515); Signal renders markdown tables (#106538); WhatsApp replies to view-once messages keep their quote (#106541); media-only replies report SUCCESS everywhere (#106557).

Providers & routing

  • /model and auxiliary auto never bill a provider you didn't select (#107366); never auto-switch to a provider you have no credentials for (#107281); Bedrock Claude/Converse/Mantle models survive /model, fallback and restore (#107621, #107658); Bedrock Guardrails enforced (#107815).
  • Codex: patch-budget image 400 shrinks and retries (#106525); unentitled primary + fallback no longer oscillate (#106549); Azure Foundry replayed-reasoning rejection classified and pruned (#106718 @erosika). MCP OAuth refresh no longer erases the refresh token (#106185). Anthropic clients send exactly one credential (#107978).
  • DeepSeek V4.1 Flash on Nous Portal and OpenRouter pickers (#107489); GPT Image 2.5 via OpenAI and FAL (#105988); Opus 5 / Fable 5.1 on the native Anthropic picker (#106636 @xxxigm).

Agent loop & compression

  • One blocked periodic callback no longer stalls lease refresh (#106308); a mid-turn /steer is persisted as its own user row (#106317, #106344); local-inference memory-ceiling rejections back off instead of compressing history (#106307); context-overflow after partial streaming ends the turn (#106567); length continuation stops when the prompt filled the window (#106571); compression no longer times out silently on aux retries (#106866); model_thresholds keys can be provider-scoped (#108061).
  • Surface switch (Desktop↔TUI) no longer rebuilds the system prompt and busts the prompt cache (#105844); CLI keeps the api_content sidecar so the cache survives an early persist (#105842).

CLI, TUI & Desktop

  • hermes -z --resume continues the session (#106313); Shift+letter and Cmd+Shift+Z work on extended-key terminals (#90674 @francip, #105493); browser_exec timeout kills the whole process tree (#106589); update checks poll the GitHub API once a day instead of git-fetching every 30 min (#107648); hermes update names the real cause and can't hang on a stalled fetch (#108053).
  • Desktop: UI language survives the update relaunch (#106476), expired OAuth grants get a one-click re-sign-in (#106965), HUD mode shows the transcript again and always gives the window back (#107491, #107423), the backend exits when its Desktop parent dies (#107977), Windows updates stop reporting false failures (#106175, #107183), WSLg renders on the Windows GPU (#106528), Telegram quick setup with QR ported from the dashboard (#107242), and ~60 more Desktop fixes largely from @OutThisLife and @kshitijk4poor.

Cron & Kanban

  • An off-tick "run now" no longer cancels the next scheduled run (#106306); a killed manual run no longer blocks the next one for 5 minutes (#106733); a one-shot changed to recurring keeps firing (#106532); unpinned jobs run on their creation-snapshot model (#106499); --clone-all no longer copies cron jobs (#106478); kanban promote refuses undone parents (#106550); kanban_request_review rejects unknown reviewer profiles (#106547).

Tools & memory

  • A stdio MCP server dying mid-call no longer replays the tool call (#106546); a skills-only background review can no longer delete memory entries (#106310); mem0 memory no longer drops long turns (#106542); tool_search returns nothing rather than five tools sharing one word (#106676); remote NOPASSWD sudo no longer prompts (#107939); RSS and Reddit reading no longer activate by default (#105873).

Housekeeping

  • config.yaml backups live in one bounded backups/config/ dir (#106388); hermes backup keeps the newest 3 zips (#106455); hermes setup --reset backs up the real config (#106453); debug share retention shrunk to 1 day on the dpaste fallback (#106531).

👥 Contributors

Thank you to the 140 contributors whose commits, co-author trailers, and salvaged PRs landed in this window.

state.db campaign — salvaged PR authors: @RikETS, @JoaoMarcos44, @Halldrix, @TaoMasterCoder, @chelsealong, @ca-shrimp, @gaoanze888, @nikkoxgonzales, @QDung210, @fangliquanflq, @Sahilvishnaliya, @kshitijk4poor, @jonpol01, @HexLab98, @Sora-bluesky, @Xipong, @efe-arv, @liuhao1024, @mssteuer, @Mi55ed, @SulthanZahran1, @Finn763, @nftpoetrist, @jangomango76, @leegunwoo98, @ggoldani.

state.db campaign — issue reporters (the forensics in these threads were often better than the fixes): @thedigitalcarpenterdad, @Rroven, @aoeman84, @StephanRosin, @rubensandrade-sketch, @wanliqin, @chenzheshushi-commits, @CarlosReyesPena, @revazone, @reservassai-art, @Cuttingwater, @soroush5, @e-shizz, @shobhit-87labs, @shivanathd, @hoelzl, @i8ei, @Ace-Kelly, @YinsenWANG, @zbabiarz, @Sravanjangam, @0gl20shk0sbt36, @RChina, @bronder, @ccwssy, @bottenbenny, and @Hitman117890 whose Discord report kicked the campaign off.

Everyone in the window (alphabetical): @0genlab, @0xalydev, @100yenadmin, @1052326311, @686f6c61, @69k4xmdfm2-blip, @abundantbeing, @Adolanium, @Ahmett101, @albert748, @AlexxRussell, @alt-glitch, @auroracapital, @austinpickett, @babatorik, @Bartok9, @benbarclay, @bennybuoy, @brian717, @briandevans, @buihongduc132, @ca-shrimp, @cervantesh, @Cesar-Azeredo, @ChanPark03, @chelsealong, @ckomma, @ClintonEmok, @crazyief, @ctaylor86, @dalzio, @DavidMetcalfe, @Drexuxux, @edosulai, @efe-arv, @emozilla, @ericmaddox, @erosika, @ethernet8023, @everm1nd, @FalconOrtiz, @fangliquanflq, @Finn763, @FirmamentalSpring, @francip, @g3org3yo, @gaoanze888, @ggoldani, @Halldrix, @haydster7, @hbizi, @helix4u, @HexLab98, @huklaa, @IAvecilla, @infinitycrew39, @jahfaliabdulrahman-dev, @jangomango76, @JoaoMarcos44, @jonpol01, @jwilson411, @KeyArgo, @kokhlo, @KoNit-K, @kshitijk4poor, @kyssta-exe, @leegunwoo98, @lesterlxt, @liuhao1024, @Mabolla, @manuelschipper, @MaxFreedomPollard, @mearls0501, @mengyuyuan, @Mi55ed, @MiseHinoha, @mjshorty, @mkrb84, @moisesvalero, @moken627-hub, @mssteuer, @nateEc, @nftpoetrist, @nickseelert, @nikkoxgonzales, @notwitcheer, @onuraycicek, @outdog-hwh, @OutThisLife, @philmossman, @phuongvm, @pierrenode, @portavales, @PRATHAMESH75, @QDung210, @rewbs, @RikETS, @romanovzky, @ryantuc, @Sahilvishnaliya, @salch-cred, @sgarrand, @shannonsands, @simpolism, @Solitud1nem, @somewheresy, @Sora-bluesky, @sprmn24, @squevo, @StellarisW, @Stoltemberg, @SulthanZahran1, @Svector-anu, @szicely, @TaoMasterCoder, @teknium1, @ten82e, @thedavidweng, @tkaufmann, @Totoro-qaq, @Tranquil-Flow, @tuancookiez-hub, @TurgutKural, @ugoenyioha, @unsupportedpastels, @victor-kyriazakos, @webtecnica, @wliu-dev, @wukangcheng1

Official release on GitHub (opens in a new tab)

Plain-English explanations are our editorial summaries of the upstream notes (which may be truncated at 14,000 characters). Check the official release before changing a production setup.