
Your Bot Answered Twice — Did the Model Run Twice?
The delivery ledger marks ambiguous resends with a visible recovery prefix, and two fixes stop unmarked duplicates: a crash mid-redelivery no longer sends a second copy, and a reconnected adapter no longer loses its inbound dedup cache.
Read more
Your Cron Job Fired an Hour Early: the DST Bug Hermes Just Fixed
On the night the clocks go back, a cron job with a configured timezone could fire up to an hour early — or an hour late — because Python compares aware datetimes inside one zone by wall clock and ignores fold. Here is what changed, and how to check your own jobs.
Read more
Everyone Is Talking About Jev — Here Is What It Actually Changes in Hermes
Jev is a decision model: text in, typed probabilistic answers out. Eleven Jev plugins already sit in the Hermes plugin catalog, from a pre-tool judgment gate to a per-turn model and reasoning-effort router — here is what each one decides, and what leaves your machine when you install it.
Read more
Why Hermes Reported Your Run Cost $0.00
Direct OpenAI, xAI, Anthropic, Google and DeepSeek runs now fall back to the vendor's own list price instead of reporting an unknown or zero cost — while relays, proxies and subscription routes deliberately stay unpriced.
Read more
App-backed MCP servers: why Hermes now checks whether that app is installed first
A portable Hermes plugin can now declare which local application it depends on: the install refuses when the app is missing, the runtime trusts only the app's own live endpoint file, and unavailable tools say what to do about it.
Read more
One switch, two desktops: Hermes Simple / Advanced interface mode
The desktop app now has two interface modes. Simple keeps the conversation and puts the statusbar, terminal, tool-call payloads and subagent state away; Advanced is the app you already know. A mode changes what is shown, never what Hermes can do.
Read more
Install a plugin without restarting the gateway: Hermes wires it up live
A running gateway now wires a freshly installed plugin on the spot: slash commands, button callbacks and inbound transforms work immediately, while tools and system-prompt sections wait for the next session and portable MCP servers wait for an mcp.reload.
Read more
Every message reads your config: Hermes just took the lock off that hot path
Config reads used to take a global lock and re-parse YAML every single time. Cached hits are now lock-free, and the same read that waited 2 seconds finishes in under 2 milliseconds. Here is why that is safe.
Read more
Pinning skills into every session: skills.auto_load, so the agent never forgets your process
Skills are on-demand by default: the agent reads the short descriptions for free and only loads a skill when a task calls for it. skills.auto_load changes that step — skills listed in config.yaml are fully loaded at the start of every new session, on CLI, TUI, gateway, cron and API agents alike (PR #92048). The config, how it differs from --skills and project-local skills, and why it does not break your prompt cache.
Read more
Teaching CI to read Hermes: the stream-json event stream instead of screen-scraping
hermes chat -q "..." --format stream-json emits machine-readable JSONL — an init record, streamed text, tool calls and results, and a final result envelope carrying token stats and an exit code (PR #90411). The full event field table, exit-code semantics (0/1/130/75), jq and Python consumers, and the 5000-character output cap you must plan around.
Read more
You already pay for Claude Pro/Max — now Hermes can use it
The official claude-subscription-directsdk plugin makes Hermes drive the unmodified official claude CLI as a request-scoped model client, running the full agent loop on your Claude Pro/Max subscription while Hermes keeps tools, approvals and compaction. It needs Hermes 0.21.4+, Python 3.10+, a logged-in claude CLI, and ships an admission relay that forwards exactly one upstream request per Hermes call.
Read more
One gateway per host: the multiplex-only migration, three real incidents, and a post-upgrade checklist
Since v0.21.4, Hermes no longer runs one gateway per profile: one host gateway per OS user serves every profile (PRs #118273 / #118097 / #118433). The old multiplex_profiles: false switch is retired and --standalone is gone. Here is the migration path, what it refuses, and the three real incidents the convergence fixed — including a P1 that could delete the wrong profile's memory.
Read more
v0.21.4 ships without release notes — here are ten changes already running on your machine
v0.21.4 (tag v2026.9.21, released September 21, 2026) is a patch tag for downstream consumers, and the notes say the full write-up lands with v0.22.0. The window holds 5,071 non-merge commits and 1,812 merged PRs since v0.21.3. Ten verified behaviour changes, each with the command or config that drives it.
Read more
One slow disk, one frozen assistant: Hermes moved three door-blocking jobs to the background
Your nightly backup starts, and the gateway stops answering. Or you close the laptop lid and the desktop app keeps chewing a full CPU core. Neither is a slow model: the event loop had a disk write, a process probe and a boot-time warm-up queued in front of every incoming message. Six changes merged on 18-20 September (#117206 / #117063 / #117066 / #117201 / #117041 / #116967) moved them off the critical path.
Read more
You wrote a provider plugin for your own gateway. Why does Hermes still treat it as a second-class citizen?
The model shows up and answers fine, but the picker has no reasoning badge, an image you paste is passed through as plain text, /usage stays empty, and a teammate still has to copy a token by hand. None of that is the plugin's fault: core only knew what the models.dev catalog knew. Three hooks merged on 20 September (#116570 / #116555 / #116576) hand capability declaration, usage reporting and login back to the plugin.
Read more
Five seconds to answer a one-word reply: three silent waits hiding in Hermes message delivery
A short WhatsApp reply took 5 s (Weixin 3 s), a laptop that powered off quietly discarded every Telegram command sent while it was down, and a mention-free Discord channel could never auto-thread. What they share: no error, no log line. Three changes merged on 19-20 September (#117104 / #116134 / #116168) fix them.
Read more