
It said success: true and the attachment never left: Hermes closed both ends of MEDIA delivery
You ask the agent to send its report to Telegram, it reports success, your teammate gets nothing — the file is still inside the sandbox. The other direction is subtler: a crafted filename riding in a TTS output_path could splice an extra delivery directive into the result. Two changes merged on 20 September (#116842 / #116826) fix the missing half and the forged half.
Read more
Your Self-Hosted Chat UI Can Finally Watch the Agent Think
Point Open WebUI, LobeChat, or your own Vercel AI SDK frontend at Hermes and you used to get a blank spinner for the entire reasoning phase. PR #115797 wires the agent's reasoning stream into the OpenAI-compatible surface: live reasoning_content deltas on /v1/chat/completions, spec-native reasoning items on /v1/responses, and a capability flag so clients can detect support.
Read more
What 40 Rounds of Compaction Do to a Three-Day Session
Hermes ran a controlled eval over three real 500K-token session lineages with 15 recall questions each: the shipping path (summary plus a session-search recovery pointer) scored 78.9% recall while retaining 55K tokens, and the alternative that keeps every word of dialogue scores lower while carrying 2.1x the context — with the freed space per cycle decaying from 89% to 8% across 32-40 rounds.
Read more
Why a Brand-New Skill Returns Zero Results in a Search
Unfiltered skill search is answered from a periodically rebuilt central index, so a skill published minutes ago can be missing even though it exists. Changes from September 16-18 close the gap: an index miss now re-queries skills.sh, ClawHub, LobeHub and well-known endpoints within an 8-second budget, and the index build no longer silently drops skills when a shard times out.
Read more
Commanding Your Agent From a Train: A Field Guide to the Community WebUI
Hermes WebUI is a community project with roughly 18K stars that puts the CLI's capabilities in a browser: Python plus vanilla JS, no build step, bound to localhost by default, with SSH tunnels or Tailscale for phone access and optional password, passkey, or OIDC sign-in. Here is how to install it, expose it safely, and where its edges are.
Read more
Why Opening a Dropdown Costs You Three Seconds
A spinner in the model picker, a `hermes plugins list` that hangs, a Profiles panel that drops frames — three unrelated-looking stalls with one cause: the read path was quietly doing network probes and filesystem walks. PRs #114994, #114811 and #114879 moved the caching, the failure memory and the refreshes off that path.
Read more
Hermes No Longer Fetches Whatever URL Someone Handed It
Image URLs returned by a generation provider, reference images a model supplies, pet-store manifests and spritesheets, skills.sh sitemap entries — none of these URLs come from you. PR #114887 routes seven fetch sites through the repository's existing SSRF guard: check before the fetch, re-check at TCP connect (closing the DNS-rebinding window), re-check every redirect hop, and fail closed on a 3xx with no Location header.
Read more
The API Key You Printed Once Should Not End Up in a Chat Log
Two fixes landed the same day to close two seams in secret leakage: PR #114839 makes dotted sk- keys and Zhipu's prefix-less id.secret keys fully masked in tool output, and PR #114789 forces redaction on every cron delivery lane — chat, session mirror, job name, bot chat — failing closed instead of shipping the raw text.
Read more
Your Memory Provider Moved Out of Core — the Upgrade Puts It Back
Built-in memory providers are moving to their maintainers' repos and the plugin catalog. PR #114569 adds two hooks: hermes update and agent init both notice a configured provider whose code is gone and reinstall it at the catalog's reviewed pin. Name, memory.<name> config, data directory and tool names all stay the same.
Read more
1,393 Subagents, 19 Hours, One Desktop: How Nous Refactored a Million Lines with Hermes
One /goal, 19 hours and 1,393 subagents cut 34.4% of the source lines out of Hermes' own repo. Here are the official measurements, the nine things that break at scale, and the steps to repeat it in your own codebase.
Read more
One 16 KB Script Froze a Gateway for 23 Seconds: The Command-Scan Postmortem
Hand Hermes a few-hundred-line heredoc and your Telegram bot stops answering — a synchronous regex is holding the event loop. Issue #113535 and PR #114208 explain the O(n³) path and why the fixed version reaches identical verdicts.
Read more
Stop Letting Images Eat Your Quota: The Two Vision Knobs Worth Knowing
Natively embedded images are re-sent on every later API call, and the old retire policy could rewrite 120,000 tokens of history just to drop one image. PRs #113953 and #113817 fixed both and added vision.embed_target_bytes and max_calls_per_image.
Read more
The Second Model You Never Configured: Hermes' Auxiliary Call Lane
Session titles that turn into JSON fragments, approvals that stop being smart, agonising compression with a local model — the fault is often not your main model but one of 13 named auxiliary tasks. Here is the config shape, the global knobs, and the silent-failure fixes merged on 17 September.
Read more
Your Agent Can Byte-Wreck a Live SQLite Database — Now Hermes Refuses the Write
write_file and patch used to read a .db-wal sidecar as ordinary text and write the mojibake back, silently destroying a live SQLite database. PR #114220 adds a sidecar write guard at the tool layer. Here is how the damage happened, what changed, and whether your version has it.
Read more
hermes doctor's Large-WAL Warning Is Now Honest
hermes doctor used to tell you to run --fix on a >50 MB state.db WAL without checking for a live writer. PR #113055 makes that warning honest.
Read more
Why Hermes Honcho Memory Lands in the Wrong Project
Auto-generated titles overrode sessionStrategy, and memory resolution used the backend launch directory instead of your workspace — PR #112602 fixes both.
Read more