Last updated: 28 June 2026, 04:28 BST
261 mainline commits pulled after release v2026.6.19. Same public version, current upstream head. The useful part: safer backups, steadier gateway, better provider routing, stronger MCP/cron behaviour, and one local Kanban decision to make.
This update keeps Hermes on public version v0.17.0, but moves the code from 3e99ec0ff to 2ecca1e7d. Most of the update is reliability work. The one item that actually changes how we should maintain the system is Kanban.
Kanban moved forward upstream. Our swarm skill patch still works, but it is now the main local update risk.
Backups now capture more system state, gateway is steadier, provider routing is safer, and security redaction improved.
Add a maintenance task to review the Kanban patch and decide whether it becomes config, upstream code, or documented local extension.
This is not a recommendation to redesign Hermes. Keep the current setup. The point is to stop burying real maintenance work inside update notes.
What changed: Upstream Kanban added typed block reasons and protection against unblock loops. In plain English, blocked cards can carry a clearer reason, and Hermes has a guard against work bouncing between blocked and unblocked without progress.
What our local patch does: Our current patch adds swarm creation flags for explicit verifier and synthesizer skills: --verifier-skill, --synthesizer-skill, and --no-default-stage-skills.
What this means: Upstream has not fully replaced our patch. The patch still compiles and the flags still appear in hermes kanban swarm --help. But Kanban is now moving fast enough that this patch should stop being treated as a casual local edit.
What changed: Pre-update backups now include more of the state that makes Hermes feel like our operating system: project database files, Kanban boards, sibling stores, response store, memory store, and verification evidence.
What this means: Rollback should now restore more of the useful working context, not just the application code.
What changed: This report surfaced a better rule for future updates: if an update creates system work, that work should go into a maintenance lane.
What this means: The Kanban patch review is not a random idea. It is maintenance. Future reports should extract these items explicitly and feed them into the maintenance workflow or cron-backed planning process.
What changed: Hermes fixed several places where model routing could silently point at the wrong thing. MoA now resolves work to the real aggregator model, Codex slots stay routed through Codex, reference and aggregator models call through their real providers, context window sizing comes from the aggregator, provider switching reloads credentials, and OpenRouter sort options are checked before request dispatch.
What this means for us: This supports the current subscription-first setup. No provider rethink is needed.
What changed: Telegram update queues survive reconnects better, Hermes filters out the bot's own messages, delivery can use @username chat IDs, oversized Telegram videos are guarded, and gateway model switching no longer blocks the main event loop.
What this means for us: Telegram stays the main command surface. The update makes that path less fragile.
What changed: Hermes masks more password-like config keys, respects tirith_fail_open=false when Tirith import fails, fixes approval prompt routing across concurrent sessions, redacts browser typed text more aggressively, protects pinned skills in background review, and tightens curator write guards.
What changed: MCP got fixes for dead transports, stale OAuth registrations, and background discovery prompts. Cron got clearer per-profile isolation and better restore detection. Session search now ranks interactive sessions above cron noise.
What changed: The update rebuilt the web UI, rebuilt the packaged Desktop app, and upgraded CuaDriver from 0.6.5 to 0.6.8.
3e99ec0ff to 2ecca1e7d. Public version remains v0.17.0.~/.hermes/backups/pre-update-2026-06-27-225937.zip.~/.hermes/backups/hermes-update-20260627-225918/local-kanban-diff.patch.--help.Context7 MCP, and Linear MCP tested clean after update.Upstream Kanban added typed block reasons and loop protection. Backups now include project databases, Kanban boards, sibling stores, response store, memory store, and verification evidence. Gateway model-switching no longer blocks the event loop. Security redaction expanded. CuaDriver upgraded from 0.6.5 to 0.6.8.
ImpactKanban patch kept and verified. Rollback coverage is now more complete. No other process changes.
Decisions and Actions3e99ec0ff to 2ecca1e7d. Public version remains v0.17.0.~/.hermes/backups/hermes-update-20260627-225918/local-kanban-diff.patch.~/.hermes/backups/pre-update-2026-06-27-225937.zip, 3.9 GB. Snapshot 20260627-220547-pre-update.v0.17.0 at upstream 2ecca1e7d, Camofox localhost bind intact, profile symlinks intact, gateway launchd supervision healthy, Telegram connected, Context7 MCP passed, Linear MCP passed, Kanban patch compiles and imports.361 commits pulled. Package-lock.json was dirty pre-update. Incoming changes touched the Anthropic adapter. CuaDriver upgraded to 0.6.5. Python dependencies refreshed, web UI and desktop app rebuilt.
ImpactNo local patches affected. Cron runs from before this update showed network timeouts. Reassessment scheduled after next cron runs.
Decisions and Actions5a53e0f0f to 5ecf3bf0e. Public version remains v0.17.0.~/.hermes/backups/pre-update-2026-06-23-160840.zip, 2.7 GB. Snapshot 20260623-151120-pre-update.v0.17.0 at upstream 5ecf3bf0, repo clean, Camofox localhost bind intact, Camofox health OK, profile symlinks intact, gateway restarted under launchd, Telegram connected, Context7 MCP lookup passed, local MCP list passed.Released hermes-agent==0.17.0. 509 commits pulled. Web UI rebuilt. Desktop packaged app rebuilt. CuaDriver upgraded to 0.5.7. SOP hook-table drift found and fixed. SOP updated to exclude Claude/Anthropic unless BB explicitly requests.
Major version jump. No breaking changes to Boyd's setup. OpenAI Codex and Kimi provider checks passed. Follow-up fixes completed in the same session.
Decisions and Actionsv2026.6.19.gpt-5.5. Manual snapshot 20260619-215158-pre-update.~/.hermes/backups/pre-update-2026-06-19-225453.zip.hermes-agent==0.17.0, web UI built, desktop packaged app rebuilt, CuaDriver upgraded to 0.5.7, gateway restarted.v0.17.0, repo clean, Camofox localhost bind intact, profile symlinks intact, gateway loaded and Telegram connected, delegation smoke passed, Context7 MCP lookup passed, Kanban schema scan clean.gpt-5.5 returned OK. Kimi kimi-k2.6 returned OK. OpenRouter smoke skipped (per-token, not required by SOP).416 commits, same version tag, fast-forward from 6110aed9b to 4e6d05c6a. Pre-update zip backup created.
Camofox localhost patch intact, 7 profile symlinks intact, gateway service loaded, Telegram connected. Stitch MCP was not configured at this point.
Decisions and Actions6110aed9b to 4e6d05c6a.~/.hermes/backups/pre-update-2026-06-14-202134.zip.Context7 passed. Stitch MCP was not configured.530 commits between 5af899c7c and 6110aed9b. Gateway fell back to background process because launchd bootstrap hit exit 5. Telegram reconnected and cron ticker ran.
Drift discovered: launchd plist stale, Telegram pause patch clobbered, degraded-send-path patch absorbed upstream. All resolved by the 2026-06-14 update session. SOP changed to make Claude smokes opt-in.
Decisions and Actions5af899c7c and 6110aed9b.20260610-191100-pre-update2 saved.227 commits, tag v2026.6.5. Claude OAuth expired, only env-var credential active. Dirty repo had prompt_caching.py and package-lock noise.
Interactive Claude login ran during update. SOP-001 rewritten to use interactive login path and drop setup-token. Kanban orchestrator drift found but resolved: stock playbook load was correct, no full merge needed.
v2026.6.5.SOP-001 rewritten to use that path and drop setup-token.40-Projects/claude-oauth-safety-guardrails/sops/update-gate.md. The stable URL is https://hermes-vault.pages.dev/briefs/hermes-update/.