Hermes Agent v0.20.1
Overview
v0.20.1 — The Quiet Workhorse Release. Released August 13, 2026. ~656 merged PRs · 1,444 commits · 2,172 files changed (+233,872 / −75,244) · ~481 issues closed since v0.20.0.
No fanfare this time — Hermes just made its foundations sturdier: the official messaging platform list grew to 18, the Windows installer stopped keeping users up all night, Anthropic prompt caching quietly came back, and state.db learned to heal itself even when its backing file gets swapped out. Plus a pile of efficiency wins hidden inside the patch.
There’s no big-feature keynote in this release, but all 656 PRs are exactly the fixes you’ll eventually need. The full curated release documentation ships with v0.21.0; this page covers the most valuable parts.
Highlights
1. Messaging Platforms Grow to 18
Telegram, Discord, Slack, WhatsApp (personal + Cloud API), Signal, Email, Matrix, IRC, QQ, Yuanbao, Feishu, Weixin, iMessage (BlueBubbles), LINE, DingTalk, Google Chat, SMS — all served by a single gateway process, with seamless cross-platform continuity.
2. Windows Setup No Longer Hangs Forever
The “Installing Node.js dependencies” stage could stall setup indefinitely (one user left it running overnight, watching a stage timer read 744:38). Every step now has a wall-clock timeout and fails loudly; Already up to date no longer skips repairing broken dependencies.
3. Anthropic Prompt Caching Returns
Custom Anthropic-compatible endpoints (api_mode: anthropic_messages) can declare prompt_caching: true|false per model, and bare aliases (e.g. fable → claude-fable-5) get cache_control breakpoints again — immediate token savings on long conversations.
4. Session Resume Restores Your Model
hermes --resume / /resume now restores the model, provider, and endpoint the session actually used instead of silently falling back to the config default; /model switches persist their full route to the session row.
5. state.db Fully Self-Heals
A swapped-out backing file triggers a one-shot reconnect self-heal instead of wedging until restart; WAL checkpoints are uniformly PASSIVE; hermes sessions recover --allow-partial recovers tail rows that were silently dropped, with a lost_and_found lane as last resort.
6. Native Live Cards on Slack
Slack replies stream as native live-typing messages, with optional plan/task progress cards — you can see what the agent is thinking and how far along it is, right in Slack.
7. Cron Alerts Tell the Truth
Script failures, timeouts, fallback chains, and drift are reported honestly instead of masquerading as provider errors; drift alerts fire once per job instead of once per tick.
Improvements
- Model-catalog refresh uses ETag conditional GETs; hot paths never block on the network (models.dev).
- New models:
google/gemini-3.7-flash,grok 4.6. - CLI input freeze self-heals via termios drift detection — no more external
sttyrescue. - Suggestion pills wait for finished words; MCP connect directory coverage more than doubled.
- Voice/wake RPCs are pool-routed so STT lazy-install (~50MB) can’t block WebSocket sends.
image.generatenow routes through the provider dispatcher — plugin-registered image providers and Krea routing are no longer bypassed.- Messages typed during blocking prompts merge into the next turn.
- The “clicked once, then dead” suggestion-pill ghost is fixed.
Fixes
- context_length cache can no longer be poisoned: non-positive values refused, atomic writes, stale 32K underreports dropped.
- Cron no longer mis-matches stray “429” digits or blames providers for script failures.
- openrouter provider loss on session resume is fixed.
- A wave of Windows fixes: MCP PATHEXT resolution,
python3→python, contended file renames, and approval-system coverage for destructive Windows commands.
Upgrade
hermes update
After upgrading, run hermes doctor to verify the install, and restart the gateway (hermes gateway) so platform changes take effect.