Hermes Agent v0.15.1 (v2026.5.29)
Release Date: May 29, 2026
Since v0.15.0: 28 commits · 21 merged PRs · hotfix release · 9 contributors
The Patch Release. A same-day hotfix for v0.15.0. Headline fix: the dashboard infinite-reload loop that hit anyone running v0.15.0 in loopback mode (Docker, hosted Hermes, fresh installs). A handful of other v0.15.0 follow-ups go along for the ride — kanban worker SIGTERM,
/modelpicker unification,/yolosession bypass, the full 19,932-entry skills.sh catalog,.mdmedia delivery restoration, gateway probe-stepdown safety, web-URL redaction passthrough, kanban worker vision on referenced images, hindsight observation-default. Docker users get an explicit--insecureopt-in env var (no more bind-host inference), MCP server bare-command PATH resolution, and arm64 PR-build cache fixes.
✨ Highlights
-
Dashboard 401 reload loop fixed — In loopback mode the dashboard's identity probe (
/api/auth/me) returns 401 by design, but v0.15.0's stale-token reload guard treated every 401 as a rotated session token and full-page-reloaded to pick up a fresh one. Every successful sibling call cleared the one-shot reload guard, so the page reload-looped forever (Firefox: "Navigated to /sessions" storm; Chrome: React re-render storm). Fix adds anallowUnauthorizedopt-out tofetchJSONthat skips only the loopback stale-token reload — 401 still throws soAuthWidgetswallows it, gated-modelogin_urlredirects are unaffected. Closes #34206, #34202. (#30698 — @austinpickett) -
Docker dashboard
--insecureis now an explicit env opt-in, never derived from bind host — Previously the Docker entrypoint inferred--insecurewhen the dashboard bound to a non-loopback host. That conflated "I want LAN access" with "I want to disable the same-origin guard." The fix splits them: bind host is bind host, and disabling the dashboard's loopback auth requires an explicitHERMES_DASHBOARD_INSECURE=1. Existing setups that genuinely wanted insecure binding must now set the env var. (#34188, #34204 — @benbarclay) -
MCP bare command resolution under Docker — MCP servers configured with bare commands (
npx,npm,node) now resolve against/usr/local/binso they actually launch inside the Docker image where those binaries live. v0.15.0 left these failing silently in containers when the agent's effective PATH didn't include the Node toolchain location. (#34186 — @benbarclay) -
Skills page sidebar / source pills restored — A stale
useMemodependency in the new dashboard skills page collapsed the source pills and category sidebar to "All" only. Fixed; both surfaces now reflect the live catalog state. (#34194) -
Kanban worker can be killed again —
SIGTERMon a kanban worker was being absorbed by an intermediate process and the worker stayed running. Closes #28181. (#34045) -
Full skills.sh catalog (858 → 19,932 entries) — The skills hub page was pulling a partial paginated catalog. The fetch now walks the sitemap, so all 19,932 skills.sh entries surface in the picker instead of just the first 858. (#34025)
🐛 Bug Fixes
Dashboard / Web
/api/auth/me401 no longer triggers reload loop in loopback mode — (#30698 — @austinpickett)- Skills page source pills + category sidebar restored — stale
useMemodep (#34194)
Docker
--insecureis now explicit opt-in via env var, not derived from bind host (#34188 — @benbarclay)- Dashboard test suite repaired to match the insecure-opt-in fix (#34204 — @benbarclay)
- arm64 PR builds skip the GHA cache to avoid cache-thrash on cross-arch builders (#33704 — @BROCCOLO1D)
MCP
- Bare
npx/npm/noderesolve against/usr/local/binfor Docker compatibility (#34186 — @benbarclay)
Kanban
- Worker SIGTERM actually terminates the process (#34045)
- Workers receive images referenced in task bodies for vision-capable models (#34210)
Gateway
.mdfiles deliver again — media-delivery validation defaults to denylist-only instead of an overly-narrow allowlist (#34022)- Probe stepdown safety — on a context-overflow without an explicit provider context limit, the agent no longer steps down to a smaller model based on an unknown ceiling (salvage of #33673) (#33826)
CLI
/yolomid-session enables the per-session bypass instead of just toggling the env var (which the running agent had already snapshotted) (#33931 — @kshitijk4poor)/modelandhermes modelshow the same list, plus disk cache for picker startup (#33867)
Skills
- Full skills.sh catalog via sitemap — 858 → 19,932 entries (#34025)
Redaction
- Web URLs pass through unchanged — the redactor was eating query parameters that looked credential-shaped (#34029)
✨ Small Features
- Hindsight default narrowed to observation-only for
recall_types— tool path is also narrowed (#34079 — @nicoloboschi, follow-up #34091 — @kshitijk4poor) - Memory providers receive completed-turn message context — salvage of #28065 (#34097 — @kshitijk4poor, credit to @devwdave)
📚 Documentation
--no-supervise/HERMES_GATEWAY_NO_SUPERVISEdocumented in the reference docs (follow-up to #33583) (#33751 — @r266-tech)
🛠️ Infrastructure
- Vercel deploy workflow accepts
workflow_dispatchso docs deploys can be manually triggered (#34081) @nous-research/uibumped to 0.18.2 (NixnpmDepsHashalso updated to match) (#34193 follow-ups — @austinpickett)
👥 Contributors
Core
Community
- @austinpickett — dashboard 401 reload-loop fix (the headline),
@nous-research/uibump, NixnpmDepsHashupdates - @benbarclay — Docker
--insecureopt-in, MCP bare-command resolution, dashboard test repair - @kshitijk4poor —
/yolosession bypass, completed-turn memory context salvage, hindsight follow-up docs - @nicoloboschi — hindsight
recall_typesobservation default - @BROCCOLO1D — arm64 PR build cache fix
- @r266-tech —
--no-supervisereference docs - @yangguangjin — probe stepdown safety (salvage of @yanghd's #33673)
- @devwdave — completed-turn memory context (credited via salvage)
- @andrewhosf — co-author
Issue Reporters (the 401 loop)
Full Changelog: v2026.5.28...v2026.5.29