Hermes Agent Lab

Hermes Agent Blog — Practical Guides & Insights

Latest articles and insights.

Why Writing a Big File Into a Sandbox Keeps Failing

The same 200 KB write works locally and fails inside a Modal, Daytona or Vercel sandbox with "embedded null byte" — or writes an empty file while reporting success. The payload was being stuffed into the command line itself: Linux caps an argument at about 128 KiB, and any process on the box can read it. A fix merged on 2026-09-26 (PR #124206) finally sends stdin as stdin.

Read more

Watch Your Bot Work — and Take the Mouse When It Hits a Login

When the bot stalls on a sign-in, a 2FA prompt or a CAPTCHA, you no longer have to guess what it sees. On a headless Linux host every profile now has its own Xfce desktop, streamed live into Hermes Desktop: watch it work, take over the mouse and keyboard, then hand control back. Since 2026-09-23 the official images ship a -desktop variant with the packages baked in.

Read more

One Junk Line in jobs.json Stopped Every Cron Job You Own

The jobs are all listed, the schedules look fine, and nothing runs. A single null in jobs.json made load_jobs() raise on every tick, taking the whole scheduler down with it. A fix merged on 2026-09-26 (PR #124034) drops bad entries, repairs the file in place, and stops a null repeat counter from crashing a run.

Read more

Compaction Ate the Tool Result Your Model Was Waiting For

It ran your test suite, it produced thousands of lines — and then it told you it only saw a one-line "truncated" placeholder, with the screenshots gone too. Three fixes merged on 2026-09-26 (PRs #124208 / #124207 / #124231) close the holes where mid-turn compaction could destroy exactly the output the model was about to read.

Read more

Your API Key Went to the Wrong Host — Hermes Fixes base_url Routing

You pointed Hermes at a relay, a regional endpoint or your own gateway. On four code paths the configured address was quietly dropped and the request — with your credential attached — went to the vendor's own host instead. Here is what broke, how to check your setup, and where the fix lands.

Read more

The Agent Can Now Reach Into Your Blender Scene — Official Blender Lab Integration

Hermes ships an official Blender plugin: the Blender Lab MCP server over stdio, wired to your running session on loopback. Here is what it can do, the exact install steps, the prerequisite nobody mentions until it fails, and the security line you should read before pointing it at real work.

Read more

The Patch That Rewrote Bytes It Was Never Asked to Touch

Ask the agent for a one-line change in a file that is not UTF-8, and the tool could rewrite every other line too — silently, with the diff and the verification re-read both going through the same lossy path. Two fixes merged on 2026-09-25 make file writes byte-exact; here is how to check whether your repo was touched.

Read more

The Agent Went Quiet at Minute Four — Hermes' Timeout Layers, Explained

A reasoning model thinks for four minutes and gets killed at three. A hung provider call outlives the run budget it was supposed to respect. A cron job never finishes. Three fixes landed on 2026-09-25, and this is the whole timeout stack — defaults, floors, and which knob wins.

Read more

You watched the reply stream out — then it vanished: 10 delivery bugs Hermes fixed in one day

The worst streaming failure is not slowness, it is text you already read being treated as if it never happened: a partial reply discarded when retries run out, an interrupted answer re-rendered as a second copy, duplicate replies after switching sessions mid-stream, a context gauge frozen for the whole turn. These fixes all merged on September 24, 2026; here is the mechanism behind each, with PR numbers and an honest note on release status.

Read more

Two seconds of silence every time you say the wake word — local voices stop reloading now

Talk to Hermes with a wake word and you wait through the same two seconds of silence every time, because the voice was evicted milliseconds after it loaded and the next wake pays the full reload. v0.21.5 adds tts.keep_warm_seconds (default 60) for that, and finally makes the desktop voice loop read your config for spoken stop and barge-in. Sentence-by-sentence playback is still on main only.

Read more

v0.21.5 ships without release notes again — how to audit what your install actually got

v0.21.5 (tag v2026.9.24, released September 24, 2026) rolls the 460 merged PRs since v0.21.4 into a stable tag, and the release body defers the curated notes to v0.22.0. This guide is about the practical half: the commands that show you what is really in your install, plus the eight change groups in the window that are live today and not yet written up anywhere.

Read more

Your alert went to the group chat — now a follow-up question there actually works

Webhook deliveries used to be fire-and-forget: each event ran in its own session, so replying “is this the same failure as yesterday?” in that chat got you “who are you referring to?”. Since v0.21.5 a route can set mirror_to_session and the delivered text is written into the target chat session as a labelled user turn. Here is how to turn it on, what exactly gets mirrored, and the three boundaries you need to know.

Read more

Four crashes on Windows that only localized users ever hit

On a German Windows install every new conversation could die with a UnicodeEncodeError; on Chinese Windows the gateway log filled with gbk decode failures; paths starting with C:\\ could be neither tagged nor previewed; and a cold start was declared a failure by a 10-second probe. Four independent bugs with one thing in common — they only show up on a localized Windows. All four are fixed in v0.21.5.

Read more

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