Hermes Agent Lab

Hermes Agent Blog — Practical Guides & Insights

Latest articles and insights.

Plugins that only half-worked: Hermes finally unified plugin name resolution

Install by catalog name, enable by manifest name, match the desktop half by folder name — the same plugin answered to three names, so `install` succeeded and `enable` came back with "No plugin named …", and a package with a desktop half never lit up. PR #135030 collapsed five name resolvers into one and made turning a package on a single switch. Here is the symptom, the cause and the new resolution order, plus the desktop plugin dev fix (#135017).

Read more

v0.21.6 changed how releases are cut — confirm what you actually got

v0.21.6 (released October 8, 2026) is the first tag cut by the new stable release pipeline: one attempt ref, a tested Docker image, and a receipt tag at publish. The window rolled up 8,342 changed files (+772,490 / −225,600) and 2,106 merged PRs since v0.21.5, while the full curated notes still ship with v0.22.0. Here is how to verify what you installed, plus the three security fix groups in this window.

Read more

A spoken turn no longer has to use your typing model

You say something, and the model you type to spends its thinking budget before answering out loud — so voice Q&A feels half a beat slow and bills at your main model. Now spoken turns get their own auxiliary.voice_chat slot and default to reasoning off; and if you want the whole "transcribe, think, speak" chain replaced, one full-duplex voice model can take over (voice.voice_chat_mode: gpt-live). Here is how the three settings fit together — and when not to use them.

Read more

You thought YOLO was still on. The restart turned it off.

You type /yolo on a messaging platform and assume approvals are off. Then the gateway restarts — hermes update, a crash, systemd, a Desktop reopen — and that chat has quietly gone back to manual approvals while you still believe it is bypassing them. The fix stores /yolo on the session itself (SessionEntry.yolo in gateway_routing), while /new, /resume and /branch clear it for good. Here is both directions this can surprise you, and how it survives a restart without reviving a bypass you dropped.

Read more

A plugin can now ask Hermes to gate its own MCP server

Portable Agent Plugins v1 packages can declare trust: untrusted for their own MCP servers in plugin.json, so every write-capable tool call asks you first. Hermes accepts narrowing only, never widening.

Read more

Nous Research raised $90M — and Hermes is going after businesses. Here is what changes for you.

Nous Research announced a $90M round at a $1.5B valuation on October 7, 2026, with NVIDIA, Microsoft M12 and Samsung among the investors, plus a new "Hermes for Businesses" direction. What is company-reported, what is promised, and which two switches to actually watch.

Read more

Why 90GB of your disk went missing: the dependency state left behind by deleted worktrees

Every hermes -w worktree or scratch clone gets its own ~200MB dependency environment, and deleting the tree never removed it. The prune path now reclaims state whose checkout is provably gone — 92GB down to 18GB on one measured host.

Read more

A healthy cron job was declared "wedged" at 2h02m — now the bound measures silence, not run length

Any cron run longer than two hours was reclaimed as a dead owner even while it was actively calling tools, then failed with "lost its durable fire claim ownership" and lost that run output. The fix measures how long the owner has been silent instead of how long it has been running.

Read more

A cheap model in one channel, a frontier model in another: how channel_overrides works (and the cache bug that made it expensive)

One gateway can run a different model and persona in each channel via platforms.<platform>.channel_overrides. But a P0 bug evicted the cached agent after every turn in exactly those chats, which re-read the whole conversation at full price.

Read more

Running Hermes Agent on Kubernetes: no official Helm chart, one replica, and a container that starts as root

Three things in the official image fight standard Kubernetes defaults: state is single-writer, s6-overlay needs root at init, and there is no HTTP reload endpoint. Here is what actually breaks, and what to write in your manifest instead.

Read more

What Hermes telemetry actually records: two switches, both off by default, and nothing that looks like your content

Under telemetry.shared_metrics there are two independent opt-ins — enabled collects locally, send transmits to Nous — and both default to false. Here is what the bounded counters contain, plus the new failure-reason classes.

Read more

Hermes just asked you to clear a browser check? Here is what the 428 challenge on the free tier is

When the Nous account service decides an IP range needs a browser check first, the anonymous token exchange answers 428 challenge_required. Hermes implements one primitive: open the portal link, poll the status, exchange again — while background callers never block.

Read more

Your dashboard login limit was spoofable with one header

Three auth hardening fixes merged the same day: a forged X-Forwarded-For reset the dashboard login rate limit, an unbounded audit field could fill your disk, and the public auth routes had no request-body size limit.

Read more

When Hermes is stuck waiting on a human, your plugin can now tell

A new on_human_input_request / on_human_input_resolved hook pair covers sudo prompts, clarify questions and dangerous-command approvals, so a notifier no longer needs one hook per prompt type.

Read more

The gateway heals every platform but one — here is why

Three gateway reliability fixes: a platform whose plugin failed to load now retries its import, Telegram messages held during a disconnect are delivered after the adapter is rebuilt, and in-flight /v1 runs finish on gateway stop instead of being killed after 0s.

Read more

Agents write code faster than anyone can review it. Here is the ratchet that keeps the codebase from rotting

Hermes added a ratchet: every function and file may only stay the same or improve, new code has to meet the target, and one local command runs exactly what CI runs. Includes the CC/line/nesting thresholds, the escape hatch, and a 318-PR replay.

Read more