49
Releases
8
Codenames
9
Months

November 2026

▶v0.23.12026-11-13

Downloads

Hermes Desktop

OS Architecture Download
macOS Apple Silicon (M-series) DMG
Windows x86 (64-bit) MSIX
Windows ARM (arm64 / aarch64) MSIX

Native install/chat smoke

Download availability is independent of smoke status. Each result covers all native legs in that format group. Linux bundles are disabled; unsigned Store envelopes are not install-smoked. No-upload dry tags have no download handoff and are not smoke-qualified.

Packages Smoke status
macOS DMG + ZIP (arm64) Passed
Windows MSIX (arm64) Passed
Windows MSIX (x64) Passed

Full Changelog: v0.23.1+canary.20261112T064528Z...v0.23.1+canary.20261113T064447Z

▶v0.23.12026-11-10

Patch release. This tag rolls up the ~618 PRs merged since v0.23.0 into a stable release for the GitHub release (CLI and installers), the Microsoft Store app, Docker and Hermes Cloud. Full curated notes for this window ship with v0.24.0.

Patch release. This tag rolls up the ~618 PRs merged since v0.23.0 into a stable release for the GitHub release (CLI and installers), the Microsoft Store app, Docker and Hermes Cloud. Full curated notes for this window ship with v0.24.0.

What this patch ships for plugin users: since the plugin catalog's site deploy on November 9, the published plugin-catalog.json was larger than the 2 MiB cap clients accept, so every install silently fell back to the catalog it shipped with. hermes plugins install <name> could not find plugins added since your last update, installed the pin your release shipped instead of the current one, and missed newer removed entries. This release raises the cap to 16 MiB, so the live catalog is used again (#151860, fixes #151856, thanks @100yenadmin). Installs that stay on v0.23.0 or older keep falling back until they update.

About this release

Also in the window, undocumented here on purpose: Esc backtrack in the TUI and classic CLI (replacing the rewind list picker), group chats that run on a gateway without Desktop and can seat bots from other computers, saved gateway connections shared by Desktop and the Webapp, signing the in-app browser in with your real browser profile and filling saved logins from its address bar, hermes gateway attach for local clients, hermes clipboard image --json, new plugin API (session-scoped environment values, plugin JSON-RPC methods and events, llm.oneshot auxiliary tasks, a compression-stable conversation_id, an on_session_open hook in the gateway, a post_curator_run hook), faster transcript and handoff reads, and a large batch of new plugin-catalog entries.

Full curated release notes for this window ship with v0.24.0, which will document everything from v0.23.0 onward — highlights, feature areas, and complete contributor credits. Nothing in this window is skipped.

Updating

  • Microsoft Store app: updates through the Store.
  • Desktop app installed from the installer (.exe / .dmg): no change in this release; it updates with the next bundled release.
  • CLI: hermes update, or re-run the installer one-liner.
  • Docker / Hermes Cloud: nousresearch/hermes-agent:stable (or :latest).

Full Changelog: v0.23.0...v0.23.1

▶v0.23.02026-11-05

The Hearth Release. In the old hymns Hermes kept the threshold and Hestia kept the hearth, and the two were honored side by side. v0.22.0 got newcomers through the door; v0.23.0 builds the fire they gather around. The headline: your whole Desktop workspace now opens in a browser tab, served by your own gateway. Underneath it, every conversation lives in one place: a single gateway owns each session, and the CLI, TUI, Desktop, editors, bots and cron all sit down at the same table instead of each running its own agent. From that one hearth, Desktop keeps every machine you run Hermes on connected at once, Group Chats route their own conversations, and the terminal finally draws your images inline and lets you rewind a conversation. Around it: plugins that keep themselves updated, price tags and spend limits on paid MCP tools, pluggable delegation, a plugin catalog that grew from about 600 to over 1,050 entries, a leaner built-in skill set, and a long run of memory and latency work for long-lived gateways. This release rolls up and fully documents the v0.22.1–v0.22.7 patch releases.

The Hearth Release. In the old hymns Hermes kept the threshold and Hestia kept the hearth, and the two were honored side by side. v0.22.0 got newcomers through the door; v0.23.0 builds the fire they gather around. The headline: your whole Desktop workspace now opens in a browser tab, served by your own gateway. Underneath it, every conversation lives in one place: a single gateway owns each session, and the CLI, TUI, Desktop, editors, bots and cron all sit down at the same table instead of each running its own agent. From that one hearth, Desktop keeps every machine you run Hermes on connected at once, Group Chats route their own conversations, and the terminal finally draws your images inline and lets you rewind a conversation. Around it: plugins that keep themselves updated, price tags and spend limits on paid MCP tools, pluggable delegation, a plugin catalog that grew from about 600 to over 1,050 entries, a leaner built-in skill set, and a long run of memory and latency work for long-lived gateways. This release rolls up and fully documents the v0.22.1–v0.22.7 patch releases.


✨ Highlights

  • Your Desktop workspace in a browser tab — The new Webapp serves the full Desktop workspace from your own gateway: the same chats, Group Chats, plugins and settings, in any browser on your network or behind a public URL with sign-in. The Docker image and Nix package ship it. It is off by default; turn it on with webapp.enabled or Web Access in Settings. (#141864, #145598, #145536, #145072, #145153 — @jquesnelle, @BearHuddleston, @IAvecilla, @Adolanium)

  • One gateway owns every conversation — Before, the CLI, TUI, Desktop, editors (ACP), messaging bots and cron could each run their own copy of the agent against the same chat, which is how messages got written twice or went missing between surfaces. Now each machine runs one gateway that owns every session, and every surface attaches to it as a client: a chat you open anywhere is the same chat, with one queue and one history. You can even steer or edit a queued prompt from Desktop without it running twice. (#106742, #140334 — @unsupportedpastels, @kshitijk4poor)

  • Pictures in the terminal — When you paste an image, or a tool takes a screenshot, the CLI and TUI now draw it right in the chat instead of printing a file path: real pixels in kitty and Ghostty (CLI and TUI) and in iTerm2, WezTerm and Konsole (CLI), coloured blocks everywhere else, and full resolution in VS Code's terminal when its image support is on. (#147293, #148874 — @Adolanium)

  • Rewind a conversation — Press Esc twice or type /rewind in the TUI or classic CLI, pick an earlier message, then edit and resend it or fork a new session from that point. The original session stays exactly as it was. The TUI can also start /new while a turn is still running; the old one keeps working in the background. (#144937, #148880 — @SaguaroDev)

  • Every machine in one Desktop window — Desktop now keeps all your gateways connected at once, so switching between this computer and an SSH or remote gateway is instant. Terminal tabs run on the host they were opened on, and a Group Chat can mix bots from different machines. (#147681, #147708, #148418 — @dskwe, @janviernine)

  • Group Chats that run themselves — Bot Mode rooms can let a lead bot, or an automatic router, pick who answers a message that names nobody. Scheduled jobs can post into a room, rooms keep a purpose and shared notes, and bots no longer ping each other in endless loops. Rooms also look like a normal Hermes chat now, and each bot shows what it is doing live ("scout · terminal · 7s"). (#144833, #148417, #148888, #148903, #148422 — @KoNit-K)

  • Plugins that keep themselves current — hermes plugins update updates everything at once, and an opt-in Auto-update switch (CLI, chat, Desktop and dashboard) keeps catalog and git plugins up to date. Updates that would break your setup are held back instead of applied. The catalog itself grew from about 600 to over 1,050 entries, and a new Verified tier marks plugins built by the vendor itself. (#141513, #85794, #143468, #144257 — @charan-rathore, @YS-OH-CORE)

  • Price tags and spend limits for paid tools — Paid MCP tools, such as 3D or media generation, can declare what a call costs. The approval prompt shows each call's price and the chat's running total, and Hermes asks before a chat goes over its limit, even in YOLO mode. (#142470, #143780, #143795, #143787 — @liuhao1024, @fangliquanflq)

  • New official plugins, and a smaller core — Meshy (text and image to 3D), ElevenLabs Music and Sound Effects, X Chat, REA (reverse engineering) and a bubblewrap sandbox are now one-command installs. Camofox, mcp-serve, the agent importers and Singularity moved out of core into plugins that install themselves for anyone who used them. (#142619, #146294, #139725, #143484, #139983)

  • Choose how subagents are run — Delegation is now pluggable: keep the default, or install the official advanced-delegation plugin to send each subagent task to a named model or into a separate profile. Switch with /delegation. (#142563, #142564, #143423)

  • Lighter and faster, especially when Hermes runs all day — Recurring cron jobs share a prompt cache, one-shot runs send about 1,570 fewer prompt tokens per call, and patch/write_file return in milliseconds with LSP on. Long-lived gateways now let go of closed sessions' memory, and the Desktop sidebar no longer slows down as sessions pile up (one store with ~35k cron runs went from a 121 s refresh to instant). (#139876, #144177, #140387, #147863, #137087, #147819, #144940 — @kshitijk4poor)

  • A leaner skill set you can lock — The built-in skills went from 58 to 44, with Word, PowerPoint and Excel merged into one microsoft-office skill. hermes curator lock stops the agent from rewriting a skill you curated by hand, through any tool, even in YOLO mode. (#147557 — @daviseford)

  • Password managers and a keychain vault key — Verified password-manager plugins can hand the browser your logins without seeing anyone else's, and the browser vault's key can now live in your OS keychain. (#143964, #144246 — @Jesssullivan)

  • Stop a running cron job — Cancel a running job from the CLI, Desktop, the API or the agent itself, and set per job what happens to runs missed while Hermes was off. (#144801 — @kokhlo, @fangliquanflq, @LeonSGP43)

⚠️ Upgrade notes

  • The old built-in browser tools are gone. Browser automation runs on browser_exec only; agent-browser and the ten browser_* tools (browser_navigate, browser_click, ...) were removed. Homes that used Camofox get the camofox plugin installed automatically. If your own prompts, skills or toolset lists name the old tools, switch them to browser_exec. (#143146)
  • Desktop needs macOS 13+ and 64-bit Windows. The app moved to Electron 44, which no longer runs on macOS 11, macOS 12 or 32-bit Windows. (#142727 — @OutThisLife, @Adihaliem)
  • hermes mcp serve is now hermes mcp-serve (it moved into a plugin). MCP clients that launch Hermes as a server need their command updated; nothing rewrites it for you.
  • Word, PowerPoint and Excel skills are now one microsoft-office skill. Old copies stay on disk until you remove them.
  • The Webapp is off by default. Nothing is served to a browser until you turn on webapp.enabled or Web Access.

🧠 Core Agent, Gateway & Tools

Providers & Models

  • GLM-5.3 is the default model when you never pick one — The silent default moves from GLM-5.2 to GLM-5.3, at about the same price and with the same 1M context window on Nous Portal and OpenRouter. (#144810 — @calvinnwq)
  • New models — GPT-6.1 Terra, DeepSeek V4.1 Flash 1017 and Gemini 4 Argon on Solstice. Claude Mythos is treated as always-thinking, so reasoning-off requests stop failing their first try. Nemotron 3.5 Super VL gets default parameters. (#145204, #140496, #139466, #148127, #138462 — @benbarclay, @unsupportedpastels, @rroverin)
  • Usage-window plans — On subscriptions that track usage as allowances instead of credits, /usage shows one bar per allowance with its reset time. Pickers list the plan's recommended models first, tag them Large or Free, and say when an allowance has run out. (#142308, #145682 — @rob-maron)
  • Daybreak for approved ChatGPT subscriptions — An off-by-default agent.daybreak switch turns on OpenAI's Trusted Access for Cyber program. It only appears on models that your account's own Codex catalog lists as approved, and it is checked again on every request. (#148056 — @unsupportedpastels, @Froraut)
  • /model reset — Takes a session pinned with /model back to your configured default without losing the conversation, in the CLI, TUI, Desktop and messaging. (#80448 — @shannonsands)
  • GitHub Copilot moved to a labs plugin — Copilot (copilot, copilot-acp) now lives in the github-copilot Hermes Labs plugin, which profiles that use Copilot install automatically. Core keeps generic provider hooks that any provider plugin can use. (#144788)
  • Custom endpoints resolve reliably — New profiles inherit custom:<name>, ${VAR} and legacy custom endpoints instead of failing with "Unknown provider". Resumed chats stay on the endpoint that served them, and a built-in provider's key no longer leaks onto a custom entry with the same name. (#138513, #139947, #140335, #147761 — @jquesnelle, @unsupportedpastels)
  • Provider quirks handled — Streamed tool calls from LM Studio, Kimi and MiniMax no longer split into broken calls. Gemini safety blocks now show as a content-policy error and move on to the fallback model. Text-only vLLM servers that reject images recover, and byte-cap 400s trigger compression. On Bedrock, a hung call fails after one read timeout instead of five. (#140485, #85031, #85005, #85126, #146314 — @Chukwuebuka-2003)
  • Local runtime on llama.cpp b11671 — Adds one-slot DFlash drafts and opt-in Nemotron 3.5 Bolt. (#139703 — @jquesnelle)

Agent Loop & Sessions

  • Lower prompt-token and cache costs — Every fire of the same cron job now shares one prompt-cache key. Background one-shot calls (summaries, titles, /moa) stop paying for cache writes. One-shot runs send 1,570 fewer prompt tokens per call, and four tool schemas are 319 tokens shorter. Gateway goal and heartbeat turns, post-compaction turns and between-turn MCP refreshes no longer rewrite the cached prefix. (#139876, #140478, #144177, #144173, #139865, #139851 — @100yenadmin, @jonpol01, @chelsealong, @AdrianBinDC)
  • Opt-in prepared compaction — With compression.prepare_ahead: true, the next summary is written in the background as a session nears the trigger, so compaction no longer pauses the turn while the summary is written. Messages that arrive in the meantime stay in the tail word for word. Off by default. (#144684, #144886 — @kshitijk4poor)
  • Compaction is more honest and harder to stall — Summaries list uncertain claims on UNVERIFIED: lines, so a guess does not come back as a fact. The main-model fallback uses the main route, /stop closes a summary stream, and queued messages and /steer survive a context-exhaustion reset. (#86019, #139872, #144825, #139783, #139923 — @helix4u, @thehugegatsby)
  • hermes sessions refresh-prompts — Continuing sessions pick up an edited SOUL.md, skills or context files on their next turn without /new. History is kept and each session takes one cache miss. (#143581 — @victor-kyriazakos)
  • Opt-in stream lifetime cap — agent.stream_max_lifetime (off by default) cuts off a stream that never finishes. Timeout errors now name the phase that failed and the setting to raise. (#80701, #80873 — @krzsda)
  • Follow-up questions about a photo still see the photo — This applies after --resume, API-server session continuation and gateway restarts. (#139873 — @Alexbob0)
  • Session storage — Auto-prune is opt-in again, and Hermes asks once when the disk runs low. hermes sessions optimize-storage shows progress and finished a real store about 18x faster. Startup no longer waits on the scratch prune, and hermes sessions failures exit 1. (#139762, #144630, #144625, #144767)

Messaging Platforms (Gateway)

  • One gateway now owns every local session — Since v0.22.0, the classic CLI, TUI, Desktop, API, ACP editors, bots and cron all run their sessions through one gateway. This cycle fixed what that broke: slash commands, /retry, /refine, /review, clarify cards, reasoning display, usage and ACP sessions work again, and config changes reach resumed sessions. (#139149, #139577, #139884, #140249, #140595, #141916, #144005, #138719 — @unsupportedpastels, @yoniebans, @drzxk, @fangliquanflq)
  • Gateway memory and responsiveness — The roughly once-a-minute freeze during memory trims is gone, closed sessions leave memory, glibc malloc arenas are capped at 4, and measured event-loop blockers moved off the loop. (#147840, #147831, #147810, #144911, #137156 — @kouyichi, @ygd58, @zwmaupin, @kshitijk4poor)
  • Safer gateway lifecycle — hermes gateway stop/restart refuse while sessions are live and never act on another home's service. A gateway started from an agent's terminal no longer mistakes itself for the launchd service, and when every platform fails at start the gateway stays up degraded. (#142041, #145930, #144592, #140922 — @salch-cred)
  • Bot Mode Group Chats — Cron jobs can post into a room (deliver: room:<id>@<profile>), waking only the bots they @mention. Rooms get a purpose and shared notes, and two opt-in modes pick who answers a message that names nobody (a lead bot, or auto routing). message_agent wakes the asker once with every reply. (#144833, #148417, #148888, #144789 — @rorsch, @OutThisLife)
  • Bot-to-bot loops end — Bots never receive runtime notices, and an exchange is capped at max_hops (default 4) after the last human message. hermes peer dm <peer>/hermes reaches the peer's default bot. (#148903, #144900 — @KoNit-K)
  • Telegram — New opt-in dm_topic_auto_transfer opens a fresh topic for root-DM messages. A new topic's first message lands in it, video notes reach the agent, and group messages not addressed to the bot can stay silent. (#141347, #141751, #147572, #147144 — @KoNit-K, @PRELVAS94, @sharpnotebot, @Horizont367, @diegoasanch)
  • Slack, Feishu, Discord — Slack thread context includes emoji reactions, and a new opt-in thread_followup_silence covers unaddressed thread replies. Feishu gets clarify cards and a choice picker you tap. Discord honours longer approval timeouts and sends plain audio as an attachment. Rooms can opt into intentional silence. (#80882, #139586, #82170, #145948, #143800, #147143 — @hackartists, @helix4u, @liuhao1024, @nicodoggie)
  • Every messaging adapter is now a plugin — Signal, Weixin, BlueBubbles, QQ Bot, Yuanbao and WhatsApp Cloud now ship as bundled platform plugins. Nothing changes for users. (#139843, #140168 — @karljohannisson, @sprmn24)
  • Streamed replies deliver images — Markdown images in a streamed reply arrive as pictures, and tool-progress arguments render in code blocks. (#144041, #139759 — @686f6c61, @sambouli)

Tools, Browser & Terminal

  • patch and write_file return in milliseconds with LSP on — A clean TypeScript edit went from 10.1 s to about 0.06 s. Type errors still reach the model. (#140387)
  • Smarter background processes — A command ending in a lone & runs as a tracked background process instead of being refused. Instead of polling a quiet process, the agent is notified when it exits. Jobs that finish during a busy turn come back as one turn. (#140317, #140330, #147678 — @lucasfdale, @suhanrain)
  • Password managers in browser_vault — Bundled or verified/official catalog plugins can add their own logins through ctx.register_login_backend, and each one can touch only its own entries. The vault key can move into the OS keychain (opt-in vault.key_storage: keychain). Saved passwords fill on Camofox pages. (#143964, #144246, #146240, #139203 — @Jesssullivan, @WillPlatnick)
  • Media generation — Krea 3 image generation and editing through the Nous gateway or the Krea API, and the default image model for paid subscribers who have not picked one. Wan 2.7 video on FAL. The agent can search and pick ElevenLabs voices in text_to_speech. (#142155, #87464, #144633 — @entropidelic)
  • Terminal backends — Sandboxing backends can set uses_host_filesystem = False so the file tools run inside the sandbox, and plugin backends can set their start directory. Singularity moved to its plugin. Command output no longer vanishes once a process has more than 1024 open file descriptors. (#143756, #142225, #142561, #142299 — @unsupportedpastels, @aholten, @MohamadKanso)
  • Browser reliability — The real-profile setting keeps working when Chrome locks the profile. Nested page data no longer crashes the tools, and hidden-tab screenshots no longer hang. (#139245, #140562, #146082 — @cmaldonado80)

Cron, Delegation & Multi-Agent

  • Pluggable delegation backends — delegation.backend chooses how each delegate_task task becomes a child run, and the default strategy is now a bundled plugin. The official advanced-delegation plugin adds model-map and per-profile routing. /delegation <mode> saves for the next session, and --now applies it immediately. An opt-in delegation.prefix_stagger_seconds lets batch subagents reuse the prompt cache. (#142563, #142564, #143423, #86553)
  • Stop a running cron job — hermes cron cancel, a Desktop Stop button, the API and cronjob_manage stop a live run, and deleting a job cancels it. Each job picks its own missed-run policy (--catch-up on|off). A manual run no longer consumes a one-shot, and prompts carry the fire time. (#144801, #146113, #82826 — @kokhlo, @fangliquanflq, @LeonSGP43)
  • Background subagents survive and report back — Stopping a turn no longer kills background subagents like /review. /bg and routed chats wait for their delegations, and completions that were lost are offered again from the ledger. (#144759, #147745, #147753, #147748 — @professorpalmer, @nateEc, @rungmc357)
  • Kanban workers are usable again — delegate_task and session_search work inside cards, dead attempts free their slot, a worker whose socket drops resumes the same attempt, and worker turns are no longer saved as your memories. (#141944, #141906, #145954, #144861 — @tmaarcxs, @nonkun12, @calvinnwq)

Security & Reliability

  • More secret shapes are masked — Quoted secrets, connection strings, glued and flag-passed secrets, Azure keys, non-PEM private keys and SMB passwords are now masked, and JSON pages are no longer mangled. (#149435, #148862, #149470 — @r266-tech, @liuhao1024, @mtp-44, @arbianshkodra, @Baophan00)
  • Approval gate catches more — The gate now prompts for curl … | sudo bash pipes, later or abbreviated PowerShell deletes, and credential uploads hidden behind an approved rule. A stale approval card can no longer approve the next request. (#87362, #148865, #141377, #87554 — @Baophan00, @liuhao1024, @VaughnValle)
  • Network boundaries — URLs whose host parses differently across clients are refused, and without a token A2A refuses requests from browsers and from foreign Host headers. (#145578, #145310 — @unsupportedpastels)
  • Shell-hook consent — An unattended gateway skips an unapproved hook instead of freezing. A recorded consent takes effect within about 30 seconds. (#140984, #141034 — @arcabotai, @WYSTAF, @liuhao1024)

🖥️ Desktop, Webapp, CLI & Install

Desktop App

  • Every registered gateway stays connected — Switching between This device, an SSH host or a URL gateway is now instant, with no confirm dialog and no blanked session list. Every gateway's sessions stay visible in the sidebar, and pins stay with the gateway that owns them. An SSH gateway runs one remote backend for all of its profiles, so every SSH profile is listed at launch and switching takes well under a second. (#147681, #147735, #147741, #147957, #147711 — @dskwe, @Bridgerz, @kenpritchard, @kshitijk4poor)
  • Terminal tabs belong to their host — Each in-app terminal tab runs on the gateway it was opened on and shows that host in its label. "New terminal on…" opens a shell on This device or any SSH gateway, side by side. Desktop can also connect to Windows SSH hosts. (#147708, #143898 — @janviernine, @addelh, @yoniebans)
  • Group Chats grew up — Group Chats can now be renamed and disbanded, and support @mentions, attachment paste, drag-and-drop and inline image previews. Rooms can seat bots from different machines again and show which bot is working. Desktop and the Webapp share one room list. (#143607, #148418, #142904, #145629, #141928, #145973 — @unsupportedpastels, @HootRock, @Thrymheim, @Ehsan-hash)
  • Delegation settings in the app — Settings → Model → Subagents now uses provider and model dropdowns instead of free-text boxes. A new Routing section picks the delegation mode (Default, Model routes, Profile routes, or a plugin backend) and edits routes in place. (#141312, #143126 — @abundantbeing, @e-macgregor, @SecBySagar)
  • Redesigned Capabilities catalog — Skills and Plugins are browsed as card shelves ordered by tier (Official, Verified, Community). Install is now a one-way + button: installed entries get an on/off switch, and Uninstall moves to the detail view. (#138820, #142708 — @austinpickett)
  • Plugin SDK: file access and Kanban badges — The new ctx.files lets a Desktop plugin read and write its own data folder and any folder you grant through the app's picker, and nothing else. A Kanban card badge slot lets plugins label cards without touching the board's markup. (#143688, #143673)
  • Clearer errors and questions — Failed turns show a redesigned error card that marks the failure as blocking or degraded and offers one action (Continue, Open provider settings, Setup guide…). It shows the real exception instead of "Something went wrong". A clarify with several questions is now one form with one submit. (#146776, #146803, #144392, #146881 — @kshitijk4poor)
  • Workflow conveniences — You can drag sessions to pin or unpin them, pin Kanban boards as quick-switch tabs, open Bot Chats in new tabs, and compact a conversation from the context panel. /loop shows a live countdown, and /usage shows provider limits before the first message. (#142672, #148179, #143129, #148871, #139187, #141047 — @austinpickett, @unsupportedpastels, @kvarnelis, @jerrygooch, @aydnOktay)
  • MCP consent shows what will run — The MCP install/enable/authorize card now shows the exact command or URL each server will run or contact, with secrets masked. Approval prompts on every surface now reveal hidden Unicode, control bytes and padding. (#85775, #81403)
  • Faster on long chats — Typing no longer slows as history loads; sessions full of file edits switch without re-highlighting every diff. Mermaid diagrams render through Pele, a much smaller renderer, instead of mermaid.js. Minimized and idle windows do less streaming work. (#144903, #144991, #147974, #146602, #146600 — @kshitijk4poor, @ghgoodreau)
  • Messages and replies you can trust — A message sent just before closing the window is no longer lost, and drafts survive clock jumps and downgrades. Replies are drawn once across reconnects, reloads and stopped turns. Healthy connections are no longer dropped on focus or wake. Old phone-app chats can be continued instead of opening read-only. (#145018, #145528, #144899, #146843, #147802)
  • Language packs actually apply — Korean and other pack-only languages now load on a cold gateway, and the picker hides languages the app cannot show. (#147515 — @kshitijk4poor)

Webapp & Hermes Cloud

  • The Webapp: Desktop in a browser tab, served by your gateway — With webapp.enabled: true, the gateway serves the Desktop workspace on its own listener. hermes webapp opens it, and Desktop's Settings → Web Access serves it on your network or a public URL behind sign-in. It is off by default. The Webapp is single-user: a signed-in tab acts as you, so its sessions and Group Chats are the same ones native Desktop shows, and display settings follow you across devices on the same machine. (#141864, #145598, #145536, #148408 — @jquesnelle, @BearHuddleston, @IAvecilla)
  • Desktop plugins in the browser — Installed Desktop plugins load in a Webapp tab, and desktop-only plugins can be installed from the tab, pinned to the commit the dialog showed. (#145072, #145853, #146178 — @Adolanium, @DECRUX9812)
  • Phone and browser polish — When a chat needs you, the tab title flashes and the favicon gets a dot. Opt-in browser notifications open the right chat. One tap focuses the composer on iPhone, and the phone tab picker reaches every tab's menu. Files and media resolve inside a session's Docker sandbox or SSH workspace. (#146882, #145569, #145788, #144741 — @Sn0wfly, @unsupportedpastels)
  • Webapp hardening — Launch links are private to the signed-in user, and the page sends a Content-Security-Policy; a signed-out /api/status reveals no profile names. The Webapp, dashboard and hermes serve trust only their own bound loopback port for CORS and WebSockets. (#144721, #145573, #145931, #146636 — @unsupportedpastels, @dokterdok, @Froraut)
  • Hermes Cloud agents stop offering in-app updates — Desktop and the Webapp no longer show "Update now" for an agent only Cloud can update. (#149436)

CLI & TUI

  • One gateway owns every local session — The classic CLI, TUI, Desktop, API server, ACP, bots and cron now attach to each profile's single gateway instead of running their own agents against the same database. A chat is one conversation with one queue and one writer. Follow-ups route classic CLI commands (/model, /cron, /queue, /save, /snapshot, /resume, todos) through it. (#106742, #138717, #141105, #141501, #141962, #140676 — @unsupportedpastels, @kshitijk4poor, @kassdinzheng123)
  • Rewind to an earlier prompt — In the TUI and the classic CLI, /rewind (or Esc Esc on an empty prompt) lists your earlier messages. You can edit one and resend it, or fork a new session from just before it. Approval prompts gain "No, and tell Hermes what to do instead". (#144937 — @SaguaroDev)
  • TUI: /new mid-turn and expandable pastes — /new while Hermes is busy opens a fresh session and keeps the running one working in the background (Ctrl+X switches back). Ctrl+P expands a collapsed paste so you can read or edit it. (#148880, #148883)
  • New classic CLI layout — The classic CLI now prints a transcript that survives terminal resizes, with one glyph per row and the status line under the composer. display.cli_layout: classic restores the old look. (#139241, #141879)
  • Smaller core, setup imports — hermes mcp serve moves to the official mcp-serve plugin (hermes mcp-serve). hermes import-agent and the OpenClaw migration move to the agent-importers plugin. First-time hermes setup now offers to import from OpenClaw, Claude Code, Codex CLI or Cursor when it finds one. (#142556, #142547)
  • hermes --cpu-profile PATH — Writes a CPU profile of any Hermes run, plus a top-functions text summary. (#87545)

Install, Update & Packaging

  • New installs start on stable — install.sh, install.ps1 and Hermes-Setup now check out the latest stable release instead of the tip of main. (#139311)
  • Desktop updates are faster and say more — An update skips the Desktop rebuild when no desktop input changed, and the update window names its current stage. The dialog shows real release notes. A failed update shows the updater's output and offers a one-click diagnostics upload. Large state.db files, comma locales and the system proxy no longer break updates. (#144922, #138483, #148355, #144894 — @KoNit-K, @chenleshu)
  • hermes update got much more reliable — It no longer stashes untracked folders it never touches, and it asks before stashing anything. It reclaims git locks left by a killed update and no longer hangs on an in-flight kanban card. It also names a CDN firewall block instead of a bare 403. (#147632, #147954, #147958, #140023, #138420, #144507)
  • Electron 44 — Desktop moves from Electron 40 to 44. This ends Desktop support on macOS 11, macOS 12 and 32-bit Windows. (#142727 — @ethernet8023, @OutThisLife, @ahrazzle)
  • Webapp ships in Docker and Nix; Docker sandboxes give files back — The Docker image and the Nix package now ship the Webapp bundle. The image adds tmux and Office/PDF libraries. Files a root Docker sandbox writes are handed back to your user, and setuid bits and file capabilities are stripped from them. (#145153, #145521, #146111, #141033, #141086 — @IAvecilla, @unsupportedpastels)
  • Package manager — hermes pm install --without EXTRA drops a carried extra and keeps it dropped. A corrupt cached package no longer blocks every install, and pm update can skip a lagging target. Plugin dependency edge cases no longer fail the update lock. (#148194, #146929, #142657, #148199, #148205 — @benbarclay, @ethernet8023, @hteo1337)

Infrastructure & CI

  • Release pipeline — The Microsoft Store build now certifies before the release gate and goes live automatically at publication. Stable runs dispatch from the default branch so caches restore, and macOS notarization keeps going through dropped connections. (#141725, #148716, #138159, #148497 — @ethernet8023, @unsupportedpastels, @BearHuddleston)

🧩 Plugins, Skills & MCP

Plugins

  • Plugins keep themselves up to date — hermes plugins update with no name lists every installed plugin that has an update, asks once and updates them all (--yes for scripts). An Update all action and an Auto-update switch (plugins.auto_apply, off by default) now exist in the CLI and TUI (/plugins update, /plugins auto-update), Desktop and the web dashboard. Catalog installs now update too, and hermes update tells you when the new catalog has updates for them. An update whose scan comes back as caution shows you the findings and lets you go ahead (--force in the CLI, a dialog in Desktop). (#141513, #85794, #141894 — @alt-glitch)
  • Updates no longer break your setup — when hermes update has to turn a plugin off, it keeps your memory provider, turns the plugin back on once it fits again, and every surface shows it as off. Plugins whose dependencies have no wheels for an OS you don't run (mnemosyne, torch) no longer get disabled on every update. A plugin listed as both enabled and disabled is now reported by the loader and hermes doctor. (#144257, #144220, #144394 — @charan-rathore, @YS-OH-CORE, @renleding, @liuhao1024)
  • Catalog version floors are enforced — an entry's requires_hermes now blocks installs on a Hermes that is too old, and update won't move a plugin to a pin that needs a newer release. Plugins that use a manifest key from a newer Hermes install with a warning instead of failing. (#143468, #139225)
  • New Verified tier in the catalog — Nous gives this tier to plugins made by the company whose product they integrate. Cua Spaces, NVIDIA App, NVIDIA Broadcast, TinyFish and CoreWeave Inference are the first. Plugin pages now put disclosures in their own section at the bottom, and cards show what the plugin does. (#139983, #142165, #141742, #142184)
  • More features leave core for official plugins — Camofox, hermes mcp serve (now hermes mcp-serve, with a new --tools mode), hermes import-agent (adds Cursor, Grok Bot and OpenBot importers) and the Singularity/Apptainer backend all move to plugins. Homes that use Camofox, Singularity or import-agent get the plugin installed automatically; MCP clients have to change their args to mcp-serve. (#143484, #142545, #142538, #147799, #142536)
  • New official plugins — REA (reverse engineering), X Chat (encrypted X DMs as a gateway platform), Meshy (3D generation), ElevenLabs Sound Effects, ElevenLabs Music (songs, lyrics, stems, video scores), advanced-delegation, and bubblewrap (a Linux sandbox for terminal and code commands). Hermes Labs adds hermes inbox, hermes record (workflow recording that masks passwords) and Patsnap patent search. (#138225, #139725, #142619, #143744, #146294, #143265, #142548, #142523, #142519, #85138)
  • New plugin APIs — plugins can now post a message to the current chat and edit it in place (ctx.post_message), ask the session's own agent a question after a turn (ctx.side_question, which needs your consent), block a turn before it reaches the model (pre_llm_call block), and hold back streaming until a rewrite hook has run (hold_stream). New hooks: post_compaction and on_session_delete. Slash commands now receive the calling session, and platform plugins and plugin skill lookups get public helpers. (#141005, #143791, #81434, #144266, #141017, #140995, #140997, #140624, #140978 — @curiouscleo, @Halldrix, @Baophan00, @Finn763, @pieralukasz, @ewtillman, @nekwo)
  • Plugins can sign you in to third-party APIs without seeing the token — a plugin declares an OAuth client, hermes auth add <plugin>:<id> runs the browser sign-in, and Hermes attaches the token only on requests to the hosts the plugin declared. (#141510 — @bablobanov)
  • Bigger Desktop plugin SDK — Desktop plugins can add rows to the composer's right-click menu and words to the spell checker, render media from their own tools, post cards into their own chat, and script the preview Browser once they declare the capability and you allow it for that site. Portable plugins get a Settings ▸ Plugins form, and a newly saved API key reaches their MCP server without a restart. (#143678, #143980, #143776, #143668, #141533 — @Schildkrote)
  • Plugins behave the same on a shared gateway — classic CLI plugin commands and pre_command now run in the gateway with the rest of the plugin, and disabling a plugin also closes its websockets. A secondary profile's dashboard plugins run in that profile's own plugin host. (#139575, #139691, #139569, #139689 — @unsupportedpastels, @dokterdok)
  • Remote config backend for fleets (opt-in) — a fleet agent such as one on Hermes Cloud can load each profile's config.yaml from a central service, and admins can lock keys. It only turns on when HERMES_CONFIG_BACKEND=remote is set. (#122509 — @benbarclay)
  • Faster startup — from a git checkout every hermes command starts about 1 s faster, because provider plugins and the restart check no longer run git each time (15 git calls down to 2). (#144640 — @100yenadmin)

Skills

  • Lock a skill — after hermes curator lock <skill>, the agent can't change that skill with skill_manage, file edits or terminal writes, even under --yolo, and the curator won't archive it. (#147557 — @daviseford)
  • Leaner built-in skills — a fresh install ships 44 built-in skills instead of 58. Word, PowerPoint and Excel merge into one microsoft-office skill, 12 niche skills become optional installs, and optional skills that vendor repos, catalog MCPs or the built-in web search now cover are removed. The vendor repos for W&B, Qdrant, Pinecone, Notion, Airtable and Shopify are now trusted taps in hermes skills browse. The skills index in the prompt is shorter too. (#146333, #148639, #144174 — @soyluisarca)
  • Skills survive compaction and load by plugin name — every skill that compaction removes, small or slash-loaded, now leaves a reload marker. Plugin skills are named after their plugin (blender:blender) and load even when the model adds plugin: in front. (#138428, #143822, #143784 — @100yenadmin)
  • unbroker handles spam calls — the optional unbroker skill can now start from a phone number and register it on the US Do Not Call list. (#145118 — @SHL0MS)

MCP

  • Tool costs and per-chat spend limits — MCP servers, from plugin packages or config.yaml, can declare what each tool costs and a spend limit per chat. The approval prompt shows the cost and the chat's running total, and a call that would go over the limit asks first, even on a trusted server or in YOLO mode. (#142470, #143787)
  • Clearer approvals for untrusted servers — choosing Allow for this session or Always now actually stops the next prompt for that tool, prompts show the call's arguments with secrets masked, and YOLO or approvals.mode: off skips them. (#143780, #143795, #143787 — @liuhao1024, @fangliquanflq)
  • Live progress for long MCP calls — when a server reports progress, the Desktop tool row and the CLI spinner show the percentage and message, and plugins get a tool.progress event. Servers that declare a longer deadline are no longer cut off by the generic tool timeout. (#141985, #138491)
  • MCP events over webhooks (experimental, opt-in) — a server with mcp_servers.<name>.events: true can notify Hermes when something happens upstream, and each event starts an agent run through the gateway's webhook listener. (#140121 — @Potrock)
  • Connections — servers now see hermes-agent/<version> as the client name, results and tool lists over 1 MiB work on Streamable HTTP, and Otter.ai OAuth logins complete. The MCP catalog adds RentAHuman. (#106395, #143803, #148635, #142246 — @yulunz, @khanaleem727-eng, @liuhao1024, @AlexanderLiteplo)

The Plugin Catalog

The catalog grew from about 600 to over 1,050 entries this window (~270 new listings, plus a steady stream of version bumps and re-pins). Some of what arrived:

  • Model providers — Requesty #141950, CoreWeave Inference #143748, Reka #143457, Fortytwo #147925, Tsubasa #125905, CLIProxyAPI #138281, AnyAPI #141068, ngrok AI Gateway #138494, Cursor ACP #138835, opt-in Adaptive Inference routing #143827 — @Thibaultjaigu, @crwvrosenblum, @zhenwei5, @AIvashov, @cenab, @duu261, @es697, @brenden-ehlers, @neerazz, @midhatn
  • Memory providers — Mnemoverse #139270, post-cortex #141251, Membase #144472, conxt #144192, Inspeximus #145679, nyx #144689 — @OlyaTi, @julymetodiev, @ibitnoah, @pgavali0318, @DanceNitra, @sixgodgit
  • Messaging platforms and voice — OneBot #140979, Nextcloud Talk #140197, WhatsApp voice #140245, /call-me #144194, Signal notifications #146208, Soniox #143120, Kokoro TTS #141106, Breeze TTS #147205, DashScope transcription #146187, Grok Voice for Desktop #138958 — @mario841859784, @chefboyrdave21, @ashwanthbalakrishnan5, @radres, @dbrosnan, @XimilalaXiang, @brunosouzas, @MDsniper, @lgc2333, @Julientalbot
  • Secrets and sandboxes — Proton Pass #138662 and Windows Credential Manager #141475 secret sources; WSL Containers #139946, WSL distro #141146 and smolmachines #145765 terminal backends — @lucas-nicolas, @Yicheng-Mark, @NickyHeC
  • Search and web — Jina #140343, Browserless #138443, Machine Library #138541, Yandex Search #141797, keyless web-local extract #142232, Keenable MCP #144330, the official Tavily MCP #143112 — @Adolanium, @AlexLoyola, @ppodolsky, @akinfold, @ilya-bogin-keenable, @manisrinivasan2k1
  • Desktop panes and themes — Korean #138136 and full Italian #138269 language packs, the hermes-board whiteboard #139707, Plexus vault graph #143070, memory pane #141421, YouTube Dock #142527, Context Overview #141997, Nord #143190 and Codex #143371 themes, a themes pack #145179 — @dandacompany, @gradia64, @skk2010, @mr-september, @Adolanium, @metamindedu, @AsoTora, @Audiofool934, @hey-yx, @seppegadeyne
  • Windows operations — ports, event log, processes, scheduled tasks and devices #142399, #142394, #144259, #144771, #146487 — @Yicheng-Mark
  • Games and 3D — Godot Studio #141568, game editors #143728, #143729, sprite-sheet cutting #143730, Tripo #141403, Remesher image-to-GLB #143074 — @Foolafroos, @TakeshiTGAL, @Adolanium, @michaelgold
  • Infrastructure — Unraid #140133, Kubernetes #144218, Terraform drift #144217, OpenTelemetry tracing #143101, Hermes Fleet Connector #138423 — @Anunnaki-Astronaut, @TakeshiTGAL, @Mandark-droid, @tony-simons-aiowa
  • Payments and agents-for-hire — pay #138020, switch402 #147689, genesispay #143950, RentAHuman #141775, Sai by Simular #146322 — @lgalabru, @Duffey234, @Smokefarmer, @AlexanderLiteplo, @chenchenSimular

🐛 Notable Bug Fixes

  • Background completions on Discord and Telegram reach the agent instead of requeueing forever. (#139026 — @KoNit-K, @sharpnotebot)
  • /retry from messaging works again on multi-profile gateways. (#139149 — @drzxk)
  • A gateway whose pid was recycled after SIGKILL no longer exits 75 forever. (#139855 — @JoaoMarcos44)
  • Messages queued behind a context-exhausted turn now run after the reset. (#139783 — @helix4u)
  • Messages to a chat whose working folder is gone now say so instead of "model request failed". (#143075)
  • Long Claude DirectSDK answers are no longer cancelled by the stall timer. (#142905 — @rborkow)
  • Spilled tool results stay readable for the whole session. (#139894)
  • A Discord /model switch is no longer overwritten as "expired". (#146752 — @oddtazz)
  • Edge TTS works again after Microsoft's token change. (#140896 — @ebrearley)
  • Memory entries stay removable after the character limit is lowered. (#144240)
  • macOS installs can install git again when /usr/bin/git is only the Command Line Tools stub. (#138871 — @unsupportedpastels)
  • The Windows installer no longer gets stuck on a half-installed Git ("INSTALL DIDN'T FINISH"). (#145592 — @xxxigm)
  • Windows Desktop attaches to a Scheduled-Task gateway again. (#139167 — @srymak1r7, @Wenfengcheng)
  • Sandboxed or review Hermes homes no longer rewrite the Windows User PATH or the real hermes.exe. (#137951, #145140 — @jquesnelle)
  • Desktop no longer hangs on macOS when the home path's letter case differs. (#139014 — @dokterdok)
  • Linux Desktop windows are no longer permanently see-through, and renderers no longer crash on /dev/shm. (#144910, #144950 — @cristianob)
  • Linux Desktop restarts come back and keep sudo working. (#145015)
  • Desktop and the Webapp show a Reload notice instead of a blank page when boot fails. (#146092 — @dokterdok)
  • The dashboard can re-pair WhatsApp after a logout. (#142439 — @helix4u)
  • Ctrl+D mid-turn in the classic CLI detaches instead of interrupting the turn. (#140489)
  • Stdio MCP servers on a multi-profile gateway use their own profile's home, not the default (#148129 — @bluemogul1914)
  • Plugin-rewritten messages no longer refused on multi-profile gateways (#139076)
  • Plugin MCP ${VAR} header auth survives reconnects; unset optional vars aren't passed literally (#148879, #141379)
  • hermes plugins doctor no longer copies a plugin into itself until the disk fills (#146836, #146761 — @gyeyeop, @xxxigm)
  • Windows: Desktop plugin names can't escape the plugins folder (#146394)
  • Host-isolated plugins keep provider types, so secret sources apply (#144430)
  • Enabling new deps on a running gateway says restart instead of claiming a reload (#143404 — @benbarclay)
  • Desktop/Webapp install the backend half of manifest-only plugins (#146001 — @m0nty81)
  • ClawHub skills show as installed after install (#145210 — @austinpickett)
  • No more health-check warnings for closed local MCP apps (#148395)

👥 Contributors

Core Team (Nous Research)

  • @teknium1 — release direction, the one-gateway runtime, Group Chats, the Webapp's local identity, plugin updates and salvage campaigns across every subsystem (~670 merged PRs)
  • @unsupportedpastels (125 PRs) — the unified gateway's session authority: classic CLI, ACP, Ink and Desktop clients on one owner, queued-prompt steering
  • @kshitijk4poor (92 PRs) — the owner-death process supervisor, gateway memory release, provider replay, profile inheritance and memory-provider seams
  • @c2h5oh (41 PRs) — CI on new runners, race-condition sweeps, flaky-test roots and security dependency updates
  • @ethernet8023 (33 PRs) — the stable release pipeline, Electron 44, signed bundles and Docker plugin installs
  • @alt-glitch (15 PRs) — the free-tier guest handoff, onboarding and plugin-update safety
  • @helix4u, @victor-kyriazakos, @austinpickett, @yoniebans, @jquesnelle, @benbarclay, @BearHuddleston, @ghgoodreau, @IAvecilla, @OutThisLife — the Webapp, the Capabilities redesign, Bedrock and relay, macOS bundle updates, Desktop performance, Cloud remote config, Docker and local models

Top Community Contributors (by merged PR count)

  • @Adolanium (44 PRs) — inline terminal images, Webapp desktop plugins, and a long run of catalog plugins and banners
  • @TakeshiTGAL (27), @itpartypattaya (19), @100yenadmin (18), @olric3015 (16), @Yicheng-Mark (13), @mister-ideas (10), @apoapostolov (8) — the catalog's biggest authors: Japanese data sources and game tooling, hermes-dreaming and holographic, plan mode and Cloud file manager, the ledger family, Windows operations, usage-guard and git-review, provider status
  • @metamindedu, @Sahil-SS9, @dyiapanis (7 each), @KoNit-K, @SaguaroDev, @dskwe, @janviernine, @liuhao1024, @fangliquanflq, @charan-rathore, @Jesssullivan, @daviseford — Model Router and YouTube Dock, limbic and tabella, Group Chat routing, /rewind, multi-gateway Desktop, MCP costs, plugin auto-update, password-manager vaults and skill locks

All Contributors

Thank you to every one of the 666 people who contributed code, co-authored fixes, or had their work salvaged into this release:

@0ldev @0x7s0lt1 @0xalank @0xWhiteMage @100yenadmin @1052326311 @123mikeyd @1nc0gn30 @2867297362mjb-sketch @3bdALR7man-Ai @3L0935 @686f6c61 @a @aadilghani1 @abundantbeing @acedatacloud-dev @Adam-Dalloul @addelh @Adihaliem @aditya123123123123 @Adolanium @AdrianBinDC @aean0x @aedelgod @Aether-V @Ahmett101 @aholten @ahrazzle @ahtishamdilawar @ai-ag2026 @ai-mrscraper @AIalliAI @aidatatools-dev @AIEngineerX @aikaizen @aimanmalib @aisolveme-bot @AIvashov @ajisaacs @ajspig @akimonlet @akinduroifedayo @akinfold @Akloenx123 @AlexanderLiteplo @Alexbob0 @AlexLoyola @alexpalco @ali-shirzadg @alitariksahin @alt-glitch @anpicasso @anthony-maio @Anunnaki-Astronaut @apoapostolov @arbianshkodra @arcabotai @Ardenye @Arkanji @ArmagedonFlamer @arrry-hydraDB @arsiktech @arspesk @ashmoonori-afk @ashwanthbalakrishnan5 @AsoTora @asveloper @atakanelik34 @atbrace @atostivint @Audiofool934 @aurel282 @austinpickett @axiom-agent-ai @aydnOktay @Ayshinko @bablobanov @badiyee85 @Baophan00 @barronlroth @bayuh85 @BearHuddleston @benbarclay @benoit.lavenier@e-is.pro @benperry6 @berthelius @bionicbutterfly13 @bluemogul1914 @bmtrnavsky @BonesGit @bonesnasty @brajendrak00068 @brenden- ehlers @Bridgerz @BrokeSkill @brunosouzas @Byrd-IT @bytecakelake @c-pompa @c2h5oh @calvinnwq @camilolunacom @capthvnsen @cardosofelipe @cenab @chad-agate @charan-rathore @chatchap-2nd-of-chartup @chefboyrdave21 @chelsealong @chenchenSimular @chenfeijiang95-ui @chenleshu @Chinmaya-India @choaticpixels @Chrisbattarbee @chrisjleal @Chukwuebuka-2003 @chunkypiesrus @cis2042 @cl0vrfi3ld @clawreef-io @ClaySecAI @Cliff3c @Cloeille @clsferguson @cmaldonado80 @cnkang @coe0718 @cortexuvula @crwvrosenblum @cryptobredda @curiouscleo @cxyhhhhh @cygnostik @dachaimahogany @danbiocchi @DanceNitra @dandacompany @danrudy33 @daoom @DarRahman @DavidMetcalfe @daviseford @Dawncoral @dbrosnan @Deadtrix21 @DearGlory @DECRUX9812 @DeepitMagee @defurniture2025 @dellanio @dfrostar @Dgardenhire @dialapus @diegoasanch @dinosauria123 @djagya @djmango @dmmeteo @dokterdok @Dolverin @donovan-yohan @driptothebone @drzxk @dskwe @Duffey234 @duu261 @dvbaecker @dwaxe @dyiapanis @ebrearley @eddojansen @Efistoffeles @Ehsan-hash @ehz0ah @elight @elisam0 @embwl0x @emozilla @Enchanted0911 @entropidelic @enzo-adami @equationalapplications @erhnysr @erosika @es697 @esafev @ether-btc @ethernet8023 @eve-ai-dev @ewtillman @FamousAmos-ChillZone @fangliquanflq @fastfinge @felipebasurto @Finn763 @fliellerjulian @Foolafroos @forefy @francoleff @freefate258 @freehul @Froraut @fyzanshaik @g3org3yo @gabrielaoimevbore-beep @gc-runa @gengue @geniok1980 @ghgoodreau @godhiraj-code @gomediacoin @goncami @GottZ @gradia64 @grinco @guberm @guglxni @guoxian-led @guthixboss1 @gyeyeop @hackartists @hakastein @Halldrix @Hamakaze1s @harrylabsj @hassan-kamel @heckad @heerey525 @helix4u @hellohanchen @henrycyberbio @herovivian-collab @hey-yx @Heybinshao @heydryft @HootRock @horizonbymuneeb @Horizont367 @hteo1337 @hugoalvespereira @hxy91819 @iap @IAvecilla @ibitnoah @Ieqzya @ikuro4kin-dev @ilya-bogin-keenable @indranilbanerjee @InvincibleDude @ionut85 @IPBDW @irfansofyana @IRONICBo @ishanray @itpartypattaya @itsflownium @ivcained @j-nolan @jackie-wayland @jacklhchan @jacobhausler @jacques-commits @jangomango76 @janviernine @jarvistwil @jasm001 @JasonSwindle @Jaylouisw @jeannen @jerrygooch @jersilb @Jesssullivan @jfugalde @jimstratus @jj5638521 @JoaoMarcos44 @Joclto @Joe070707 @jonpol01 @joshuaKnauber @jtstothard @juanitourquiza @Julientalbot @julymetodiev @justinsharpe @Kame696 @karljohannisson @karmateam5555 @kassdinzheng123 @kaveone @keeltrace @kenpritchard @keppy @Kesuek @KeyArgo @khanaleem727-eng @Khwan888 @KIDPhantom1412 @KING-OF-FLAME @kokhlo @KoNit-K @kouyichi @KrasimirKralev @kriss39 @krzsda @kshitijk4poor @KuboKubis25 @kuehnberger @kumaxs @kvarnelis @kvnloo @kyoto-aircon @kyssta-exe @kzmttkc @labyrinth-analytics @lazyants @Lazzdaycod @ldx-person @lee101 @Leegenux @leonphull @LeonSGP43 @levinkin @lEWFkRAD @LFGWin @lgalabru @lgc2333 @liamsmith86 @Light5566 @linye157 @liteboy-bit @liuhao1024 @liujian1211 @ljubomirj @Lokee86 @Lokeshm24 @longsizhuo @LoopGlitch26 @luantak @lucas-nicolas @lucasfdale @luisced @Luke- Chinyama @luoyiliang @m0nty81 @macd2 @MadeByBrain @Magictypo @Mandark-droid @manisrinivasan2k1 @MarcosAlves90 @mariadb-MikeZinner @mario841859784 @matebenyovszky @Maytrella007 @Maziay @mazzanfar @mbgulden @mcpeezy @MDsniper @memtomem @mengnan-zhang @mertkayacs @MesmericDigital @metamindedu @meviusisback @mfranzon @mgrabina @michaelgold @michaelzelbel @midhatn @milnerrad @Mirinai307 @mister-ideas @mistrysiddh @MKindshofer @mkozachuk @mkyed @mmalmi @mnajafian-nv @MohamadKanso @mojomast @mpotter2002 @mr-september @mrhy7176 @mtp-44 @muntasimulhaque @Murali-lns @MwC-Trexx @mykeura @NaMinhyeok @NanamiMio @nateEc @naterchrdsn @navingate @nchgn @NealZhouPanda @Neboy72 @Neckyserg @neerazz @nekwo @neoromantic @nevertrustai @nezovskii @ngisvold @ngpestelos @NickyHeC @nicodoggie @nicolasestrem @nicoloboschi @nikkoxgonzales @nixonthelobster @nolanchic @nonkun12 @noreply @nosliwhtes @notacompanynameyet @notwitcheer @ns-fusion @nthieuu205z @nujovich @nv-pberard @NyllRE @obierlaire @ocasta181 @Oceanswave @odaiameera @oddtazz @ofirf @ojusave @Okazakee @okyssta @oliver-ando @olric3015 @OlyaTi @omega @OMOX563 @omxhub @onkanat @ooiuuii @openclawcash @oscarcpozas @oslook @ostravajih @otsoa-dubief @outpoints @OutThisLife @pandengyao @patrickcneuhaus @patrickluvsoj @patrykkopycinski @pepijndevos @percyhendrux123-prog @petertaras @pgavali0318 @PhoeniXAbhisheK @pieralukasz @pierrenode @pnascimento9596 @pnpwin @poponline63 @ppodolsky @PRATHAMESH75 @predatorheard-byte @PRELVAS94 @priors-agents @professorpalmer @puma10 @PuntoyComaTech @putis @qd678 @quangphucqp @quantbagel @r266-tech @radres @rahuloruganti @Raj-Mixar @ranggaoscar @rarf @rborkow @Realmagnum @recued @RegeneratusLabs @renleding @rewbs @rezaaibox-ui @rezearcher @riesvriend @risyadul @rob-maron @robbyczgw-cla @robertoetcheverryr @roberttidball @rocosen @rodricksz4h5 @rodrigogs @RohanRJ389 @RohiRIK @rohitg00 @roqianjas @rorsch @rroverin @rrrrnmtsu @RuAPI-ai @rungmc357 @rvben @ryan-arman @RyanUnderhill @SaguaroDev @Sahil-SS9 @sahiljagtap08 @Sahilvishnaliya @saif-at-scalekit @sajidhaleem @salch-cred @sambouli @SamSynnada @SanLuis-AI-Solutions @santa-sketch @sarayd @Schildkrote @seanebones-lang @Senci @SenlerBot @seppegadeyne @shannonsands @sharpnotebot @ShawnPana @sheeki03 @Shenrui-Ma @SHL0MS @ShowUNow @shuruheel @sibelius @sidneyvanness @siillee @silentpr0 @simin-yuan @simongonzalezdc @sin5ddd @skk2010 @skyeyesec333 @slchris @smallmj @SmelterLabs @smfworks @smicbee @Smokefarmer @SmoothMarx @Sn0wfly @SnoobieJunes @soli0x @Solidee-def @soyelmismo @soyluisarca @soymarketing @specstream @spranab @sprmn24 @sryimnoob123 @stevysmith @strnadchristopher @strzhao @StudioCodeAI @StudioPlatforms @suhas-svg @supertj @TacoTakumi @TakeshiTGAL @tanmayjain-bit @tarminik @teknium @telnetaisha @Tenrevo @Thanatos9404 @thealps01-netizen @theenigmafield @thehugegatsby @thenabbu @thepurpose-npub @TheSmokeDev @Thibaultjaigu @thileman @Thrymheim @TicoraX @timrichardson @TKCen @tmaarcxs @tokifyi @tommyjtl @tonbistudio @tony-simons-aiowa @tonydavis629 @Totoro-qaq @TREE-Ind @true402 @Tsuki-hash @Tsury @tuancookiez- hub @tugrulguner @TurgayAcar49 @TurgutKural @tyler-y-liu @UE2020 @unsupportedpastels @Utkarshkapil @utkubakir @vanscodex @varun369 @VaughnValle @vectorforge22 @victor-kyriazakos @Viiy @vincentkoc @vKongv @Vocllum @Vsemagush @vshulcz @vykhovanets @web3blind @webtecnica @Wenfengcheng @WestWaters @whosebruce @will-lynas @WillPlatnick @wjgoarxiv @wkwee @wmorin @WolfMarkTools @WompaJango @woprrr @WYSTAF @X9A81P4 @xiaohei-info @xiaoyaner0201 @XimilalaXiang @ximxim @xjsns346 @xxxigm @yasmineali284 @ygd58 @Yicheng-Mark @yoniebans @yoyodine-industries @YS-OH-CORE @yugasurfer @yulunz @yunze7373 @yuzilongleif-collab @yuzushi-dev @yyyzl @yzy806806 @Zamoca42 @ZCode @Zechereh @Zek-Takai @zhenwei5 @ZidoCode @zwmaupin @zzhan1q

Also: Viiy, omega.


Full Changelog: v0.22.0...v0.23.0

This release rolls up and fully documents the v0.22.1–v0.22.7 patch releases (Oct 14 – Nov 3), whose notes were deferred to this minor.

▶v0.22.72026-11-03

Patch release. This tag rolls up the ~174 PRs merged since v0.22.6 into a stable release for the GitHub release (CLI and installers), the Microsoft Store app, Docker and Hermes Cloud. Full curated notes for this window ship with v0.23.0.

Patch release. This tag rolls up the ~174 PRs merged since v0.22.6 into a stable release for the GitHub release (CLI and installers), the Microsoft Store app, Docker and Hermes Cloud. Full curated notes for this window ship with v0.23.0.

About this release

Also in the window, undocumented here on purpose: opt-in lead routing for Desktop Group Chats (with a Lead badge on the room header), cron jobs that post into Group Chats, room purpose and shared notes, group rooms laid out in one chat column with each member's live state, pinned Kanban boards as quick-switch tabs, $$TeX$$ diagram labels and mermaid diagrams rendered through Pele, a Desktop update error box that shows the failed update's output with a report link, Web Access naming the step Start is on with a running clock, Telegram on Team Gateway set up by linking an account to the shared bot, an opt-in Slack thread_followup_silence for unaddressed thread replies, a Daybreak switch for catalog-listed ChatGPT subscription models, and a batch of new plugin-catalog entries.

Full curated release notes for this window ship with v0.23.0, which will document everything from v0.22.0 onward — highlights, feature areas, and complete contributor credits. Nothing in this window is skipped.

Updating

  • Microsoft Store app: updates through the Store.
  • Desktop app installed from the installer (.exe / .dmg): no change in this release; it updates with the next bundled release.
  • CLI: hermes update, or re-run the installer one-liner.
  • Docker / Hermes Cloud: nousresearch/hermes-agent:stable (or :latest).

Full Changelog: v0.22.6...v0.22.7

▶v0.22.62026-11-02

Patch release. This tag rolls up the ~776 PRs merged since v0.22.5 into a stable release for the GitHub release (CLI and installers), the Microsoft Store app, Docker and Hermes Cloud. Full curated notes for this window ship with v0.23.0.

Patch release. This tag rolls up the ~776 PRs merged since v0.22.5 into a stable release for the GitHub release (CLI and installers), the Microsoft Store app, Docker and Hermes Cloud. Full curated notes for this window ship with v0.23.0.

About this release

Also in the window, undocumented here on purpose: the Webapp served from the gateway's own listener (hermes webapp, a Desktop Web Access pane to open it on your network or your own URL behind Nous sign-in, and Desktop plugins loading in a browser tab), /model reset to clear a session's model pin without losing history, per-skill locks against autonomous writes (lockable from the Desktop Capabilities pane), opt-in prepared compaction (compression.prepare_ahead), hermes cron cancel plus a per-job missed-run policy and a Stop button in the Desktop cron editor, /delegation choices saved for the next session, hermes migrate and setup moving Grok Bot and OpenBot users over, opt-in OS-keychain storage for the vault key, the catalog's requires_hermes enforced at plugin install and update, agent-picked ElevenLabs voices in text_to_speech, a pre_llm_call hook that can block a turn before inference, Desktop group chat rename, disband, mentions and attachment paste, every profile shown as a Desktop sidebar section, Telegram video notes, Slack emoji reactions in thread context, and resumable downloads in the package manager.

Full curated release notes for this window ship with v0.23.0, which will document everything from v0.22.0 onward — highlights, feature areas, and complete contributor credits. Nothing in this window is skipped.

Updating

  • Microsoft Store app: updates through the Store.
  • Desktop app installed from the installer (.exe / .dmg): no change in this release; it updates with the next bundled release.
  • CLI: hermes update, or re-run the installer one-liner.
  • Docker / Hermes Cloud: nousresearch/hermes-agent:stable (or :latest).

Full Changelog: v0.22.5...v0.22.6

October 2026

▶v0.22.52026-10-23

Patch release. This tag rolls up the ~81 PRs merged since v0.22.4 into a stable release for the GitHub release (CLI and installers), the Microsoft Store app, Docker and Hermes Cloud. Full curated notes for this window ship with v0.23.0.

Patch release. This tag rolls up the ~81 PRs merged since v0.22.4 into a stable release for the GitHub release (CLI and installers), the Microsoft Store app, Docker and Hermes Cloud. Full curated notes for this window ship with v0.23.0.

About this release

Also in the window, undocumented here on purpose: Nous sign-in reworked (every sign-in is the plain device login, the free-tier guest hands over to your account, the result shows who signed in, connectors offer sign-in instead of opening a guest), hermes update holding back a stable release it refuses instead of offering it, Windows hermes update no longer stuck on the old launcher after a Python repin, usage-window plan support (plan gauges, limit cards and model-switch recovery for window-based plans), pluggable delegation backends (route subagents by model map or profile, switchable per session), plugin slash commands that can ask you to pick an option, hermes import-agent, OpenClaw migration, hermes mcp serve and the Singularity backend moving out of core into plugins (setup offers the importer when it finds another agent), Desktop drag-to-pin in the sidebar and one-click plugin installs with tier badges, the Electron 44 upgrade, Pillow 13 and a batch of dependency security bumps, a clear message when a chat's working folder is gone, hermes update recovering paused gateways after a damaged .git, long Claude DirectSDK answers no longer cut off by the stall timer, Desktop group chats showing which bot is working again, and the experimental webhook-mode MCP events client.

Full curated release notes for this window ship with v0.23.0, which will document everything from v0.22.0 onward — highlights, feature areas, and complete contributor credits. Nothing in this window is skipped.

Updating

  • Microsoft Store app: updates through the Store.
  • Desktop app installed from the installer (.exe / .dmg): no change in this release; it updates with the next bundled release.
  • CLI: hermes update, or re-run the installer one-liner.
  • Docker / Hermes Cloud: nousresearch/hermes-agent:stable (or :latest).

Full Changelog: v0.22.4...v0.22.5

▶v0.22.42026-10-21

Patch release. Desktop stops showing suggestion pills above the composer, plus small plugin and dashboard fixes, for the CLI and installer, the Microsoft Store app, Docker and Hermes Cloud.

Patch release. Desktop stops showing suggestion pills above the composer, plus small plugin and dashboard fixes, for the CLI and installer, the Microsoft Store app, Docker and Hermes Cloud.

Fixes

  • Desktop no longer shows suggestion pills above the composer. The pills appeared for no clear reason, mostly nudging you to set up MCP servers. They and the helpers that only they used are gone. (#142559)
  • Plugins that install nothing skip the dependency consent step. A plugin that declares no dependencies, or whose pyproject.toml installs nothing, now enables without an empty consent prompt. (#142569)
  • Dashboard: WhatsApp can be safely re-paired after logging out. (#142439)
  • Desktop plugin review: the surface lint no longer flags prototype writes; reviewers check them by hand. (#142586)
  • Desktop: the approval-mode chip follows the active profile's mode. (#142565)
  • Release builds: the desktop bundle's pre-build check gets enough time to verify archived build inputs when storage is slow. (#142623)

Also new in the plugin catalog: bubblewrap (bwrap terminal backend on Linux), Singularity/Apptainer, mcp-serve (Hermes as an MCP server), agent-importers (hermes import-agent, now with Cursor), inbox and workflow-record from Hermes Labs. Telegram Business moves to the Hermes Labs community tier.

Updating

  • Microsoft Store app: updates through the Store.
  • Desktop app installed from the installer (.exe / .dmg): no change in this release; it updates with the next bundled release.
  • CLI: hermes update, or re-run the installer one-liner.
  • Docker / Hermes Cloud: nousresearch/hermes-agent:stable (or :latest).

Full Changelog: v0.22.3...v0.22.4

▶v0.22.32026-10-21

Patch release. This tag rolls up the ~620 PRs merged since v0.22.2 into a stable release for the CLI and installer, the Microsoft Store app, Docker and Hermes Cloud. Full curated notes for this window ship with v0.23.0.

Patch release. This tag rolls up the ~620 PRs merged since v0.22.2 into a stable release for the CLI and installer, the Microsoft Store app, Docker and Hermes Cloud. Full curated notes for this window ship with v0.23.0.

About this release

Also in the window, undocumented here on purpose: MCP progress notifications streamed as live tool progress, a refreshed classic CLI layout (glyph transcript, status line under the composer, two-line header), OAuth clients that plugins declare and Hermes signs in and refreshes, hermes plugins update offering every available plugin update plus an Update button for git-installed plugins in Desktop, steering and editing a queued prompt from Desktop, a guided subagent model and provider picker in Desktop, a live /loop countdown row in the CLI and TUI, opt-in Telegram DM topic transfer, a post_compaction plugin hook, a capabilities catalog, the Microsoft Store build going live automatically when a release publishes, session auto-prune back to opt-in with a one-time prompt when disk runs low, Nemotron 3.5 Bolt and one-slot DFlash drafts in the local runtime, and dozens of new plugin catalog entries.

Full curated release notes for this window ship with v0.23.0, which will document everything from v0.22.0 onward — highlights, feature areas, and complete contributor credits. Nothing in this window is skipped.

Updating

  • Microsoft Store app: updates through the Store.
  • Desktop app installed from the installer (.exe / .dmg): no change in this release; it updates with the next bundled release.
  • CLI: hermes update, or re-run the installer one-liner.
  • Docker / Hermes Cloud: nousresearch/hermes-agent:stable (or :latest).

Full Changelog: v0.22.2...v0.22.3

▶v0.22.22026-10-15

Known issue: Sessions that ran under the 0.22.1 gateway can't be deleted in 0.22.2.

v0.22.1 was built from the wrong commit. It shipped unreleased gateway work, and the Microsoft Store app could stick on "Connecting." 0.22.2 is the release 0.22.1 was meant to be.

Known issue: Sessions that ran under the 0.22.1 gateway can't be deleted in 0.22.2.

Highlights

  • The gateway starts after a reboot again. After a restart, Linux can hand an early PID to an unrelated process, and the gateway could mistake it for a running gateway, so a supervised gateway (systemd, launchd, Docker) refused to start. Hermes now records the boot it started in, and when it can't tell, it asks the host lock, which only a live gateway holds. (#138594, fixes #133744)
  • Long local-model turns survive on laptops. Local requests always stream with prompt-reading progress (shown in the status line), stall timers skip time the machine was asleep, a recovered local server gets another try instead of a breaker that failed every later message, and compression no longer times out while the server is still reading a long conversation. On Windows unified-memory machines, model launch and the prompt cache are sized to free memory. (#138560)

Below is everything in the 0.22 release line since v0.22.0: the fixes 0.22.1 was meant to ship, plus the two above. Work that is only on main ships with v0.23.0.

✨ Features

  • Release: split the Microsoft Store bundle into its own windows-store lane (f9d8a740) — @ethernet8023
  • Agent: add nemotron super 3.5 default parameters (c59d2994) — @elisam0
  • Cli: add nemotron to NVIDIA NIM default model list (cc55270e) — @elisam0
  • Cli: add curated model list at the top in the model picker list (e6835fd3) — @elisam0
  • Release: choose what a stable release builds and tests with lanes (36a8ee18) — @ethernet8023
  • Plugin-catalog: add hermes-lang-ko — Korean Desktop language pack (e5f49b6a) — @dandacompany
  • Plugin-catalog: add hermes-lang-pt-br (Brazilian Portuguese language pack) (0169e80c) — @StudioCodeAI
  • Contributors: add 2867297362mjb-sketch email mapping (9ab40641) — @2867297362mjb-sketch
  • Plugin-catalog: add teamorouter (TeamoRouter model providers) (ef223406) — @2867297362mjb-sketch
  • Plugin-catalog: add author-feed (5f6d6836) — @TakeshiTGAL
  • Plugin-catalog: bump aux-ledger to 1.4.0 (6048066e) — @olric3015
  • Plugin-catalog: add the wait-ledger catalog card (77cb58e5) — @olric3015
  • Plugin-catalog: add wait-ledger (97e65322) — @olric3015
  • Community plugin: lightningai + lightningai-rate-limit (07515466) — @dinosauria123
  • Catalog: add Hermes AAC 0.1.0 at reviewed exact source pin (7c9adda8) — @TREE-Ind
  • Plugin-catalog: add openinvest (b6e86101) — @longsizhuo
  • Catalog: add hermes-agent-mixer (v0.2.0 @ 04c4e13) (2e7e3859) — @Sahil-SS9
  • Plugins: move Kumiho Memory to memory catalog shelf (46f95e08) — @kaveone
  • Release: dispatch Stable Release from the default branch (667e6639) — @ethernet8023

🔧 Improvements

  • Agent: keep the Mistral tool-id rule beside its only consumer (c5fc0958) — @kshitijk4poor
  • Profiles: build the seed routing view once; expand enabled too (311155fa) — @kshitijk4poor
  • Profiles: simplify the model seed and trim its tests (d9dfb124) — @kshitijk4poor
  • Update nemotron super 3.5 name (3224993a) — @elisam0
  • Hermes_cli: update nemotron 3.5 name (108ae4e7) — @elisam0
  • Catalog: re-pin showly to the build without the upstream self-update check (6462f64a) — @slchris
  • Catalog: update Model Router to v0.4.3 native preferences (6a097ee9) — @metamindedu

🐛 Bug Fixes

  • Gateway: a recorded boot epoch that cannot be compared is unprovable (79b3b724) — @ethernet8023
  • Local: keep long local-model turns alive on laptops (518ce272) — @emozilla
  • Gateway: a read-only host-record check never creates the lock file (91e63f84) — @kshitijk4poor
  • Gateway: let the host lock decide a legacy record that looks older than this boot (4d984677) — @ethernet8023
  • Gateway: anchor the legacy host-record check on boot time, not a live create_time (5b416e42) — @ethernet8023
  • Gateway: drop argv identity from host rendezvous liveness (c7fa3cbf) — @sin5ddd
  • Gateway: reject a recycled PID that only matches start ticks (7934442e) — @sin5ddd
  • Tui: keep a ${VAR} bare-custom endpoint as a ref in the new profile (dd2db134) — @kshitijk4poor
  • Tui: a new profile inherits a bare custom launch model with its endpoint (463d4019) — @kshitijk4poor
  • Release: a Store-only Windows build gets no signing vars; Store-plus-macOS smokes record only macOS (a8cc19eb) — @ethernet8023
  • Agent: keep composite tool ids paired on Mistral routes (0c1bfb7d) — @kshitijk4poor
  • Agent: rewrite split tool ids before Mistral sees them (b33ed359) — @xxxigm
  • Release: macOS smoke runs when no receipt was staged (f546ea2f) — @ethernet8023
  • Install-e2e: preserve bundled Windows process arrays (6db1934d) — @Oceanswave
  • Profiles: match env-referenced endpoint names when seeding a profile (7b755ed5) — @kshitijk4poor
  • Profiles: drop every same-identity destination entry when merging (9a9a6e43) — @kshitijk4poor
  • Profiles: match endpoint identity the way runtime does when merging (ef57cbd9) — @kshitijk4poor
  • Profiles: keep URL-less destination entries when merging the endpoint seed (2aa469f7) — @kshitijk4poor
  • Profiles: inherited endpoint is not shadowed by the profile's own entries (ac0b63af) — @kshitijk4poor
  • Profiles: select the seeded endpoint from an env-referenced provider (c85302a2) — @kshitijk4poor
  • Profiles: keep bare custom provider tuning in the model seed (424aa90f) — @kshitijk4poor
  • Profiles: reuse named provider lookup without credential reads (c8a777ff) — @helix4u
  • Profiles: align model seed with provider resolution (5fee8d77) — @helix4u
  • Profiles: inherit canonical and legacy custom endpoints (2d3e75aa) — @helix4u
  • Drop the VPN/proxy advice from the CDN-block message (300228d2)
  • Scope the no-cf-cache-status block signal to our R2 host; keep it on 429s (ec5fa1e4)
  • Name a CDN firewall block instead of a bare HTTP 403 (#128295) (#128295)
  • Release: termux-only claims finish and partial releases keep the shared downloads page (6743ab71) — @ethernet8023
  • Ci: packaged-update acceptance retries a download whose connection resets (db4a6a9e) — @ethernet8023
  • Catalog: re-pin Agent Mixer after maintainer review (4297a692) — @Sahil-SS9
  • Pin Activity v0.2.1 public credential routes (3dac1f07) — @hassan-kamel
  • Plugin-catalog: update jp-egov-law to f1dd47e (c029046d) — @TakeshiTGAL
  • Plugin-catalog: update switchbot-control to d0e6f77 (c4bf61b1) — @TakeshiTGAL
  • Install-e2e: the Windows packaged-app feed serves byte ranges (1f6c02c0)
  • Pm: re-merge the uv cache seed on volumes marked by a seedless image (1226894b) — @ethernet8023
  • Release: publish replaces the stable head instead of create-only (df8c3ca5)
  • Release: keep a stable run on main from using the controller commit or cancelling pushes (0dbd96ab) — @ethernet8023
  • Pm: stage a version for version-less buildable plugin members too (3d8dfc1d) — @ethernet8023
  • Pm: don't stamp project.version on members declaring it dynamic (2a10164c) — @Ieqzya
  • Pm: give generated virtual workspace members a project.version (357986e5) — @Ieqzya
  • Pm: retry sync without bytecode compile when that step fails (10619939) — @smfworks
  • Deps: bump httpx2/httpcore2 2.7.0 -> 2.12.0 for the audit advisories (bc8545bd) — @guthixboss1
  • Doctor: stop mislabeling the root npm audit row as agent-browser (7b1dc974) — @chelsealong
  • Doctor: say recreating the same Docker image does not fix npm findings (dee35e1d) — @ethernet8023
  • Doctor: describe full workspace npm audit scope (b9dda06b) — @dwaxe
  • Doctor: clarify Docker npm audit remediation (e21caa27) — @KoNit-K
  • Deps: bump the WhatsApp bridge lock past its npm-audit findings (231cb757) — @ethernet8023
  • Deps: land source-map-js 1.2.2 and sync the workspace pins to the overrides (f57d12eb) — @ethernet8023
  • Deps: bump pinned npm packages to clear npm audit findings (732f0f17) — @sajidhaleem
  • Windows: packaged-npx install failures degrade to plain npx; payload venv must be real (84e2250b) — @ethernet8023
  • Docker: ship the build's uv cache at the PM seed path (f4e70b9d) — @ethernet8023
  • Release: publish the final vX.Y.Z Docker tag again (c1100232) — @ethernet8023
  • Pm: npm on PATH is the pinned npm, not the copy bundled inside node (8d3b5ab5) — @ethernet8023
  • Windows: an MSIX with no Node to copy runs npx MCP servers on its packaged node (8ef7654b) — @ethernet8023
  • Windows: MSIX terminal and MCP children get node, npm and python copied outside the package (c7abf4fb) — @ethernet8023
  • Terminal: the user's own tools come before Hermes's in the terminal (162b457c) — @ethernet8023
  • Search: local file search runs Hermes's pinned ripgrep, not the first rg on PATH (9b4710b8) — @ethernet8023
  • Terminal: strip a sealed payload's venv from child PYTHONPATH (671996b1) — @ethernet8023

📚 Documentation

  • Agent: use the released model name Nemotron 3.5 Super VL (79651b71) — @j-nolan
  • Agent: name the guidance blocks and drop the unsupported claims (ba498735) — @j-nolan
  • Agent: note that the guidance blocks were tested on Nemotron without effect (2b57b0db) — @j-nolan
  • Providers: rephrased content (4f8df7e1) — @nv-pberard
  • Env: add NVIDIA NIM to .env example (3dd96101) — @elisam0
  • Providers: use a non-cloud example key for local NIM (da463310) — @rroverin
  • Providers: update NVIDIA NIM example to Nemotron 3.5 Super VL (c5bab4af) — @rroverin
  • Local Models is on by default on macOS, Windows and Linux (1e8bf3ee)

🧪 Tests

  • Agent: pin Mistral's 9-character tool id on the wire (9a90a825) — @xxxigm
  • Profiles: pin same-identity eviction of URL-less and disabled entries (0f447876) — @kshitijk4poor
  • Profiles: pin that the model seed copies only the selected endpoint (29db211b) — @kshitijk4poor
  • Agent: add reasoning timeout default test (73a07104) — @elisam0
  • Relay: the OpenAI-stream e2e no longer self-deadlocks when the stream is buffered (6e84ce66)
  • Pm: one streamed-sync test covers the bytecode-compile retry (7f21aad1) — @ethernet8023
  • Deps: fail the build if an httpx2 pin or lock entry drops below 2.12.0 (3ca10d88) — @jarvistwil
  • Doctor: point the root-row label test at the staged-npm seam (40441695) — @ethernet8023
  • Pm: allow-list the packaged-npx node lookups in the resolution ratchet (c4f9a169) — @ethernet8023

🏗️ Infrastructure

  • Release: admit stable releases from release/* branches, not just main (9686d55c) — @ethernet8023
  • Map contributor email for sin5ddd (#133750 salvage) (#133750) — @kshitijk4poor
  • Map Oceanswave noreply email to GitHub login (f343bdff) — @ethernet8023
  • Map contributor email for ashmoonori-afk (6a1ee825)
  • Plugins: pin birkin-mnemosyne to core 0.7.1 (e216cd74) — @ashmoonori-afk
  • Catalog: review disclosure for huddo (85d27a51)
  • Map contributor email for StudioCodeAI (c708b34f)
  • Plugin-catalog: update Telegram Client to 1.3.1 (27aaade9) — @guberm
  • Plugin-catalog: bump Gmail to v1.0.20 (c6ac0565) — @guberm
  • Plugin-catalog: bump Gmail to v1.0.19 (74324f11) — @guberm
  • Plugin-catalog: update Gmail to v1.0.18 (8050d9ea) — @guberm
  • Kiwi: bump pin to kiwi@0.12.5, plugin v1.2.2 (a08f5894) — @harrylabsj
  • Map contributor email for dinosauria123 (06c81873)
  • Lightningai-rate-limit to v1.1.0 (wall-clock aligned window) (e28d64e8) — @dinosauria123
  • Map contributor email for TREE-Ind (71f78b3f)
  • Catalog: review disclosure for hermes-aac (0567d017)
  • Catalog: review disclosure for openinvest (c179b286)
  • Map contributor email for Sahil-SS9 (d8b5bd8a)
  • Catalog: review disclosure for hermes-agent-mixer (a98cc310)
  • Catalog: review disclosure for hermes-activity (e891815c)
  • Update Activity catalog to v0.2.0 (908c525d) — @hassan-kamel
  • Map contributor email for slchris (eaf08400)
  • Catalog: showly reviewed disclosure + requires_hermes >=0.21.6 (2ee820e7)
  • Map contributor email for Neboy72 (d9971f13)
  • Catalog: review disclosure for nexus (1a5f5c7b)
  • Catalog: review disclosure for kumiho-memory (63da5f7b)
  • Catalog: review disclosure for model-router (92790c6d)
  • Catalog: review disclosures for anatomy-museum, agent-janitor (560b2507)
  • Contributors: map ieqzya@gmail.com to Ieqzya (c98162bb) — @ethernet8023
  • Contributors: map Darthvader88@gmail.com to guthixboss1 (8c5c9ac4) — @ethernet8023
  • Release: pass the commit under test through every stable lane (66facf4a) — @ethernet8023

📦 Other Changes

  • Repin hermes-insight to a61cdf6 (1.0.3) (0e427d78) — @BrokeSkill
  • Repin hermes-insight to afb08fb (1.0.2) (51e663da) — @BrokeSkill
  • Plugin-catalog: bump huddo to 0.9.0 (eeacc00a) — @hellohanchen
  • Plugin-catalog: re-pin hermes-lang-pt-br to 7548ff1 (pack verifier + CI) (82fbd41f) — @StudioCodeAI
  • Plugin-catalog: re-pin hermes-lang-pt-br to 69efb2f (credits/timeline README) (2c20d9a3) — @StudioCodeAI
  • Catalog: bump speechify to 0.1.1 (3a5b9e84) — @Lokeshm24
  • Catalog: re-pin qdrant-memory to 0.2.1 (e14adc06) (720552bb) — @cnkang
  • Catalog: repin Hermes AAC 0.1.1 SDK-only reduced features (473e2847) — @TREE-Ind
  • Plugin-catalog: openinvest re-pin to 106e5ba (bounded backend deps, 0.41.6) (6cc9a434) — @longsizhuo
  • Plugin-catalog: openinvest re-pin to 3a0c816 (review fixes, backend 0.41.4) (00c311c8) — @longsizhuo
  • Plugin-catalog: openinvest re-pin to 3e1a9d7 (review fixes) (cb223633) — @longsizhuo
  • Plugin-catalog: bump plan-mode to 0.4.4 (2a5617f8) — @100yenadmin
  • Plugin-catalog: bump plan-mode to 0.4.3 (6fafdd4f) — @100yenadmin
  • Catalog: pin the Showly community plugin (5da3156c) — @slchris
  • Catalog(nexus): repin the sha to 4392e6d — /embed and /mcp demand a per-installation key (64425a06) — @Neboy72
  • Catalog(nexus): repin to v0.22.24 — the embedder comes from the service, not from a shadowed path (0ee11795) — @Neboy72
  • Catalog(nexus): repin to v0.22.23 — the plugin reaches its own venv again (a442c9a5) — @Neboy72
  • Catalog(nexus): pin the engine to the full sha of the reviewed commit (1f295ae0) — @Neboy72
  • Catalog(nexus): repin to v0.22.22 — the engine rev is one resolvable tag, the docs match the code (7f495184) — @Neboy72
  • Catalog(nexus): repin to v0.22.21 — five access-level gaps closed (0f8a2a17) — @Neboy72
  • Catalog(nexus): repin to v0.22.20 — conversation history is private (14aaf8e1) — @Neboy72
  • Catalog(nexus): repin to v0.22.18 (Claude Code writes memory again) (2165eed9) — @Neboy72
  • Catalog(nexus): repin to v0.22.17 (memory provider can embed again) (f60e16fc) — @Neboy72
  • Catalog(nexus): repin to v0.22.16 (named-vector fixes in the root package) (dab47696) — @Neboy72
  • Catalog(nexus): repin to v0.22.15 (review findings: stricter trust matching) (3952f2b5) — @Neboy72
  • Catalog(nexus): repin to 3f77b2a (plugin.yaml version parity) (ca1c2261) — @Neboy72
  • Catalog(nexus): repin to v0.22.13 (named collection model) (c7b035c1) — @Neboy72
  • Plugin-catalog: bump account-pool to 4.0.2 (e5d2cebe) — @roqianjas
  • Plugin-catalog: bump alans-way and alans-way-computer to 0.21.5 (a8d61e30) — @capthvnsen
  • Plugin-catalog: bump tinyfish to 0.2.2 (6ebd92d9) — @Zechereh
  • Plugin-catalog: nvidia pins -> de75692 (Broadcast troubleshooting uses tool_search, not a shell probe) (66cd37c9) — @alt-glitch
  • Plugin-catalog: nvidia-app + nvidia-broadcast pin -> 729e25c (first-run setup when the app side is not ready) (f18948e4) — @alt-glitch
  • Catalog: agent-janitor (from #137875) (#137875) — @ZidoCode
  • Catalog: anatomy-museum (from #138166) (#138166) — @danrudy33
  • Catalog: secure-env-ingress (from #132272) (#132272) — @web3blind

👥 Contributors

Thank you to everyone who contributed to this release!

  • @ethernet8023 (33 commits)
  • @kshitijk4poor (17 commits)
  • @Neboy72 (13 commits)
  • @elisam0 (7 commits)
  • @guberm (4 commits)
  • @longsizhuo (4 commits)
  • @helix4u (3 commits)
  • @j-nolan (3 commits)
  • @StudioCodeAI (3 commits)
  • @TakeshiTGAL (3 commits)
  • @olric3015 (3 commits)
  • @sin5ddd (2 commits)
  • @xxxigm (2 commits)
  • @rroverin (2 commits)
  • @BrokeSkill (2 commits)
  • @2867297362mjb-sketch (2 commits)
  • @dinosauria123 (2 commits)
  • @TREE-Ind (2 commits)
  • @100yenadmin (2 commits)
  • @Sahil-SS9 (2 commits)
  • @hassan-kamel (2 commits)
  • @slchris (2 commits)
  • @alt-glitch (2 commits)
  • @Ieqzya (2 commits)
  • @emozilla (1 commit)
  • @predatorheard-byte (1 commit)
  • @Oceanswave (1 commit)
  • @nv-pberard (1 commit)
  • @dandacompany (1 commit)
  • @ashmoonori-afk (1 commit)
  • @hellohanchen (1 commit)
  • @Lokeshm24 (1 commit)
  • @harrylabsj (1 commit)
  • @cnkang (1 commit)
  • @kaveone (1 commit)
  • @roqianjas (1 commit)
  • @capthvnsen (1 commit)
  • @Zechereh (1 commit)
  • @metamindedu (1 commit)
  • @ZidoCode (1 commit)
  • @danrudy33 (1 commit)
  • @web3blind (1 commit)
  • @smfworks (1 commit)
  • @jarvistwil (1 commit)
  • @guthixboss1 (1 commit)
  • @chelsealong (1 commit)
  • @dwaxe (1 commit)
  • @KoNit-K (1 commit)
  • @sajidhaleem (1 commit)

Updating

  • CLI and installer-script desktop installs: hermes update, or re-run the installer one-liner. This moves installs that took v0.22.1 back onto the release line.
  • Microsoft Store: updates through the Store.
  • Docker / Hermes Cloud: nousresearch/hermes-agent:stable (or :latest).

Full Changelog: v0.22.0...v0.22.2 (release line)

▶v0.22.12026-10-14

This is a patch release, with a handful of fixes for the Windows Store, plugin updates, and more.

✨ Features

  • Agent): add nemotron super 3.5 default parameters (c59d2994) — @elisam0
  • Cli): add curated model list at the top in the model picker list (e6835fd3) — @elisam0
  • Plugin-catalog): add hermes-lang-ko — Korean Desktop language pack (e5f49b6a) — @dandacompany
  • Plugin-catalog: add hermes-lang-pt-br (Brazilian Portuguese language pack) (0169e80c) — @StudioCodeAI
  • Plugin-catalog: add teamorouter (TeamoRouter model providers) (ef223406) — @2867297362mjb-sketch
  • Plugin-catalog): add author-feed (5f6d6836) — @TakeshiTGAL
  • Plugin-catalog): bump aux-ledger to 1.4.0 (6048066e) — @olric3015
  • Plugin-catalog): add the wait-ledger catalog card (77cb58e5) — @olric3015
  • Plugin-catalog): add wait-ledger (97e65322) — @olric3015
  • Community plugin: lightningai + lightningai-rate-limit (07515466) — @dinosauria123
  • Catalog: add Hermes AAC 0.1.0 at reviewed exact source pin (7c9adda8) — @TREE-Ind
  • Plugin-catalog): add openinvest (b6e86101) — @longsizhuo
  • Catalog: add hermes-agent-mixer (v0.2.0 @ 04c4e13) (2e7e3859) — @Sahil-SS9
  • Plugins): move Kumiho Memory to memory catalog shelf (46f95e08) — @kaveone
  • Add canonical group attachment controls (4673f17c)
  • Consume event-bound hosted files through canonical admissions (e87bd098)
  • Connect Desktop groups to canonical driver controls (3c2c9d47)
  • Transport hosted producers through authenticated owner sockets (51189b05)
  • Retain hosted room work evidence across authority changes (0af2c714)
  • Route hosted room workers through session authority (bd22e0f9)
  • Wire canonical hosted group controls (fa2179bb)
  • Gateway): resolve --resume and -c <title> [--create-if-missing] in the authority (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/11a83ad4d19fab4bd8889c9d04759af168c55b2b"><code>11a83ad4</code></a>)</li> <li>Retain terminal identity tombstones during history retirement (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/ba435291aab7d782e70f1102bd6174d9b6278675"><code>ba435291</code></a>)</li> <li>Route native CLI and ACP actions through prepared controls (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/27b0f7f20a7ba0fdc793fafe732d56adf2dfa54f"><code>27b0f7f2</code></a>)</li> <li>Publish real prepared compression in the mutation receipt transaction (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/b654027693d6c8f92b185e8a3bd2728c5f3e81c5"><code>b6540276</code></a>)</li> <li>Prepare and atomically publish local model changes (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/7e7fa7c61611a858cc0be51f790584b91f1d149c"><code>7e7fa7c6</code></a>)</li> <li>Commit independent local branch policy and route atomically (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/f98eaec108f365da07090495a82d6ca95c2de66a"><code>f98eaec1</code></a>)</li> <li>Project managed tool progress without private arguments or results (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/61ccd894c3674d01a2fb95528217816bc4888d52"><code>61ccd894</code></a>)</li> <li>Bridge managed worker approvals clarification and stop (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/a0b5118f46196190bc244a8f1ecf17d5754fc72c"><code>a0b5118f</code></a>)</li> <li>Launch admission-owned tool workers from the ordinary daemon (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/510e32be9a31a2caae358fc6c95673ffb24c0466"><code>510e32be</code></a>)</li> <li>Enforce safe defaults at bare agent construction (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/1eeac867b187f331b61e1b607d35b1af7f00b2bc"><code>1eeac867</code></a>)</li> <li>Suppress rules skills and memory readers in private safe workers (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/25cda66a8bfff26da5c92bf3170cc724bd7fc5ec"><code>25cda66a</code></a>)</li> <li>Bypass plugin providers and hook execution in safe workers (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/33921e6f97a950b4b74ffa11cdb3004676f1c920"><code>33921e6f</code></a>)</li> <li>Bind immutable private worker config before runtime imports (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/4cc3f42087e61e84a3b6054903e88f3c7e943a56"><code>4cc3f420</code></a>)</li> <li>Expose verified canonical ACP editor MCP attachment (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/1bda56a104e55ebbd21fdefaed860f6488009b57"><code>1bda56a1</code></a>)</li> <li>Rebind exact editor MCP credentials on canonical ACP resume (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/5bfa2f2c2df10d26f24c103079fd9044e69b4df8"><code>5bfa2f2c</code></a>)</li> <li>Borrow editor MCP configurations with frozen session manifests (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/394f00f694cb90c2ea6f502eda0959bc37ab2830"><code>394f00f6</code></a>)</li> <li>Isolate execution-owned MCP registry overlays (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/96e4d2962bfeb56323063f64bad8cca3fd4479ee"><code>96e4d296</code></a>)</li> <li>Commit local reset targets with runtime mutation receipts (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/821137c301ebc5419f86a7069b66036b42100aab"><code>821137c3</code></a>)</li> <li>Expose profile-scoped Bot relay mailbox RPCs on the authority (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/792aa35adc57874c62a6d03a40d512d0bab1cebe"><code>792aa35a</code></a>)</li> <li>Migrate queued Bot mailbox identities without replaying claims (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/af49e2fc05950473e4ee6f9dd431233540f62923"><code>af49e2fc</code></a>)</li> <li>Send local Bot DMs to the discovered canonical authority (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/47ba694e291d0d3233041720d04317f5cd82285f"><code>47ba694e</code></a>)</li> <li>Admit identified Bot Chat relay deliveries through session authority (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/998df8cc0b8028634a6fca15677ab2fc20900b2a"><code>998df8cc</code></a>)</li> <li>Reserve exact owner-started admission worker claims (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/fbdfd46de8303673c908207206a818d98f8d68f4"><code>fbdfd46d</code></a>)</li> <li>Expose authenticated owner mutation snapshots (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/d6331c4813bab5d0d920286b4af5a6b58fd13ced"><code>d6331c48</code></a>)</li> <li>Freeze ACP tool policy and bind execution-owned edit consent (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/e2f5cfc65ea6c38580d3ac38469e71bf31912354"><code>e2f5cfc6</code></a>)</li> <li>Reserve hosted API identities through the authority (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/6b278ca4f015e2a5a5b0a30c5ac1b11825c15384"><code>6b278ca4</code></a>)</li> <li>Admit API runs before acknowledging execution (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/f2d9cea38e97e0356b9b24c07ea5deddfe9de914"><code>f2d9cea3</code></a>)</li> <li>Run bound API turns on the shared cached agent (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/dea4f0c568e6d0e13fd9ea8be73cd4ea81a96f25"><code>dea4f0c5</code></a>)</li> <li>Restore server-bound API session identities (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/76532ae1338cc193f6bdef92c0aa4d616a319150"><code>76532ae1</code></a>)</li> <li>Retain claim-fenced structured admission results (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/262e0ebf5ff0123d675098aaa5c8e03f5e4c5d1b"><code>262e0ebf</code></a>)</li> <li>Compose worker compression lifecycle and delegation persistence (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/6c57ad37c31e643f5692ea5d31ab759b425cf113"><code>6c57ad37</code></a>)</li> <li>Publish committed worker completions through authenticated owner bridge (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/d94ccc2d8182ed1a5da6a11b9d79a1d4b97a96c7"><code>d94ccc2d</code></a>)</li> <li>Fence delegation receipts with shared worker sequence and epoch (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/be85ca249e51ae9975c049604e1ae2ed4194261b"><code>be85ca24</code></a>)</li> <li>Route registered worker delegation writes through durable outbox (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/1ee6545f7a34d4424d7dcae44b7e40c217cb4a0c"><code>1ee6545f</code></a>)</li> <li>Add execution-bound delegation ledger operations (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/8128e88fd2b7f86b16534c0f62b605265aee80af"><code>8128e88f</code></a>)</li> <li>Persist worker titles activity and route sidecars with receipts (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/235e4f12d7d9212c205cf1f98876ea0e6fa0e12c"><code>235e4f12</code></a>)</li> <li>Add assignment-fenced worker constructor and finalization handlers (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/b7de5a8eba9ab7c4851c823f8fd196f2c4ca5da8"><code>b7de5a8e</code></a>)</li> <li>Atomically compact and advance worker transcript assignments (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/c2e77ebaeb77b0f70dce83c105606335a64cd988"><code>c2e77eba</code></a>)</li> <li>Preserve worker history and cache lineage identities (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/e63e1101c02a80e6f3b9f0ca619fae5b6be73e6e"><code>e63e1101</code></a>)</li> <li>Add receipted worker compression guards and leases (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/d51afe4cb92e66e499c6e3f385dfbe18b8d9b88d"><code>d51afe4c</code></a>)</li> <li>Route REST imports and deletion through mutation receipts (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/2cdd103df9f7b1668292c36e791fc5fd084860ff"><code>2cdd103d</code></a>)</li> <li>Route REST sidebar edits through the shared authority (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/eb329d21ba95077eff9764e7531e3364ed3d8362"><code>eb329d21</code></a>)</li> <li>Coordinate shared mutations and publish committed revisions (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/eb42a0021f05befde4159c43e097b652fc9d1cf3"><code>eb42a002</code></a>)</li> <li>Reuse transactional rewind with generation and receipt fences (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/6777ffa4bb67310bc5a7044892cc7cf48bdb685e"><code>6777ffa4</code></a>)</li> <li>Import session histories atomically with retry receipts (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/b919459524e609dd60cf04c5710941db8cce1903"><code>b9194595</code></a>)</li> <li>Fence destructive deletion without erasing runtime obligations (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/e5249c9af4efbcfd9aca39f276c71d938249c3e4"><code>e5249c9a</code></a>)</li> <li>Commit sidebar edits with canonical mutation receipts (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/0b1b8e0f1d845060c84791f9bc45f581b9ed8858"><code>0b1b8e0f</code></a>)</li> <li>Project execution-owned approvals to ACP viewers (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/97a24c10b3b81a8ea1f142d0125b05ffc62098aa"><code>97a24c10</code></a>)</li> <li>Attach ACP transport to canonical session execution (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/8dd92a30b6b53c9b5ae3a27eebcb90f36c9919a3"><code>8dd92a30</code></a>)</li> <li>Persist assigned worker prompt context and usage anchors (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/c6540cb9dd86a08eef0bf597bcb9dae68a955ac3"><code>c6540cb9</code></a>)</li> <li>Admit local automation through owner durable FIFO (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/1642b339918cb74f87b4d03e17593d547e674329"><code>1642b339</code></a>)</li> <li>Queue due gateway heartbeat ticks through canonical admission (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/ab44af2c0732485fb33c7e53bad0a5daa29f8d28"><code>ab44af2c</code></a>)</li> <li>Admit trusted gateway completions to the durable session FIFO (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/7cd1b000daa3526e72a817df70190dd5569e0aec"><code>7cd1b000</code></a>)</li> <li>Fence worker terminal receipt after sequenced durable writes (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/21a48aea09d719b3f2a1f2ebae8053791b6b13d2"><code>21a48aea</code></a>)</li> <li>Authenticate live worker persistence and explicit restart adoption (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/9d7d7e2abdab2a59f7e7e0ff517b85b73de45681"><code>9d7d7e2a</code></a>)</li> <li>Receipt worker main and auxiliary usage in canonical transactions (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/9d896c499b034fcb4e16e58a1865a26feb778ec0"><code>9d896c49</code></a>)</li> <li>Atomically receipt structured worker transcripts and turn leases (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/2abe47de8bd8f2b9f76c024b339244e05e7918b0"><code>2abe47de</code></a>)</li> <li>Dispatch bound local slash commands through gateway handlers (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/b0377e929b48bed68fb13799ad1878d747e128e3"><code>b0377e92</code></a>)</li> <li>Share authenticated canonical slash discovery with legacy catalogs (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/fcf50e03c3b2cdae9c160ee01f23ba576c198965"><code>fcf50e03</code></a>)</li> <li>Authenticate native HTTP through private daemon grants (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/75764b2ad0c8767069da717f68a81977d1165409"><code>75764b2a</code></a>)</li> <li>Commit local creation policy and restore cold authority routes (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/aa2624ba5c200d2e540e538e6bae73754f9f8f15"><code>aa2624ba</code></a>)</li> <li>Attach Desktop local launches to canonical gateway (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/9c40ddcfc2a04fdb3278e8173a85a4b03c24099f"><code>9c40ddcf</code></a>)</li> <li>Bind Ink sessions and controls to canonical authority envelopes (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/a2d9e258daa97b43836821a97f79c5de06d21df5"><code>a2d9e258</code></a>)</li> <li>Attach Ink local transport through canonical gateway bootstrap (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/08f628f9f5b0f5a2ebcaf7ece45e76e3ff71f457"><code>08f628f9</code></a>)</li> <li>Route normal classic and one-shot launch through the gateway (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/3551045907580e25a766d01bc56eb0ee41115d0d"><code>35510459</code></a>)</li> <li>Add transport-only classic gateway client and option validation (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/6ed03be97446425fbf47c64ea4c71a318f4f6ba5"><code>6ed03be9</code></a>)</li> <li>Apply local launch policy through real gateway turns (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/080c5da6f201058cf7dfda6bc0343910dc1f6625"><code>080c5da6</code></a>)</li> <li>Define frozen local session launch policy (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/81ed9712f29cacb8727e2c0cc12960a64201abf0"><code>81ed9712</code></a>)</li> <li>Route revision-checked session metadata through gateway (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/17ddbe4407a60230c2bfb0b743fc44b8a027f1c4"><code>17ddbe44</code></a>)</li> <li>Expose scoped local session metadata and document compatibility (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/52c354ff183ae96e2cbba651acda7e679b795db6"><code>52c354ff</code></a>)</li> <li>Create gateway-owned local sessions through authenticated controls (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/42967cddd73f56da1f62ab91f945c36347bd932c"><code>42967cdd</code></a>)</li> <li>Recheck native Discord membership before durable admission and claim (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/cc0cd5c993e51feaf6be61077e2a2566673847fc"><code>cc0cd5c9</code></a>)</li> <li>Boot authenticated session authority in ordinary gateway (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/c3bf62ebd392e9d2f843b0f5b2f1020561c7baee"><code>c3bf62eb</code></a>)</li> <li>Share live clarification controls across attached viewers (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/9c474378a1f608cb388d50fdd5e3d5b173cbac89"><code>9c474378</code></a>)</li> <li>Stream canonical gateway execution events to shared observers (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/40d9b4c7ea8e755c886588523fa3b659137fe54a"><code>40d9b4c7</code></a>)</li> <li>Reauthorize multiplex native connector provenance (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/244bff73c8cb4430b8041de6b14c87e5861f3c17"><code>244bff73</code></a>)</li> <li>Share generation-fenced approvals across gateway viewers (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/5e2afdaec356a2999de82d67b556f02189516ede"><code>5e2afdae</code></a>)</li> <li>Retain native media and context before durable admission (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/ef447482f23ec3c46c3e0f7dafd52e6693c14117"><code>ef447482</code></a>)</li> <li>Replay authority events from atomic subscription watermarks (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/d24dc3fa6f55afc29eb8e56907c225cbc0288c01"><code>d24dc3fa</code></a>)</li> <li>Recover committed native text without replaying unknown turns (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/78646003aeab0a086b81a580b3fd0eff80808e2a"><code>78646003</code></a>)</li> <li>Execute attached websocket turns on the messaging live agent (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/47fbfd4ca545b84f7413c263cb1aa799d7e34bd3"><code>47fbfd4c</code></a>)</li> <li>Add revision-fenced runtime rename and archive receipts (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/5878e5656ca6907168d957cc08eec8e7862f13b4"><code>5878e565</code></a>)</li> <li>Fence typed worker persistence with atomic replay receipts (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/7cc69d293faa91c24d674886ed7bfbe7ddf71923"><code>7cc69d29</code></a>)</li> <li>Import drained legacy admissions atomically with unknown recovery (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/124dfa7c5791435d3227efe76c378f10e88b0396"><code>124dfa7c</code></a>)</li> <li>Centralize durable session admissions in canonical storage (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/0695b12b4c4b2c672d96229eba464e20617d73a8"><code>0695b12b</code></a>)</li> <li>Keep declined gateway wizard starts unmanaged (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/7500930d9f626ab45ec2a209448ef909a0fc6a1e"><code>7500930d</code></a>)</li> <li>Require explicit consent for gateway service setup (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/16d6b7daa13b51344fdcecc66958f3f876cf017f"><code>16d6b7da</code></a>)</li> <li>Restrict runtime bootstrap peers and bound native pipe I/O (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/d3ccac14e84c5861ab6105b952b370c6a8b0e135"><code>d3ccac14</code></a>)</li> <li>Compose the existing API into the gateway event loop (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/bac47874ec723c1436748061c221a9c06fcdf642"><code>bac47874</code></a>)</li> <li>Distinguish unavailable gateway owners from absent runtimes (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/e903841cb861228bcde86f9840379876eb097b45"><code>e903841c</code></a>)</li> </ul> <h2>🔧 Improvements</h2> <ul> <li>Profiles): build the seed routing view once; expand <code>enabled</code> too (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/311155fade43d1993ea968909a2ad36762345bbc"><code>311155fa</code></a>) — @kshitijk4poor</li> <li>Update nemotron super 3.5 name (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/3224993af1860ffdb587e491560f32bf845c82ad"><code>3224993a</code></a>) — @elisam0</li> <li>Hermes_cli): update nemotron 3.5 name (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/108ae4e7cd4c89a95545b1cdab3e1b72ce220755"><code>108ae4e7</code></a>) — @elisam0</li> <li>Catalog: re-pin showly to the build without the upstream self-update check (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/6462f64aefba9271f9977edcd430d61141d4d760"><code>6462f64a</code></a>) — @slchris</li> <li>Catalog: update Model Router to v0.4.3 native preferences (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/6a097ee98d4c96eafa9ef76c98c3c39d6d65a0da"><code>6a097ee9</code></a>) — @metamindedu</li> <li>Keep native MCP revision scoped to frozen tool settings (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/53d17f1c5b15059d4a44ea30839726371ff3df2e"><code>53d17f1c</code></a>)</li> <li>Cron bot-chat delivery has no local CLI fallback lane (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/5d87060eb8c1445bc53e135fdb79be64fd6179e5"><code>5d87060e</code></a>)</li> <li>Retire bot execution discovery from viewer notification pollers (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/c8ae25cd1122550a13ba22f84e325adab0d8c91a"><code>c8ae25cd</code></a>)</li> <li>Make default ACP construction authority-only (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/c423a431b330c6f9ef110b0eb8c691e37ec400e5"><code>c423a431</code></a>)</li> <li>Remove obsolete updater sidecar deletion path (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/5889565343c9daa08ac64e774d4dda1f8b0ec459"><code>58895653</code></a>)</li> <li>Remove retired local serve launch imports (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/5702f9dfccd1981a722700fb7ce319c3daa58a6a"><code>5702f9df</code></a>)</li> <li>Extract ordinary gateway bootstrap lifecycle (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/3c0f1e01e73ae5f05b3a44153c60b29daf2ff877"><code>3c0f1e01</code></a>)</li> <li>Freeze shared session authority interface contract (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/1af74c27301edc1ce0f48b866d3b645c4d949048"><code>1af74c27</code></a>)</li> <li>Extract TUI session registry and agent factory seams (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/a38ca908e0c33cc96b289e720a09d904072a4af6"><code>a38ca908</code></a>)</li> <li>Separate gateway agent acquisition from native progress (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/0f3a4fb2e7aaa9b2676747bab3ca2656160b259a"><code>0f3a4fb2</code></a>)</li> <li>Extract gateway turn preparation and persistence phases (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/6e8de80a7af35b47fc79ae18f725f3588d8a278a"><code>6e8de80a</code></a>)</li> <li>Move gateway service wizard into setup sibling (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/f0b35a982eceb2a177da7d6545800b80607f233a"><code>f0b35a98</code></a>)</li> <li>Extract gateway setup service orchestration (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/02d0307c24d2fa3541316484693f97a8e3e8723c"><code>02d0307c</code></a>)</li> <li>Remove extracted runner initialization bodies (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/4b1379fb1620e29f8e6c36c2f3660a08fb9f8bdc"><code>4b1379fb</code></a>)</li> <li>Extract gateway bootstrap and writable initialization phases (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/0c2873402d67ed43b59d51c83d83c1f6bf5dbbc4"><code>0c287340</code></a>)</li> <li>Extract standalone web application lifespan (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/f38f2444fdd5be92b340a3f39f5a226efd4db798"><code>f38f2444</code></a>)</li> </ul> <h2>🐛 Bug Fixes</h2> <ul> <li>Compression): fallback summaries, multiline setup notes and parallel loads keep skill markers right (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/297552a9d646119871391d202509822cd86330df"><code>297552a9</code></a>)</li> <li>Compression): a slash-skill body's example paths stay out of the anchor index (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/d602082868bcca0efcfc0dd86723bbfce29fb9e5"><code>d6020828</code></a>)</li> <li>Compression): small and slash-invoked skills keep their reload marker across compaction (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/71e815def843ab4885ba14a9170b546a6df077f9"><code>71e815de</code></a>)</li> <li>Desktop): update notes keep full text, re-read merged PRs per check, respect custom branches (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/f2a93db97c1c8ab7b97ce640764349c1f6a804a3"><code>f2a93db9</code></a>)</li> <li>Mcp): preserve server deadlines through outer tool execution (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/f30020ed5e1fc35551ce0d259ed5086dd6bf9885"><code>f30020ed</code></a>)</li> <li>Plugins): honor portable per-server call deadlines (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/fcc170b7983e3891e02f96d977ecdf219d11be1e"><code>fcc170b7</code></a>)</li> <li>Agent): rewrite split tool ids before Mistral sees them (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/b33ed35968f00896e093fa41735af7c108e6bead"><code>b33ed359</code></a>) — @xxxigm</li> <li>Profiles): align model seed with provider resolution (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/5fee8d77bf91ea2e34817817334f98fe93a5b8f6"><code>5fee8d77</code></a>) — @helix4u</li> <li>Profiles): inherit canonical and legacy custom endpoints (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/2d3e75aab02f044000110137a0503b5fa2114367"><code>2d3e75aa</code></a>) — @helix4u</li> <li>Drop the VPN/proxy advice from the CDN-block message (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/300228d24c593f779055204753921fbe9a2163c5"><code>300228d2</code></a>)</li> <li>Catalog): re-pin Agent Mixer after maintainer review (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/4297a692d9570e039aa8c7bfde900ffca420eaff"><code>4297a692</code></a>) — @Sahil-SS9</li> <li>Pin Activity v0.2.1 public credential routes (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/3dac1f07d59f7f300f6f3433cef1bf8966b763c4"><code>3dac1f07</code></a>) — @hassan-kamel</li> <li>Plugin-catalog): update switchbot-control to d0e6f77 (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/c4bf61b126a60172d2598b923fd08b1d60b1e84f"><code>c4bf61b1</code></a>) — @TakeshiTGAL</li> <li>Doctor): clarify Docker npm audit remediation (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/e21caa27b75a880536ac3429f70c356ece19a330"><code>e21caa27</code></a>) — @KoNit-K</li> <li>Deps): bump the WhatsApp bridge lock past its npm-audit findings (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/231cb757a4607e6b44e13c154696e869fd959102"><code>231cb757</code></a>) — @ethernet8023</li> <li>Tui): retain native legacy history in canonical session picker (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/2171365a3fcbe646bcb21dc26e8391f5588023fe"><code>2171365a</code></a>) — @unsupportedpastels</li> <li>Tui): the banner shows main's 8-character session label for a canonical id (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/2c97990051a6a415ce4baadf4bb6e90262cca482"><code>2c979900</code></a>)</li> <li>Gateway): a local process completion persists as a process_complete card (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/ff770cb769852a776c8788ddaae2f121234eb942"><code>ff770cb7</code></a>)</li> <li>Runtime): persist diagnostic automation category through replay (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/bdac7911d99e5b18793e3fc414ce67d839d1f3f0"><code>bdac7911</code></a>) — David Dudok de Wit</li> <li>Gateway): retire bot receipt tasks with authority (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/d50b2eda3d453eeedf720337f06e743eeb6d7655"><code>d50b2eda</code></a>) — @Lokee86</li> <li>Gateway): persist operator provenance for native recovery (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/c51049aa8f6099b79569d339de895ca0a9301ba5"><code>c51049aa</code></a>) — @Lokee86</li> <li>Cli): preserve blocking controls in finite output (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/954638ede23e1e3ddeca27412992cfa2d636ea31"><code>954638ed</code></a>) — @Lokee86</li> <li>Gateway): isolate malformed bot receipt schemas (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/4be62f9ca68d626760a54742c6308cf38f804f88"><code>4be62f9c</code></a>) — @Lokee86</li> <li>Acp): clean up deferred cancellation lifetime (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/89dac62078c964f5aa8f1a5ff40f3914baecc481"><code>89dac620</code></a>) — @Lokee86</li> <li>Gateway): close remaining unified-runtime review gaps (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/83cdc63a19925827ba0aa78339fb5acea02b06cc"><code>83cdc63a</code></a>) — @Lokee86</li> <li>Gateway): isolate bot receipts and keep headless cron no-spawn (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/cdf36315e95e922970b91401bd1156c00a2d1817"><code>cdf36315</code></a>) — @Lokee86</li> <li>Gateway): recover mixed local queues and retire failed hot serves (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/f4fd982b56920ccf5311943e7d1a8c19f986e87f"><code>f4fd982b</code></a>) — @Lokee86</li> <li>Gateway): terminate replay gaps and retain ACP cancels (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/37662b16ec967452d3fd600db1dab1bc12e68e46"><code>37662b16</code></a>) — @Lokee86</li> <li>Gateway): route local ticket bootstrap through control owner (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/996d9bebd1190fa4e45f9f8106de99ff558dd819"><code>996d9beb</code></a>) — @Lokee86</li> <li>Desktop): a transcript reconcile skips a runtime mid-switch to another session (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/09aafceab4d325ccbed402caf928f7b9ead4371c"><code>09aafcea</code></a>)</li> <li>Gateway/stream): a failed overflow head send no longer spins the event loop (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/f0d9bd2fc4971534f636bbda16c56004116b3d52"><code>f0d9bd2f</code></a>)</li> <li>Gateway): <code>profile</code> on our own home is stripped only for the closed session verbs (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/2c5b0af5e19bf607ffd6f9bbb6cb34a1d4a5c9df"><code>2c5b0af5</code></a>)</li> <li>Gateway): <code>gateway ensure</code> starts on a systemd host whose user bus is unreachable (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/82db702f3fbf5a04db3880df02d6517b27bf3163"><code>82db702f</code></a>)</li> <li>Desktop): a session routed onto a new socket re-attaches before it submits (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/307dac202f0f847632f05de1e91ffae3d3a125a6"><code>307dac20</code></a>)</li> <li>Desktop): a registry-connection hover prewarms that connection's gateway (main #89756 port) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/89756">#89756</a>)</li> <li>Bot-relay): a relayed dm targets only live profiles (#99392 on the authority door) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/99392">#99392</a>)</li> <li>Gateway_chat): one-shot refuses an unknown-blocked session; stream-json always closes with a result (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/08b6ebd05155adabf8a7162e9755df424f083b6f"><code>08b6ebd0</code></a>)</li> <li>Tui_gateway): projects RPCs answer from the scan cache when a profile's state.db was never initialized (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/372ec7fc1303e4cdc9c74ebf3bc7e2dd2a786914"><code>372ec7fc</code></a>)</li> <li>Cron): Bot Chat delivery creates the missing Bot Chat instead of failing the run (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/364a0e22b9106d94356a962089f1674ebe78c48a"><code>364a0e22</code></a>)</li> <li>Seed-copy compensation discards the row without the retirement fence (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/44212c5a559f11ea9285161ca4372590f09dde73"><code>44212c5a</code></a>)</li> <li>Gateway): exact mutation retries repair the runtime projection (X11, reported by @Xipong) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/c1ee92860012bffec6128aead77ba1b7fa1fed8d"><code>c1ee9286</code></a>)</li> <li>Desktop): preserve accepted input and clarify persistent-work Quit (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/f8e234ed89dd1b00149699d806783f89e2f5164e"><code>f8e234ed</code></a>) — @dokterdok</li> <li>Desktop): drop pool-limit notification wiring main added after the pool subsystem was removed (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/c3632fcca3639e44f1f16ebfce176c3f2fd6823c"><code>c3632fcc</code></a>)</li> <li>Runtime): owner scope is multiplex-only; foreign LOCAL sources fail closed; primary = launch home (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/a37550b96ff7f5f433990149d1b04f100df2b57c"><code>a37550b9</code></a>)</li> <li>Type session creation identity with merged onboarding options (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/0948ffc98a77426a0f529837e6ebee7b70343a30"><code>0948ffc9</code></a>)</li> <li>Preserve main lifecycle and discovery behavior after extraction (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/b186879a3fe2915077880c71db5ad1a5ea8a79a0"><code>b186879a</code></a>)</li> <li>Preserve webhook delivery profile and snapshot scoped home (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/8fe3d19800cf7ace40c9595fa5183a54d1de3927"><code>8fe3d198</code></a>)</li> <li>Retain per-admission bot and API authors (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/61f75a7752387852eb996eee9c9e081ed7f245dc"><code>61f75a77</code></a>)</li> <li>Recover mixed-clock sessions and compose runtime test listeners (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/9e747d7f1e4374e98b0a8fe0a747fd770c5b6963"><code>9e747d7f</code></a>)</li> <li>Preserve hosted image admission and execution across owners (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/2672b82012162187f8e6b68d8a5cfb39531f8a8a"><code>2672b820</code></a>)</li> <li>Gateway): restore hosted image attachments natively (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/bdfe8a50c30058a712ed6bedeb7bdcc3726312ce"><code>bdfe8a50</code></a>)</li> <li>Desktop): preserve profile target during reconnect (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/ddf8bec7b32bf4677f2f7e493f8f23393de451da"><code>ddf8bec7</code></a>)</li> <li>Restore durable hosted group sends before enabling input (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/d31621559f82646fe0161f2c8ea2408b5c349108"><code>d3162155</code></a>)</li> <li>Translate canonical hosted group controls in all desktop locales (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/29e27af5cf2905202d4992084d229e3b16c08d59"><code>29e27af5</code></a>)</li> <li>Desktop): journal canonical group sends before admission (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/3d1cb4e0e88dc56ae0d603c26991651a4283a0c3"><code>3d1cb4e0</code></a>)</li> <li>Integrate hosted attachment admission hooks (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/c094d91ec29a9854dd9eb481bd3d975a05898772"><code>c094d91e</code></a>)</li> <li>Transfer hosted input bytes through task-scoped owner attestation (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/519e11011d63df04ae8b5381475cbe10db994782"><code>519e1101</code></a>)</li> <li>Bind hosted owner transport to exact destination home (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/9035ef9a9c04b2d00c9e4b0b561180001ec9ea4d"><code>9035ef9a</code></a>)</li> <li>Minimize retained webhook destinations and preserve legacy receipts (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/c6456808af9803127ba8556b75a613f7b1d17502"><code>c6456808</code></a>)</li> <li>Capture peer ACK evidence and trim unused file catalog helpers (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/c86dd71b654e47564eeee62897396f8558428138"><code>c86dd71b</code></a>)</li> <li>Publish hosted file shares with cursor-fenced retries (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/49e27d8b4c9a21f9392cac86ff765090ef32de5f"><code>49e27d8b</code></a>)</li> <li>Run hosted rooms through independently owned profile daemons (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/53a260ac1b09e9d11413bccdb9d7e6e7574311ce"><code>53a260ac</code></a>)</li> <li>Fence hosted discard and prevent unknown retry generations (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/3cde00927487ce70759b4640d857d2ecfebbf9b4"><code>3cde0092</code></a>)</li> <li>Explicitly discard exact hosted unknown executions (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/864c34f3c68213242cbfba9680a599769cc6c56c"><code>864c34f3</code></a>)</li> <li>Preserve hosted room ownership during service shutdown (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/bfa8022d88c47aca2cd020848303928430b7bdaa"><code>bfa8022d</code></a>)</li> <li>Durably recover webhook destinations (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/d207fd64d3b0ab2b1073d048009873565a14abad"><code>d207fd64</code></a>)</li> <li>Recover native admissions after ordinary adapter startup (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/706596765107a52ef20397ce21e92901a7402357"><code>70659676</code></a>)</li> <li>Carry finite execution policy through canonical admission (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/9edd28e6e0ad951f8bf1c6ca0917537bf579051b"><code>9edd28e6</code></a>)</li> <li>Join finite gateway chat delegations in the admitted turn (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/5977ef75fdd74306bdda3da5e2a9bba6df0a720a"><code>5977ef75</code></a>)</li> <li>Resolve managed Node in native ticket probes (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/ee9030bd303da503857f26ecce3c7dd445b9cc8a"><code>ee9030bd</code></a>)</li> <li>Preserve manual compression settings and session identity (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/9fa0b6aa7a42f621172b66bf9d44dc118ca60590"><code>9fa0b6aa</code></a>)</li> <li>Prevent duplicate cron alerts after durable delivery handoff (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/47e3bb25fb5b26e6d38f276f7d8ee30b787c8da3"><code>47e3bb25</code></a>)</li> <li>Preserve cron delivery silence and incident acknowledgements (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/0c7f676ee41564da7d4355c5665523a970d97fe7"><code>0c7f676e</code></a>)</li> <li>Bound canonical cron owner store acquisition (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/61759b573d4626eb4f8598a4abb689c90d0bb03f"><code>61759b57</code></a>)</li> <li>Restore canonical desktop image thumbnails safely (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/4d5db8201b9022c0cd42863bbfdd2282688731a7"><code>4d5db820</code></a>)</li> <li>Restore prepared desktop image drafts after restart (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/5034ee3a4a20ec08fc48c25e7af1155a7d69a62a"><code>5034ee3a</code></a>)</li> <li>Route lost prompt discard to its session owner (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/566872a8190128359f55193eb42222eaca7aa8f1"><code>566872a8</code></a>)</li> <li>Preserve newer replies across delayed redirect receipts (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/ac30b57acbddec343573c2b3488fbda4855e25e5"><code>ac30b57a</code></a>)</li> <li>Retry transient desktop busy policy reads (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/82098e63730d87c63b22ace154e168e791c1cbef"><code>82098e63</code></a>)</li> <li>Keep desktop streams intact when corrections are refused (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/3c88697343eb324a8bcd25929ce65a7d927b7f84"><code>3c886973</code></a>)</li> <li>Connect recovery and owner projection routes (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/cfa5c152214d246e49f3304efa33fe68aa9c27c8"><code>cfa5c152</code></a>)</li> <li>Discover private gateway sockets across native temp roots (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/de66df140032c903f3fae7fefbd441ade7ea0d54"><code>de66df14</code></a>)</li> <li>Expose owner-scoped ancillary session reads (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/61ace21a95a9d78096924fc61b086963ce7e3af7"><code>61ace21a</code></a>)</li> <li>Stage canonical remote images in the authorized owner cache (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/baaa4464a4680dea7eb1fa21d423442cf94c73c6"><code>baaa4464</code></a>)</li> <li>Project native config and model inventory from canonical owner (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/1064971e07d3f95f39a7dc9128b14f7093d416ff"><code>1064971e</code></a>)</li> <li>Preserve Kanban board discovery and unknown owner attempts (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/90e2b2eb3adb1f46638e03817c5519d0cbd7d872"><code>90e2b2eb</code></a>)</li> <li>Reconcile canonical cron receipts into durable delivery (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/c1172b1a8278bcb7f4135317fcba7c9904992a68"><code>c1172b1a</code></a>)</li> <li>Preserve admitted images and async usage in managed workers (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/4abbb3f9788ce374652ff8380f458d7797352b1a"><code>4abbb3f9</code></a>)</li> <li>Share static-token session ownership across HTTP and WebSocket (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/56e344e5a8039caaafddad33ccc415f5b7b8a336"><code>56e344e5</code></a>)</li> <li>Connect canonical cutover repairs across owner and clients (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/c8f8d9ae638447799c1253f6e0d0d3093d87f9cc"><code>c8f8d9ae</code></a>)</li> <li>Restore scoped canonical busy and correction controls (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/daa016976b09cec396c9c421baa34bec83622af0"><code>daa01697</code></a>)</li> <li>Isolate authenticated gateway owners by provider and issuer (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/6b8a6d4c358161b62c621cb7f04a4c901ec701a9"><code>6b8a6d4c</code></a>)</li> <li>Bootstrap Windows desktop tickets through validated Python pipes (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/f8ba25a99b0e9bd75d3f2743f4887d813dacb195"><code>f8ba25a9</code></a>)</li> <li>Submit Desktop images through canonical admissions (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/c93382c0a1dc3abb6a19e84ad89190446673d943"><code>c93382c0</code></a>)</li> <li>Preserve desktop busy correction intent on rejection (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/b3cca0f3caf7cc7fba027af120657458246a152d"><code>b3cca0f3</code></a>)</li> <li>Keep canonical RPC refusals out of Desktop resume recovery (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/9ba2582bbae1f72e5cb37ea00afd5d00ca25c3a1"><code>9ba2582b</code></a>)</li> <li>Keep unbound Ink drafts instead of claiming memory-only admission (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/07588b5e7d13f6cf80be71e4da20311fc58de062"><code>07588b5e</code></a>)</li> <li>Honor non-idempotent canonical busy control acknowledgements (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/01e4829cbaee5cc0d3c860717853abfc9ff8f31b"><code>01e4829c</code></a>)</li> <li>Stage clipboard images on the Ink client host (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/179a84734cdf604604a45d4531c22f4c45e17cbe"><code>179a8473</code></a>)</li> <li>Scope Ink config hydration and prompt model mutations (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/798c3926662aa5aec2f37ec3291b38ecc609d860"><code>798c3926</code></a>)</li> <li>Retain disconnected Ink input and canonical control receipts (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/1a5bae9bd1ab6b99e100067989a2f03f2389f0a6"><code>1a5bae9b</code></a>)</li> <li>Stage and retain canonical Ink image submissions (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/33622c04095805497ebe0fbe5c0e0140178556f6"><code>33622c04</code></a>)</li> <li>Route Ink session controls through canonical authority (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/bf0b25a90f1f554091e8fb516ae5df0addea869a"><code>bf0b25a9</code></a>)</li> <li>Preserve Kanban execution PID and durable worker outcomes (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/d4fd07d21239500dd03d6aac78d5bba8d0397f41"><code>d4fd07d2</code></a>)</li> <li>Route claimed Kanban tasks through trusted owner admission (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/5aeba055f28280bd326f29aa9f8627eaabf4dc05"><code>5aeba055</code></a>)</li> <li>Admit agent cron runs through the canonical owner (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/cdbe8c35adf224de282b47fde3fc297002441485"><code>cdbe8c35</code></a>)</li> <li>Forward A2A profile tasks through session authority (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/4e3a6bdbb732b543f5a3b80f35ea5abbd047b4e8"><code>4e3a6bdb</code></a>)</li> <li>Project ACP cancellation and failed admissions accurately (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/03c0efc84dd66716f0a3c28b1dd94fa7abe63b31"><code>03c0efc8</code></a>)</li> <li>Preserve API content identity history and terminal outcomes (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/f48d09563b37297322a994b42c24f1359ddb7d8c"><code>f48d0956</code></a>)</li> <li>Fence legacy history claims and follow Bot reset targets (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/f88f861567de81ec6828854bffcd0b290ca238c2"><code>f88f8615</code></a>)</li> <li>Adopt legacy local history through trusted session owner (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/cb748e7a193a70ead9e2e50d1b3cdc1163123f27"><code>cb748e7a</code></a>)</li> <li>Record physical admission assignment before later compression (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/7b9dc45444f367f4cffcc43da994350dd0b8830b"><code>7b9dc454</code></a>)</li> <li>Classify managed worker errors and verify compression restart (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/4bbbb90ff2189b3d476182a210c25332d28c4cbf"><code>4bbbb90f</code></a>)</li> <li>Preserve worker compression admission identity (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/588c609c1542f447ccea9fadba536ffa62c63adf"><code>588c609c</code></a>)</li> <li>Refresh worker row identities after compression (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/e19f05ffb9ca0aa59650047406b8a7b9893f2d5b"><code>e19f05ff</code></a>)</li> <li>Preserve managed transcript lineage and settle after worker finish (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/ec0ebf80639d58a3854bb087bb63e3db14163346"><code>ec0ebf80</code></a>)</li> <li>Cli): keep Termux startup hints out of gateway policy (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/31dc5078fa4251d3eef039d2ed88914cb28d0a49"><code>31dc5078</code></a>)</li> <li>Service suffix follows main profile-root rule; drop in-process cli.main tests (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/0ea5a879b957efd52e27c366aca7659479ee20e8"><code>0ea5a879</code></a>)</li> <li>Canonical delivery feeds attachment results to record_delivery; log failed turns (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/19ca1e85c805264bb662684c94a51a56179e67d7"><code>19ca1e85</code></a>)</li> <li>Managed worker outbox directory is a portable spelling of the execution id (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/4a08032d35685a3079a17d48db4112a086a9fb45"><code>4a08032d</code></a>)</li> <li>Owner verifies managed worker identity through interpreter trampolines (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/e8fbefb21e37b5e98ddf73c062e4ffb9eb7a6520"><code>e8fbefb2</code></a>)</li> <li>Refuse /v1/runs on a natively owned session with a bounded 409 (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/809fec1567d3d5eb0fa83c32a81bda49aec93863"><code>809fec15</code></a>)</li> <li>Commit execution results with terminal settlement (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/43348a03b7fd1463a5696567bcc1be59d939f1f0"><code>43348a03</code></a>)</li> <li>Replay canonical relay envelopes until terminal reply acknowledgement (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/8dfd7addcd589a9d4bd876eb930ed6d6b6b0f2fc"><code>8dfd7add</code></a>)</li> <li>Keep bot relay discovery and outbox in sender profile (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/437e3d85d683871e498beb5da4017c2d176d934d"><code>437e3d85</code></a>)</li> <li>Isolate desktop bot relay sender and target profile routes (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/4f75b6aae4c54849dd3d894c3b566fe2ab453d3c"><code>4f75b6aa</code></a>)</li> <li>Recover bot mailbox receipts and migrate queued inputs at owner startup (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/76a6044139c12e6a9ad71987b9e10117c246c186"><code>76a60441</code></a>)</li> <li>Recover bot replies from exact committed admission results (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/a5ea5b21a5252aae945eb901e2912c256d226674"><code>a5ea5b21</code></a>)</li> <li>Retain identified desktop bot deliveries until settlement (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/e1734e7de6165ca246a3218d1df0e64e7a7c2a8d"><code>e1734e7d</code></a>)</li> <li>Pause managed admission followers when the owned worker is lost (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/e6077eccc19e5723ee33f883c14fcf101f4cd355"><code>e6077ecc</code></a>)</li> <li>Prevent scoped secret rehydration in bypass workers (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/1ff3d87770d4f7e9e5201d21b655fcd7eaf20e1d"><code>1ff3d877</code></a>)</li> <li>Preserve hosted API source during peer persistence (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/06a9516c166d38bf908939641c8f519680590094"><code>06a9516c</code></a>)</li> <li>Return explicit unknown execution on API crash retries (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/f26c5c432123de5d7d7bde365d00b9416950c943"><code>f26c5c43</code></a>)</li> <li>Recover committed API queue when its adapter reconnects (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/8ef9fbe8ef066b8405e62740ba803da6f0afb6fe"><code>8ef9fbe8</code></a>)</li> <li>Resolve API prompts through canonical pending controls (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/f35358a60f2240a58019c6c08b4b62eef9f5465b"><code>f35358a6</code></a>)</li> <li>Preserve pre-editor credential identity and native control coverage (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/8e3b3a0c67a97840d0ac70ef44ceffef4c82a129"><code>8e3b3a0c</code></a>)</li> <li>Defer editor MCP schema changes until a new session (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/be748101302dd40bd736292912510c97c9f79230"><code>be748101</code></a>)</li> <li>Bind imported history control in its receipt transaction (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/f40dc17bd6bdbbfe205de03d1d5cb5752a4150a6"><code>f40dc17b</code></a>)</li> <li>Prevent import from reusing retired runtime identities (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/0a55e37320050ad74dbf61921add9ce97b9e263d"><code>0a55e373</code></a>)</li> <li>Retire local physical lineage and cache affinity on deletion (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/a1d47945ad82be38d901a1b31860324114098b95"><code>a1d47945</code></a>)</li> <li>Authorize cold history mutations without execution rebinding (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/529fb127b42ad217ad4a697eaff14c9304b8843b"><code>529fb127</code></a>)</li> <li>Retire native session routes with deletion receipts (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/10b155bfc084ea66c952611070985f3904a00679"><code>10b155bf</code></a>)</li> <li>Retire the legacy Bot mailbox producer and inference drain (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/ee09dad420a1fd49165ae89f6f5ea635c260b7ff"><code>ee09dad4</code></a>)</li> <li>Retain immutable Bot relay reply receipts on exact retry (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/391517b74b3a129befaf54de8cc3bae21954798c"><code>391517b7</code></a>)</li> <li>Refuse Bot delivery instead of starting a competing runtime (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/03f5d8438efaff32e8775d8dcb795611fb3668d0"><code>03f5d843</code></a>)</li> <li>Migrate worker rotation automation inside owner publication (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/6fce9f77c6f5a84c93ecaca90f0497c5c444910b"><code>6fce9f77</code></a>)</li> <li>Bind registered worker ledger before agent discovery (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/56586998e278d3da1a284bfff70bf8a7bc1bed42"><code>56586998</code></a>)</li> <li>Release original worker turn lease after rotation (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/ce8b1171a6617fa162b0f0c51123d5a93c84dc95"><code>ce8b1171</code></a>)</li> <li>Preserve REST mutation success response shape (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/c1882a690ef7f913fe699c17c9f004c5823a9f61"><code>c1882a69</code></a>)</li> <li>Require exclusive maintenance for legacy bulk session writes (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/7323773c0a13dae5ba57328d3ca2aec10fb156d9"><code>7323773c</code></a>)</li> <li>Fence persisted bot visibility without activating profiles (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/7fab399a7cde05e69dc37d14bad56c361060495d"><code>7fab399a</code></a>)</li> <li>Retain dashboard mutation identity across uncertain replies (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/20dd681307dc86ea835af2d7b204d454a756bb3f"><code>20dd6813</code></a>)</li> <li>Prepare desktop session edits from owner snapshots (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/c01a625c6896bbf770a45508a0e505281f51ac68"><code>c01a625c</code></a>)</li> <li>Preserve import validation with real authority fixtures (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/83b87b01a66f4f4f3293b885338192bb70ddbe01"><code>83b87b01</code></a>)</li> <li>Reject coerced session mutation counters and flags (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/927ca9647fa23491ed911d883c4450a16cd091b5"><code>927ca964</code></a>)</li> <li>Anchor V4A editor approval paths to session cwd (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/490453f7b8448be4e7f9839b0f886872a3035919"><code>490453f7</code></a>)</li> <li>List canonical ACP sessions under their frozen workspace (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/3c79ac4e609f339b791f2bef9a7c217d5ca6b641"><code>3c79ac4e</code></a>)</li> <li>Resolve ACP edit previews against execution cwd (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/85ce5418ec748a3325cbda63faacdece56134846"><code>85ce5418</code></a>)</li> <li>Project canonical editor diffs and frozen cwd to ACP (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/45aee7424c2dd934dba955589509b491177e995f"><code>45aee742</code></a>)</li> <li>Release ACP transport without client MCP discovery (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/92d97ba8a4446bcebbf33a7199706fa673a2e6a1"><code>92d97ba8</code></a>)</li> <li>Steer API runs through the current authority claim (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/a69efa90ffe35e88ecbba80c0f28497fa4391018"><code>a69efa90</code></a>)</li> <li>Fence API run cancellation to its durable admission (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/f67f19fb272b3d8ce71645da321b73d5f6bde4ff"><code>f67f19fb</code></a>)</li> <li>Replay durable API results across HTTP delivery modes (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/cbcad6fb554f3cdab9ef9c630fc8f1a1cb3eb2aa"><code>cbcad6fb</code></a>)</li> <li>Retain recoverable worker title conflicts as durable outcomes (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/b7d14c758e04174e97db063db2ed5a32ff99d0e8"><code>b7d14c75</code></a>)</li> <li>Preserve worker compression pre-publication flush annotations (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/dbe089623f71a8ee783955e979910834d8de56d7"><code>dbe08962</code></a>)</li> <li>Retain worker compression cleanup authority after rotation (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/36d5b63906fc0b853ec31db5d48db572c2dfc66b"><code>36d5b639</code></a>)</li> <li>Accept real worker compression handoff markers (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/e98a036a09f3bbf113b211890ae7b5cdbea6a6bc"><code>e98a036a</code></a>)</li> <li>Preserve live delegate tasks during parent deletion (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/b0f792ac49a7e222b5490c6fb37c61613f049c24"><code>b0f792ac</code></a>)</li> <li>Fence ACP controls and expose the read-only catalog (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/d304b025fca20bfdadae7bea9f13c8a93730dc74"><code>d304b025</code></a>)</li> <li>Keep ACP session catalog read-only (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/b117521cbd6ff77c5278f8c7e343d55a0e40d035"><code>b117521c</code></a>)</li> <li>Bind API storage to its selected runtime authority (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/c812ec711b96a0851ecc44329c9399d62cdeabf9"><code>c812ec71</code></a>)</li> <li>Preserve webhook duplicate responses with real route admission fixtures (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/253f9b5e4c5f69460991c0ad7a6cbee403f739db"><code>253f9b5e</code></a>)</li> <li>Fence webhook finalization by admitted session and generation (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/ca2211f0d845da6ec4e723a40293b21c46f52625"><code>ca2211f0</code></a>)</li> <li>Durably admit authenticated Graph notifications before acknowledgement (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/e8e17493bad09a1470107fa0655f47f6b332e478"><code>e8e17493</code></a>)</li> <li>Retain relay deliveries until canonical admission commits (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/e75bc52f50b4af92b0f7ac191cd7135276e264ab"><code>e75bc52f</code></a>)</li> <li>Acknowledge webhooks only after durable native admission (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/9d9e4789dd561afe56f2096f06ed9cd9c5439697"><code>9d9e4789</code></a>)</li> <li>Restore worker compressor guards before agent construction (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/84ccae21417e629132f4a205bd98a588c43a1f41"><code>84ccae21</code></a>)</li> <li>Refuse unregistered child and cron persistence in compute workers (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/2ee0725c324f4549ba65d70209ff1a7cabeeb7a4"><code>2ee0725c</code></a>)</li> <li>Keep registered compute imports out of owner delegation recovery (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/7eecdcf213664c482d1687acfad44c744bd71542"><code>7eecdcf2</code></a>)</li> <li>Retain distinct repeated watch notices in local consumers (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/0c42619c35d1853224c68dbbded3fd5a5dd3aba4"><code>0c42619c</code></a>)</li> <li>Refund legacy notification claims refused by admission (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/d5b332edfefa7ba9ae663f68ef03011ca1b38df2"><code>d5b332ed</code></a>)</li> <li>Give watch events stable owner-bound automation identities (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/135730d1bc3dccefaf98464460b3a97e7d5332b4"><code>135730d1</code></a>)</li> <li>Validate gateway launch options before first-run config checks (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/bec94623041eba5d9847a2a8c51657546645a682"><code>bec94623</code></a>)</li> <li>Restore first-run guidance before gateway admission (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/351b8eb462f5a06de315716e8c677ae6a0e25169"><code>351b8eb4</code></a>)</li> <li>Retain partial-update diagnostics at canonical CLI launch (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/a6376f0eebde0aea12e566a969ff35501478e285"><code>a6376f0e</code></a>)</li> <li>Preserve runtime authority across updater snapshot restores (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/8a8a13723b82ee361a13eac045277e72abfa9583"><code>8a8a1372</code></a>)</li> <li>Refuse unowned automation without spending sibling retry budgets (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/d6635ffe03bc1eb92dbaa56155a5b49c23f271c3"><code>d6635ffe</code></a>)</li> <li>Retain completion batch siblings across durable handoff retries (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/0307a33f82fce50113796498f0a0938107164240"><code>0307a33f</code></a>)</li> <li>Keep named launch keys and endpoints separate from profile defaults (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/219ed58f9c19483792ec866eca8d0ad3bc34966b"><code>219ed58f</code></a>)</li> <li>Redact and recover credential-bearing terminal projections (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/478d9b7379dcc668863adbf11ec2362598b0bb07"><code>478d9b73</code></a>)</li> <li>Resolve configured local routes from frozen provider policy (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/e02cc03a337f3594aa9976553cf711b2de5c720a"><code>e02cc03a</code></a>)</li> <li>Retain startup consent on top-level one-shot launches (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/ecb0afa631b23a44701b7b85b7e39f41e5cc96ae"><code>ecb0afa6</code></a>)</li> <li>Enforce startup cost and data consent before gateway admission (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/4dcf234d0d313283bc8ede7ba4e2384d3d6b11f8"><code>4dcf234d</code></a>)</li> <li>Retry local creation without binding replacement credentials (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/12899b65d51f1ceb4aba7dc3f2695ff24f737a3b"><code>12899b65</code></a>)</li> <li>Recover frozen local config credentials from their profile source (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/f1da7833aad10bbbd0a8a3637b60dd5b880fa4f5"><code>f1da7833</code></a>)</li> <li>Keep configured credentials out of frozen policy receipts (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/2f6fb46bf3016dea2a8bfeb9ee2387791120d748"><code>2f6fb46b</code></a>)</li> <li>Keep explicit local launch keys in authority memory only (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/32d512fb9e3896b82ae80e11bd7e2980d448256d"><code>32d512fb</code></a>)</li> <li>Freeze local CLI reasoning and execution launch options (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/d0954a9ede1d903b860cfc2cef954c0a3f0ffe45"><code>d0954a9e</code></a>)</li> <li>Preflight canonical epoch before restoring profile snapshot files (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/610a97ea48df71f085c7634f6dbd296cc131485f"><code>610a97ea</code></a>)</li> <li>Retain explicit verified deletion after read-only export migration (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/23456236c8f1232d91dbecc8efdcac66e9b8cf5d"><code>23456236</code></a>)</li> <li>Recover fresh and historical session row layouts by identity (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/9c681b2d67025d406ef16158d5ca183d80360072"><code>9c681b2d</code></a>)</li> <li>Explain safe transcript salvage when canonical restore is refused (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/c559236f68248ee6722f9c34ab31d31e84e11657"><code>c559236f</code></a>)</li> <li>Preserve structured Unicode through worker payload and receipt encoding (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/f56e660e018493c530f5e5e6bb94717ff3cf3364"><code>f56e660e</code></a>)</li> <li>Pause workers on outbox I/O failure and preserve local lease waits (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/23b549216de9d16dd0832534d801cb41cc3f33d6"><code>23b54921</code></a>)</li> <li>Freeze retry journals and retain exclusive worker outbox ownership (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/a8c163afbcf5a2f3dafb7ac567864ecb28ff7776"><code>a8c163af</code></a>)</li> <li>Attenuate worker reconnect tickets to execution operations (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/e7cd5f9380b15f7cc31dda55f8520946618e15ad"><code>e7cd5f93</code></a>)</li> <li>Install relay trust only after provenance verification (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/90f107f22f4c8f97c56443d21445444bd7b16794"><code>90f107f2</code></a>)</li> <li>Keep relay reader live during canonical busy delivery (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/4485fb73d5a32d08a3132877789b9128728a0de7"><code>4485fb73</code></a>)</li> <li>Admit relay inputs with verified connector provenance (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/8fe258cc116ba5abac94a962ef5050c35962a437"><code>8fe258cc</code></a>)</li> <li>Keep retained process lineage lookup read-only (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/bf9cf5c217ff0ce68943511cdb795a6e808a220e"><code>bf9cf5c2</code></a>)</li> <li>Retain corruption restore for non-runtime SQLite stores (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/ad354c28ab6f87f8ec1a66ca42fa947638b4fce7"><code>ad354c28</code></a>)</li> <li>Preflight all restore destinations and preserve import warning parity (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/f1b4f6e33badcacd30e40b688310d1cb677aea2a"><code>f1b4f6e3</code></a>)</li> <li>Preserve runtime epoch floors across older backup restores (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/7fd8082e40d664ef325254996fd4211017171121"><code>7fd8082e</code></a>)</li> <li>Fence canonical recovery output and report excluded runtime state (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/43f62e7af9f2520da96378db98218ac9d18673f0"><code>43f62e7a</code></a>)</li> <li>Exclude restore and import with canonical runtime ownership (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/4dce8f7ed24c689935b190a6cf27f52707996239"><code>4dce8f7e</code></a>)</li> <li>Keep dashboard session browsing read-only (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/af4599c10738169e557dcd29f4281f893b196352"><code>af4599c1</code></a>)</li> <li>Preserve loop liveness witnesses for long gateway homes (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/ae92d198b7cc074ad950e799ab073eaa74104a43"><code>ae92d198</code></a>)</li> <li>Retain newer composer scope across delayed queue acknowledgements (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/4b39a5fd64d32436637469ed43f5c4de8ac12a12"><code>4b39a5fd</code></a>)</li> <li>Keep native steer fallback on canonical queue admission (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/35255f5c13435741ac8a8f61b6c99ca0fb172055"><code>35255f5c</code></a>)</li> <li>Admit native busy slash kickoffs through canonical submit (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/6bef46ea53dc15a18ca9104706fe42a596749ca1"><code>6bef46ea</code></a>)</li> <li>Reconcile queue input IDs with canonical admission identities (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/a877aa6e5a11edf39297c376505eaba2556e6306"><code>a877aa6e</code></a>)</li> <li>Preserve active turn ownership during canonical queue admission (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/a131bf4aca37820459c4493f4fe51a8a5757379f"><code>a131bf4a</code></a>)</li> <li>Route native composer Queue through existing admission submit (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/4ce95d5f2eaa0637b6a1607fe1cce2599c3b9fe2"><code>4ce95d5f</code></a>)</li> <li>Authenticate native desktop file downloads per attempt (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/28741ef8809e63d6ce0b5a066cef0797ba612656"><code>28741ef8</code></a>)</li> <li>Scope stable execution identity to canonical local sources (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/c3aa2e5c442486298637459b1f02f8ce161e1d29"><code>c3aa2e5c</code></a>)</li> <li>Reject foreign local receipts inside lineage publication (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/1ffba2ac1fa0a93c07308b94b7a84263370abaea"><code>1ffba2ac</code></a>)</li> <li>Retain local admission ownership across transcript rotation (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/42ee0d341a7745c0ca21e196946f4cadb0a914ef"><code>42ee0d34</code></a>)</li> <li>Publish shared queue changes to attached viewers (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/fb02973f611c3f840db12ac8e60a5d6fe7ca9d52"><code>fb02973f</code></a>)</li> <li>Retain public queued input identity in shared snapshots (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/37332c17b11318483d948035627387c85c2191a6"><code>37332c17</code></a>)</li> <li>Expose profile-bound setup readiness on canonical sessions (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/971c3c95515e7b27555d962c8b6c96ce14c08cc4"><code>971c3c95</code></a>)</li> <li>Normalize canonical prompts before named desktop listeners (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/9a2a30a62d63164ab908842492cd1993e6c1312b"><code>9a2a30a6</code></a>)</li> <li>Fence canonical desktop RPC metadata edits with revision receipts (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/ce3037dc1d407bb6205de93211248d6dc2d081c4"><code>ce3037dc</code></a>)</li> <li>Bind desktop create retries to the explicit draft intent (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/c69bb4db31c52554894ae5cc0ee1b5e323468881"><code>c69bb4db</code></a>)</li> <li>Retain desktop update and profile gates before canonical ensure (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/a7821f635e28d99d0db22903ab1355655e0ea434"><code>a7821f63</code></a>)</li> <li>Adapt desktop native sessions to canonical identities and controls (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/d1546a54c43b850f3afeef56479550e477145e8f"><code>d1546a54</code></a>)</li> <li>Authenticate native desktop HTTP with fresh private tickets (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/dd8b9f38344d27dc24058fa71866defdd598f33f"><code>dd8b9f38</code></a>)</li> <li>Preserve native HTTP profile selectors across JSON contracts (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/eaad737e88a3f5350deb1c992a2d2baf43bbcb66"><code>eaad737e</code></a>)</li> <li>Retain source-free authority control projections (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/3546eb41a933c2aaa93c54b744bd88a34c6cb390"><code>3546eb41</code></a>)</li> <li>Preflight durable local policy before claiming queued work (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/d98dd7435ad12f3693f9247e874fc517b31f0214"><code>d98dd743</code></a>)</li> <li>Publish canonical Ink readiness only after discovery (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/653889ef7f719d7bad0602d1dc6083fd676e016c"><code>653889ef</code></a>)</li> <li>Hydrate canonical Ink history independently of live events (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/971ff7f362b6eaacc72006bea8da4b6a6aa263f2"><code>971ff7f3</code></a>)</li> <li>Carry native ticket through WebSocket subprotocol negotiation (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/7fe8c72c78e42e0dc65ec893e249389ebaee28f5"><code>7fe8c72c</code></a>)</li> <li>Correlate canonical Ink receipts with prepared input identities (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/3dfb7d50a5c8050f8e584942156d787a94ca2d58"><code>3dfb7d50</code></a>)</li> <li>Scope one-shot output to its admitted turn and retain direct query aliases (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/17155e733138b29c8067eb4370838c9e59e6e016"><code>17155e73</code></a>)</li> <li>Preserve gateway toolset policy and reject resume source overrides (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/6feaafcc2960930fb4b2d5eebd43e9dab4a6d3fd"><code>6feaafcc</code></a>)</li> <li>Reject fresh session registration while gateway drains (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/a67637cc973ade7d423cf9551019323d5c207641"><code>a67637cc</code></a>)</li> <li>Separate clarification permission from execution control (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/66bc2861eaeda0f78e29ccfa0804fe60b90250b4"><code>66bc2861</code></a>)</li> <li>Stamp authenticated legacy clients before shared session admission (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/4be08ae58a16611a6384ce426e9e6d5968849b28"><code>4be08ae5</code></a>)</li> <li>Preserve scoped bootstrap grants in shared session connections (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/b699e0e95baee7200fd698a5d6b8230c4ef12f2a"><code>b699e0e9</code></a>)</li> <li>Keep forged local profiles out of messaging authorization fallback (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/d379d6cc1d08aabd78a8404c939fad75fb9dcc8a"><code>d379d6cc</code></a>)</li> <li>Retain queued inputs when shutdown crosses authorization awaits (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/733dde1cc9a8969b0263fac7f84d57d1d1587e0f"><code>733dde1c</code></a>)</li> <li>Reload transport role policy after Discord membership awaits (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/43ae9e9a23129f6b5bdac60c9539fd0db5bc3eba"><code>43ae9e9a</code></a>)</li> <li>Retain native trust fields for validation when freezing ingress (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/53aadf44895e10151f8005a14a2d52c41d2edb96"><code>53aadf44</code></a>)</li> <li>Fence native authorization yields against identity and FIFO changes (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/6ef8b38df56ced2387907f836c07fc02f2daaf1d"><code>6ef8b38d</code></a>)</li> <li>Report malformed installed plists without leaking parser failures (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/1b55d9646aa7e544a2b4ce75897d79c7f5b99d8c"><code>1b55d964</code></a>)</li> <li>Resolve installed names from the requested profile root (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/258049b38f80a2dcee4baf47386c23f860e4bd08"><code>258049b3</code></a>)</li> <li>Reject unbound launch wrappers and nonregular service definitions (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/1dd6268bcd5354632a789c902f49e7a3988e63e4"><code>1dd6268b</code></a>)</li> <li>Preserve task XML encoding and document service binding refusals (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/7b904f95bf3a91f5ef87f291da9cf4cad18593ef"><code>7b904f95</code></a>)</li> <li>Bind loaded launchd jobs and scheduled task XML before start (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/1ce0d11ef3fe0382061c9d672d2537a841449ef5"><code>1ce0d11e</code></a>)</li> <li>Verify effective systemd profile and account before ensure starts (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/efadac8de2e99aee61dbb523786bbcc45302a123"><code>efadac8d</code></a>)</li> <li>Stop bootstrap background workers after listener failure (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/6716636ffc967db0e2103280b0ac967fb54b2990"><code>6716636f</code></a>)</li> <li>Withdraw gateway readiness when the session listener exits (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/57ec27186f84fe508d247cfbf72b68b1d5419ae8"><code>57ec2718</code></a>)</li> <li>Keep readiness and cleanup fenced across runtime shutdown (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/82ff0592d0784533e1b7f0a7b7b1ce90e8ff9aa9"><code>82ff0592</code></a>)</li> <li>Retain browser authentication and withdraw native ingress on drain (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/5da456be802528872bacc208f4508ea26bf3b85f"><code>5da456be</code></a>)</li> <li>Export sessions without mutating canonical storage (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/ae82c1a2d0cca85d17d93a26ee317757bfc38ca7"><code>ae82c1a2</code></a>)</li> <li>Keep native segment sentinels out of canonical text deltas (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/caae4af5717dc8bfcfbba107acbf774b97574286"><code>caae4af5</code></a>)</li> <li>Keep launcher YOLO out of shared gateway policy (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/628d702c0e503cf116eacc4b7521d88db2706ac2"><code>628d702c</code></a>)</li> <li>Align profile reservations with bootstrap permissions (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/87ba34fdf90f2ea7ff80e784a09f0e6dacf84a52"><code>87ba34fd</code></a>)</li> <li>Reject FIFO gateway metadata without blocking discovery (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/5b0f0276eb21c388793aee46fd881f7bd97c1971"><code>5b0f0276</code></a>)</li> <li>Bind fresh ordinary admissions while preserving exact legacy retries (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/e5f39ada9ff21601c3d9ac73a26b1d9e78c99bba"><code>e5f39ada</code></a>)</li> <li>Preserve ordinary native retry fingerprints through callback migration (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/6083e9ed31a15372cde35a052be8407b398e2ddc"><code>6083e9ed</code></a>)</li> <li>Refuse unrouted profile claims in native callback snapshots (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/99c923bc8b6b6c9123781daba4d2832575466803"><code>99c923bc</code></a>)</li> <li>Preserve authority ownership through scoped adapter callbacks (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/42ce26af2e482bcd63d04651bae0928fff184fac"><code>42ce26af</code></a>)</li> <li>Retain trusted ordinary native callback provenance (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/1d4dab77c682f4a0893174fe9eb1e52c5ed7f379"><code>1d4dab77</code></a>)</li> <li>Omit retired approvals from gateway attach snapshots (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/e7ee1d6747960aeb8e522d0fec8a69d0c2b63cd4"><code>e7ee1d67</code></a>)</li> <li>Deny controls after gateway execution settlement (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/a064afdd5ff02aac033667a1441103ce15214be7"><code>a064afdd</code></a>)</li> <li>Reject approval publication from retired gateway workers (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/295bc0f57d9cdd9161e1bd7588943ccb83d3f992"><code>295bc0f5</code></a>)</li> <li>Retain legacy session writers during reader migration (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/82dfb85d6789ab7a4a53f90c1447652db39b8ed2"><code>82dfb85d</code></a>)</li> <li>Keep session lists and statistics read-only (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/1a1ad945981c7ce1c2b56333c0f2cf1a113efb64"><code>1a1ad945</code></a>)</li> <li>Resolve terminal breadcrumbs without opening a session writer (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/73238088e6cc3221dea73317ef0a9548f7d6a3f0"><code>73238088</code></a>)</li> <li>Share read-only insights reporting with interactive CLI (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/9cd5d6dd2108bcb14e749d1fe2c22ad3b81a17ca"><code>9cd5d6dd</code></a>)</li> <li>Generate CLI insights without initializing session storage (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/680937a6e768be7622169308af1970b39442b35a"><code>680937a6</code></a>)</li> <li>Keep resume lookup and TUI exit metadata read-only (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/617be2dabc9cbff4ad4f96711a1f71f0e50f5459"><code>617be2da</code></a>)</li> <li>Keep status session inspection read-only (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/ca77b19711b7723d1b1ef4440d455f1e208aa5cb"><code>ca77b197</code></a>)</li> <li>Bind shared authority when starting gateway API (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/11958d461893961b21e27bd36c5ddf2785b9acd2"><code>11958d46</code></a>)</li> <li>Refuse redirected native media publication (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/e924cf98a39a2d8b53fd133caaa4998e84a43b54"><code>e924cf98</code></a>)</li> <li>Preserve legacy native text admission retries (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/ca226b68230f2cdba430ddd4bf7fe591ba67c2d5"><code>ca226b68</code></a>)</li> <li>Rotate authority replay epoch on concurrent eviction (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/a9de35d29ae81ba999ef89bcf6048f834057a4be"><code>a9de35d2</code></a>)</li> <li>Isolate authority execution from slow observers (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/aab36dc64cc92ba2850c0f5adf91f88a449dfc18"><code>aab36dc6</code></a>)</li> <li>Keep authority subscriptions stable across repeated resume (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/8c88976587e4239fd74126b150c60880589adcc1"><code>8c889765</code></a>)</li> <li>Admit busy messaging text into the canonical durable FIFO (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/eae6194b0aff9416849fac5d83eb4e8952692588"><code>eae6194b</code></a>)</li> <li>Preserve surrogate request identity while sanitizing worker text (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/bb90f4b8972923431d270f94e7357203da199bf1"><code>bb90f4b8</code></a>)</li> <li>Replay committed worker receipts after terminal settlement (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/203b3f4f6d51b7d46fa5684daef2a9980bd00486"><code>203b3f4f</code></a>)</li> <li>Retain transcript closure guard for worker appends (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/71f835b60e937db07e436c96ef875fb3e657e1bf"><code>71f835b6</code></a>)</li> <li>Revoke workers when resolving unknown admissions (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/d7089f7534b47bbee400d008420c7a230931cef4"><code>d7089f75</code></a>)</li> <li>Align runtime mutation receipts with canonical wire contract (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/e6b1dc06d616ed10437bb7c807655ed919c030eb"><code>e6b1dc06</code></a>)</li> <li>Fence ancestor revisions when runtime titles transfer (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/62aef7959e8dbb7bf2d66f5dbc7eea963683767f"><code>62aef795</code></a>)</li> <li>Fence worker persistence when its admission settles (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/e3bfe6408d2147aa013b9b356e8526fd2e28a2c7"><code>e3bfe640</code></a>)</li> <li>Transfer admitted claims atomically during worker adoption (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/341aed4184ee327bf22ead8eaafb15012a6bde2f"><code>341aed41</code></a>)</li> <li>Preserve legacy execution generations through admission import (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/c45d2e5c70ff01ec47a975e9f2c0c0e5970ce380"><code>c45d2e5c</code></a>)</li> <li>Restore Ink pending inputs after cold durable resume (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/34fb13a1a00b0ff6c9a025b004a763bcf4fd5f5b"><code>34fb13a1</code></a>)</li> <li>Preserve Ink slash attachments and reconcile stale images (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/dbc7ffa80c3a0e6c1e58f66f39346c0fe4389940"><code>dbc7ffa8</code></a>)</li> <li>Reconcile Ink replay receipts with current execution (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/8a589010ebeaf39a0987367b08a7187401621b43"><code>8a589010</code></a>)</li> <li>Settle desktop receipts on recovered runtime and tidy composed probes (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/1ad31afa193a2750dba098246c7566390833f466"><code>1ad31afa</code></a>)</li> <li>Retire desktop Stop for newer owner executions and fence old output (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/926d097dee9f1175e81b5e4623a168b953d45a57"><code>926d097d</code></a>)</li> <li>Settle terminal desktop admission receipts without stopping live turns (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/d89a90e11848dddb1eb9b0a6f980b378ba9537f2"><code>d89a90e1</code></a>)</li> <li>Fence same-call desktop legacy admission retries (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/41b017f1e3cc565fdd4dc2e6d733be1056c0233b"><code>41b017f1</code></a>)</li> <li>Never resend ambiguous Ink legacy admissions (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/5681c7d40699b5d111f1fb44b3277c164cea4a92"><code>5681c7d4</code></a>)</li> <li>Emit structured CLI parse failures only once (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/1d4d2b2d09faf2e18acd92cbffeb479ab74bfcc1"><code>1d4d2b2d</code></a>)</li> <li>Bound gateway probes and structure ensure parser errors (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/ad1099d6c531333addcb93d736457b1a4f0bf29d"><code>ad1099d6</code></a>)</li> <li>Discover the gateway private fallback socket directory (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/c804d40b0280c87f65ae91bd64c6c529fd80ba0f"><code>c804d40b</code></a>)</li> <li>Retain runtime locks while scheduler threads survive cleanup (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/954d5e9919ca5b85d8c96eee20fa2772facb35bf"><code>954d5e99</code></a>)</li> <li>Retain gateway ownership through exit-state persistence (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/d465ad0dbf633dca6beab00c8b912f2911cc545f"><code>d465ad0d</code></a>)</li> <li>Reserve all gateway profiles before writable initialization (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/c941b0e674c3b6586cc86cf3349df291014454c6"><code>c941b0e6</code></a>)</li> <li>Keep standalone session search read-only (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/0e7c058897dd0cc5166fcc1293cc75fb893ee33a"><code>0e7c0588</code></a>)</li> </ul> <h2>📚 Documentation</h2> <ul> <li>Agent): use the released model name Nemotron 3.5 Super VL (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/79651b71bd56efd76d06f3de1df64dde09b58ff3"><code>79651b71</code></a>) — @j-nolan</li> <li>Env): add NVIDIA NIM to .env example (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/3dd961013c57398b4ba42d16f5bcc3772baa0701"><code>3dd96101</code></a>) — @elisam0</li> <li>Providers): use a non-cloud example key for local NIM (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/da463310b1e31d8690b1aac6d3701798bb36a06e"><code>da463310</code></a>) — @rroverin</li> <li>Rollback section the downgrade refusals link to; regenerate the command-parity table (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/97ec76fa7eaf5066cb334b98448d1b71118df4e5"><code>97ec76fa</code></a>)</li> <li>Gateway): describe the messaging pause notice and /reset escape (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/6cdf7815defdb94f642a0a2d2d01a0e33558bee9"><code>6cdf7815</code></a>)</li> <li>Explain ambiguous legacy A2A recovery boundary (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/22a8154ff371d9b904bd2017d9d71a5e878ae603"><code>22a8154f</code></a>)</li> <li>Cli): classic chat resolves --resume <title> and -c <title> --create-if-missing at the gateway; bare -c stays refused (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/c6c4161cbf8181b6dd8c357a09ef2baece3c736d"><code>c6c4161c</code></a>)</li> <li>Gateway): document prompt.submit attachments and the ACP media path (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/e3d60eed6528d1aee1b0add480311257df37eb5e"><code>e3d60eed</code></a>)</li> <li>Desktop): gateway-owned queue and the Discard control for a turn lost during restart (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/101be7d78ebb4f819347d2a335277ac6fe6204a6"><code>101be7d7</code></a>)</li> <li>Explicit /model rewrites the system prompt Model line once (single cache-prefix miss) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/ef813b356786b63685a527a20858bc814a6fe734"><code>ef813b35</code></a>)</li> <li>/new rebinds only the invoking view of a shared session (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/6be1de8d10462ac38e1194a9c6e88a57b0f679fe"><code>6be1de8d</code></a>)</li> <li>API runs and X-Hermes-Session-Id cannot bind a session owned by another surface (409 permission_denied) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/789caca24f1f8e63aae670bb5ad1a47dff03964d"><code>789caca2</code></a>)</li> <li>Dashboard session delete fences, tombstones, and offline-only bulk maintenance (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/46c50515dcd0ad596dbd4fc7d46b45bb19fb8944"><code>46c50515</code></a>)</li> <li>Explain canonical editor MCP ownership and cold reattachment (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/fcc978bd3c9b0d744695bf5b9dc42cbaf50034bb"><code>fcc978bd</code></a>)</li> <li>Distinguish canonical Bot admission from retired UI ownership (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/2d22a7cd441e945681b83a1d3bf1f69947b014f0"><code>2d22a7cd</code></a>)</li> <li>Record worker lifecycle hooks proofs and remaining integration gates (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/3dae322e642d144f00107aa732dd2ad578942192"><code>3dae322e</code></a>)</li> <li>Record isolated worker inference proof and remaining migration gates (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/b762d80c95bc64f514ddf2f1a6c18e0edfd43715"><code>b762d80c</code></a>)</li> <li>Distinguish admission recovery from producer replay proof (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/bc3bcaff41c4789211a907927ad9bead322a9277"><code>bc3bcaff</code></a>)</li> <li>Delimit verified worker substrate coverage and rollout blockers (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/f22754e86cf9fdad840bb16697166982e76e8e89"><code>f22754e8</code></a>)</li> <li>Inventory exact worker persistence consumers before substrate (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/0e30eb6af5c43ce7fcec11299e3fa23fff3cba2f"><code>0e30eb6a</code></a>)</li> <li>Define stable local lineage and paused fork recovery (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/757f19f4b44ec23c201af59df7bb9b3ac66ae779"><code>757f19f4</code></a>)</li> <li>Define native HTTP trust and primary-profile scope (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/a8a6b02c920fe97a588ed4396e2bb278dc97ca3a"><code>a8a6b02c</code></a>)</li> <li>Document local crash recovery contract and replay limits (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/375fce5548f41d22606fa0461c488ba3249744f3"><code>375fce55</code></a>)</li> <li>Describe settled Ink recovery and native lifecycle probes (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/2dc2e74069c474d23833eeefbccf4956a97d94cf"><code>2dc2e740</code></a>)</li> <li>Define Desktop gateway ownership and private ticket boundary (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/f0ff6c5701098ea4d26eb06647363504e4824349"><code>f0ff6c57</code></a>)</li> <li>Distinguish native policy proof from remaining classic CLI parity (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/256cab2b78ef549183636650f07586f0741b74c9"><code>256cab2b</code></a>)</li> <li>Publish supported local creation policy and recovery boundary (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/0400a5efc141827bdb341df91d960a88dccfeb2f"><code>0400a5ef</code></a>)</li> <li>Explain gateway ensure readiness and service consent (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/a272e8df90f9013386f6bacdccf0e355885a098e"><code>a272e8df</code></a>)</li> </ul> <h2>🧪 Tests</h2> <ul> <li>Relay): the OpenAI-stream e2e no longer self-deadlocks when the stream is buffered (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/6e84ce66fb577ceeaf43a1e2da773e70609953d2"><code>6e84ce66</code></a>)</li> <li>Gateway): the authority stream probe waits for the idle session.info (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/56b9691cc95fc209612a63415257d7f62d31c583"><code>56b9691c</code></a>)</li> <li>Gateway): align SSE prepare cleanup with retained streams (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/c0230ca59555af3be8471cd1cb42a83f5191799d"><code>c0230ca5</code></a>) — @Lokee86</li> <li>Desktop-core): capture the Electron PID before quit for the orphan census message (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/2cf48e0c82122bd23166f5732c8987f82463bb09"><code>2cf48e0c</code></a>)</li> <li>Gateway): the unserve runner stub carries the reservation our release step shrinks (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/5fdb477bd9686eeb369c49ced3b57db6bd136812"><code>5fdb477b</code></a>)</li> <li>Cold-profile archive/unarchive through one multiplexing gateway is an acceptance case (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/dfbb914244812dc2e22894efc45f29e5b958856a"><code>dfbb9142</code></a>)</li> <li>Seed-compensation fake uses discard_unadmitted_session; hosted auth probe waits are load-tolerant (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/cc1eab12c0f784e8c501c6209e07e1513bf57abd"><code>cc1eab12</code></a>)</li> <li>Gateway): managed-worker first-inference wait tolerates a saturated 40-worker runner (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/57c957713d676ac562ac49bd595fe88371644e33"><code>57c95771</code></a>)</li> <li>Tui): slash-attachment composer assertions wait for the journaled clear (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/d5950d725a86ce582ece85cafe663c396b8e5235"><code>d5950d72</code></a>)</li> <li>Patch origin API probe in banner ancestry fixtures (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/cdf4eda7082644712d9f58df8b46e333758032f4"><code>cdf4eda7</code></a>)</li> <li>Migrate authored bot fixtures to canonical transport (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/37d7834e16e21199df7801271db13eb311bda0b7"><code>37d7834e</code></a>)</li> <li>Verify webhook receipt observation and composed HTTP startup (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/a5a0da667c7d62390df84f3a8f842850a6e23255"><code>a5a0da66</code></a>)</li> <li>Exercise authenticated hosted room Stop and approval (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/7a6b2961a4ca6ecdfd2668f1007c456d49b023fd"><code>7a6b2961</code></a>)</li> <li>Use system Python for the stdlib-only ticket bridge (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/3394ef4cbb1cb832f986bc301b006c562570d3b4"><code>3394ef4c</code></a>)</li> <li>Preserve Kanban policy and cron cleanup owner invariants (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/e1b6f10ba19abb8d016b7241f03aa5ab6bd83d74"><code>e1b6f10b</code></a>)</li> <li>Align Kanban scope fixtures with owner worker client (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/ea2342d41c26f8f117d50740dd0eb6b2fa7704d1"><code>ea2342d4</code></a>)</li> <li>Observe relay completion and cron guard at owner seams (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/625bb379b7ebe46ca39e7662a41075956913a0fa"><code>625bb379</code></a>)</li> <li>Drain durable cron failure deliveries before asserting sends (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/9b753d3b3fe7018e504825b48466845243fa53f6"><code>9b753d3b</code></a>)</li> <li>Migrate cron guards and context fixtures through owner execution (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/7080a488630dab0c70ce4084dd94c437f95f1d5a"><code>7080a488</code></a>)</li> <li>Restore cron owner configuration and session invariants (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/c08349cffd1b122b7b4db0852db1d9f06524a6c3"><code>c08349cf</code></a>)</li> <li>Exercise cron provider and workdir paths through owner (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/9fde59d3d103b9c294e6fd09e54f1581ddf99487"><code>9fde59d3</code></a>)</li> <li>Migrate cron lifecycle invariants to canonical owner execution (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/e4a2d476cb49ab5da1d3d62e1a9fa4efac587327"><code>e4a2d476</code></a>)</li> <li>Retain queued input identity after session list loading (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/2671381d20afcd859287e6e5a9b10dacc68e006f"><code>2671381d</code></a>)</li> <li>Exercise native Electron gateway HTTP and WebSocket tickets (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/45c6c8de542e749337c91a80194cc991d13db0f7"><code>45c6c8de</code></a>)</li> <li>Verify busy acknowledgements and document Ink recovery limits (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/59a90b4d46ab9da2885ff75d800d4af0724bbc2a"><code>59a90b4d</code></a>)</li> <li>Cover canonical Ink image composer and startup handoff (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/6563563443ceb6bb05ff79c8c0c473b11f37b291"><code>65635634</code></a>)</li> <li>Verify native legacy resume and compression cutover (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/90052b3351edee51f9de3f1801aef974baa63c54"><code>90052b33</code></a>)</li> <li>Prove admission-backed automatic compression retry (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/3ec0ea59babdbbe6dcf1eb8141a004af890bf419"><code>3ec0ea59</code></a>)</li> <li>Gate the Discord role probe on the real distribution, not the conftest mock (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/19feada077552c535490f4d32f4cc53b46862bec"><code>19feada0</code></a>)</li> <li>Acp): live editor image prompt reaches the loopback model as an image_url part (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/993a63f0517971409e9e55970e8189a97b9f0614"><code>993a63f0</code></a>)</li> <li>Native suite finds the managed worker by owner ancestry, not bare ppid (venv trampoline) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/9e33573819b531d4925cd883c6ab07e95f2d8604"><code>9e335738</code></a>)</li> <li>Trampoline reap check waits for the owner's bounded close instead of racing the terminal commit (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/cc2cdbe28fc8e6789e6dd0c3928b44d3fbdea565"><code>cc2cdbe2</code></a>)</li> <li>Desktop): move the token download-transport invariant beside the extracted function (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/ff662b6b4324ae5a11f0ae3d77ab27e962c1990d"><code>ff662b6b</code></a>)</li> <li>Exercise safe identity suppression through real prompt assembly (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/cccb516cd7e12717d9652519a4b8f0bbd76c1bb3"><code>cccb516c</code></a>)</li> <li>Verify reserved admission claims through worker handlers (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/107af6fc7a647f4f1a9e3f16d68507e7f3390b3f"><code>107af6fc</code></a>)</li> <li>Isolate and reap owned Kanban systemd scopes (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/3776709d521bb932f24790ba5b8ac9d99f867459"><code>3776709d</code></a>)</li> <li>Prove rotated worker survives owner kill and adoption (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/8459b14094104210cfad432b680ed7397112f2d9"><code>8459b140</code></a>)</li> <li>Prove fresh ACP handoff and cold canonical restoration (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/56f623818839ebe120f25aec658e2ede93776202"><code>56f62381</code></a>)</li> <li>Verify per-admission API usage on the ordinary daemon (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/35d9eb2f7024293dca0d2bda5df9ff6ace69b57e"><code>35d9eb2f</code></a>)</li> <li>Prove shared API FIFO on the ordinary daemon (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/e721121f7beb367a65194986747e46db80af2dc9"><code>e721121f</code></a>)</li> <li>Prove registered worker terminal execution without canonical SQLite opens (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/e31b96bc84572ab685166f3bc45aca4160c72977"><code>e31b96bc</code></a>)</li> <li>Exercise worker lifecycle and stale callbacks through ordinary owner (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/5038cf75c91c0605bb99b5d7ca13fcc7703f3cef"><code>5038cf75</code></a>)</li> <li>Verify worker rotation claim and lost-ack replay over daemon (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/17cf264fc5973301cc69ead17ef89e708d8aaa5a"><code>17cf264f</code></a>)</li> <li>Verify native ACP approval and wrong-profile refusal (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/d157534a4a4eba4cb4ecd5d2db740f68b7ec9f87"><code>d157534a</code></a>)</li> <li>Verify local automation stays nonhuman and cache stable (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/ef071dd371e4c50ff084fe90408bbeb16e2adc70"><code>ef071dd3</code></a>)</li> <li>Prove local completion recovery after owner kill (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/9afff7e9d5b7218ab45af1a95518e854fda70d0d"><code>9afff7e9</code></a>)</li> <li>Follow canonical CLI launch in startup guard fixtures (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/34b9aad158d12a6dad51ffab38253e3a9ba8928b"><code>34b9aad1</code></a>)</li> <li>State): keep FTS migration fixtures on historical versions (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/21baec51bb6e3308cf885ea2a8bcde27eaf0f04b"><code>21baec51</code></a>)</li> <li>Document recovery limits and verify consented gateway launches (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/ddc1b0a1b75065e561e498e236e7cd5336d3fb3f"><code>ddc1b0a1</code></a>)</li> <li>Refuse unauthenticated credential launch over ordinary daemon websocket (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/9b0d7861d40ea2f26d48f14893d3be8ec75ee154"><code>9b0d7861</code></a>)</li> <li>Deny credential-bearing creation to restricted principals (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/2d2fdff90d41a7127cbe44563c5d08a7e774e125"><code>2d2fdff9</code></a>)</li> <li>Verify frozen CLI iteration limits through actual tool rounds (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/cc37de8b8488a7c806c056a049a76161068f07bc"><code>cc37de8b</code></a>)</li> <li>Prove concurrent CLI launch wire and restart credential isolation (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/84e86a87ec8a9e41c168a96a4934a8cc76cb2215"><code>84e86a87</code></a>)</li> <li>Own canonical daemon in completed-process CLI integration (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/6c8f0fd8430cd273eae7e597bd6b9024f89540f4"><code>6c8f0fd8</code></a>)</li> <li>Keep simulated HEAD updates off the live runtime fleet (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/7b8fdfa864bb6dcb6b0fc090a63b94a817ca0f0b"><code>7b8fdfa8</code></a>)</li> <li>Seed owner database for dashboard parameter validation (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/2af3bfd471ba8a00dbd0e9b926c02501054b785b"><code>2af3bfd4</code></a>)</li> <li>Initialize owner store for dashboard refresh success (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/a1811942e41b03cc8ac48537615d236e51522cfa"><code>a1811942</code></a>)</li> <li>Isolate service ordering fixture home (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/3b42e697695f72521e523a0d073158f4df0fd411"><code>3b42e697</code></a>)</li> <li>Seed gateway status through real read-only storage (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/6af1ac81fe978735fdf130602109105484fe3511"><code>6af1ac81</code></a>)</li> <li>Exercise CLI exports against real read-only session storage (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/96782704a006e8bd1d6e38ce693c3e110c2b6730"><code>96782704</code></a>)</li> <li>Prove pending worker usage survives real owner outage and adoption (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/58bcc3ec4d76a5dc85431b82995857cf7af9bdbb"><code>58bcc3ec</code></a>)</li> <li>Verify live relay replacement and websocket revocation fences (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/8956747661cd5a7dd2b3a1c0d2e3dd160489e330"><code>89567476</code></a>)</li> <li>Reject relay trust installation from an invalid seal (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/80d677d2d0ac937d30f06dfa9178cb781fecc163"><code>80d677d2</code></a>)</li> <li>Reproduce relay busy ingress blocking outbound acknowledgements (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/73bf2c66d364cca4d8bbea27ef9fd8d0558739b9"><code>73bf2c66</code></a>)</li> <li>Reproduce authenticated relay native admission rejection (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/0bbe37401b2f66e800bc22d03ba5bff625105764"><code>0bbe3740</code></a>)</li> <li>Preserve destination lock identity after offline import (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/ef1fe3dedc97a2f5bd93ebe11c535382f79f8676"><code>ef1fe3de</code></a>)</li> <li>Verify separate-output recovery against active daemon source (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/cc96119bf57efbf677c1ec9af7e0d3856c4be12e"><code>cc96119b</code></a>)</li> <li>Expose epoch reuse and service revival after refused import (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/dbb1e531e221d6a690d27b50f4c7269a14473a40"><code>dbb1e531</code></a>)</li> <li>Reproduce live restore deleting active authority admissions (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/3a0111ee03029d4c4fb7be02400ce1a9af73b92a"><code>3a0111ee</code></a>)</li> <li>Align search fixture with owner-initialized session stores (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/e2a853ba7f0a8bf1da9cac089cbdab415327c0e2"><code>e2a853ba</code></a>)</li> <li>Cover encoded socket limits with direct control paths (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/34407c9ec6ca0922233dc9c8f7cd4070609b0bf1"><code>34407c9e</code></a>)</li> <li>Reproduce missing loop witnesses in long-home daemons (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/366497955805e9f32a3805d855c97b208cdfed23"><code>36649795</code></a>)</li> <li>Configure a restorable model for token session creation (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/bcf39bfb11986643663da0b78efb57780a61d958"><code>bcf39bfb</code></a>)</li> <li>Verify ordinary daemon replay and release fixture stores (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/e8f57b7fbcfa423c6b39bf4e37fb543bc29f83a1"><code>e8f57b7f</code></a>)</li> <li>Supply real session stores to gateway authority fixtures (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/e3d230875fe505a8ea87d8ddca49e07ab5280810"><code>e3d23087</code></a>)</li> <li>Verify ordinary daemon slash actor isolation and handler scope (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/3cdf25cb2ff57aa05ebf2c5c24130cabb21b5c78"><code>3cdf25cb</code></a>)</li> <li>Verify native download boundaries and document transport scope (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/c86200114096632d460371e3b4ee4d83f6d094ae"><code>c8620011</code></a>)</li> <li>Prove local rotation and reset across cold daemon restarts (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/af3f2dfe1adfb49a00976a1e08a4b0d083e8cb04"><code>af3f2dfe</code></a>)</li> <li>Compare discovery on real legacy serve and canonical daemon sockets (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/5d1d1ee039a140eb9589edc2d9c8489cb45af522"><code>5d1d1ee0</code></a>)</li> <li>Reproduce missing canonical command discovery over ordinary daemon WS (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/659632c390c24d44ee3cbfb4d125faa29710666b"><code>659632c3</code></a>)</li> <li>Scope private Unix ticket fixture to supported native hosts (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/ca3e4b644c70dda72c61193a3853d43de0b6cccb"><code>ca3e4b64</code></a>)</li> <li>Keep native protocol fixtures within their runtime type boundary (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/da98497cdc4be395f43c48c9f8bc65ebe3c7c939"><code>da98497c</code></a>)</li> <li>Verify canonical receipts retire the native private-file journal (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/5bd5a8d63ad6e753da9b5ed005871b6227cf7692"><code>5bd5a8d6</code></a>)</li> <li>Verify native HTTP selectors against real sibling profiles (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/f6ef1ea436991d6d2ac4c3d5af33d99e8245bc7c"><code>f6ef1ea4</code></a>)</li> <li>Prove cold local recovery through separate authenticated daemons (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/041d9ee74e754fc9347d09bdf022fa09a162d36d"><code>041d9ee7</code></a>)</li> <li>Exercise native Stop through the Python Ink launcher (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/c75e0cdd76a117efde713e8dfa16eaf2d2e57c6c"><code>c75e0cdd</code></a>)</li> <li>Verify native Ink Stop acknowledgement and fresh follow-up (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/d0ad8324c8407a8199e02828774d8bb51a4249e7"><code>d0ad8324</code></a>)</li> <li>Exercise fresh Ink launch through the real Python launcher (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/8b727f4aada6b0f40a2278cf7775c33c9253c62d"><code>8b727f4a</code></a>)</li> <li>Verify actual native clarification answer on model wire (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/cc4ad0d1158ea032d5c39023df6205a57225deec"><code>cc4ad0d1</code></a>)</li> <li>Require native Ink reconnect to render settled history (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/eecaba4203c736bfc6e66f4d67b9cf42e28e97d8"><code>eecaba42</code></a>)</li> <li>Initialize replay fixture with explicit runtime admission state (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/014b3ea496297fdacba7522188679ea442687344"><code>014b3ea4</code></a>)</li> <li>Retain native reconnect output for intermittent Ink failure (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/f454485d7cc2a94082f954fc23b6be1a8a9f52e1"><code>f454485d</code></a>)</li> <li>Verify native CLI cwd execution against the policy-enabled daemon (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/db2bdf316367f345ae33957bd645c9e4c6934933"><code>db2bdf31</code></a>)</li> <li>Prove native gateway approvals survive CLI detach and invalid choice (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/a0c361ae387c438f7ceb9bf5c65d8befd85fcac5"><code>a0c361ae</code></a>)</li> <li>Prove concurrent local policy isolation on provider wire (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/1505259991975ad66d45b80c59b9dbfe44c8b19a"><code>15052599</code></a>)</li> <li>Verify metadata retries through ordinary gateway sockets (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/0d5d548f1d5cfb1eb63f549f28de900348f55210"><code>0d5d548f</code></a>)</li> <li>Execute fresh sessions through ordinary gateway startup (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/ae19a6e0354646a6872e4d3222ec08fbd65a80b1"><code>ae19a6e0</code></a>)</li> <li>Prove fresh local clarify survives complete viewer detachment (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/1044867be6a64a85b4a99bc1a99ecfa2f01a4474"><code>1044867b</code></a>)</li> <li>Preserve Discord direct pairing and scoped DM grants (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/144c86c76449ff30fe63354c99ad0dc5929922d9"><code>144c86c7</code></a>)</li> <li>Retain startup exit contracts with real authority stores (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/a126b4cc0a81377ea9177c0679a61f9f90fb4b55"><code>a126b4cc</code></a>)</li> <li>Verify excluded observer prefix against canonical replay (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/cacd4d224f1616dd60b04d3da6dfb35ab0260660"><code>cacd4d22</code></a>)</li> <li>Retain live gateway bootstrap readiness probe (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/29167522421b9ced0590360934ca38717c3e5866"><code>29167522</code></a>)</li> <li>Exercise shared approvals through production API startup (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/118b34ac6c1567b614af47c3abc7939b66e4a790"><code>118b34ac</code></a>)</li> <li>Verify native runtime ownership and execution-time secret refresh (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/234f1278cebce88c54bc247e5b568d7ef40ca9cc"><code>234f1278</code></a>)</li> <li>Exercise approval rendering through initialized turn runners (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/76efc227017e424779299fd3e7474276df728c3c"><code>76efc227</code></a>)</li> <li>Verify CLI readers alongside an active SQLite writer (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/ee23996cff7e55413f2fbe3624562ec0696bb265"><code>ee23996c</code></a>)</li> <li>Retain real CLI reader A/B harness (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/bcc03ee8f7786d07fe6c7ea168a9522b8f253b91"><code>bcc03ee8</code></a>)</li> <li>Preserve insights cleanup coverage with absent-store fast path (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/eae783bc50c89d2737861d160f0c7543613aaa57"><code>eae783bc</code></a>)</li> <li>Exercise shared turns through production API startup (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/0cfe5a2ff436f76739342d26e02724eaa921a46d"><code>0cfe5a2f</code></a>)</li> <li>Retain authority backpressure execution receipt (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/47ce83d6ff882ca01f7f104526486adca26547a4"><code>47ce83d6</code></a>)</li> <li>Retain real-process read-only search A/B probe (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/551ccfcad1496e66a17b165c9cf334d1988d14a4"><code>551ccfca</code></a>)</li> <li>Require complete shared gateway acceptance receipt coverage (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/d853d14574c53869cd408372d4e9807181e674bb"><code>d853d145</code></a>)</li> <li>Retain gateway source invariants across sibling extractions (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/e1df5d12bdd4c555bb25990fd4d33755f4ce27aa"><code>e1df5d12</code></a>)</li> <li>Follow production methods across gateway turn extraction (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/04cef1e9b30b9c6e2d41b69267146ce392f2c5b3"><code>04cef1e9</code></a>)</li> <li>Reap truncation fixture worker before restoring bindings (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/d6d8af931c8d1041404479bc340ecfb626aefcaf"><code>d6d8af93</code></a>)</li> <li>Trace borrowed SQLite readers in search projection invariant (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/fa572cbeab9d04ceb1e70b6bf6c53f4865e62253"><code>fa572cbe</code></a>)</li> <li>Verify runtime schema upgrades and genuine SQLite full rollback (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/1769e803f8413abe51af4a08008918139bf09051"><code>1769e803</code></a>)</li> <li>Reproduce Ink receipt-only retry busy latch (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/1c144c98d76bf42e8b2312241bb398ebef6b95f4"><code>1c144c98</code></a>)</li> <li>Reproduce desktop receipt stop and legacy timeout races (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/02e0ab74da057f683b5837a475c43dfd6d032e64"><code>02e0ab74</code></a>)</li> <li>Verify gateway service consent across import and setup (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/4ecf59755e9c2e2cf6f17ae3d149c2d4b08f5f0d"><code>4ecf5975</code></a>)</li> <li>Make unreserved profile snapshots explicit in multiplex fixtures (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/a72ed0a5e8d16fabcd3fb9d6a6440992f8f2dfd6"><code>a72ed0a5</code></a>)</li> </ul> <h2>🏗️ Infrastructure</h2> <ul> <li>Release): admit stable releases from release/* branches, not just main (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/9686d55ca87ccb22f779f012dd1ced7cdf63e0b9"><code>9686d55c</code></a>) — @ethernet8023</li> <li>Plugins): pin birkin-mnemosyne to core 0.7.1 (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/e216cd746f9e6600cf40ab5622f5ad2119ef91cb"><code>e216cd74</code></a>) — @ashmoonori-afk</li> <li>Catalog): review disclosure for huddo (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/85d27a51cf87327f6ea894a3a78302a207706f34"><code>85d27a51</code></a>)</li> <li>Map contributor email for StudioCodeAI (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/c708b34ff60cacbb2aa2a34d80e46febed1c2a1b"><code>c708b34f</code></a>)</li> <li>Plugin-catalog): update Telegram Client to 1.3.1 (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/27aaade97b75cf8961be8201f167624b46454d8b"><code>27aaade9</code></a>) — @guberm</li> <li>Plugin-catalog): bump Gmail to v1.0.20 (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/c6ac05655ca24c96c87ddd91d444f690ca9e621d"><code>c6ac0565</code></a>) — @guberm</li> <li>Kiwi): bump pin to <a rel="noopener" href="mailto:kiwi@0.12.5">kiwi@0.12.5</a>, plugin v1.2.2 (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/a08f5894355ac410a4af46875ff3ac47e8f89f50"><code>a08f5894</code></a>) — @harrylabsj</li> <li>Lightningai-rate-limit to v1.1.0 (wall-clock aligned window) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/e28d64e8b7b54258eae5c8cdc825f919421ca65a"><code>e28d64e8</code></a>) — @dinosauria123</li> <li>Map contributor email for TREE-Ind (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/71f78b3fe2a5b6be2dc219c999fc64ab44053b47"><code>71f78b3f</code></a>)</li> <li>Catalog): review disclosure for hermes-aac (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/0567d017c46c3fdb9dd66d5468ad2ed96dc3cfc3"><code>0567d017</code></a>)</li> <li>Catalog): review disclosure for openinvest (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/c179b286d448411f500c7318baf183769b6ba885"><code>c179b286</code></a>)</li> <li>Map contributor email for Sahil-SS9 (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/d8b5bd8a497f7f3e8f02acf966b1be6afce2cd91"><code>d8b5bd8a</code></a>)</li> <li>Catalog): review disclosure for hermes-agent-mixer (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/a98cc310f913bb6e7ac27622fa105a433e415138"><code>a98cc310</code></a>)</li> <li>Update Activity catalog to v0.2.0 (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/908c525dee4f28ba96617b4faa5e051bb21da2d7"><code>908c525d</code></a>) — @hassan-kamel</li> <li>Catalog): showly reviewed disclosure + requires_hermes >=0.21.6 (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/2ee820e771033539a5d5eac8356c317af9979245"><code>2ee820e7</code></a>)</li> <li>Catalog): review disclosure for nexus (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/1a5f5c7b484f8ffccaa511ceb1639c3ce652e550"><code>1a5f5c7b</code></a>)</li> <li>Catalog): review disclosure for kumiho-memory (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/63da5f7b2033d3969b825425937143cbc2168851"><code>63da5f7b</code></a>)</li> <li>Catalog): review disclosure for model-router (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/92790c6d79f0d743f532b9bf0c964bde6d893a29"><code>92790c6d</code></a>)</li> <li>Catalog): review disclosures for anatomy-museum, agent-janitor (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/560b250762a707ad355f3cd9019bff48be954d53"><code>560b2507</code></a>)</li> <li>Js): lint after the main merges: drop the unused watchdog import, order a test import, stub gw on the steer ctx (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/1b78a417d4438655736f5d3e6ff0e6dfd5ea3b60"><code>1b78a417</code></a>)</li> <li>Retrigger CI (zero-job dispatch failure, auto-heal) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/d056a62442dfb655fcb488b580ff292b4844be4a"><code>d056a624</code></a>)</li> <li>Give area detection its sparse checkout and retry budget (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/8824ac9686e67f8b650e685919447f3f15204591"><code>8824ac96</code></a>)</li> <li>Retrigger CI (zero-job dispatch failure, auto-heal) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/2cbeac1f1c57fa64b963eb0fde075769b6cd3d61"><code>2cbeac1f</code></a>)</li> <li>Retrigger after 0-job workflow startup failure (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/254432b2d40a19ad4693f4c7ee98ab9658fe6dcf"><code>254432b2</code></a>)</li> <li>Retrigger (dispatch window) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/1e39814039247a602a990c0196be3be054ebc059"><code>1e398140</code></a>)</li> <li>Retrigger (dispatch window) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/40b17a25f4d5812c597d0062d9b13af8f0e80671"><code>40b17a25</code></a>)</li> <li>Retrigger (dispatch window) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/5e198b8b2fb72a39887414fdffbe3f2d56e4d96c"><code>5e198b8b</code></a>)</li> <li>Retrigger after 0-job workflow startup failure (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/f6dd9025fd357ccecb8ea8b6713704cdbe497a4e"><code>f6dd9025</code></a>)</li> <li>Retrigger after 0-job workflow startup failure (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/911b559e4a38bfc0e13113276dea824bc1741749"><code>911b559e</code></a>)</li> <li>Retrigger after 0-job workflow startup failure (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/4ff21ecd722f1ddf63614799657e0eedf0c5528c"><code>4ff21ecd</code></a>)</li> <li>Retrigger after 0-job workflow startup failure (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/c37453e7c4e6c51d1726ff54767cfce3518f43ce"><code>c37453e7</code></a>)</li> <li>Retrigger after 0-job workflow startup failure (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/cb29678859be3e7737620a394147193f65d1b5a3"><code>cb296788</code></a>)</li> <li>Retrigger after 0-job workflow startup failure (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/346615f3f911f9f153d54c23fb5e6bcea30321bc"><code>346615f3</code></a>)</li> <li>Retrigger after 0-job workflow startup failure (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/1e4edefa4279b22e711f9c5c99a6b1082d538a46"><code>1e4edefa</code></a>)</li> <li>Retrigger after 0-job workflow startup failure (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/f3d4105f694f71f18ddd215ce25318317a2d350f"><code>f3d4105f</code></a>)</li> <li>Retrigger after 0-job workflow startup failure (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/73d9e41344488956f49bec9ed902a318e85f5c78"><code>73d9e413</code></a>)</li> <li>Retrigger after 0-job workflow startup failure (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/c7fcc65c9b1132622eb6117843c253177cd22851"><code>c7fcc65c</code></a>)</li> <li>Retrigger after 0-job workflow startup failure (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/4892e1d4416772bdaed1131a68d242a2bfa9beae"><code>4892e1d4</code></a>)</li> <li>Retrigger after 0-job workflow startup failure (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/2cb84f4398fb52d24f03dacb02f56cbbeb287b69"><code>2cb84f43</code></a>)</li> <li>Retrigger after lost push event (0 runs on 19ca1e85c80) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/c86b415df4470cca848d4acbeae683591faae734"><code>c86b415d</code></a>)</li> <li>Trim native HTTP helper imports (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/25fd73b6654125c6a0264aff4fcc8f2b0c0f1224"><code>25fd73b6</code></a>)</li> </ul> <h2>📦 Other Changes</h2> <ul> <li>Repin hermes-insight to afb08fb (1.0.2) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/51e663da9def59da047d05cd88f8dd300fca75ed"><code>51e663da</code></a>) — @BrokeSkill</li> <li>Plugin-catalog: bump huddo to 0.9.0 (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/eeacc00ac0b6cfd25c7daee9709d428d3cc66213"><code>eeacc00a</code></a>) — @hellohanchen</li> <li>Plugin-catalog: re-pin hermes-lang-pt-br to 7548ff1 (pack verifier + CI) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/82fbd41fd41998124a0ae15477306aba65ba6e29"><code>82fbd41f</code></a>) — @StudioCodeAI</li> <li>Plugin-catalog: re-pin hermes-lang-pt-br to 69efb2f (credits/timeline README) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/2c20d9a350a09c3cf36f3109d6fbf0e3431fde82"><code>2c20d9a3</code></a>) — @StudioCodeAI</li> <li>Catalog: bump speechify to 0.1.1 (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/3a5b9e84b15b3f6d878e40045e2b26f170415759"><code>3a5b9e84</code></a>) — @Lokeshm24</li> <li>Catalog: re-pin qdrant-memory to 0.2.1 (e14adc06) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/720552bb3083aa7a68087ee98b46b52214fbecc9"><code>720552bb</code></a>) — @cnkang</li> <li>Catalog: repin Hermes AAC 0.1.1 SDK-only reduced features (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/473e284730b8047d1623f038bafd94c77da2f124"><code>473e2847</code></a>) — @TREE-Ind</li> <li>Plugin-catalog: openinvest re-pin to 106e5ba (bounded backend deps, 0.41.6) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/6cc9a4347b351ca6d4f4b084e572322c9d6f824c"><code>6cc9a434</code></a>) — @longsizhuo</li> <li>Plugin-catalog: openinvest re-pin to 3a0c816 (review fixes, backend 0.41.4) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/00c311c834c0184f5eecc36635e8abc0e665dbf9"><code>00c311c8</code></a>) — @longsizhuo</li> <li>Plugin-catalog: openinvest re-pin to 3e1a9d7 (review fixes) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/cb223633d2d8dc84782254563d32902d4213a943"><code>cb223633</code></a>) — @longsizhuo</li> <li>Plugin-catalog: bump plan-mode to 0.4.4 (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/2a5617f858a22ab852ee0332460e164af8bbbc3a"><code>2a5617f8</code></a>) — @100yenadmin</li> <li>Plugin-catalog: bump plan-mode to 0.4.3 (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/6fafdd4f06b35ec4e09adccf6769b547a470ac69"><code>6fafdd4f</code></a>) — @100yenadmin</li> <li>Catalog: pin the Showly community plugin (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/5da3156c8607f15206de74b22a69a015c073d09e"><code>5da3156c</code></a>) — @slchris</li> <li>Catalog(nexus): repin the sha to 4392e6d — /embed and /mcp demand a per-installation key (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/64425a0663de5e2d660b498013a9a89a4b68f920"><code>64425a06</code></a>) — @Neboy72</li> <li>Plugin-catalog: bump account-pool to 4.0.2 (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/e5d2cebe17e94a3bba69867a8127d98bdf2cc05b"><code>e5d2cebe</code></a>) — @roqianjas</li> <li>Plugin-catalog: bump alans-way and alans-way-computer to 0.21.5 (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/a8d61e309fc8e7f22e7e4c9e3a48a11fb1f19a47"><code>a8d61e30</code></a>) — @capthvnsen</li> <li>Plugin-catalog: nvidia-app + nvidia-broadcast pin -> 729e25c (first-run setup when the app side is not ready) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/f18948e4cdc88b38104c0c4572dd8f00269c3eed"><code>f18948e4</code></a>) — @alt-glitch</li> <li>Catalog: agent-janitor (from #137875) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/137875">#137875</a>) — @ZidoCode</li> <li>Catalog: anatomy-museum (from #138166) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/138166">#138166</a>) — @danrudy33</li> <li>Catalog: secure-env-ingress (from #132272) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/132272">#132272</a>) — @web3blind</li> <li>Style: align canonical group controls with Desktop lint rules (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/c8d8900dcd17281dd52f52624ac712f2199eaed3"><code>c8d8900d</code></a>)</li> <li>Style: normalize verified queue admission imports and spacing (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/d3ad7a90ec585deea401a7c37ec32dbcdcb6c086"><code>d3ad7a90</code></a>)</li> </ul> <h2>👥 Contributors</h2> <p>Thank you to everyone who contributed to this release!</p> <ul> <li>@Lokee86 (11 commits)</li> <li>@dokterdok (6 commits)</li> <li>@elisam0 (5 commits)</li> <li>@longsizhuo (4 commits)</li> <li>@100yenadmin (3 commits)</li> <li>@StudioCodeAI (3 commits)</li> <li>@olric3015 (3 commits)</li> <li>@ethernet8023 (2 commits)</li> <li>@helix4u (2 commits)</li> <li>@guberm (2 commits)</li> <li>@TakeshiTGAL (2 commits)</li> <li>@dinosauria123 (2 commits)</li> <li>@TREE-Ind (2 commits)</li> <li>@Sahil-SS9 (2 commits)</li> <li>@hassan-kamel (2 commits)</li> <li>@slchris (2 commits)</li> <li>David Dudok de Wit (2 commits)</li> <li>@xxxigm (1 commit)</li> <li>@kshitijk4poor (1 commit)</li> <li>@j-nolan (1 commit)</li> <li>@rroverin (1 commit)</li> <li>@BrokeSkill (1 commit)</li> <li>@dandacompany (1 commit)</li> <li>@ashmoonori-afk (1 commit)</li> <li>@hellohanchen (1 commit)</li> <li>@2867297362mjb-sketch (1 commit)</li> <li>@Lokeshm24 (1 commit)</li> <li>@harrylabsj (1 commit)</li> <li>@cnkang (1 commit)</li> <li>@Neboy72 (1 commit)</li> <li>@kaveone (1 commit)</li> <li>@roqianjas (1 commit)</li> <li>@capthvnsen (1 commit)</li> <li>@alt-glitch (1 commit)</li> <li>@metamindedu (1 commit)</li> <li>@ZidoCode (1 commit)</li> <li>@danrudy33 (1 commit)</li> <li>@web3blind (1 commit)</li> <li>@KoNit-K (1 commit)</li> <li>@unsupportedpastels (1 commit)</li> <li>@abundantbeing (1 commit)</li> <li>@utkubakir (1 commit)</li> </ul> <p><strong>Full Changelog</strong>: <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/compare/v0.22.0...rc.5-v0.22.1">v0.22.0...rc.5-v0.22.1</a></p> </div><div class="link-row" data-astro-cid-l7qxtvnw><span class="lr-label" data-astro-cid-l7qxtvnw>Links</span><a href="https://github.com/NousResearch/hermes-agent/releases/tag/v0.22.1" data-astro-cid-l7qxtvnw>GitHub release notes ↗</a><a href="https://github.com/NousResearch/hermes-agent/compare/v0.22.0...v0.22.1" data-astro-cid-l7qxtvnw>Full diff ↗</a><a href="https://github.com/NousResearch/hermes-agent/releases/tag/v0.22.1" data-astro-cid-l7qxtvnw>Release notes (v0.22.1) →</a></div></div></details><details class="rel" data-astro-cid-l7qxtvnw><summary data-astro-cid-l7qxtvnw><span class="r-arrow" data-astro-cid-l7qxtvnw>▶</span><span class="r-ver" data-astro-cid-l7qxtvnw>v0.22.0</span><span class="r-date" data-astro-cid-l7qxtvnw>2026-10-14</span></summary><div class="rel-body" data-astro-cid-l7qxtvnw><p class="r-summary" data-astro-cid-l7qxtvnw><strong>The Threshold Release.</strong> Hermes was the god of thresholds: the doorway, the crossing, the boundary stone. v0.21.0 assembled the pantheon; v0.22.0 is about getting through the door. A fresh desktop install now opens on a guided setup chat that runs on a free trial model, so a newcomer is talking to Hermes before they own an API key. Connectors carry the agent across into the apps you already use, with no account needed to start. Local models bring it home to your own hardware with a one-click llama.cpp runtime. And the threshold itself got sturdier: tested SemVer stable releases that installs follow by default, signed desktop packages (including the Microsoft Store), and one package manager underneath everything. Around that spine: a 600-plugin catalog, the Claude 5.5 / GPT-6 model wave, password-manager sign-in for the browser, a bot screen you can take over, one backend and one gateway for every profile, and a codebase a third smaller. This is the largest window Hermes has shipped, about 2.5x the v0.21.0 cycle, and it rolls up and fully documents the v0.21.1–v0.21.7 patch releases.</p><div class="r-notes" data-astro-cid-l7qxtvnw><blockquote> <p><strong>The Threshold Release.</strong> Hermes was the god of thresholds: the doorway, the crossing, the boundary stone. v0.21.0 assembled the pantheon; v0.22.0 is about getting through the door. A fresh desktop install now opens on a guided setup chat that runs on a free trial model, so a newcomer is talking to Hermes before they own an API key. Connectors carry the agent across into the apps you already use, with no account needed to start. Local models bring it home to your own hardware with a one-click llama.cpp runtime. And the threshold itself got sturdier: tested SemVer stable releases that installs follow by default, signed desktop packages (including the Microsoft Store), and one package manager underneath everything. Around that spine: a 600-plugin catalog, the Claude 5.5 / GPT-6 model wave, password-manager sign-in for the browser, a bot screen you can take over, one backend and one gateway for every profile, and a codebase a third smaller. This is the largest window Hermes has shipped, about 2.5x the v0.21.0 cycle, and it rolls up and fully documents the v0.21.1–v0.21.7 patch releases.</p> </blockquote> <hr> <h2>✨ Highlights</h2> <ul> <li><p><strong>A first launch that sets itself up</strong> — Open the desktop app on a computer where you have never used Hermes and it starts a short setup chat instead of a settings screen. One card at a time it asks your name, an accent color and a layout, which apps to connect, which plugins to install, then gives a quick tour and offers up to four first tasks picked for you. It runs on a free trial model (<code>nous/welcome</code>, once per OS user), so it needs no key; <strong>Skip setup</strong> ends it and <strong>Settings → Run onboarding again</strong> brings it back. The agent also gained <code>set_theme</code>, so "make it violet, dark mode" works in any desktop chat. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/137429">#137429</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/137522">#137522</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/137807">#137807</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/134209">#134209</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/105258">#105258</a> — @alt-glitch, @OutThisLife, @ethernet8023, @rewbs)</p> </li> <li><p><strong>Connectors: Hermes works inside your apps</strong> — The agent can now act in hosted apps such as Linear and Notion through the Nous tool gateway: ask for an app, sign in once in your browser, and the tools are usable in the same turn. You do not need a Nous account to start; the first time you use an app, Hermes creates a free connectors-only identity. The desktop has a new <strong>Connectors</strong> page that puts hosted apps and your MCP servers in one list (it replaces the MCP tab), the same setup card appears in the TUI and CLI, and you can connect several named accounts of one app (a <code>work</code> and a <code>home</code> account) and manage them with <code>/connectors</code> or <code>hermes connectors</code>. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/106842">#106842</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/111008">#111008</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/119074">#119074</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/135143">#135143</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/135072">#135072</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/135097">#135097</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/135151">#135151</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/135173">#135173</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/137426">#137426</a> — @alt-glitch, @rewbs)</p> </li> <li><p><strong>Local models in one click</strong> — Hermes can now run open models entirely on your machine with nothing leaving it: no account, no API key. It installs and maintains llama.cpp with the right engine for your hardware (CPU, CUDA, Metal, Vulkan or ROCm), rates every catalog model against your GPU and RAM, and picks the highest-quality build that fits. Downloads pause and resume, the server starts and stops with Hermes, and engine updates are one click. Start from <strong>Settings → Providers → Local Models</strong> on Windows, macOS and Linux, or <code>hermes model</code> → <strong>Local models</strong> in a terminal. The catalog includes Qwen3.8 27B, Qwen3.8 Flash Next (with its MTP speculative head), Qwen3.6 35B-A3B and DeepSeek V4 Flash, plus any GGUF from Hugging Face. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/100667">#100667</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/101823">#101823</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/128768">#128768</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/111423">#111423</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/133111">#133111</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/134116">#134116</a> — @jquesnelle, @ethernet8023)</p> </li> <li><p><strong>Stable release channels</strong> — Hermes now ships tested SemVer releases. Every release passes source CI, Docker, Nix, signed desktop builds and install/upgrade runs on every OS before it is published, and source installs now move from release to release by default instead of tracking every commit on <code>main</code>. Prefer the bleeding edge? <code>hermes update --set-channel main</code>, or the new channel switch in Desktop <strong>Settings → About</strong>. Moving to an older release is labelled a rollback and never happens without asking, and installer reruns keep you on the channel you chose. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/102765">#102765</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/135847">#135847</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/135949">#135949</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/136313">#136313</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/137780">#137780</a> — @ethernet8023, @KoNit-K)</p> </li> <li><p><strong>Signed desktop packages, the Microsoft Store, and one package manager</strong> — The desktop app is now a sealed, signed package that carries its own Python and Node and updates itself, so first launch builds nothing. Windows gets a signed MSIX (x64 and ARM64) through App Installer or the Microsoft Store; macOS gets a signed, notarized build for Apple Silicon. Underneath, a new unified package manager (<code>hermes pm</code>) owns every pinned, hash-checked tool and Python environment: updates build a new environment and switch only once it passes its check, so a failed or killed update can no longer leave you half-applied. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/102765">#102765</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/132361">#132361</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/132386">#132386</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/120339">#120339</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/122221">#122221</a> — @ethernet8023)</p> </li> <li><p><strong>The Plugin Catalog: 600 reviewed plugins</strong> — The plugin catalog launched this cycle and grew to 600 entries, each pinned to a reviewed commit and installable from Hermes Desktop or the CLI. Browse by category and star ranking with a page per plugin and per author; catalog rules keep listed plugins from patching Hermes internals or shipping unscannable binaries. Memory providers now live with their makers (Honcho, Supermemory, Hindsight, Mem0, OpenViking, Holographic), as do Home Assistant, Spotify and Langfuse: existing users are migrated automatically, and the default install got leaner. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/69446">#69446</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/111415">#111415</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/117808">#117808</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/113381">#113381</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/114732">#114732</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/131267">#131267</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/132476">#132476</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/136436">#136436</a> — @itpartypattaya, @happy5318, and 400+ plugin authors)</p> </li> <li><p><strong>The Claude 5.5 and GPT-6 model wave</strong> — Claude Fable 5.1, Opus 5.5, Sonnet 5.5 and Haiku 5.5, GPT-6 Astra, Sol and Luna plus GPT-6.1 Sol, and Gemini 4 Argon are pickable on Nous Portal, OpenRouter and native routes where offered. Prior reasoning is now replayed by default on every provider that can read it, across resume, branches and compaction, so long multi-step work keeps its train of thought. And when a provider has a bad hour, Hermes waits out transient 503/529/timeouts in visible, bounded cycles instead of ending your turn. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/100577">#100577</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/119304">#119304</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/126842">#126842</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/134759">#134759</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/128248">#128248</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/137955">#137955</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/136358">#136358</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/116353">#116353</a> — @kshitijk4poor, @unsupportedpastels, @100yenadmin, @mssteuer, @xxxigm)</p> </li> <li><p><strong>Sign in to websites with your password manager</strong> — The browser agent can log into sites with logins from 1Password, Bitwarden or Hermes's own encrypted vault, and the model never sees the password. If nothing is saved, you get a masked prompt in the CLI, TUI or Desktop to save it, one-time codes are filled without entering the conversation, and card and address fills at checkout need your confirmation. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/106480">#106480</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/107585">#107585</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/137084">#137084</a>)</p> </li> <li><p><strong>Bot Screen: watch your bot work, take over when it needs you</strong> — A bot running on a Linux gateway can have its own desktop that Hermes Desktop streams live. When it hits a login, a 2FA prompt or a CAPTCHA, you take the screen, finish the step yourself, and hand control back while the bot carries on with your session. With a Docker, SSH or Singularity backend, the bot's screen, computer use and the browser run inside the sandbox, never on your host. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/108914">#108914</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/121169">#121169</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/121110">#121110</a>)</p> </li> <li><p><strong>One backend and one gateway for every profile</strong> — Hermes now runs a single messaging gateway and a single desktop backend per machine that serve all of your profiles, instead of one process per profile. Creating a profile makes its bots live without a restart, each profile keeps its own credentials, allowlists, cron jobs and sessions, and <code>hermes update</code> migrates existing per-profile setups automatically. Fewer processes, no token clashes, one thing to start and stop. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/112854">#112854</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/108928">#108928</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/118273">#118273</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/117983">#117983</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/118246">#118246</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/118027">#118027</a>)</p> </li> <li><p><strong>See and steer your subagents live</strong> — Running subagents now stay visible above the composer in the CLI (F6), TUI (Ctrl+T) and Desktop with each child's task, elapsed time and live transcript, plus Steer and Stop buttons. <code>/stop</code> reaches background children and hands back their partial work, and <code>delegate_task</code> can pass screenshots and mocks to vision-capable children. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/105593">#105593</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/115616">#115616</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/97689">#97689</a>)</p> </li> <li><p><strong>A model picker that knows your plans</strong> — Star your favorite models, see a subscription running low ("17% left · resets 3:00 PM") and when a rate limit lifts right in the picker, and pick reasoning effort as part of choosing a model in <code>hermes model</code>, <code>/model</code> (<code>/model X --reasoning high</code>) and Desktop. You switch before you hit the wall instead of after. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/126535">#126535</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/133392">#133392</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/133408">#133408</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/110346">#110346</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/113117">#113117</a> — @OutThisLife, @anotherchu)</p> </li> <li><p><strong>Hermes in your language, everywhere</strong> — Every user-facing string in the CLI, messaging gateway, TUI and Desktop now goes through one translation catalog with full coverage in all 16 bundled languages. New languages can ship as plugins, and any profile can override individual strings with a small YAML file. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/126296">#126296</a>)</p> </li> <li><p><strong>Leaner in every sense</strong> — The whole codebase was simplified with zero behavior change: source went from about 1.06M to 698K lines (−34%) and <code>gateway/run.py</code> shrank from 34,847 lines to 5,512. Prompts got lighter too: about 19 rarely used tools now load only when the agent searches for them, roughly halving the desktop tool schema sent on every call, and another ~2.1k tokens came off the fixed prompt. Local models prefill less on every turn. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/102117">#102117</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/97979">#97979</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/106676">#106676</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/137084">#137084</a> — @alt-glitch)</p> </li> <li><p><strong>Small comforts that add up</strong> — Opt-in vim keys in the CLI prompt, a git-branch field in the status bar, a bell and desktop notification when Hermes is waiting on you, Ctrl+C that clears your draft instead of killing the turn, an editable <code>/queue</code>, and <code>hermes --native</code> to let your own terminal handle TUI scrollback and search. On Desktop, a new <strong>Simple</strong> mode turns the app into a plain chat window, and errors now say what went wrong with a one-click fix. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/106412">#106412</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/106434">#106434</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/101284">#101284</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/101320">#101320</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/137065">#137065</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/95999">#95999</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/121035">#121035</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/118587">#118587</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/111601">#111601</a> — @saforem2, @TurgutKural, @glitchbunny0, @harshmoney123, @pierrenode, @abhinav11082001-stack, @OutThisLife)</p> </li> </ul> <hr> <h2>⚠️ Upgrade notes</h2> <ul> <li><strong>Python 3.14 is the runtime</strong> for managed installs (the package manager installs it for you). KittenTTS is unavailable on 3.14. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/102765">#102765</a>)</li> <li><strong>Windows desktop is MSIX-only</strong> and needs Windows 11 22H2 or newer; the NSIS/MSI installers are gone. The macOS app is Apple Silicon only in default builds. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/102765">#102765</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/136603">#136603</a>)</li> <li><strong>One gateway per machine is the default.</strong> <code>hermes update</code> folds per-profile gateways into the multiplexed default when nothing conflicts. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/112854">#112854</a>)</li> <li><strong>Chats no longer reset on an idle/daily timer.</strong> <code>session_reset</code> idle/daily modes are retired (configs that still set them log a warning); <code>/new</code> or <code>/reset</code> starts fresh. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/105021">#105021</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/126244">#126244</a>)</li> <li><strong>Old sessions are pruned automatically.</strong> <code>sessions.auto_prune</code> now defaults to on: ended sessions inactive for 90 days are deleted at startup. Pinned and open sessions are never touched; set <code>sessions.auto_prune: false</code> to keep everything.</li> <li><strong>Memory providers moved to catalog plugins</strong> (Honcho, Supermemory, Hindsight, Mem0, OpenViking, Holographic), as did Home Assistant, Spotify and Langfuse. Existing users are migrated on update or first start, with data intact. ByteRover and RetainDB remain bundled.</li> <li><strong>Plugin authors:</strong> the old plugin compatibility import layer is gone (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/126164">#126164</a>), <code>hermes sync</code> (Skill Sync) was removed (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/132465">#132465</a>), and the bundled tirith scanner was removed (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/133832">#133832</a>). Several tools were renamed (<code>todo</code> → <code>todo_list</code>, <code>cronjob</code> → <code>cronjob_manage</code>, <code>process</code> → <code>process_manage</code>); the old names still work. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/97979">#97979</a>)</li> </ul> <hr> <h2>🚪 Onboarding, Free Tier, Connectors & Local Models</h2> <h3>First-run onboarding</h3> <ul> <li><strong>Guided setup chat on a fresh desktop install</strong> <em>(see Highlights)</em>. Existing installs and remote (SSH, URL, Cloud) backends don't get it automatically; the old setup-profile flow and <code>/initiate-setup</code> are deleted. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/137420">#137420</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/134215">#134215</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/108292">#108292</a> — @alt-glitch, @ethernet8023, @OutThisLife)</li> <li><strong>The agent can restyle the app</strong> — The new <code>set_theme</code> tool sets the accent (a swatch or any <code>#rrggbb</code>), light/dark/system mode and layout, or shows a picker; "make it violet" works in any desktop chat. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/137522">#137522</a> — @alt-glitch)</li> </ul> <h3>Nous free tier</h3> <ul> <li><strong>A free model for your first desktop launch</strong> — A first desktop install with no provider or Nous account gets the free <code>nous/welcome</code> model as a one-time trial (once per OS user), so onboarding needs no key. The CLI, TUI and gateway get no account or free model. <code>HERMES_GUEST_ONBOARDING</code> is gone. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/137807">#137807</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/105258">#105258</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/105260">#105260</a> — @alt-glitch)</li> <li><strong>Sign in and keep your apps</strong> — <code>hermes auth upgrade</code>, or <code>/login</code> in any chat or messaging DM, upgrades the free identity to a full Nous account with your connected apps. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/105259">#105259</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/105261">#105261</a> — @alt-glitch)</li> <li><strong>Clear limits</strong> — The free rate limit ends the turn at once with the reset time; every free-tier failure has a code and a plain sentence; the app handles the account service's browser check; free-tier users see a Terms and Privacy notice. Nous accounts without credits can pick models billed to a subscription they hold and get free managed fast web search. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/134049">#134049</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/111970">#111970</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/133824">#133824</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/117079">#117079</a> — @alt-glitch, @kshitijk4poor, @rewbs)</li> </ul> <h3>Connectors</h3> <ul> <li><strong>Hosted app connectors, the Connectors page and several accounts per app</strong> <em>(see Highlights)</em>. Connector tools can also send your local files as attachments and save the files they return. <code>nous.guest: false</code> turns guest identities off; <code>tools.connectors.enabled: false</code> turns connectors off. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/111238">#111238</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/138014">#138014</a> — @alt-glitch)</li> <li><strong>One connect flow everywhere</strong> — Hosted apps and local MCP servers share one setup card (desktop dialog, TUI callout or CLI panel), and the agent can use new tools in the same turn. On desktop, <code>manage_connections</code> can show a browsable app directory. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/111008">#111008</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/109517">#109517</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/137426">#137426</a> — @alt-glitch)</li> </ul> <h3>Local models</h3> <ul> <li><strong>One-click local models</strong> <em>(see Highlights)</em>. Also: Hugging Face GGUF downloads with pause/resume, and a one-time setup offer after onboarding on machines that can run the recommended model. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/129506">#129506</a> — @alt-glitch)</li> <li><strong>Engine updates and wider GPU support</strong> — An <strong>Update now</strong> prompt updates the engine in one click. NVIDIA on Linux gets CUDA, AMD and Intel GPUs get Vulkan sized by their own memory, and every backend runs llama.cpp b11370. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/111423">#111423</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/133111">#133111</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/131782">#131782</a> — @jquesnelle, @skyecon, @mbeattietex1-star, @Belaquaa)</li> <li><strong>Better recommendations</strong> — Only models that fit fully in GPU memory are recommended, and the 27B no longer on hardware that runs it poorly. Qwen3.8 Flash Next with its MTP head fits 128 GB machines; NVIDIA Spark recommendations are tuned. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/108429">#108429</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/135438">#135438</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/134116">#134116</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/112107">#112107</a> — @jquesnelle, @RyanUnderhill)</li> <li><strong>Your own local servers</strong> — LM Studio has a provider profile, Ollama pickers no longer flicker, a self-started llama.cpp server shows up in <code>/model</code>, and fallback to the desktop-managed model works. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/134320">#134320</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/113129">#113129</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/116679">#116679</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/131795">#131795</a> — @kshitijk4poor, @DaxLee9988, @fangliquanflq, @Finn763, @albeight)</li> </ul> <h2>📦 Stable Releases, Desktop Packages & Package Manager</h2> <h3>Stable releases & update channels</h3> <ul> <li><strong>Tested SemVer stable releases and the channel switch</strong> <em>(see Highlights)</em>. v0.21.6 and v0.21.7 were the first through the new gate; forks stay on <code>main</code>, and an install ahead of the newest release waits for the next.</li> <li><strong>Lighter update checks</strong> — one GitHub API call a day replaces <code>git fetch</code> every 30 minutes. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/107648">#107648</a>)</li> </ul> <h3>Desktop bundles & the Microsoft Store</h3> <ul> <li><strong>Sealed, signed desktop packages</strong> <em>(see Highlights)</em>. In a package, <code>hermes update</code> points to the right updater (App Installer, Store or macOS). (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/134911">#134911</a>)</li> <li><strong>Packaged installs work end to end</strong> — the agent's terminal runs <code>hermes</code>, Uninstall explains OS removal, and Python-dependency plugins install inside MSIX. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/134051">#134051</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/135333">#135333</a> — @alt-glitch)</li> </ul> <h3>Unified package manager</h3> <ul> <li><strong><code>hermes pm</code></strong> <em>(see Highlights)</em>: pinned, hash-checked Python 3.14, uv, Node, ripgrep, FFmpeg, Chromium and Git/Bash on Windows, with <code>hermes pm doctor|status|repair|gc</code>. Contributors use <code>source ./activate</code> (or <code>.ps1</code>/<code>.fish</code>).</li> <li><strong>Dependency environments are generations</strong> — new ones are checked before use, so a failed install keeps the working one; updates and <code>hermes pm gc</code> reclaim old ones (92 GB to 18 GB on one host). (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/124968">#124968</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/133808">#133808</a> — @JoaoMarcos44)</li> <li><strong>Optional features install on first use</strong> — opt-in SDKs (Anthropic, Bedrock) load mid-session without a restart; <code>security.allow_lazy_installs: false</code> turns this off. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/122221">#122221</a> — @ethernet8023)</li> <li><strong>Plugins declare Python dependencies</strong> — resolved with core across profiles; conflicts are refused, and updates disable a plugin that no longer fits. Hindsight, Honcho, Supermemory, Mem0 and Home Assistant moved to the catalog and auto-install where used. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/113851">#113851</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/122103">#122103</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/114569">#114569</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/132469">#132469</a> — @ethernet8023)</li> </ul> <h3>Install & update</h3> <ul> <li><strong>Updates can't half-apply</strong> <em>(see Highlights)</em>. A killed update repairs itself on the next launch. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/132361">#132361</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/120339">#120339</a>)</li> <li><strong>Faster updates, smaller checkouts</strong> — updates rebuild only what changed (16.5 s vs 32.5 s on macOS), clones are blobless, and partial-clone <code>.git</code> growth is fixed. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/135092">#135092</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/133016">#133016</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/131679">#131679</a> — @kshitijk4poor, @ethernet8023, @liuhao1024, @whyyagswhy)</li> <li><strong>Small, hash-checked installers</strong> — <code>install.sh</code>/<code>install.ps1</code> verify pinned uv and Git, hand off to PM, log to <code>logs/install.log</code>, and now work on musl Linux (Alpine, Void), Windows 10 and Unicode Windows paths. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/124964">#124964</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/125598">#125598</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/132430">#132430</a> — @JoaoMarcos44, @kshitijk4poor, @Finn763, @OutThisLife)</li> <li><strong>Failures say why</strong> — with opt-in telemetry, install, update, skill and plugin failures record a reason. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/133809">#133809</a>)</li> </ul> <h3>Docker / Nix / Termux / Windows</h3> <ul> <li><strong>Docker</strong> — pinned Debian 13 base with full Chromium; <code>stable</code>/<code>latest</code> move only on a published release; baked-in extras return after a restart. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/135726">#135726</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/135084">#135084</a> — @unsupportedpastels)</li> <li><strong>Nix, Termux, Windows</strong> — Nix shares the pins; its desktop app gets Wayland; Termux moves to a signed APT package (<code>pkg upgrade hermes-agent</code>), though its docs still warn it is broken; Windows updates finish while the old runtime is in use. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/128144">#128144</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/122146">#122146</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/131779">#131779</a> — @ethernet8023, @janviernine)</li> </ul> <h3>CI & release engineering</h3> <ul> <li><strong>Release gates</strong> — E2E suites run on release builds, the full suite on native Windows, and SSH/Docker backends against real daemons. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/135409">#135409</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/96458">#96458</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/136602">#136602</a> — @ethernet8023)</li> </ul> <h2>🧠 Providers & Models</h2> <h3>New providers</h3> <ul> <li><strong>Providers as plugins</strong> — ACP and CLI-driven providers install out of tree via <code>hermes plugins install</code>; <code>--provider chatgpt</code> picks ChatGPT Codex OAuth. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/101456">#101456</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/115761">#115761</a> — @AlexanderPrendota, @DarRahman)</li> <li><strong>Provider upgrades</strong> — Bedrock serves GPT-6 (1M) and enforces Claude Guardrails; Azure Foundry lists deployments; Gemini takes full JSON Schema tools; OpenCode Go routes Claude via Messages. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/133573">#133573</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/107815">#107815</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/115770">#115770</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/98928">#98928</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/134848">#134848</a> — @victor-kyriazakos, @JoaoMarcos44, @xxxigm, @thejpanganiban, @pandacooming)</li> <li><strong>New knobs</strong> — <code>agent.text_verbosity</code> sets Responses answer length; named custom providers run on the Codex app-server. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/115880">#115880</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/115905">#115905</a> — @Beandon13, @cosin2077)</li> </ul> <h3>Model catalog</h3> <ul> <li><strong>Claude 5.x</strong> — Opus 5.5 also on native Anthropic and Bedrock (1M). (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/122633">#122633</a> — @kshitijk4poor, @didodim)</li> <li><strong>GPT-6</strong> — Astra/Astra Pro in standard, fast and flex; opt-in Codex <code>-900k</code>; <code>/fast ultrafast</code> for Astra and 6.1 Sol, per plan. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/103261">#103261</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/119410">#119410</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/136950">#136950</a> — @daniil-grois, @sdalonzo)</li> <li><strong>Gemini 3.8 Flash and Gemini 4 Argon</strong>. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/101450">#101450</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/137989">#137989</a> — @kshitijk4poor, @dgkaaks)</li> <li><strong>More</strong> — DeepSeek V4.1 Flash, Qwen3.8-Max-0902, Grok 4.7, GLM-5.3-FlashX, Muse Spark 1.3, Solar Pro 4/Mini 4. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/107489">#107489</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/100966">#100966</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/118371">#118371</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/117435">#117435</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/101948">#101948</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/131645">#131645</a> — @rob-maron, @am423)</li> </ul> <h3>Auth & subscriptions</h3> <ul> <li><strong>Profiles share OAuth logins safely</strong> — single-use grants never fork; a profile's own login is kept. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/100929">#100929</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/134574">#134574</a> — @unsupportedpastels)</li> <li><strong>Nous sign-in survives</strong> hourly expiry, concurrent subagents, Portal outages and edge checks. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/103526">#103526</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/121488">#121488</a> — @kshitijk4poor, @zzragida)</li> <li><strong>Dead logins are named once</strong>, with the <code>hermes auth add</code> fix; <code>auth.adopt_external_logins: false</code> stops borrowing Codex CLI/Claude Code logins. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/113816">#113816</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/115586">#115586</a>)</li> <li><strong>Keys stay on their hosts</strong> — configured <code>base_url</code> honored everywhere; Anthropic/OpenAI keys never reach foreign hosts. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/121614">#121614</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/120299">#120299</a> — @austinpickett, @686f6c61, @ahisblessed, @xuezhaolan, @leemove)</li> </ul> <h3>Routing/fallback/caching</h3> <ul> <li><strong>Outage recovery</strong> — <code>agent.auto_recovery_cycles</code> (default 5) bounds the wait; fallback returns to a Codex primary whose quota reopened. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/116353">#116353</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/130716">#130716</a> — @kshitijk4poor, @xxxigm)</li> <li><strong>No surprise billing</strong> — auto-routing never bills a provider you didn't pick; <code>provider_routing.models</code> pins OpenRouter per model. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/107366">#107366</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/104159">#104159</a>)</li> <li><strong>Prompt caching</strong> — opt-in <code>cache_ttl: auto</code> (1h interactive, 5m subagents/cron); big sessions confirm a cache-breaking <code>/model</code>; compaction keeps the prefix. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/118337">#118337</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/95267">#95267</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/104455">#104455</a> — @kshitijk4poor, @JoaoMarcos44)</li> </ul> <h3>Reasoning</h3> <ul> <li><strong>Replay and effort</strong> — reasoning replays on every provider that reads it; effort on every picker, custom tier names; Anthropic fast mode follows the docs. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/136358">#136358</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/110346">#110346</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/115735">#115735</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/120517">#120517</a> — @jquesnelle)</li> </ul> <h2>🏗️ Core Agent, Sessions & Memory</h2> <h3>Agent loop & reliability</h3> <ul> <li><strong>Stalled turns recover</strong> — a watchdog (<code>agent.turn_liveness.timeout_s</code>, default 600 s) interrupts a no-progress turn and frees its session; repeated transcript repairs now raise one error and notice. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/99758">#99758</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/99687">#99687</a> — @kshitijk4poor, @Finn763, @HexLab98)</li> <li><strong>Streams fail less and report honestly</strong> — text-less dead streams retry, repetition loops are cut, and interrupted turns aren't reported as done. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/113135">#113135</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/130551">#130551</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/112272">#112272</a> — @kshitijk4poor)</li> </ul> <h3>Compression & context</h3> <ul> <li><strong>Compaction triggers on real token counts</strong> — provider-reported usage, not bytes/4; the protected tail is capped at 20% so small-window models compact. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/104555">#104555</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/117957">#117957</a> — @686f6c61)</li> <li><strong>Bad summaries can't wipe context</strong> — refusals and overloaded summary providers leave the transcript alone, and an uncommitted compaction changes nothing. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/118920">#118920</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/115906">#115906</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/136083">#136083</a> — @kshitijk4poor, @fangliquanflq, @mnajafian-nv)</li> <li><strong>New knobs</strong> — provider-scoped <code>compression.model_thresholds</code> keys and <code>auxiliary.<task>.no_progress_timeout</code>. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/108061">#108061</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/115804">#115804</a> — @chelsealong)</li> </ul> <h3>Sessions & state.db</h3> <ul> <li><strong>state.db reliability</strong> — lock timeouts name the holding process, a busy database no longer kills a turn, and sibling PID namespaces can't steal leases. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/116967">#116967</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/134577">#134577</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/132161">#132161</a> — @kshitijk4poor, @686f6c61)</li> <li><strong>state.db stops growing</strong> — auto-prune is on by default (ended sessions over 90 days) and closes stale cron/kanban/subagent sessions; VACUUM runs only when 25% is reclaimable. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/101316">#101316</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/100903">#100903</a> — @stepanov1975)</li> <li><strong>Repair commands</strong> — <code>hermes sessions set-journal-mode delete|wal</code>, <code>repair-profiles</code> (crossed profiles) and <code>repair-prompts</code>. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/117684">#117684</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/115689">#115689</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/124200">#124200</a> — @kshitijk4poor, @JoaoMarcos44)</li> <li><strong>Cleaner session lists</strong> — one-shot runs stay out of pickers, <code>sessions.show_subagents</code> lists titled subagent chats, messages get stable ids for context engines. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/113826">#113826</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/122304">#122304</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/126687">#126687</a> — @OutThisLife, @kshitijk4poor, @100yenadmin)</li> </ul> <h3>Memory</h3> <ul> <li><strong>Memory providers leave core safely</strong> — OpenViking and Holographic move to the plugin catalog on update or first start, data intact, or say why not. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/134350">#134350</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/136436">#136436</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/131269">#131269</a>)</li> <li><strong>Built-in memory writes land</strong> — hand-formatted MEMORY.md/USER.md accepted, refusals say what to fix, secrets scrubbed before providers see them. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/133038">#133038</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/134429">#134429</a> — @aniruddhaadak80)</li> </ul> <h3>Profiles & config</h3> <ul> <li><strong>config.yaml survives bad moments</strong> — a broken file falls back to the last good copy; read errors can't wipe it. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/109463">#109463</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/120343">#120343</a> — @Shenrui-Ma, @huklaa)</li> <li><strong>Safer <code>hermes config</code></strong> — <code>get</code> masks secrets (<code>--raw</code> opts out); <code>set</code> refuses typo paths and stores env-style names in <code>.env</code>. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/111341">#111341</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/112250">#112250</a> — @webtecnica)</li> <li><strong>Profiles stay separate</strong> — REST routes act on the profile they name, exports skip <code>.ssh</code>/<code>.aws</code>/<code>.gnupg</code>, and <code>import-agent --sync</code> keeps imports current. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/118275">#118275</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/132201">#132201</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/88855">#88855</a> — @kshitijk4poor, @JerryLiu369)</li> </ul> <h3>Languages (i18n)</h3> <ul> <li><strong>Language packs</strong> — any language can ship as a plugin (<code>provides_locales</code>) or a per-profile override file. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/126296">#126296</a>)</li> </ul> <h2>📱 Messaging Platforms (Gateway)</h2> <h3>Gateway core & multiplexing</h3> <ul> <li><strong>One gateway serves every profile</strong> — <code>hermes gateway status</code> explains any boot-guard refusal, <code>hermes gateway migrate --multiplex</code> migrates by hand, webhook platforms serve each profile at <code>/p/<profile>/</code>, <code>hermes -p X gateway stop|start</code> parks one profile, and <code>gateway.standalone: true</code> is a temporary opt-out. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/112854">#112854</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/108952">#108952</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/119774">#119774</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/119680">#119680</a> — @victor-kyriazakos)</li> <li><strong>Profiles stay isolated</strong> — clones skip bot tokens unless <code>--clone-channels</code>; <code>profile_routes</code> can route by sender. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/109502">#109502</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/115642">#115642</a> — @italodsfernandes)</li> <li><strong>Sessions and commands</strong> — <code>/login</code> signs free-tier users in from a DM; idle/daily <code>session_reset</code> is retired, so only <code>/new</code> and <code>/reset</code> start fresh; <code>/branch</code> opens a sibling thread on Discord, Telegram, Slack and Matrix (<code>--here</code> keeps the old behavior); <code>decline</code> mode sends unauthorized DMs one polite refusal; an opt-in <code>served_model</code> footer names the model that answered. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/105261">#105261</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/126244">#126244</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/117450">#117450</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/88028">#88028</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/115925">#115925</a> — @alt-glitch, @kshitijk4poor, @anpicasso)</li> <li><strong>Files and plugins</strong> — <code>MEDIA:</code> files from ssh/Modal/Daytona sandboxes reach the user; plugins can claim messages via <code>post_gateway_admission</code>. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/103600">#103600</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/133157">#133157</a> — @kshitijk4poor, @tokou)</li> </ul> <h3>Messaging platforms</h3> <ul> <li><strong>Telegram</strong> — opt-in <code>bots_require_mention</code> stops bot reply loops, <code>extra.drop_pending_on_cold_boot: false</code> keeps messages sent while offline, CJK can opt in to rich messages. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/106534">#106534</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/116134">#116134</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/111831">#111831</a> — @kshitijk4poor, @kokhlo, @justcarlosm, @wang2)</li> <li><strong>Discord</strong> — setup verifies the token, links the Message Content Intent and allowlists you; free-response channels can auto-thread. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/132456">#132456</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/116168">#116168</a> — @kshitijk4poor, @FunJim)</li> <li><strong>Slack</strong> — Block Kit <code>/model</code> picker; status/titles use the Agent Sessions API. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/103436">#103436</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/101477">#101477</a> — @kshitijk4poor, @sohomsahaun)</li> <li><strong>WhatsApp</strong> — native mentions via <code>hermes send --mention</code>, no 5 s batching delay, paired sessions on every profile. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/115253">#115253</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/117104">#117104</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/132518">#132518</a> — @kshitijk4poor, @unsupportedpastels, @Diaspar4u)</li> <li><strong>Signal, Matrix, Email, QQ Bot</strong> — Signal tables render monospace; Matrix LaTeX typesets in Element (Labs math setting); Email refuses spoofed senders and now requires an <code>authserv_id</code> pin (mail drops until set); QQ Bot <code>send_message</code> delivers media. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/106538">#106538</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/106515">#106515</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/132663">#132663</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/131927">#131927</a> — @chelsealong, @romanovzky, @kshitijk4poor, @OutThisLife, @cadezhou)</li> </ul> <h3>Webhooks & API server</h3> <ul> <li><strong>Webhooks</strong> — opt-in <code>coalesce</code> folds event bursts into one run, <code>cron_job</code> routes fire cron jobs on events, Standard Webhooks signatures verify, opt-in <code>mirror_to_session</code> gives replies context. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/92066">#92066</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/95262">#95262</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/104183">#104183</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/120825">#120825</a> — @HwangJohn, @Potrock)</li> <li><strong>API server</strong> — reasoning streams to OpenAI-compatible clients; stream approvals are answerable. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/115797">#115797</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/121769">#121769</a> — @kshitijk4poor, @liuhao1024)</li> </ul> <h3>Relay & Bot Chat</h3> <ul> <li><strong>Bot Mode rooms</strong> — edit members, Reply to @handle, 200-message history, sender-aware bot DMs with an <code>ALLOW_BOTS</code> loop guard. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/113384">#113384</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/107520">#107520</a> — @erosika, @69k4xmdfm2-blip)</li> <li><strong>Relay</strong> — connector checks <code>send_message</code> targets; NeMo Relay tracing at 0.10.0 tags spans with the working directory. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/99220">#99220</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/135787">#135787</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/108345">#108345</a> — @benbarclay, @mnajafian-nv, @afourniernv, @KoNit-K)</li> </ul> <h2>🖥️ Desktop App</h2> <h3>Workspace & layout</h3> <ul> <li><strong>Simple / Advanced mode</strong> — Simple hides developer panes; Advanced stays the default. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/118587">#118587</a> — @OutThisLife)</li> <li><strong>Windows and tabs</strong> — Titlebar tabs; profiles open in their own window or as startup default. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/107099">#107099</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/113176">#113176</a> — @OutThisLife)</li> <li><strong>Sidebar</strong> — Group by gateway/profile, reuse Cloud instances, drag New session onto a pane. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/105813">#105813</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/70571">#70571</a> — @abundantbeing)</li> <li><strong>Import sessions</strong> — Continue another coding agent's transcript in Hermes. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/104229">#104229</a> — @Adolanium)</li> <li><strong>Goal / Loop / Heartbeat cards</strong> — Live pause/resume/stop above the composer. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/104246">#104246</a> — @jerrygooch)</li> <li><strong>Launch options</strong> — Start on a fresh chat; opt-in tray minimize and Cmd+Option / Ctrl+Alt HUD tap. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/101304">#101304</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/118441">#118441</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/118446">#118446</a> — @jinglun010-cpu, @OutThisLife)</li> </ul> <h3>Chat & composer</h3> <ul> <li><strong>Pickers and input</strong> — Reasoning-effort pill; add a model by slug; 3,000+ char pastes attach as .txt; opt-in macOS window-screenshot shortcut. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/109907">#109907</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/120693">#120693</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/108901">#108901</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/113349">#113349</a> — @OutThisLife)</li> <li><strong>Actionable errors</strong> — Cards name the problem and fix; usage-limit cards show reset time and can schedule a retry. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/111601">#111601</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/116288">#116288</a>)</li> <li><strong>Transcript</strong> — Stable approval queue; hideable code diffs. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/107073">#107073</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/116569">#116569</a> — @OutThisLife)</li> <li><strong>Browser comment mode</strong> — Pin page elements with notes; crops, selectors and styles go to the composer. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/100083">#100083</a> — @Adolanium)</li> </ul> <h3>Settings & plugins</h3> <ul> <li><strong>Settings</strong> — Ordered subpages searchable from ⌘K; Chat Font (e.g. OpenDyslexic); Russian, French, German, Spanish. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/117127">#117127</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/111226">#111226</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/100429">#100429</a> — @OutThisLife, @warment, @FASTCHIP)</li> <li><strong>Models</strong> — Per-task auxiliary reasoning effort; Custom Endpoints pick an API mode. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/110435">#110435</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/115851">#115851</a> — @higgs1729, @SacrEllfarch)</li> <li><strong>Plugins</strong> — One row per plugin; composer and settings APIs. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/107314">#107314</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/120907">#120907</a> — @OutThisLife, @Heybinshao)</li> </ul> <h3>Bot Mode</h3> <ul> <li><strong>Bot Screen</strong> — Linux-gateway bots stream a desktop you can take over for logins or 2FA. Off by default; needs host packages. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/108914">#108914</a>)</li> <li><strong>Group chats</strong> — Reorder rooms; compress a member's hidden history. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/105909">#105909</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/117015">#117015</a>)</li> </ul> <h3>Performance & platforms</h3> <ul> <li><strong>One backend</strong> — Desktop attaches to the running backend, which serves every profile. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/118246">#118246</a>)</li> <li><strong>Platforms</strong> — Faster Windows startup; Linux runs without sudo and under WSLg/Wayland. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/111002">#111002</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/100136">#100136</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/113247">#113247</a> — @codeJRV, @kvnloo, @austinpickett)</li> </ul> <h3>Models, chat & workspace</h3> <ul> <li><strong>Model picker knows your plans</strong> — Star Favorites; provider rows show when a rate limit lifts and a "17% left · resets 3:00 PM" chip before you hit it. Also opt-in per-model pricing with cached-read rates, an Ultrafast speed tier and keys to step reasoning effort. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/126535">#126535</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/133392">#133392</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/133408">#133408</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/126651">#126651</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/132445">#132445</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/125800">#125800</a> — @OutThisLife, @kshitijk4poor, @anotherchu)</li> <li><strong>Safer rewinds and honest stops</strong> — Regenerate or edit asks before archiving more than one later turn; Stop shows the partial reply the session saves. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/133748">#133748</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/121597">#121597</a> — @kshitijk4poor)</li> <li><strong>Reading and layout</strong> — Chat Text Size separate from UI Scale; theme typography; lightbox zoom/pan; compression count in the context meter; context-aware right-click. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/128975">#128975</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/125904">#125904</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/127247">#127247</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/126653">#126653</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/131215">#131215</a> — @OutThisLife, @unsupportedpastels, @dskwe)</li> <li><strong>Workspace and sessions</strong> — Sessions follow the agent's git worktree and branch; Review pane scopes work. Browse SSH workspaces, drag sessions onto projects, search logs, see and clear Kanban blocks. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/128428">#128428</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/127200">#127200</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/99538">#99538</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/126543">#126543</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/126658">#126658</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/125647">#125647</a> — @ethernet8023, @OutThisLife, @nateEc)</li> <li><strong>Preview and voice</strong> — Preview opens public web pages; YouTube plays via a local player. Non-streaming TTS speaks from the first sentence; quiet-audio STT hallucinations are filtered. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/130393">#130393</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/130975">#130975</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/121685">#121685</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/127275">#127275</a> — @xxxigm, @OutThisLife, @kshitijk4poor, @embwl0x)</li> </ul> <h3>Plugins, updates & the app</h3> <ul> <li><strong>Settings ▸ Plugins and a bigger SDK</strong> — Every plugin gets a settings page (agent plugins from their config schema). Desktop plugins can run app actions by id, speak via the pet, add Appearance controls and reorder sidebar nav. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/133182">#133182</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/136417">#136417</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/135504">#135504</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/120912">#120912</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/120922">#120922</a> — @tobenwarrior)</li> <li><strong>Updates you can steer</strong> — Source installs pick Stable or Every commit in Settings › About; the updates dialog names the channel. The app warns when older than its backend. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/135949">#135949</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/136313">#136313</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/122911">#122911</a> — @OutThisLife)</li> <li><strong>App polish</strong> — "While working" keep-awake mode, macOS 26 layered icon, sharper MSIX icons, opt-in shared-metrics consent strip. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/128984">#128984</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/122976">#122976</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/131669">#131669</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/125074">#125074</a> — @kshitijk4poor, @jonpol01, @ethernet8023)</li> </ul> <h2>⌨️ CLI, TUI & Dashboard</h2> <h3>CLI</h3> <ul> <li><strong>Vim keys, git branch and bell</strong> — <code>display.vim_mode</code>, <code>git_branch</code> status field, <code>display.bell_on_prompt</code> (bell plus OSC 9 notification); all off by default. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/106412">#106412</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/106434">#106434</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/101284">#101284</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/101320">#101320</a> — @saforem2, @TurgutKural, @glitchbunny0, @harshmoney123)</li> <li><strong>Friendlier keys</strong> — Ctrl+T opens the subagent monitor; a mid-turn multi-line paste is one message. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/105879">#105879</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/109146">#109146</a>)</li> <li><strong>Scriptable commands</strong> — <code>hermes usage --json</code> (quota, no session); <code>hermes worktree --json/--older-than</code>; <code>kanban edit --title/--body/--priority</code>; <code>-t</code> picks MCP servers to start. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/115899">#115899</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/95257">#95257</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/117632">#117632</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/101634">#101634</a> — @himanusia, @kshitijk4poor, @SelfParody)</li> <li><strong>Also</strong> — <code>hermes -z</code> exits non-zero on failure; <code>-m custom:<name>:<model></code> reaches that provider; the footer no longer collapses to "Window too small". (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/113234">#113234</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/115293">#115293</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/117439">#117439</a> — @kshitijk4poor)</li> </ul> <h3>TUI</h3> <ul> <li><strong>Native terminal mode</strong> — <code>--native</code> or <code>display.tui_native</code> (opt-in). (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/121035">#121035</a> — @OutThisLife)</li> <li><strong>Running-turn control</strong> — double-Esc interrupts, push-to-talk cuts speech, the live dock (CLI too) shows <code>/goal</code> and queued prompts. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/125803">#125803</a> — @OutThisLife)</li> <li><strong>Typing fixes</strong> — Shift+letter on extended-key terminals, macOS Ctrl+D, Wayland image paste, steady idle redraws. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/90674">#90674</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/116851">#116851</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/116824">#116824</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/87907">#87907</a> — @francip, @fangliquanflq)</li> <li><strong>Reconnects and attachments</strong> — attached TUIs rejoin their session; <code>attachments.storage: workspace</code> stages files a sandboxed agent can read. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/112227">#112227</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/125816">#125816</a> — @OutThisLife)</li> </ul> <h3>Dashboard</h3> <ul> <li><strong>Chat on more devices</strong> — screen readers, iPad touch-scroll, no doubled mobile-keyboard characters; a second tab gets its own terminal. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/133960">#133960</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/134181">#134181</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/116978">#116978</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/117061">#117061</a> — @austinpickett)</li> <li><strong>Errors, sessions, analytics</strong> — errors are a sentence and fix button, not raw JSON; title search, a live switcher, per-API-call analytics. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/111602">#111602</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/133981">#133981</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/134100">#134100</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/133991">#133991</a> — @austinpickett)</li> <li><strong>Self-hosting</strong> — reverse-proxy subpaths, password sign-in beside OAuth, non-expiring remote sessions. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/133903">#133903</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/107018">#107018</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/110061">#110061</a> — @austinpickett, @Doud-FR)</li> </ul> <h3>Slash commands</h3> <ul> <li><strong>Reasoning effort in every picker</strong> — <code>hermes model</code>, aux models and <code>/model</code> add an effort step; <code>/model X --reasoning high</code> works too. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/110346">#110346</a>)</li> <li><strong>Editable <code>/queue</code></strong> — list, edit, move or remove prompts; <code>/s</code> = <code>/steer</code>. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/95999">#95999</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/125803">#125803</a> — @abhinav11082001-stack, @OutThisLife)</li> <li><strong><code>/context</code> per file</strong> — shows each instruction file as loaded, truncated or shadowed. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/91272">#91272</a>)</li> </ul> <h2>🔧 Tools, MCP & Browser</h2> <h3>Tools & tool search</h3> <ul> <li><strong>Rare tools load on demand</strong> — computer_use, session_search, image_generate, cron and Desktop GUI tools sit behind <code>tool_search</code> by default (desktop schemas 13,367→6,883 tokens; <code>defer: []</code> opts out); <code>todo</code>/<code>cronjob</code>/<code>process</code> become <code>todo_list</code>/<code>cronjob_manage</code>/<code>process_manage</code> (aliases kept). (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/97979">#97979</a> — @alt-glitch)</li> <li><strong>Prompt cache holds all session</strong> — the tool list is frozen per session across TUI, <code>-q --resume</code> and gateway hops. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/120289">#120289</a>)</li> <li><strong>Loop guardrails</strong> — unattended gateway/cron sessions hard-stop tool loops; 5 identical replays halt any tool. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/100967">#100967</a> — @plcunha, @benbenlijie)</li> <li><strong>Smarter file and web tools</strong> — <code>read_file</code> shows SQLite schemas and flags merge conflicts, <code>search_files</code> runs ripgrep directly (5–6x faster), keyless <code>web_search</code> fails over between free vendors. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/115974">#115974</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/104502">#104502</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/134048">#134048</a> — @kshitijk4poor, @alt-glitch)</li> </ul> <h3>MCP</h3> <ul> <li><strong>Device-code login</strong> — <code>hermes mcp login <server> --flow device</code> for headless terminals. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/104891">#104891</a> — @wjorgensen)</li> <li><strong>Sturdier OAuth</strong> — refresh tokens are never erased, double-spent or sent to another issuer; RFC 9207, Google-hosted and WAF-fronted servers log in; gateways never open browser tabs. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/106185">#106185</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/111186">#111186</a> — @kshitijk4poor, @anhtahaylove)</li> <li><strong>More servers connect</strong> — SSE-only servers fall back, strict servers connect (<code>sampling.tools</code> opt-in), and the catalog adds official n8n and Asana V2. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/106432">#106432</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/131891">#131891</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/116048">#116048</a> — @aieng-abdullah, @OutThisLife, @nikkoxgonzales, @alt-glitch)</li> <li><strong>Startup and results</strong> — boot connects ≤ <code>mcp.discovery_concurrency</code> (4) servers at once; vision models see MCP images; dead stdio servers respawn without replaying a call. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/117956">#117956</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/133815">#133815</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/106546">#106546</a> — @Halldrix, @sarahwu185, @100yenadmin)</li> </ul> <h3>Browser & computer use</h3> <ul> <li><strong>Vault and sandboxed screen</strong> — password-manager sign-in also fills cards and addresses after you confirm; <code>hermes-sandbox:desktop</code> is the new default image (existing sandboxes kept). (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/106480">#106480</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/121169">#121169</a>)</li> <li><strong><code>browser_exec</code> works out of the box</strong> — drives bundled Chromium (also the cloud fallback) and opens localhost via a sidecar. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/102986">#102986</a> — @shadus)</li> <li>Also: a CDP seam for plugins; unchanged <code>computer_use</code> screens are not resent. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/133552">#133552</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/98954">#98954</a> — @web3blind)</li> </ul> <h3>Terminal & code execution</h3> <ul> <li><strong>Long commands stop blocking</strong> — foreground timeouts over 600 s become background jobs, <code>heartbeat=N</code> sends progress, and the live-work dock lists them. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/103529">#103529</a>)</li> <li><strong>Sandboxes</strong> — results flag a recreated environment; SSH paths resolve remotely. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/107093">#107093</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/122657">#122657</a> — @kshitijk4poor, @xxxigm)</li> <li><strong>LSP</strong> — custom servers via <code>lsp.servers</code> and <code>lsp.package_manager</code>; never runs a cloned repo's own interpreter or SDK. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/115714">#115714</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/126239">#126239</a> — @ZHCHJ888, @kshitijk4poor, @jonpol01)</li> </ul> <h3>Media (image/video/voice)</h3> <ul> <li><strong>New models</strong> — GPT Image 2.5, Kling Image v3; video: Kling 3.0, Kling O3, LTX 2.5, Wan 3.0, MiniMax H3 Max Turbo, Gemini Omni Flash 1.1. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/105988">#105988</a>)</li> <li><strong>Live dictation</strong> — opt-in <code>stt.streaming</code> shows words as you speak (CLI, TUI, Desktop); long recordings transcribe on all cloud providers. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/133853">#133853</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/133825">#133825</a> — @TimeLord2010, @Julientalbot, @kokhlo)</li> <li><strong>Voice conversations</strong> — opt-in <code>voice.voice_chat_mode: gpt-live</code> gives Desktop full-duplex voice; <code>auxiliary.voice_chat</code> runs spoken turns on a faster model; TTS starts sooner. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/108137">#108137</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/133986">#133986</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/115846">#115846</a> — @liuhao1024)</li> </ul> <h2>🧩 Plugins, Skills & the Plugin Catalog</h2> <h3>Plugin Catalog</h3> <ul> <li><strong>Plugin and author pages</strong> — <a rel="noopener" href="https://hermes-agent.nousresearch.com/docs/plugins">/docs/plugins</a> shelves plugins under Memory, Desktop, Platforms, Web, Tools, Voice, Automation and Models. Pages show the description, a disclosure callout, screenshots, the README from the pinned commit, an Open in Hermes Desktop button and a copyable install command. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/111415">#111415</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/111547">#111547</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/117808">#117808</a>)</li> <li><strong>Easier-to-read cards</strong> — a version label sits next to the pinned commit (<code>1.2.0 @ ad3f352b</code>) on the website, CLI and Desktop; cards gained banner images, a uniform size and light mode. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/113381">#113381</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/125065">#125065</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/124001">#124001</a> — @kshitijk4poor, @xxxigm)</li> <li><strong>Known-issue warnings</strong> — listings can declare known issues, which <code>hermes plugins install</code> and the dashboard show on install. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/124058">#124058</a> — @happy5318)</li> <li><strong>Listing rules</strong> — Desktop plugins must stay within SDK slots, 11 plugins that patched internals were delisted (installed copies keep working), and the submission guide matches what CI enforces. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/115579">#115579</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/130860">#130860</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/131048">#131048</a>)</li> </ul> <h3>New in the Catalog</h3> <p>All 600 listings are new this cycle.</p> <ul> <li><strong>Moved out of core</strong> — besides the five memory providers, Holographic has a new community maintainer; Home Assistant, Spotify, Langfuse and TouchDesigner are now official catalog plugins. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/114732">#114732</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/136196">#136196</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/132476">#132476</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/137130">#137130</a> — @itpartypattaya)</li> <li><strong>Official</strong> — Blender Lab, Snyk, NVIDIA App and NVIDIA Broadcast (Windows only), Telegram Business, Memory Wiki. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/119365">#119365</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/109084">#109084</a> — @alt-glitch)</li> <li><strong>Memory (65)</strong> — Cognee, LanceDB, ReMe, Memoria, HydraDB, Mnemosyne, YantrikDB, BetterDB. <strong>Web and search (34)</strong> — Apify, Parallel, Linkup, SerpApi, You.com, TinyFish, Oxylabs. <strong>Model providers (48)</strong> — JetBrains Junie, Telnyx, NetMind, Groq, Chutes, Kiro, Opper, AIHubMix. <strong>Platforms (32)</strong> — Inline, Microsoft 365, Rocket.Chat, VK, Zalo, iMessage, Sendblue. <strong>Voice (18)</strong> — Speechify, Deepgram, Fish Audio, Gemini Live. <strong>Desktop panes (140)</strong> — Telegram Client, Quota, Orbit, Kanban Gantt, Monitoring Dashboard. <strong>Tools (180)</strong> — GitHub App, Coder, Devin, NetBox, Financial Datasets, MetaMask, Tempo MPP, DaVinci Resolve, vidIQ, Govee, SwitchBot, Japanese e-Gov data. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/112292">#112292</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/118231">#118231</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/118512">#118512</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/114202">#114202</a> — @siillee, @georgeatparallel, @AlexanderPrendota and many more)</li> </ul> <h3>Plugin system</h3> <ul> <li><strong>Model providers as plugins</strong> — out-of-tree providers show in model pickers, log in via <code>hermes auth</code> (built-in OAuth PKCE) and refresh tokens. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/116552">#116552</a> — @ericmaddox, @ZenMux-1)</li> <li><strong>Per-profile plugin host (opt-in)</strong> — <code>plugins.isolation: host</code> runs third-party plugins in a per-profile process with only that profile's secrets. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/126911">#126911</a>)</li> <li><strong>New plugin APIs</strong> — hooks for interrupted turns, auxiliary LLM calls and human-input prompts; plugins can start gateway sessions, add Automation Blueprints and aux model slots, ship the computer-use driver and make Codex-signed requests. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/118909">#118909</a> — @zrmnelson, @JonZal, @hsy5571615, @webtecnica)</li> <li><strong>Desktop plugin SDK</strong> — <code>config_schema</code> settings render as a form in Capabilities → Plugins; plugins get a skills/toolsets/profiles bridge and model-pill/menu slots. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/118917">#118917</a> — @LeonSGP43, @tobenwarrior)</li> <li><strong>Install, pin, update</strong> — private repos install with your git credentials, Desktop pins a plugin to a commit, updates keep user data, and plugin skills run as <code>/plugin:skill</code>. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/106981">#106981</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/107321">#107321</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/133175">#133175</a> — @JoaoMarcos44, @pnpwin, @ctaylor86)</li> <li><strong>Sturdier loader and scanner</strong> — hung imports are skipped after <code>plugins.load_timeout_seconds</code> (10s), guard hooks fail closed, and prose, fixtures and regex literals no longer block installs; plugin deps follow the plugin's security policy. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/118915">#118915</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/115954">#115954</a>)</li> <li><strong>Moved out of core</strong> — Spotify and Langfuse became official plugins (auto-migrated); tirith was removed, its key checks built in. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/135389">#135389</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/133832">#133832</a>)</li> <li><strong>New plugins</strong> — reMarkable, hermes-pii, hermes-stt-enhance (catalog); Meta muse-image (bundled). (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/117191">#117191</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/132154">#132154</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/134418">#134418</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/100959">#100959</a> — @cygnostik, @lukefx, @dmmeteo, @mreso)</li> </ul> <h3>Skills</h3> <ul> <li><strong>New optional skills</strong> — pr-lens (animated PR diagrams), system-atlas, anatomy (isometric explainers), mono-color (ink-print images), dream-loop (3D concept-art loops), scrollcraft (scroll pages), auteur (cinematic web), ip-as-logo (mascots), ai-presenter-video, live-dashboard (self-updating pages), dynamic-workflow (fan-out campaigns), reddit-reading, rss-feeds. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/109306">#109306</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/103821">#103821</a>)</li> <li><strong>Skills Hub</strong> — the index builds again with about 480 science skills; search also finds unindexed skills. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/109178">#109178</a>)</li> <li><strong><code>skills.auto_load</code> and <code>skills.create_dir</code></strong> — pin skills into every session; choose where agent-made skills go. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/92048">#92048</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/100377">#100377</a> — @ctaylor86, @ArcherQAQ, @giwaov, @Frosti7)</li> <li><strong>Better self-improvement</strong> — learnings and corrections go into the task's skill; background review can improve any skill; skills added mid-chat reach the next message. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/102107">#102107</a>)</li> <li><strong>Lighter curator</strong> — no longer blocks the CLI prompt; one install fell from 1.9 GB to about 200 MB; unused skills archive at 30 days (was 90). (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/115862">#115862</a>)</li> <li><strong>Skills Guard</strong> — blocked installs in a 421-skill sample fell from 83 to 68; inline shell is limited to non-community skills. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/135595">#135595</a> — @Awshesh12, @liuhao1024, @FlashWayne)</li> </ul> <h2>⏰ Cron, Kanban & Delegation</h2> <h3>Cron</h3> <ul> <li><strong>Jobs follow your main model</strong> — Unpinned jobs use the model configured at fire time; <code>pinned</code> locks one. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/113679">#113679</a>)</li> <li><strong>Self-healing schedules</strong> — A fire that never reached the model (e.g. after wake) re-runs after 5, 15 and 30 minutes, a provider "retry after" window parks the job quietly, and a slot missed during a restart fires once. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/108731">#108731</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/115843">#115843</a>)</li> <li><strong>Quieter alerts</strong> — One alert per incident plus a reminder every <code>cron.failure_repeat_alert_hours</code>; <code>failure_deliver</code> reroutes or mutes failure notices; an agent can fail its run with <code>[CRON_FAILURE]</code>. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/114807">#114807</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/101373">#101373</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/113155">#113155</a>) — @victor-kyriazakos</li> <li><strong>New job options</strong> — <code>--paused</code> creates a job unarmed; <code>--interpreter</code> runs scripts on your own venv. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/104984">#104984</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/125392">#125392</a>) — @M1racleShih</li> <li><strong>Profiles and delivery</strong> — A multiplexed gateway runs each profile's jobs with that profile's env and secrets; delivery needs positive evidence, output is secret-redacted everywhere, and late or satellite runs are labelled. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/118027">#118027</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/100908">#100908</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/112830">#112830</a>) — @yoniebans</li> </ul> <h3>Kanban</h3> <ul> <li><strong>Workers ride out provider trouble</strong> — Failed turns retry in place with context; rate limits or 5xx requeue instead of burning retries. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/112318">#112318</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/112500">#112500</a>) — @EvgenyMettsler, @dmelkk-secondbrain</li> <li><strong>A board that explains itself</strong> — Cards show the worker's last output on failure; dispatch says why a card is held. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/112618">#112618</a>) — @chelsealong</li> <li><strong>Workflow and tooling</strong> — One workflow definition drives columns; workers get <code>kanban_schedule</code>; <code>kanban create --body-file</code>; Desktop follows gateway switches. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/134340">#134340</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/130455">#130455</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/116791">#116791</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/119054">#119054</a>) — @benbarclay, @unsupportedpastels, @fangliquanflq</li> </ul> <h3>Delegation & multi-agent</h3> <ul> <li><strong>Live subagents, images and /stop</strong> <em>(see Highlights)</em>. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/105593">#105593</a>)</li> <li><strong>Fan-outs lose less</strong> — Failed children surface at once, an owner crash keeps finished work, children can hand processes to the parent, and per-task completions are opt-in. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/103549">#103549</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/116707">#116707</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/105125">#105125</a>)</li> <li><strong>Child routing</strong> — <code>delegation.fallback_providers</code> gives children their own chain; <code>child_timeout_seconds</code> measures inactivity. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/105347">#105347</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/117606">#117606</a>) — @ayushnangia</li> <li><strong>/goal</strong> — Consistent on CLI, Desktop and messaging; the judge waits on subagents; <code>/goal pause for now</code> no longer overwrites the goal; gates run in the session workspace. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/104833">#104833</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/132251">#132251</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/125453">#125453</a>) — @jayzhou2309</li> </ul> <h2>🔒 Security, Privacy & Codebase</h2> <h3>Security & privacy</h3> <ul> <li><strong>v0.21.6 security fixes</strong> — dashboard sign-in hardening (spoofed <code>X-Forwarded-For</code>, size caps, loopback-only login codes); automatic git skips repo filter programs; the email allowlist resists display-name spoofing. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/133367">#133367</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/130685">#130685</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/130661">#130661</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/125212">#125212</a>) — @unsupportedpastels, @kshitijk4poor, @Froraut, @jonpol01, @keeltrace</li> <li><strong>Secrets stay put</strong> — child processes don't inherit adapter/dashboard secrets; remote <code>execute_code</code> keeps its token out of argv; profile exports skip credential stores; keys never reach foreign hosts on refresh/fallback. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/125755">#125755</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/124262">#124262</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/130525">#130525</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/120299">#120299</a>) — @kshitijk4poor, @jonpol01, @beardthelion, @leemove</li> <li><strong>Sharper redaction</strong> — debug share redacts before truncating; file reads and terminal output mask <code>.env</code>/config secrets; <code>hermes config get</code> masks unless <code>--raw</code>; memory hand-offs are scrubbed; plain <code>token=</code> lines stay visible. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/132270">#132270</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/111422">#111422</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/111341">#111341</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/134429">#134429</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/100564">#100564</a>) — @kshitijk4poor, @Froraut, @shehjaddev, @webtecnica, @aniruddhaadak80, @fangliquanflq</li> <li><strong>Owner-only files at rest</strong> — credentials, <code>state.db</code>, snapshots, browser profiles, media caches, any umask. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/109509">#109509</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/127229">#127229</a>) — @JoaoMarcos44, @rohitsabu, @OutThisLife</li> <li><strong>Wider guards</strong> — more fetches pass the SSRF guard (<code>security.fake_ip_ranges</code> for fake-ip proxies); cloud-metadata fetches, zsh/dash pipe-to-shell and <code>deno eval</code> need approval; <code>approvals.deny</code> works in sandboxes; built-in rules replace bundled tirith. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/114887">#114887</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/113156">#113156</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/116726">#116726</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/103649">#103649</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/133832">#133832</a>) — @beardthelion, @AYin-Z, @fangliquanflq</li> <li><strong>Holes closed</strong> — the MCP OAuth callback stops reflecting HTML; webhook, SMS and WhatsApp Cloud inbound reject blank signing secrets. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/92612">#92612</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/133257">#133257</a>) — @memosr, @ahadvice</li> <li><strong>Opt-in shared metrics</strong> — daily usage stats reach Nous only with consent; both <code>telemetry.shared_metrics</code> switches default off, each profile asks once, Enter = "No thanks". (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/95278">#95278</a>) — @benbarclay</li> </ul> <h3>Codebase & performance</h3> <ul> <li><strong>Leaner prompts and tools</strong> — ~2.1k fewer prompt tokens a request, on-demand vault tools, one-round-trip file probes, <code>hermes -w</code> no longer repacks each launch. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/137084">#137084</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/101599">#101599</a>) — @yaojiejia</li> </ul> <h3>Other</h3> <ul> <li><strong>Safer backups</strong> — <code>hermes backup</code> keeps the newest 3, flags incomplete archives; <code>hermes import</code> refuses damaged ones. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/106455">#106455</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/121498">#121498</a>) — @buihongduc132, @kshitijk4poor</li> <li><strong>Also</strong> — <code>KEY_2</code>… env vars join credential pools; one-screen <code>hermes status</code>; opt-in <code>display.suppress_warning_notifications</code>; Desktop Bots roster sections; only Hermes' own node/npm/uv are used; Xiaomi MiMo v2.6. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/112390">#112390</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/131034">#131034</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/114370">#114370</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/101290">#101290</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/125589">#125589</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/118502">#118502</a>) — @PhoeniXAbhisheK, @victor-kyriazakos, @fortun8te, @rob-maron</li> <li><strong>For contributors</strong> — CODEOWNERS replaces the label gate; E2E (incl. native Windows) runs only on release builds; stable releases skip macOS Intel/Termux by default. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/131726">#131726</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/136603">#136603</a>) — @ethernet8023</li> </ul> <h2>🐛 Notable Bug Fixes</h2> <p><strong>Onboarding, connectors & local models</strong></p> <ul> <li>Managed llama-server no longer crashes on Windows with 0xC0000374 and no longer inherits your credentials (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/116923">#116923</a>)</li> <li>Windows local-model servers are contained and orphans recovered safely; two backends booting together start one router (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/111038">#111038</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/117600">#117600</a> — @jquesnelle, @chelsealong)</li> </ul> <p><strong>Install, update & packaging</strong></p> <ul> <li>Docker agents no longer lose their built-in API server, messaging and MCP dependencies after a restart. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/135726">#135726</a> — @unsupportedpastels)</li> <li>A <code>hermes update</code> killed mid-pull no longer breaks every entry point. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/120339">#120339</a>)</li> </ul> <p><strong>Providers & models</strong></p> <ul> <li>A rate-limited Claude model no longer benches the whole credential for every other Claude model. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/113171">#113171</a> — @KoNit-K)</li> <li>Codex app-server sessions now get SOUL.md and the Hermes system prompt. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/115759">#115759</a> — @JonthanaHanh, @ooiuuii, @Momentum96)</li> </ul> <p><strong>Agent loop, sessions & memory</strong></p> <ul> <li>A chat whose session row was deleted recreates it instead of silently dropping every later turn (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/124117">#124117</a> — @kshitijk4poor, @strzhao)</li> <li>Messages flushed at gateway shutdown are recovered into their session (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/114225">#114225</a> — @kshitijk4poor, @spfcraze, @yoyodine-industries, @briandevans)</li> </ul> <p><strong>Gateway & platforms</strong></p> <ul> <li>Telegram no longer stalls under flood control or stays connected but deaf on a wedged dispatcher. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/116987">#116987</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/132162">#132162</a> — @kshitijk4poor)</li> <li>Slack native streaming stops posting answers twice. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/121762">#121762</a> — @kshitijk4poor, @ms-elbdev)</li> </ul> <p><strong>Desktop</strong></p> <ul> <li>Replies no longer show twice, garble or vanish after resume, steer, a chat switch or reconnect (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/118890">#118890</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/120290">#120290</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/121061">#121061</a> — @BearHuddleston)</li> <li>Pressing Enter answers the clarify card on screen, not a background chat's (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/76472">#76472</a> — @briandevans)</li> <li>Duplicate or vanishing replies after refresh, session switch or reused tool-call ids (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/131758">#131758</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/128003">#128003</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/130553">#130553</a> — @OutThisLife, @alt-glitch, @kshitijk4poor)</li> <li>"This device" backends no longer idle-killed after an hour; new chats run on the gateway you picked (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/134942">#134942</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/132538">#132538</a> — @unsupportedpastels)</li> </ul> <p><strong>CLI, TUI & dashboard</strong></p> <ul> <li>Dashboard saves no longer overwrite secrets with their masked preview (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/121250">#121250</a> — @kshitijk4poor)</li> <li>Resizing the CLI no longer re-appends the conversation to scrollback (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/120321">#120321</a> — @Jackal991)</li> </ul> <p><strong>Tools, MCP & browser</strong></p> <ul> <li>A parked OAuth MCP server no longer replays its dead refresh token on every new session, a storm that could trip a rate-limit ban (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/137502">#137502</a>).</li> <li><code>computer_use</code> element clicks work again on cua-driver 0.21+; only pixel clicks worked before (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/111313">#111313</a> — @jeffjhunter).</li> </ul> <p><strong>Plugins & skills</strong></p> <ul> <li><code>hermes plugins list</code> and the dashboard Plugins page make at most one live catalog request instead of waiting through one timeout per installed plugin. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/114811">#114811</a>)</li> <li>On treeless source checkouts the plugin inventory no longer takes 40–80 seconds, which was longer than the Desktop request timeout. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/125716">#125716</a> — @liuhao1024)</li> <li>Enabling a plugin from Desktop, the TUI or the dashboard no longer strips the core tools. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/135048">#135048</a>)</li> <li>A platform whose plugin failed to load at startup is flagged in <code>hermes status</code> and comes back without a restart. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/130613">#130613</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/133289">#133289</a>) — @kshitijk4poor</li> </ul> <p><strong>Cron, Kanban & delegation</strong></p> <ul> <li>Gateway <code>/goal</code> gate add no longer lets a non-admin reach the host shell (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/101499">#101499</a>)</li> <li>Automatic git in Kanban, worktree cleanup and subagents no longer runs a cloned repo's hooks or filters (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/130661">#130661</a>)</li> </ul> <p><strong>Security & misc</strong></p> <ul> <li>Qwen models behind Alibaba's content guardrail end the turn with the safety notice instead of retrying for four minutes. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/136425">#136425</a>)</li> <li>Detected password managers can be switched on from Settings again; the toggle was a no-op. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/109558">#109558</a>) — @kokhlo</li> </ul> <h2>↩️ Reverted in this window (not shipping)</h2> <ul> <li><strong>Collective Wisdom V1</strong> (an in-tree org skill marketplace) was merged and then removed; there is no wisdom code in this release. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/94266">#94266</a> — @shannonsands)</li> <li><strong>The Desktop card-style Skills/Plugins catalog browser</strong> and its website "Install in Hermes" links were reverted three times; Desktop browses capabilities as list tabs with the embedded catalog picker. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/119381">#119381</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/131252">#131252</a>)</li> <li><strong>Approval and clarify prompts that wait until answered</strong> were reverted; <code>approvals.timeout</code> still applies. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/130167">#130167</a>)</li> <li><strong>Parallel group-chat rounds</strong> in Bot Mode were reverted; rooms run serially. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/101112">#101112</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/101139">#101139</a>)</li> <li><strong>Full isolation of named profiles from the root <code>auth.json</code></strong> was reverted after Desktop bots lost their shared login; profiles keep their own login when they have one. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/113425">#113425</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/118373">#118373</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/134574">#134574</a>)</li> <li><strong><code>hermes cron resnap</code></strong> and creation-time model snapshots were replaced by cron following your main model (<code>pinned</code> locks a job to one model). (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/106496">#106496</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/113679">#113679</a>)</li> <li><strong>The Classic default skin palette</strong> and <strong>a tirith catalog plugin</strong> were reverted. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/130015">#130015</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/133838">#133838</a>)</li> </ul> <h2>👥 Contributors</h2> <h3>Core Team (Nous Research)</h3> <ul> <li><strong>@teknium1</strong> — release direction, salvage campaigns across every subsystem, and ~2,800 merged PRs</li> <li><strong>@kshitijk4poor</strong> (806 PRs) — providers and reasoning replay, compaction, state.db, free tier, multiplex parity, and hundreds of salvages</li> <li><strong>@OutThisLife</strong> (679 PRs) — the desktop app: model picker, Settings ▸ Plugins, workspace, Bot Mode UI, connector cards</li> <li><strong>@alt-glitch</strong> (175 PRs) — first-run onboarding, the Nous free tier, connectors, tool search, machine facts</li> <li><strong>@austinpickett</strong> (160 PRs) — dashboard chat, desktop SSH/remote, Bot Mode and recovery fixes</li> <li><strong>@ethernet8023</strong> (96 PRs) — the unified package manager, signed desktop bundles, stable release pipeline, local-model engines</li> <li><strong>@unsupportedpastels</strong> (60 PRs) — CLI/TUI interrupt and admission handling, cron reliability, Discord voice, Docker extras</li> <li><strong>@jquesnelle</strong> (22 PRs) — local models: the managed llama.cpp runtime, recommendations and engine pins</li> <li><strong>@helix4u</strong> (20 PRs) — desktop interrupt, terminal and session fixes, installer ordering</li> <li><strong>@benbarclay</strong>, <strong>@victor-kyriazakos</strong>, <strong>@rewbs</strong>, <strong>@yoniebans</strong>, <strong>@rob-maron</strong>, <strong>@c2h5oh</strong>, <strong>@notwitcheer</strong>, <strong>@shannonsands</strong> — relay and dashboard auth, Slack and Bedrock, managed search and connector tokens, install E2E, model catalogs, CI and linting, docs</li> </ul> <h3>Top Community Contributors (by merged PR count)</h3> <ul> <li><strong>@Adolanium</strong> (44 PRs) — performance fixes, the in-app browser comment tool, session import, and a run of catalog plugins</li> <li><strong>@apoapostolov</strong> (29), <strong>@TakeshiTGAL</strong> (22), <strong>@100yenadmin</strong> (19), <strong>@olric3015</strong> (18), <strong>@aydnOktay</strong> (12), <strong>@cygnostik</strong> (12), <strong>@anpicasso</strong> (12), <strong>@itpartypattaya</strong> (11), <strong>@jacobhausler</strong> (9) — the plugin catalog's biggest authors: reasoning and composer tools, Japanese government data, plan mode and boardstate, stream-speed and ledgers, desk tools, reMarkable and desktop realms, Kiro and approvals, hermes-dreaming and holographic, workflows and Beads</li> <li><strong>@Finn763</strong> (14), <strong>@liuhao1024</strong> (13), <strong>@xxxigm</strong> (12), <strong>@dskwe</strong> (10), <strong>@KoNit-K</strong> (8), <strong>@chelsealong</strong> (8), <strong>@686f6c61</strong> (7) — desktop, Windows, SSH and Linux reliability, local-runtime memory pricing, Bot Screen paste, model catalog fixes</li> <li><strong>@jonpol01</strong> (13 PRs) — compaction correctness and exact-bytes file patching</li> </ul> <h3>All Contributors</h3> <p>Thank you to every one of the ~2,520 people who contributed code, co-authored fixes, or had their work salvaged into this release:</p> <p>@0301chris @08085 @0bull @0disoft @0genlab @0x7s0lt1 @0xalydev @0xble @0xbyt4 @0xdany @0xDevNinja @0xGr1mm @0xharryriddle @0xmosta @0xNyk @0xWhiteMage @0z1-ghb @100yenadmin @1052326311 @10ishq @122393594-ty @123456hyu @123mikeyd @1960697431 @1RB @2025hcsmile2010-hue @29206394 @333Alden333 @33hodl @3DPrintPioneers @3L0935 @3ssiri @4adwentures @4dlt @52216165 @5uck1ess @686f6c61 @69k4xmdfm2-blip @6ylqq @895252509 @a-yeyang @a1398394385 @a692570 @aadilghani1 @aaronlab @aashizpoudel @Abd0r @abderbj @abhibansal-sg @AbhijatSaxena @Abnertheforeman @abualnassr @Abuarchiv @abundantbeing @acarsondave @acedatacloud-dev @acjsec @acsezen @actualrat1984 @adamcap926 @adamking77 @adamkrawczyk @adammatski1972 @AdamPlatin123 @adanaleycio @adarshdigievo @adavyas @addamsE @addelh @adecubed @adikpb @adleapnet @adolanium @AdrianBinDC @adriansotomora @adurham @adybag14-cyber @aean0x @aeonsong @aerbaser @afifai @afourniernv @afurm @Agantila @agarg21 @agentdynamic @agentlinker @aglowinthefield @agt-user @ahadvice @ahamSel @ahisblessed @ahmed-3li @AhmetArif0 @Ahmett101 @ahrazzle @ahtishamdilawar @ai-ag2026 @AIalliAI @aieng-abdullah @aimable100 @Aio777 @airo7 @AJ @ajaynomics @ajbmachon @ajensenwaud @ajspig @ajzrva-sys @ak2k @AKAZIK-py @akivavh @Akloenx123 @akshan-main @akugone @Al3xand3r1987 @alaamohanad169-ship-it @AlanBurningsuit @alanfwilliams @alanwilhelm @albeight @albert748 @albertodepaola @AlchemistChaos @aldoeliacim @aleesposito85 @alelpoan @alessandrolamberti @alex-heritier @alex107ivanov @AlexanderBFoley @AlexanderPrendota @alexandreroumieu-codeapprentice @AlexFucuson9 @AlexGabbia @alexgunsberg @AlexMnrs @AlexTu2 @alexwill87 @AlexxRussell @alfred-amanda @alfred-smith-0 @aliasocracy @Alicorn-Max-S @aliilhami @alimbaydoun @alireza78a @alissongalindo @AllenRobinHubert @alloevil @AlphaPerseii3000 @alrcatraz @AlsayedHoota @alt-glitch @AltenLi @alvarobiano @alvarosanchez @am423 @aman-merchant @amanning3390 @amansk @ambition0802 @amekala @ameobius @amethystani @AMIK-coorporations @amir-ag @amitcse @aml1973 @an420eth @anablancovicente @analista @anatolijlaptev1991-ctrl @AndreasHiltner @andreausderhood @andrewhomeyer @andrewhosf @andrewkangkr @andrewmadson-pplx @AndrewMoryakov @andrexibiza @Andy @andynguyendk @andyst-dev @andyylin @angel12 @angelos @anhtahaylove @aniruddhaadak80 @ankinow @AnnasMazhar @annguyenNous @anombyte93 @anoopmehendale-cue @anotherchu @anpicasso @anuiit @anuvratrastogi @ap08960695 @AP3X-Dev @apexscaleai @apoapostolov @appletechie @aqilaziz @arasovic @arcabotai @ArcanePivot @arceus77-7 @Archerouyang @ArcherQAQ @ArecaNon @ARegalado1 @Arguably1341 @arimu1 @arlai-mk @armandokun @arminanton @aron-intframe @arrry-hydraDB @arrufat @ascetx @asdlem @asheriif @ashishpatel26 @ashmoonori-afk @AshuJoshi @asimons81 @askclaw-vesper @aslater3 @asorry75 @aspire488 @AsterJisu @astraltrekkin @AStrnbrg @atbrace @atmaksri @atostivint @Atroci @ats3v @atul-trycoral @Aum08Desai @aurel282 @aurorabotticus-svg @auroracapital @austinlaw076 @austinpickett @Automata-intelligentsia @Avery @awizemann @Awshesh12 @AxDSan @axiom-agent-ai @aydnOktay @AYin-Z @ayushmanpadhi @ayushnangia @AzurePii @B0on @b13kjack @b2089766906-droid @baau @baauzi @babatorik @bablobanov @babyblueviper1 @back1992 @Backroads4Me @badiyee85 @badkangaroo @bakhtiersizhaev @baleian @banditburai @baofuen @Baophan00 @Bardioc1977 @barnicskolaci @bartcollet @Bartok9 @basilnas @BatataBF @bayrakdarerdem @BB-light @bb873 @bbasketballer75 @bblicke1 @Beandon13 @bear0328 @beardthelion @BearHuddleston @bedirhancode @beibi9966 @Belaquaa @benawad @benbarclay @benbenlijie @benegessarit @benjamin-rousseau-shift @benjaminbrumbaugh @BenKalsky @bennybuoy @bennyhodl @bennytimz @benperry6 @beplee @Bergmann89 @bergusdz @berkantay @berthelius @bgrablin @BGwill-OUTLOOK @bheji07 @bighamx @BigKelLearns @Bihruze @bill3wits @binhnt92 @bionicbutterfly13 @Biotrioo @bird @bixycler @BkashJEE @BlackishGreen33 @BlakeB254 @blakehermes9 @bloodcarter @BlueBirdBack @bluefateludi @bmcfiv @bmtrnavsky @bo.fu @bobaba76 @bogerman1 @BonesGit @Bonorinoa @BoredSexyJordan @bounce12340 @BowmanStephen @bradestes @Brammiebram @brantzh6 @bravohenry @brendanjryan @BrethofAI @brian717 @briancaffey @briandevans @BrianFranco @briepala @BrierAinz @Brixyy @BROCCOLO1D @BrokeSkill @brucexu-eth @BrunoBza @bryanneva @bsdnn @btorresgil @buddhaholic420 @buihongduc132 @BullishMomentum56 @bwoliveira @byjaps @byungsker @C-Est-Dept @c-pompa @c0d1ngHUB @c0debyeric @c0mrade @c2h5oh @c3115644151 @ca-shrimp @cadezhou @Caelier @caentzminger @callsamik @calvinnwq @cameronbergh @camilb @capthvnsen @carlosapgomes @carlotestor @carrion256 @Carry00 @caseyanthony @catapreta @caya8205-2 @ccbbccbb @ccook1963 @cdanis @cdb-lumen @cdbartholomew @cdepuy @cdnsteve @ce-dric @cedanoagent @certaindaniel @cervantesh @CES4751 @Cesar-Azeredo @cez0060405 @cg2aigc @chadhouser @Chadmc9889 @chaithanyak42 @ChanPark03 @charan-rathore @CharlesMcquade @Charlesmpc @CharlieKerfoot @CharZhou @ChasLui @chelsealong @chenfeijiang95-ui @chengoak @chenhm @chenlichao @chenzeyan54-commits @cherrish333013 @cherryb16 @Chinmayrawat15 @chntllh @choaticpixels @Christopher-Schulze @christopherrobin88 @chrisworksai @chrisyoung2005 @chuenlye @chugiacan @chukirk-svg @Chukwuebuka-2003 @churnast @ciabata-git @CipherFrame @cipry0200 @CIRWEL @cj52973 @Ckarey007 @ckomma @ckorhonen @clarkvines @claudioorjunior @claudiumio @claudlos @clayduncan @ClintonEmok @Clippy @Cloeille @cloim @Clubheader @clyu168 @cmcejas @cmyyy @cnfi @cnkang @codebuff-team @codeJRV @codeshipsingh @codexbt @Cody292 @Codyinked @coe0718 @cola-runner @CoLaOnline @ColdSlither @ColDSnit @ColrWei @ComicBit @Commander @connns @Contentment003111 @convernaticspeter @Cortana @CortonKwok-GGD @cosin2077 @Cossackx @cotghw @Cr4ckMe @CraigRichardsonRMPM @crazyief @crazywriter1 @crdesign8 @creeklava-svg @cresslank @criptogus @cruzanstx @cruzlxyz @CryptoByz @CryptoDombili @cryptoyasenka @cspears32 @csreyes @cswrld-net @ctaylor86 @cucurigoo @CupaJ12 @cuppett @cutepawss @cuuush @cuyua9 @cxxCoolStar @Cyber-Yichen @cybertecla @cygnostik @cypres0099 @cyrkstudios @d31tcjg @d8joseph @Da7-Tech @daailouivan @dacheah @Dadmin88 @daedalus-opus @dafka007 @dagardner-nv @Dagulf795 @dajiaohuang @dalebetz @dalzio @DanBennettUK @dandacompany @DaneelV3 @Danielmuzology @daniil-grois @danilofalcao @dankkush @danrudy33 @danspicytaco @dante32683 @daresan @dariorapisardi @DarRahman @dasgltd @datanerdie @DatTheMaster @David-0x221Eight @david-bowiegxw @davidgut1982 @davidkarban @DavidMetcalfe @davidneyravyr @davidvv @davidxyuan @DaxLee9988 @dborodchuk @dborosev @dchenk @deadczarvc @Deadtrix21 @deankerr @deas @deathxdefeat @DebadityaHait @Decent9967 @DECK6 @decofe @DECRUX9812 @deinte @delacaola @delltrak @deniqlab @DenisAraujo68 @denisqq @derekm @DeseretSaint @despotak @DESXIE @DevAgarwal2 @devarticle @developersdigest @DevEverything01 @devorun @devsart95 @devseunggwan @DevvGwardo @devwdave @Dezooyi @dgkaaks @dgpcboy @dhabibi @DhivinX @dhruv-kejriwal-mccain @Dhruv7201 @dhruvkej9 @Diaspar4u @didida9527 @didodim @diegomarino @dieutx @diffen77 @Digitally-Challenged @dillweed @dimitrysuen @dirtyren @djbclark @djennewe @djmango @djsanchezsuarez @djstunami @dkbjornn @dlcsouza @dlgrv @dlkakbs @dlshumway @dmabry @dmahan93 @dmater01 @dmelkk-secondbrain @dmetcalfe @dmf01614-source @dmspark @dmyou @DoGMaTiiC @DojoGenesis @Dolverin @domenicomassafra @DomGrieco @dominikamann @dominiquevidja @doncazper @dongxu0413 @doniocode @donovan-yohan @donramon77 @DonShelly @doojiang @doresa0 @doryani-ai @dot @Doud-FR @dparikh79 @dpersek @dpiers1 @dplush @DragonLi-Mi @DragonnZhang @draix @dreamfarer-space @DreamyMoonMouse @dredozubov @DresvyanskiyDenis @drew-dot-com @drewTuzson @Drexuxux @drichar @drkpxl @dromai @dschnurbusch @dskwe @dsr-restyn @Dusk1e @dusterbloom @duu261 @dwb1991 @dyiapanis @dynamite-bud @dzianisv @ea-s21 @Eapwrk @eason2026 @easyvibecoding @eazye19 @echo931 @echohn @EdderTalmor @eddiewang @Edizzier @edosulai @edrethardo @eduardo @EdwardIrby @efe-arv @Efistoffeles @egerev @egilewski @ehz0ah @eisene @Eji4h @ekkoitac @el-analista @elashera @elbukott1 @eliasburlison @elisam0 @ellannjohnson @elmatadorgh @eloklam @eloktev @EloquentBrush0x @elphamale @Elshayib @elvin-du @emadalsaba @eman062000 @EmanueleCornaggia @embwl0x @EmelyanenkoK @eminboydak @eminogrande @emirsaffar-collab @emonty @emozilla @EmpireOperating @EMT5320 @Enchanted0911 @ennheng @Enough1122 @entropidelic @entropy-0x @enwaiax @enzo-adami @eranbes @erenkarakus @erhnysr @eric-senyao @ericmaddox @ErnestHysa @erosika @esketids @ether-btc @ethernet8023 @etrisnanto @euisuh @evan @evan-bradford @EvanZhu0721 @eventh0riz0n @everm1nd @Everson-s8 @EvgenyMettsler @EvilDrag0n @EvilRan @Ex8-ca @ExitMaster @Expri-commits @eyeonall @eynaudg @f3rs3n @F4TB0Yz @fabiantax @fabioaito @fabiomotta0311 @fabiosiqueira @fahdad @faikwo @faisfamilytravel @FalconOrtiz @falkoro @fancyboi999 @fangliquanflq @FASTCHIP @fastfinge @Fatmylin @fatwang2 @fazerluga-creator @fcarucci @fcavalcantirj @FeiyouG @felixdae @Felixkw12 @Feranmi10 @ferminquant @fernandezbaptiste @Fernandrewm @FestoneX @FEUAZUR @finn763 @firefly @FirmamentalSpring @FlashWayne @FldBudin @flow-digital-ny @fluxkapacitor @flyer103 @flyingdoubleG @flyinhigh @fmercurio @foma @foma-agent @foras910521-lab @forrestzhang107 @fortona-space @fortun8te @forumevi @forztf @fotedev @foxion37 @francip @franco314 @frankiethull @frankmendes1979 @fred0m @frendo @frizikk @frohsinnllc @Froraut @Frowtek @frozen @fsaad1984 @ft-ioxcs @fujinice @FunJim @funkyotc @Futahua @g3org3yo @GabboAlarcon @gabbyong @gabrielpaesland @gamewocao @Ganesh0690 @gaoanze888 @garadice @gas @Gateton @GauravPatil2515 @gauravsaxena1997 @gavasques @Gavin-Qiao @gbarany @gchablemeneses-web @geniok1980 @geoffreybutler94 @georgeatparallel @georgejieh @gercamjr @gfriesen1 @ggascoigne @ggoldani @gh-dispatch @giggling-ginger @gilfoyle @girayk @Git-on-my-level @gitabtion @gitcommit90 @GitmanIII @giwaov @gkd2323c @glasserai @glaw1300 @glesperance @glitchbunny0 @globalvet2025 @gls774 @Glucksberg @gmoranxyz @gnanam1990 @gnanirahulnutakki @GoBeromsu @godlin-gh @GodsBoy @Goitonthefloor @gokay-ai @gokhanyildirimlar @goku94123 @GoldenLoaf24h @gongyi @gonzoblasco @googio @Gosuj @GottZ @gqwesleywang @Grey0202 @GrgaPalcic @Gridzilla @grimmjoww578 @grinco @GroveMinting @gsy324 @GTHell @guanla-zz @GuardianZ71 @guberm @Guerilla-ops @gumclaw @gustavosmendes @gustbr @gutslabs @gvago @h4ck200711 @haileymarshall @HaisamAbbas @haizaar @Halldrix @Han @hanamizuki @hansnow @hanyu1212 @HanYunChenLuo @hanzckernel @happy5318 @hardwork9047 @hariNEzuMI928 @harjothkhara @harrisonmedmedmetrics @harrylabsj @harryvgiunta @Harshkamdar67 @harshmoney123 @hassan-kamel @hassanhaidry @haydster7 @hbizi @hcnimi @hdy2001 @HearthCore @heathley @hehehe0803 @hejuntt1014 @helingjun @helix4u @HeLLGURD @hellofrommorgan @hellohanchen @hengm3467 @HenkDz @Henry-GGS @Hermes @Hermsi1337 @hernanda-git @het0814 @HexLab98 @Heybinshao @HeyClos @heyf @heyhudson @hhhonzik @HiddenPuppy @higgs1729 @himanusia @Himess @hinablue @Hinotoi-agent @Hiren @holny @HoneyTyagii @honor2030 @Hotragn @houko @hrnbld @hsy5571616 @hteo1337 @huangxun375-stack @huangyoje @huanshan5195 @hueilau @huklaa @HumphreySun98 @huntermonk @HwangJohn @Hygaard @Hypn0sis @i-Hun @iacker @iainlane @iamagenius00 @iamfoz @iamlukethedev @iamwongeeeee @iap @IAvecilla @ibhagwan @ibm2024 @iborazzi @ifastcc @ifrederico @igparkernz-coder @ikelvingo @ildunari @Imagineer99 @imgali @Imgaojp @imgyf @imzacksong @InB4DevOps @inchargeautomation-lab @indigokarasu @indranilbanerjee @infinitycrew39 @injaneity @insecurejezza @intelac @IntrepidBytes @ipriyaaanshu @IRONICBo @iRonin @irresi @isaachuangGMICLOUD @isair @ishangodawatta @ishanparihar @ishardo @isheng-eqi @ishuowang @ismoilh @isoenthusiast @israellot @IT-dreamer @italodsfernandes @itnkr @itpartypattaya @itsflownium @itskaism @iveywest @Ivyleaguelawyer @izumi0uu @Izzy-Gottz @j-nolan @J0hnLawMississippi @Jaaneek @JabberELF @jacdevos @Jack @Jackal991 @jackey8616 @JackHunzicker @jackjin1997 @JackLee992 @JackTheGit @jackulau @jacob3712 @jacobhausler @Jah-yee @jahazielhernandezbaubap @jahfaliabdulrahman-dev @Jaiminp007 @jakewvincent @jakobbjelver @jakobdylanc @james47kjv @jangomango76 @JanHranicky @janviernine @jasm001 @jasonHav @jasonQin6 @jasonwu-ai @jatingodnani @jayzhou2309 @jbbottoms @jcjc81 @jcorrego @jcperdomoybarra @JE4NVRG @jeeves-assistant @Jeffgithub0029 @jeffjhunter @jeffrobodie-glitch @jefuriiij @JeliTron @jerilynzheng @jerrygooch @jerryhjones @JerryLiu369 @jervaise @jethac @jexbow @JezzaHehn @jflemieux @jfuenmayor @JiaDe-Wu @Jiahui-Gu @jiangkoumo @jiangtaoliu-source @jimjsong @JimLiu @jimmyjohansson84 @jinglun010-cpu @jinlingzi-cmd @jinliyl @JinUltimate1995 @JithendraNara @JiuYue0820 @jkobject @jmiguellucas @jmmaloney4 @jnbn @jneeee @JoaoMarcos44 @joe-rodgers @joe050860 @joelbrilliant @JoelJJohnson @JoelMTaylor @Joeywrz @johnkattenhorn @Johnny-xuan @johnnykor82 @johnsonAyo @jollyroger1480 @jon-nielsen @jonameijers @JonathanFeller @jondgilbert @jonh-dev @jonotonfoto @jonpol01 @JonthanaHanh @JonZal @jooray @jordan-thirkle @jordimas @joseph-mccarey-architect @josephsellers @JoshSnider @joshuadow @journeydan @JPeetz @jplew @jrcrittenden @jroest @jslee-gif @jtstothard @JuaniLezcano @JulianCruzet @julio-cloudvisor @juliorobertoalvarez @Junass1 @jupiterx0910 @justascesnauskas @justcarlosm @justinsharpe @JustinUssuri @Justlrnal4 @jwilson411 @jxfjosh @kagura-agent @Kailigithub @kaiomp @kaishi00 @kalice-vi @kallidean @kama-dev @Kame696 @KarateWilly @karmeleon @Kartik @kaveone @kavioavio @kawanoii @KCAYAAI @kchuang1015 @KeaneYan @keanhartling @keeltrace @keenvc @keepcalmqqf @keepConcentration @keiranhaax @kelsia14 @kelvmg @kendrickkester @Kenmege @kentimsit @keppy @kernel-t1 @kerrz2020 @Kerubi-5 @Kesuek @Kev-fs @KevinMeinon @Kewe63 @KeyArgo @keyuyuan @kfchow-ai @KIAgent01 @kidrauhl123 @kilhyeonjun @Kiloris @Kimchi @Kingdomwarrior23 @kingpin44 @kingrubic @Kinkoolino-Hermes @KiraKatana @kirkins @KiruyaMomochi @KIvanow @kiwipaulrob @kiwiwyl @kiyo-e @kleros109 @KnowBotDev @kohjunhao @kohoj @kokhlo @Kolektori @koltyj @Komzpa @KoNit-K @konsisumer @Korkyzer @kosazoltan @kouyichi @krapwoo @kriscolab @kristianvast @krunkosaurus @Kryptonator @kshitijk4poor @kstawiski @ksze @kuangmi-bit @kuehnberger @kufufu9 @kumaxs @kuntao2011 @kvnloo @kweiner @kyan12 @kylecap9 @kyoto-aircon @kyssta-exe @kyzcreig @l37525778-coder @L4XB @labyrinth-analytics @Lakescape @lakshyaag-tavily @lanyusea @LaPhilosophie @LarHope @larrypang @lars-hagen @laulopezreal @LavyaTandel @lawcheck @lawyer112 @lazyants @Lazzdaycod @leakedd @Leathal1 @leavedrop @Lee-Si-Yoon @leegunwoo98 @leemove @leepoweii @leewaiho @Legion-is-life @LehaoLin @Lei-k @lekt9 @leomcamilo @leon7609 @LeonardoLGDS @LeonSGP43 @leoprodz @lepetitprince716-prog @lepkov @lesterlxt @lesterppo @lesyuk @levest28 @lEWFkRAD @lewis4x4 @lexgenius @lfaus @lgy1027 @li-lizhe @liamsmith86 @libre-7 @lidises @lifeFedorovAlexey @LifeJiggy @lightcloud00 @lightx @lihengming @lijinxiao1982 @LikelyLucid @lilShawtty-byte @linfeng961 @LINGJIAKUN @linxule @Lion-Leporidae @LionGateOS @lipebez @LironTTG @LisandroNahuelH @littlewwwhite @liuhao1024 @Liuzikaii @liuzinann @liyoungc @lkevincc0 @llbn @lll @locker95 @lofibrainwav @LoicHmh @Lokee86 @Lokeshm24 @loongfay @loongzhao @loqimean @LordMelkor @lorencato23 @lorenzozanee @lost9999 @Louis-Anson @louiswalsh @loulanyue @LovePlayCode @loveRhythm1990 @Lqg97 @lsshawn @luandiasrj @lubosxyz @Lubrsy706 @lucasfdale @lucaskvasirr @LucidPaths @luckystar2026 @lucvan @luinbytes @lukefx @Luna161 @luojiesi @LuwenOosten @luxiaolu4827 @luxles @luyao618 @lvabarajithan @LVT382009 @ly6751 @lyswty @Lyti4 @lzmuhioin @m1k3s0 @M1racleShih @Mabolla @macd2 @Machbub @MacroAnarchy @Madkyotiger @madpower2000 @Maero47 @Magaav @magicbluesmoke @MaheshBhushan @MaheshtheDev @mahgoub @maksir @malaiwah @manateelazycat @ManniBr @mannnrachman @manny3 @manuelschipper @maoleidiss @mapu-og @Marc @marcolivierlavoie @MarcosAlves90 @Marcus112-CS @marcusds @mario841859784 @mariomondev @Markgatcha @marko-niskala @markoub @MarkTro1969 @MarkVLK @martinp09 @martinramos002-bot @MartyLake @mashenchina-max @Mat-London @matantsevs @matebenyovszky @math0r-be @mathiashuque @MatthewHines @MattMaximo @MaxFreedomPollard @maximalang @MaximCrabbe @maximilliangrand @MaxKerkula @maxmilian @maxpetrusenko @maxpetrusenkoagent @maxshafransky-a11y @maxtrigify @MaxyMoos @maymuneth @MazenMkhinini @mazzanfar @mbeattietex1-star @MBK-fr @MCarlomagno @McClean @McHermes @mcleay @mcpeezy @mdenil @mearls0501 @mechkw @mehmetkr-31 @mekenthompson @memosr @memtomem @Mengchee118 @mengtanx @mengyuyuan @menhguin @MestreY0d4-Uninter @metamindedu @metamon-p @metricano @mettin4 @meviusisback @mfurkanakinci @mfwagner @mha33 @mheals @Mi55ed @miadisabelle @Mibayy @micah-c02 @michaelversluis @michaelzelbel @MicroWearld @miguelchaves997-creator @mijanx @mikeest1972 @MikeGibbsOnyx @MilaArtyNew @milkoor @minchang @minh-alpon @minhngoc25a @Minksgo @mira-solari @miregal89 @MiseHinoha @misschloedupont @misterdas @mjshorty @mkrb84 @MLcogTech @mmcallister8 @mmcclean-aws @mmchuangyt-ai @mmilutinovic371 @mnajafian-nv @mnbf9rca @MNIK-YH @mochamgx @mochiNJ @moeadham @Moep90 @MohamadKanso @mohamedorigami-jpg @moisesvalero @mojomast @moken627-hub @mollusk @Momentum96 @MongLong0214 @MonkeyLeeT @Montbra @Moodtuner997 @moonlight-lupin @mooserini @mor44-AI @Morad37 @morajabi @MorAlekss @mormio @morolab @moxian @mr-3mm3 @mr-magaia @MrAbsaroka @MrAtkeens @mrcharlesiv @mrchen0709 @mreso @MrSimonC @mrwanstudio @ms-alan @ms-elbdev @mssteuer @mudrii @MuhammadUsamaMX @muhifni @Muno459 @murenovich @Mushisushi28 @MustafaKara7 @mwdearing @mxyhi @mykeura @mzkarami @mzyas @n-leezy @n-WN @nabilaameena @Nagisa-3000 @Nami4D @NaMinhyeok @NanamiMio @nankingjing @nanobro @napoleonmm83 @natebransc @nateEc @naterchrdsn @Navlem @nca7777 @Ne0teric @Nea74 @NealZhouPanda @nebneo @Neboy72 @necoweb3 @neerazz @negm17111995 @neil771 @nekwo @nemofq @Neomail2 @neron82 @networthexplained @NexVeridian @nftpoetrist @ngelik @NgThachThanh @nicbj96 @nicecuprani @Nick @nickseelert @nickzhu0977 @nicoechaniz @nicolasdmolina @nicoloboschi @nidhi-singh02 @nightq @nikkoxgonzales @niklaskie @NikolaRHristov @nikolay-bratanov @NikolayGusev-astra @nikshepsvn @NingCiQiu @ningfangbin @Ninja @ninjmnky @Ninso112 @nitishagar @niudakok @nmediaie @NMTZ-z @nnnet @nocoo @nocturnum91 @noestelar @nolanchic @Noor-Sol @Noshkoto @nosleepcassette @nosliwhtes @NotGovernor @NoTimeforInfinity @notkisk @notwitcheer @NousResearch @NPFernando @nrmjeremy @ns-fusion @nthrow @null-runner @nv-cho @nv-kasikritc @nv-pberard @NYTEMODEONLY @nyx573 @o3u6x @obierlaire @obtitus @octo-patch @Octopus @Octopustank @ocuclaw @oferlaor @officialasishkumar @oheckmann74 @ohMyJason @ohmyskyhigh @okaris @oliver-mee @oliverhees @oliviaaaa7788 @olopez25 @olric3015 @oluwadareab12 @olympusbuildz @omar2535 @OmarB97 @omegazheng @omerkaz @omerlefaruk @omert11 @omid-io @OmniaZ1 @OMOX563 @OmX @Only-Code-A @onuraycicek @ooiuuii @OOOOOAO @ooovenenoso @openclawcash @oppih @opriz @orangercat @orcunulutas @original4422 @osadchiis @oswaldb22 @oswaldvalois @ottosulin @ourines @ous50 @ousiaresearch @outdog-hwh @outpoints @outsourc-e @OutThisLife @overtoneblue @oxkenshin @oxngon @OYLFLMH @p-andhika @pandacooming @paoloantinori @Paperclip @paraddox @Paramon @Parker-Fawcett @parsifal295 @pasmud @patrykkopycinski @PaTTeeL @paultaki @pcaruba @pdmartins @pdonizete @PeaceMaker-best @pecalbezyshodnost-hue @peetteerr @pefontana @penginman @penwyp @Per0-1 @perng @perqin @PeterFile @peteromallet @PeterTaras @Petra @petrichor-op @peyton.lu @pgregg88 @phantomthedog @PhilipAD @philmossman @phippsbot-byte @phoebsie @PhoeniXAbhisheK @phpoh @phuongvm @pierrenode @pincente @pinguarmy @PINKIIILQWQ @pintadoai @Pinutss @PIR8-Software @piskooooo @pittosporum-seu @PixelAlchemist4 @pju-hoge @plarche-ux @PLASMA-FR @plcunha @plluviera @Pluviobyte @pmaho @pminervini @pnascimento9596 @pnpwin @poijygfdyy @polkn @polnikale @Polybulle @PolyphonyRequiem @poponline63 @portavales @Potrock @POWERFULMOVES @Poxel2 @ppazosp @pprism13 @pradeep7127 @praggybuilds @Prasanna28Devadiga @PRATHAMESH75 @praxis1244-consulting @predatorheard-byte @PRELVAS94 @preyevates @Prithvi1994 @privacydied @ProDrifterDK @professorpalmer @ProgramCaiCai @promptclickrun @protas-box @psam-717 @psionic73 @ptichalouf @purzbeats @Pusch97 @PuvaanRaaj @pxdsgnco @pxls-kaneko @pyr0ken @qd @qdivan @QDung210 @QifengKuang @qinghuanandejiangshi @qingshan89 @quangphucqp @quocanh261997 @quotumorg @quqi1599 @qWaitCrypto @qwertyuiop97 @Qwinty @r00tedbrain-backup @r266-tech @r3x443 @raaaas @raajkumars @rahlquist @rain-sk @rain610 @rainbowgore @raitoxlol @rajitkhanna @Raleighite @ramarivera @ramseshk @randimt @rapsealk @rarf @rasitakyol @raulbcs @rayblennerhassett-byte @rayjun @raymondyan-zhijie @rayn1314 @rborkow @rc-int @rcarrata @rchcorp @rcktmonk @re-ITRT @Realmagnum @Realtyxxx @Reaper-Forge @red4711 @redhelix @RegardV @reinhold-ph @RelaxJonh @remi-td @RemyFevry @ReqX @rerdi92 @revaraver @rewbs @RFingAdam @RGerrish @Rhaphaello @RHODIZSECURITY @rhushabhvaghela @riandradiva18 @Riccardo-Vecchi @richardcmckinney @ricki-io @RickyYii @RikETS @rikkarth @Ringo6107 @rio-jeong @ritvikgautam @Rival @rivercrab26 @rjshrjndrn @rkfshakti @rlaope @Rmohid @rob-maron @RobbertC5 @robbyczgw-cla @RobbyMo81 @robbyslmt @robchristiansen13 @robertaustinbell @roberttidball @robinradx @Roblmvp @Rockey011 @rockminster @rocks737 @rod-nxtlevel @rodboev @Rodkillah @rodricksz4h5 @rodrigogs @RohiRIK @RohithPariki @rohitsabu @roli-lpci @romanovzky @Rook-CodeVolt @RootZ3n @roqianjas @roraag @royalaid @RoySRose @rpridal @rrevenanttt @rroverin @rs545837 @rsayar @rshi0212 @rtcopenclawgh @ruangraung @rudironsoni @rudrakshchahal @rudycelekli @ruizanthony @runninwithitmarketing @RunzhouLi @ruochu88s @ruslanvasylev @Ruzzgar @rweddle @ryangu00 @ryantuc @RyanUnderhill @ryrenz @RyTsYdUp @s-jag @s905060 @SacrEllfarch @saforem2 @sagitario-jpn @SaguaroDev @sahibzada-allahyar @Sahil-SS9 @Sahilvishnaliya @sahlbergalfred4-lgtm @saiteja-madha @sakhnenkoff @Sakujakira @salch-cred @salehelsayed @SaM13997 @samalone @sambouli @samfoy @samplesabotage @samrusani @Samuek9 @samuelpatro @sanastasiou @SandroHub013 @Sanjays2402 @saotu @sarahwu185 @sarayd @sarbai @sarthak-707 @sarvesh1327 @sasan1200 @Sasni @sasquatch9818 @satirojordi-boop @SayHell0W0rld @sbe27 @ScaleLeanChris @schrodienieur @schwinguin @scottaki @scottgl9 @scottlowry @scroasdale @scross01 @sdalonzo @sdyckjq-lab @sealca @SeashoreShi @season179 @seb-almeida @Sebuska29190 @secsson @see-k @SelfParody @seluvia @semirkabir @Sensie-agents @serefyarar @sergeikabuldzhanov @Sergey0515 @sergioperezcheco @sgaofen @sgarrand @sgtworkman @Sha01in @shaase-ctrl @shadus @shafdev @shagghiesuperstar @shali10 @shane9coy @shannonsands @shashwatgokhe @shaun0927 @shauryajain21 @shawnpana @shehjaddev @shellybotmoyer @Shenrui-Ma @sherman-yang @Shimakaze514 @shivasymbl @shl0ms @shoesroom13 @shorehefei-ship-it @Shotflame @shreyanshj10 @shuanzhi @Shy7777 @SiaoZeng @siillee @silentpr0 @SilverNine @simbam99 @SimoKiihamaki @simpolism @sinh2024 @Sisyphus @sitkarev @sjahlstrom @sjiangtao2024 @sjungwon03 @sk @skappafrost @skyc1e @skyeconcontracting-ctrl @skyer-flyyy @skyeyesec333 @skylarbpayne @slash1andy @Slobaka @sloik @Slopez2023 @sly321-pixel @SmallNew2003 @SmelterLabs @smfworks @smtony @snipecoder @SNooZyy2 @snowdchike @socrates1024 @soddy022 @sohomsahaun @soichiyo @Soju06 @Solitud1nem @solovision24 @someoneexistsontheinternet @somewheresy @sonderhq @songshikang0111 @Sonnenwerk @Sora-bluesky @sorenisanerd @soroush5 @soyami @soyelmismo @soymarketing @soynchux @spanishflu-est1918 @spfcraze @spideystreet @spiky02plateau @spranab @sprmn24 @SquabbyZ @squevo @sroecker @srojk34 @ssep4u @ssiweifnag @SsSs @stablegenius49 @StanleyStetson @stantheman0128 @starship-s @startakovsky @SteelPh0enix @StefanIsMe @stefanpieter @StellarisW @stepanov1975 @stephan @Steve-prog001 @steveafrost @stevehsu0524 @steveonjava @stods21 @StodsEcho5 @Stoltemberg @StreamOfRon @stremtec @strzhao @Studio729 @Subway2023 @successionbio @sudhirpatil @sudoingx @suhas-svg @sujeet111 @SulthanZahran1 @sum117 @sunsakis @sunwz1115 @superafun @superb-cation @supere989 @Superfly73 @superlowburn @superposition @supotato-ipj @supplefrog @Svector-anu @sweetcornna @sxuff @sy0u1ti @sycamoregroupltd @sylvainCDA @sylvesterkaczmarek @Synero @synscott @szcharlesji @szicely @SZWzz @szymonclawd @szzhoujiarui-sketch @t1mdurden @T910317 @tachyon-r @tainguyenphat74 @TakeshiTGAL @TalOrbach @Tamaz-sujashvili @tancou @tangtaizong666 @tank321 @TaoMasterCoder @tarkilhk @TartarusLabs @tauros1983 @taxbax @taylorwtf @tcconnally @teakesdev @teamster22 @teddychenfeiyang-png @Teknium @temalo @ten-ltw @ten82e @tensorbit89-netizen @teo-nex @terminamike666 @Test @teyrebaz33 @TFOjojo @tfournet @th3sull1van @thanhan-a17 @tharanee-bit @thatssoheil @the-cybersapien @the-repeter @The-x-35 @the3asic @TheAirick @TheAngryPit @thebergerking91 @thebizfixer @TheBlueHouse75 @thedavidweng @thefiredev-cloud @TheGardenGallery @thegoodguysla @thegreatesthoneybee @thejpanganiban @TheNeuralVault @theone139344 @thepetenetwork @ThereWasAYang @TheSmokeDev @TheStreamCode @thetasigmaio @thinkingsheep @thomasscottbeck-sudo @ThyFriendlyFox @tian0cai @tianma-if @tianyu-liu @ticketclosed-wontfix @tigercraft4 @Tigrannnnnnn @tim404x @TimeLord2010 @timknip @timmycheng @timoteo7 @timrichardson @timsmykov @tinetwork @tjboudreaux @tjp2021 @tk-pkm111 @tkaufmann @tkwong @tmaarcxs @tmchow @tmielika @to-na @toannhu96 @tobenwarrior @tokou @tomatau @tomekdot @Tomenatore @tomkubik @tommulkins @Tommy00748 @tomqiaozc @tony-simons-aiowa @Tormen28 @Tosko4 @Totoro-qaq @tpte @trac3r726 @Tranquil-Flow @tranquilflow @treatux @trevorgordon981 @trevornk @Treytucker05 @trippyogi @Triquetra @trnorga @Trounaldo @TroyMitchell911 @truenorth-lj @trwpang @tsemana @tsubasakong @tsuk1nose @Tsuki-hash @tt-a1i @tuancookiez-hub @TUARAN @tudorpastorglencore @tugrulguner @tupe12334 @TurgayAcar49 @TurgutKural @turingcat @tutan0558 @TutkuEroglu @tw2818 @twe-cloud @twidtwid @twotnguyen @txhno @tylerbrevard @tylman @tymrtn @tynamite @ubxty @Udjin79 @Ufonik88 @UfukNode @ugoenyioha @UltraInstinct0x @umi008 @UnathiCodex @underthestars-zhy @UniversePeak @unmodeled-tyler @unsupportedpastels @usvimal @uttkarsh-26 @uzairchhapra @uzaylisak @uzunkuyruk @vadimcomanescu @vaibhavarora14 @valda @valentt @valerdoskin @vbcherepanov @vectorcmd @vectorcontext @vectorforge22 @VencentSoliman @Versun @vet402 @vgarlu @VGFreakXBL @victor-kyriazakos @victorftrdba @victorGPT @victorjmilagres @VictorTran1023 @VictorYXL @vikyw89 @vilkasdev @virattt @virtaava @Vissirexa @vitobotta @vjpixel @vKongv @vladzablotski-adaption @Vocllum @vollegrewar @vominh1919 @VrtxOmega @vsd2807 @Vsemagush @vshulcz @vykhovanets @w-up @wa1939 @WadydX @walidboulanouar @wang2 @wangs1203 @wangtaotaotao95 @wanliqin @warabe1122 @warmheartrobot @waroffchange @WAXLYY @wdelarme @wdon @web3blind @webdevfrancisco @webdevtodayjason @webtecnica @webtoolbox @Weidows @weidzhou @weltmaister @Wenfengcheng @wesleysimplicio @westkite1201 @whirmill @WhiteWorld @whoisdhana @whyyagswhy @WideLee @will-lynas @willardgmoore @willfrombr @Willhong @williamtwomey @willy-scr @wilsen0 @wliu-dev @wnuuee1 @woaini30050 @wodesiku @WolframRavenwolf @WolftacDigital @woota @wooyongbin3-cpu @woriwka-ai @worlldz @woshicby @wpengpeng168 @wukangcheng1994 @WuKongAI-CMU @wuli666 @WuTianyi123 @wuwuzhijing @wxy-nlp @Wysie @WYSTAF @wz-heng @wzslr321 @x1am1 @x7peeps @xiajiahang @xiaodu55 @XiaoXiao0221 @xiaoxinova @xiaoyaner0201 @xielevi @xinbenlv @Xingkai98 @Xipong @Xixiartemis @xjsns346 @xkam7ar @xmhuangzhijun-hue @Xowiek @xoy8n @xpk84 @xraysight @xrbs00 @XtremXpert @xuezhaolan @xushibo @Xuxyyy @xuyuann @xxxigm @xy200303 @xy952666680 @xz-dev @y0shua1ee @Yabuku-xD @yagna @yahuo @yaleman @YanSte @yaojiejia @yaozhen @yashiels @yatesjalex @yavarb @ydmw74 @yehuosi @yellowdog01 @ygd58 @Yicheng-Mark @yingliang-zhang @yinkev @YLChen-007 @ymat19 @ymybxx @yoannes @YonganZhang @Yongcheng123 @yongli-abc @yoniebans @yotamleo @youcefcherid @Youssef @youssefea @youtiaowei @yoyodine-industries @ypwcharles @yu-xin-c @YUAN @yuanchenglu @yubingz @yuchenwang3 @yuexiongHNU @yuga-hashimoto @YuhGuan @Yun. @yungchentang @yunke98888-gif @yunze7373 @YuShu @YusukeOshima-5564 @YuYigeng @yuzilongleif-collab @ywatanabe1989 @yy28 @yyovil @yyq4193 @yyzquwu @yzy806806 @z0zero @z23 @zaclanzon @zagiscoming @zakiyys @zakolenko @zanzipanzi @zapabob @zay @zaze-oO @zccyman @zebadee2kk @Zechereh @zeejaytan @zengzheqing @zenplace-system @ZenSchema @Zeraphim @zerone0x @ZeroOttantotto @Zeus-Deus @zhangxicen @zhao0112 @ZHCHJ888 @ZHJay @zhongwater123 @zhongyueming1121 @Zhou-Ruichen @zhouhe-xydt @Zhuzewen2023 @ZidoCode @zihaofeng2001 @zilvinasu @zindar @ZishiW @ziwon @zjc-enigma @zmlgit @zohuyhieuzo03 @zoser69 @zqy1-1 @zrmnelson @zsuroy @ZT-Toolkit @zufeyan @zwcf5200 @zxcasongs @zxdvd @zyz619963502zyz @zzpigpinggai @zzragida @zzz163519</p> <p>Also: @Leanolf (Leanolf+212960991), @ayushnangia (55181294+ayushnangia), @DavidMetcalfe (dmetcalfe+hermes), benoit.lavenier, Adrian Scott, Ahmed Khaled, Alberto Leal, Alex Ferrari, Andrei Ignat, Animesh Mishra, Bosco Barros, Chris DePuy, d4rk pr10r, Daniel van Strien, Dave Bunn, Dogila Developer, Eduardo Christopher López Acevedo, George Shalhoub, Hermes Agent / OpenAI Codex / gpt-6-sol, Isaac Dobson, JP Lew, Konrad Czarski-Bonanaty, Lars van der Zande, leo yang, Lucas Nicolas, Magnus Ahmad, Marco Rutsch, Mark Sheppard, Martin Gontovnikas, Matt McFarland, Michał Dziwisz, namhyuk kim, Nikolas de Hor, Nils (Norya), Paul Bergeron, Paulo Henrique, Robert Montelongo, Sebastian Bochna, Siddharth Balyan, Teo , Timo Karp, Val Alexander, wave-2 worker D, Wes Hermes, Yannick Stephan, Yash Jain, Your Name, Ömer Faruk Okumuş, 史官.</p> <hr> <p><strong>Full Changelog</strong>: <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/compare/v2026.8.31...v0.22.0">v2026.8.31...v0.22.0</a></p> <p><em>This release rolls up and fully documents the v0.21.1–v0.21.7 patch releases (Sep 7 – Oct 11), whose notes were deferred to this minor.</em></p> </div><div class="link-row" data-astro-cid-l7qxtvnw><span class="lr-label" data-astro-cid-l7qxtvnw>Links</span><a href="https://github.com/NousResearch/hermes-agent/releases/tag/v0.22.0" data-astro-cid-l7qxtvnw>GitHub release notes ↗</a><a href="https://github.com/NousResearch/hermes-agent/compare/v0.21.7...v0.22.0" data-astro-cid-l7qxtvnw>Full diff ↗</a><a href="https://github.com/NousResearch/hermes-agent/releases/tag/v0.22.0" data-astro-cid-l7qxtvnw>Release notes (v0.22.0) →</a></div></div></details><details class="rel" data-astro-cid-l7qxtvnw><summary data-astro-cid-l7qxtvnw><span class="r-arrow" data-astro-cid-l7qxtvnw>▶</span><span class="r-ver" data-astro-cid-l7qxtvnw>v0.21.7</span><span class="r-date" data-astro-cid-l7qxtvnw>2026-10-12</span></summary><div class="rel-body" data-astro-cid-l7qxtvnw><p class="r-summary" data-astro-cid-l7qxtvnw>Patch release. This tag rolls up the ~204 PRs merged since v0.21.6 into a stable release for the desktop app (macOS Apple silicon, Windows), the Microsoft Store and MSIX, the installer, Docker and Hermes Cloud. Full curated notes for this window ship with v0.22.0.</p><div class="r-notes" data-astro-cid-l7qxtvnw><blockquote> <p>Patch release. This tag rolls up the ~204 PRs merged since v0.21.6 into a stable release for the desktop app (macOS Apple silicon, Windows), the Microsoft Store and MSIX, the installer, Docker and Hermes Cloud. Full curated notes for this window ship with v0.22.0.</p> </blockquote> <p><strong>What this patch ships for source installs (<code>hermes update</code> and the desktop app's updater on a git checkout):</strong></p> <ul> <li><strong>Updates now follow tagged releases.</strong> A source install of the official repository updates to the latest published <code>vX.Y.Z</code> release instead of every commit on <code>main</code>. An install already newer than the latest release stays where it is and waits for the next one; nothing is moved back. To keep following every commit: <code>hermes update --set-channel main</code>. Forks and mirrors keep following <code>main</code>. Store, MSIX and bundled desktop installs are unchanged.</li> <li><strong>Choose the channel in the desktop app.</strong> Settings ▸ About ▸ Updates has an <em>Update channel</em> switch (Stable releases / Every commit) for source installs, and the update dialog now shows which channel you are on.</li> <li><strong>Reasoning survives resume.</strong> Signed thinking replays after <code>hermes chat --resume</code> and on the next gateway turn, and Bedrock Converse reasoning models no longer get rejected on resumed sessions.</li> <li><strong>Updates no longer fail behind some firewalls.</strong> Installs on <code>main</code> no longer fetch a release record that regional firewalls could answer with 403. The stable check uses your GitHub token when one is set (<code>GITHUB_TOKEN</code> or <code>gh auth login</code>) and reports a GitHub rate limit as a rate limit.</li> </ul> <h2>About this release</h2> <p>Also in the window, undocumented here on purpose: plugins running built-in Desktop app actions (<code>ctx.runAction</code>) and a plugin SDK pet bubble (<code>ctx.pet.say</code>); core-made Codex requests so plugins never hold the token; skills installed mid-session reaching the model without a prompt rebuild; Krea 2 Medium Turbo as the default image lane for new paid subscribers, with a FAL fallback when managed Krea refuses a request; faster desktop updates (the React Compiler pass cached by content, the compiled renderer reused when only the install stamp changed, unchanged native inputs left in place); pinned installs that check out only the pin; compaction marks emitted to Relay; and new community plugins including memory-shield, command-ledger, Memoria, Model Router, wyoming-voice-bridge, codex-account-switch and redline.</p> <p><strong>Full curated release notes for this window ship with v0.22.0</strong>, which will document everything from v0.21.0 onward — highlights, feature areas, and complete contributor credits. Nothing in this window is skipped.</p> <h2>Updating</h2> <ul> <li>Desktop app: updates itself. Microsoft Store installs update through the Store.</li> <li>CLI: <code>hermes update</code>, or re-run the installer one-liner.</li> <li>Docker / Hermes Cloud: <code>nousresearch/hermes-agent:stable</code> (or <code>:latest</code>).</li> </ul> <p><strong>Full Changelog</strong>: <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/compare/v0.21.6...v0.21.7">v0.21.6...v0.21.7</a></p> </div><div class="link-row" data-astro-cid-l7qxtvnw><span class="lr-label" data-astro-cid-l7qxtvnw>Links</span><a href="https://github.com/NousResearch/hermes-agent/releases/tag/v0.21.7" data-astro-cid-l7qxtvnw>GitHub release notes ↗</a><a href="https://github.com/NousResearch/hermes-agent/compare/v0.21.6...v0.21.7" data-astro-cid-l7qxtvnw>Full diff ↗</a><a href="https://github.com/NousResearch/hermes-agent/releases/tag/v0.21.7" data-astro-cid-l7qxtvnw>Release notes (v0.21.7) →</a></div></div></details><details class="rel" data-astro-cid-l7qxtvnw><summary data-astro-cid-l7qxtvnw><span class="r-arrow" data-astro-cid-l7qxtvnw>▶</span><span class="r-ver" data-astro-cid-l7qxtvnw>v0.21.6</span><span class="r-date" data-astro-cid-l7qxtvnw>2026-10-08</span></summary><div class="rel-body" data-astro-cid-l7qxtvnw><p class="r-summary" data-astro-cid-l7qxtvnw>Patch release. This tag rolls up the ~2,100 PRs merged since v0.21.5 into a stable tagged release for Docker and Hermes Cloud. Full curated notes for this window ship with v0.22.0.</p><div class="r-notes" data-astro-cid-l7qxtvnw><blockquote> <p>Patch release. This tag rolls up the ~2,100 PRs merged since v0.21.5 into a stable tagged release for Docker and Hermes Cloud. Full curated notes for this window ship with v0.22.0.</p> </blockquote> <h2>About this release</h2> <p>This is the first release cut by the new stable release pipeline: one attempt ref, a tested Docker image, and a receipt tag at publish. It ships the tag, this GitHub release and the Docker image. The desktop app, Termux packages and the Microsoft Store stay on their current build for now and move with the next bundled release.</p> <p>Also in the window, undocumented here on purpose: live transcription while you speak on CLI, TUI and Desktop (<code>stt.streaming</code>); spoken voice turns routed to their own model (<code>auxiliary.voice_chat</code>) with reasoning off by default; third-party plugins running in a per-profile plugin host (<code>plugins.isolation: host</code>) and one Settings ▸ Plugins home for their settings pages; favorite and pinned models at the top of the Desktop picker, a usage chip before a subscription hits its wall, and rate-limited providers that say why and until when; local models in <code>hermes model</code> plus llama.cpp CUDA on Linux x64 and arm64; pluggable, layered language packs across core, Desktop and TUI; a summary-first <code>hermes status</code> (<code>--short</code>, <code>--full</code>); a review-pane diff scope selector (Uncommitted / Branch / Last turn) and keep-awake that follows the turn; cron, <code>doctor</code> and home-channel warnings when the cron store goes unwritable; approval flags for credential uploads and invisible Unicode in terminal commands; a Discord setup that checks the bot token and prints the invite link; a unified Kanban workflow definition; <code>activate.fish</code>; GPT-6.1 Sol and Claude Sonnet 5.5 / Haiku 5.5 in the catalogs; and dozens of new community plugins.</p> <p><strong>Full curated release notes for this window ship with v0.22.0</strong>, which will document everything from v0.21.0 onward — highlights, feature areas, and complete contributor credits. Nothing in this window is skipped.</p> <h2>Updating</h2> <ul> <li>Docker / Hermes Cloud: <code>nousresearch/hermes-agent:stable</code> (or <code>:latest</code>).</li> <li>CLI (git installs): <code>hermes update</code>, or re-run the installer one-liner.</li> <li>Desktop app and Termux: no change in this release; they update with the next bundled release.</li> </ul> <h2>Security Fixes</h2> <p><strong>Dashboard authentication hardening</strong></p> <ul> <li>Spoofed <code>X-Forwarded-For</code> headers could reset the password-login rate limit and get around the per-IP cap on native sign-in (#133367)</li> <li>Unauthenticated login requests could write unbounded values to the auth audit log (#133369)</li> <li>The public <code>/auth/</code> routes had no request-body size limit (#133370)</li> <li>Native sign-in could send login codes to a non-loopback redirect, which allowed session takeover (#130685)</li> </ul> <p>Thanks to Tenable Research for reporting all four issues (TRA-725, TRA-726, TRA-727, TRA-728). The native sign-in redirect issue was also reported independently and fixed by @Froraut. The <code>X-Forwarded-For</code> fix builds on community work by @hinotoi-agent and @BearHuddleston (#40285).</p> <p><strong>Repository git filter hardening</strong></p> <ul> <li>Automatic git calls (session workspace snapshot, subagent worktrees, kanban, worktree cleanup, <code>hermes -w</code>) could run <code>clean</code>/<code>smudge</code>/<code>process</code> filter programs defined by an untrusted repository's own config, before the first prompt (#130661)</li> </ul> <p>Thanks to 燕涛 for reporting this privately. It was also reported and fixed publicly by @jonpol01 (#126017, #126019) and @JoaoMarcos44 (#126075).</p> <p><strong>Email gateway sender hardening</strong></p> <ul> <li>A quoted display name in the <code>From</code> header (e.g. <code>"Victim <victim@example.com>" <attacker@evil.test></code>) could make an attacker's message pass the email allowlist as an allowed sender (#125212)</li> </ul> <p>Thanks to Daniel Steele (@keeltrace) for reporting this and writing the fix (#124322).</p> <p><strong>Full Changelog</strong>: <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/compare/v2026.9.24...v0.21.6">v2026.9.24...v0.21.6</a></p> </div><div class="link-row" data-astro-cid-l7qxtvnw><span class="lr-label" data-astro-cid-l7qxtvnw>Links</span><a href="https://github.com/NousResearch/hermes-agent/releases/tag/v0.21.6" data-astro-cid-l7qxtvnw>GitHub release notes ↗</a><a href="https://github.com/NousResearch/hermes-agent/compare/v2026.9.24...v0.21.6" data-astro-cid-l7qxtvnw>Full diff ↗</a><a href="https://github.com/NousResearch/hermes-agent/releases/tag/v0.21.6" data-astro-cid-l7qxtvnw>Release notes (v0.21.6) →</a></div></div></details></div><div data-astro-cid-l7qxtvnw><h3 class="month-h" data-astro-cid-l7qxtvnw>September 2026</h3><details class="rel" data-astro-cid-l7qxtvnw><summary data-astro-cid-l7qxtvnw><span class="r-arrow" data-astro-cid-l7qxtvnw>▶</span><span class="r-ver" data-astro-cid-l7qxtvnw>v0.21.5</span><span class="r-date" data-astro-cid-l7qxtvnw>2026-09-24</span></summary><div class="rel-body" data-astro-cid-l7qxtvnw><p class="r-summary" data-astro-cid-l7qxtvnw>Patch release. This tag rolls up the ~460 PRs merged since v0.21.4 into a stable tagged release for downstream consumers (Docker images, Hermes Cloud, hosted deployments). Full curated notes for this window are deferred to v0.22.0.</p><div class="r-notes" data-astro-cid-l7qxtvnw><blockquote> <p>Patch release. This tag rolls up the ~460 PRs merged since v0.21.4 into a stable tagged release for downstream consumers (Docker images, Hermes Cloud, hosted deployments). Full curated notes for this window are deferred to v0.22.0.</p> </blockquote> <h2>About this release</h2> <p>Also in the window, undocumented here on purpose: a Desktop plugin SDK wave (composer draft API, session-list and row-decoration slots, sidebar nav prefs, model-pill label providers, typed settings/skills/toolsets/profiles bridges, a sandboxed embed primitive, appearance-settings slot, and a public event bridge for plugin backends); a Simple/Advanced interface mode for Desktop; the Connectors page replacing the MCP tab, with "Connect now" for a freshly installed plugin's MCP servers and installed plugins' tools and skills going live in every open chat; onboarding that offers catalog plugins beside connectors; complete French, German and Spanish Desktop catalogs plus an RTL/LTR text direction setting; custom model entry from the composer and Settings pickers; function-key and dictation voice shortcuts; per-profile stop/start/restart under the host multiplexer and <code>gateway.standalone</code> to opt a profile out; the live dock showing the standing <code>/goal</code> and queued prompts in the CLI and TUI; a kanban design pass with a two-column ticket modal and markdown task text; webhook deliveries mirrored into the target chat session; Bot Screen on hosted <code>-desktop</code> images; GPT-6 Sol/Terra/Luna and Claude Opus 5.5 in the Nous and OpenRouter catalogs; an official Blender Lab integration and NVIDIA app/Broadcast plugins; a long run of hot-path performance work across config loading, the tool registry, gateway message handling and the model picker; and dozens of new community plugins in the catalog.</p> <p><strong>Full curated release notes for this window ship with v0.22.0</strong>, which will document everything from v0.21.0 onward — highlights, feature areas, and complete contributor credits. Nothing in this window is skipped.</p> <h2>Updating</h2> <ul> <li><code>hermes update</code> (git installs), or re-run the installer one-liner.</li> <li>Docker / Hermes Cloud: images build from this tag (<code>nousresearch/hermes-agent:v2026.9.24</code>).</li> </ul> <p><strong>Full changelog:</strong> <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/compare/v2026.9.21...v2026.9.24">https://github.com/NousResearch/hermes-agent/compare/v2026.9.21...v2026.9.24</a></p> </div><div class="link-row" data-astro-cid-l7qxtvnw><span class="lr-label" data-astro-cid-l7qxtvnw>Links</span><a href="https://github.com/NousResearch/hermes-agent/releases/tag/v2026.9.24" data-astro-cid-l7qxtvnw>GitHub release notes ↗</a><a href="https://github.com/NousResearch/hermes-agent/compare/v2026.9.21...v2026.9.24" data-astro-cid-l7qxtvnw>Full diff ↗</a><a href="https://github.com/NousResearch/hermes-agent/releases/tag/v2026.9.24" data-astro-cid-l7qxtvnw>Release notes (v2026.9.24) →</a></div></div></details><details class="rel" data-astro-cid-l7qxtvnw><summary data-astro-cid-l7qxtvnw><span class="r-arrow" data-astro-cid-l7qxtvnw>▶</span><span class="r-ver" data-astro-cid-l7qxtvnw>v0.21.4</span><span class="r-date" data-astro-cid-l7qxtvnw>2026-09-21</span></summary><div class="rel-body" data-astro-cid-l7qxtvnw><p class="r-summary" data-astro-cid-l7qxtvnw>Patch release. This tag rolls up the ~1,800 PRs merged since v0.21.3 into a stable tagged release for downstream consumers (Docker images, Hermes Cloud, hosted deployments). Full curated notes for this window are deferred to v0.22.0.</p><div class="r-notes" data-astro-cid-l7qxtvnw><blockquote> <p>Patch release. This tag rolls up the ~1,800 PRs merged since v0.21.3 into a stable tagged release for downstream consumers (Docker images, Hermes Cloud, hosted deployments). Full curated notes for this window are deferred to v0.22.0.</p> </blockquote> <h2>About this release</h2> <p>Also in the window, undocumented here on purpose: a host-wide gateway singleton lock with a rendezvous record, and Desktop attaching to the running host backend instead of spawning a second one; one backend-owned connector operation with a setup card on Desktop, TUI and CLI; <code>--format stream-json</code> structured JSONL output for the CLI; <code>skills.auto_load</code> pinning skills into every new session's prompt; a Desktop chat/UI font picker, one-click local engine updates, and plugin uninstall from the Plugins hub; a <code>decline</code> unauthorized-DM behavior for the gateway; a configurable MCP discovery connect cap (<code>mcp.discovery_concurrency</code>); <code>session_search</code> after/before bounds plus OR-relaxed recall retry; <code>hermes sessions set-journal-mode</code>; LTX 2.5 and Kling O3 in the video catalogs; a website page for every catalog plugin and author, with pinned-commit READMEs and added/updated sorting; a dozen new community plugins in the catalog (tailscale, ssh, shodan, terminal, rss, resetwatch, done-bell, kiwi, cognee, Octen); and a large run of profile/multiplex isolation, cron, kanban, Desktop and state.db fixes.</p> <p><strong>Full curated release notes for this window ship with v0.22.0</strong>, which will document everything from v0.21.0 onward — highlights, feature areas, and complete contributor credits. Nothing in this window is skipped.</p> <h2>Updating</h2> <ul> <li><code>hermes update</code> (git installs), or re-run the installer one-liner.</li> <li>Docker / Hermes Cloud: images build from this tag (<code>nousresearch/hermes-agent:v2026.9.21</code>).</li> </ul> <p><strong>Full changelog:</strong> <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/compare/v2026.9.14...v2026.9.21">https://github.com/NousResearch/hermes-agent/compare/v2026.9.14...v2026.9.21</a></p> </div><div class="link-row" data-astro-cid-l7qxtvnw><span class="lr-label" data-astro-cid-l7qxtvnw>Links</span><a href="https://github.com/NousResearch/hermes-agent/releases/tag/v2026.9.21" data-astro-cid-l7qxtvnw>GitHub release notes ↗</a><a href="https://github.com/NousResearch/hermes-agent/compare/v2026.9.14...v2026.9.21" data-astro-cid-l7qxtvnw>Full diff ↗</a><a href="https://github.com/NousResearch/hermes-agent/releases/tag/v2026.9.21" data-astro-cid-l7qxtvnw>Release notes (v2026.9.21) →</a></div></div></details><details class="rel" data-astro-cid-l7qxtvnw><summary data-astro-cid-l7qxtvnw><span class="r-arrow" data-astro-cid-l7qxtvnw>▶</span><span class="r-ver" data-astro-cid-l7qxtvnw>v0.21.3</span><span class="r-date" data-astro-cid-l7qxtvnw>2026-09-14</span></summary><div class="rel-body" data-astro-cid-l7qxtvnw><p class="r-summary" data-astro-cid-l7qxtvnw>Patch release. This tag rolls up the ~338 PRs merged since v0.21.2 into a stable tagged release for downstream consumers (Docker images, Hermes Cloud, hosted deployments). It exists so the remote-gateway sign-in fixes below reach Cloud agents, which auto-update to the newest release tag.</p><div class="r-notes" data-astro-cid-l7qxtvnw><blockquote> <p>Patch release. This tag rolls up the ~338 PRs merged since v0.21.2 into a stable tagged release for downstream consumers (Docker images, Hermes Cloud, hosted deployments). It exists so the remote-gateway sign-in fixes below reach Cloud agents, which auto-update to the newest release tag.</p> </blockquote> <h2>What this patch ships for remote Desktop / Cloud users</h2> <ul> <li><strong>Remote dashboard sessions no longer expire on refresh bursts</strong> (#110061, fixes #55712; salvage #71548 @Doud-FR, #55717 @liuhao1024). Both refresh paths on the gateway (cookie gate and the desktop's native bearer route) now coalesce concurrent requests carrying the same rotating refresh token, so a Desktop wake burst can no longer replay an already-rotated token into the Portal's reuse detection and revoke the whole session. Refresh also runs off the event loop, so a slow identity provider no longer freezes <code>/api/status</code>. Pairs with Portal-side NousResearch/hermes-portal#1209 (sliding 30-day idle horizon, 5-minute rotated-token grace).</li> </ul> <h2>Also requested for this tag</h2> <ul> <li><strong>Long-lived processes stop leaking duplicate state.db writer handles</strong> (#110934, fixes #100896 #103339; salvage #107974 @kshitijk4poor, mapping @Rroven): gateway, dashboard/Desktop backend, ACP and CLI readers attach read-only and in-process writers share the registry handle, so the <code>N live SessionDB handles</code> precursor stops firing on a healthy topology.</li> </ul> <h2>About this release</h2> <p>Also in the window, undocumented here on purpose: server→client JSON-RPC requests and a Pydantic wire-contract registry with generated TS/OpenRPC for the TUI/Desktop gateway (#110521, #110522); reasoning-effort selection on every model picker, a composer pill and per-auxiliary control in Desktop; OpenRouter OAuth PKCE login; HEIF/HEIC/AVIF image decoding; the Honcho peer-model setup rework; MCP OAuth refresh tokens bound to their issuer; a daily MCP re-auth nudge in Desktop; Wan 3.0, Kling 3.0 / Kling Image v3, MiniMax H3 Max Turbo, Gemini Omni Flash 1.1 and Meta Muse in the FAL catalogs; Slack pasted tables and the Agent Sessions API; multiplexed-profile isolation and gateway-liveness fixes; and the state.db WAL refusal on cross-VM filesystems.</p> <p><strong>Full curated release notes for this window ship with v0.22.0</strong>, which will document everything from v0.21.0 onward — highlights, feature areas, and complete contributor credits. Nothing in this window is skipped.</p> <h2>Updating</h2> <ul> <li><code>hermes update</code> (git installs), or re-run the installer one-liner.</li> <li>Docker / Hermes Cloud: images build from this tag (<code>nousresearch/hermes-agent:v2026.9.14</code>).</li> </ul> <p><strong>Full changelog:</strong> <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/compare/v2026.9.11...v2026.9.14">https://github.com/NousResearch/hermes-agent/compare/v2026.9.11...v2026.9.14</a></p> </div><div class="link-row" data-astro-cid-l7qxtvnw><span class="lr-label" data-astro-cid-l7qxtvnw>Links</span><a href="https://github.com/NousResearch/hermes-agent/releases/tag/v2026.9.14" data-astro-cid-l7qxtvnw>GitHub release notes ↗</a><a href="https://github.com/NousResearch/hermes-agent/compare/v2026.9.11...v2026.9.14" data-astro-cid-l7qxtvnw>Full diff ↗</a><a href="https://github.com/NousResearch/hermes-agent/releases/tag/v2026.9.14" data-astro-cid-l7qxtvnw>Release notes (v2026.9.14) →</a></div></div></details><details class="rel" data-astro-cid-l7qxtvnw><summary data-astro-cid-l7qxtvnw><span class="r-arrow" data-astro-cid-l7qxtvnw>▶</span><span class="r-ver" data-astro-cid-l7qxtvnw>v0.21.2</span><span class="r-date" data-astro-cid-l7qxtvnw>2026-09-11</span></summary><div class="rel-body" data-astro-cid-l7qxtvnw><p class="r-summary" data-astro-cid-l7qxtvnw>Patch release. v0.21.0 shipped a large rewrite of the session store's connection handling, and for some installs it made <code>state.db</code> fragile: second writers cancelling each other's locks, healthy databases reported as corrupt, one bad row killing <code>sessions list</code>. This release closes that class and rolls up everything else that landed on <code>main</code> in the four days since v0.21.1.</p><div class="r-notes" data-astro-cid-l7qxtvnw><blockquote> <p>Patch release. v0.21.0 shipped a large rewrite of the session store's connection handling, and for some installs it made <code>state.db</code> fragile: second writers cancelling each other's locks, healthy databases reported as corrupt, one bad row killing <code>sessions list</code>. This release closes that class and rolls up everything else that landed on <code>main</code> in the four days since v0.21.1.</p> </blockquote> <h2>✨ Highlights</h2> <h3>state.db reliability campaign (six PRs, 44 issues closed)</h3> <p>If your <code>state.db</code> broke after 0.21.0, this is the release for you. Six PRs fix the root causes rather than the symptoms:</p> <ul> <li><strong>No more second writers.</strong> Profile gateways wrote hosted-room state into the <em>root</em> <code>state.db</code> every 5 seconds; the dashboard opened a writable handle on startup; cron's lifecycle guard did a raw <code>open()</code> on a live database (which cancels the gateway's POSIX locks — the classic "how to corrupt SQLite" recipe); <code>doctor --fix</code> would checkpoint under a live holder. All four are gone: hosted rooms live in <code>shared-state.db</code>, the dashboard opens read-only first, the guard goes through the tracked connection registry, and <code>doctor --fix</code> refuses a checkpoint it can't prove is safe. (#108076 — salvage #103489 @RikETS, #102682 @JoaoMarcos44, #108012 @Halldrix, #105428 @TaoMasterCoder)</li> <li><strong>Healthy WAL databases stop wedging.</strong> OpenZFS <code>(deleted)</code> dentries and a <code>close()</code> racing an <code>append_message</code> both produced a sticky <code>DeletedWalGenerationError</code> on a perfectly good store; the read pool was handed out under an unconfirmed journal mode; a transient <code>disk I/O error</code> on WSL2 killed <code>get_session</code> on the first attempt; and a "state.db locked" banner was broadcast after the lock had already cleared. (#108082 — salvage #107411 @chelsealong, #105578 @ca-shrimp, #105711 @gaoanze888, #106958 @nikkoxgonzales; co-authored @QDung210, @fangliquanflq, @Sahilvishnaliya)</li> <li><strong>FTS damage no longer kills your turn.</strong> An error scoped to the full-text-search index was classified as whole-file corruption and fail-closed the conversation. It's now <code>fts_index</code>: search degrades, the index rebuilds later, the transcript store is untouched. Same PR: doctor names structural damage honestly instead of "FTS write corruption", the FTS write probe catches the stale-index shape that passed every check while every write failed, <code>.recover</code> output no longer fails startup on orphan FTS5 shadow tables, header-zeroed databases recover instead of being refused, and the dashboard analytics poller returns a 503 instead of 520K tracebacks a day. (#108130 — salvage #97843 @SulthanZahran1 + #97841 @Finn763, #88604 #56824 #103657 @liuhao1024, #106890 @nftpoetrist, #103321 @jangomango76, #91413 @leegunwoo98, #102808 @TaoMasterCoder)</li> <li><strong>One corrupt row no longer kills <code>sessions list</code>, export, or insights.</strong> A TEXT timestamp or a <code>1e30</code> epoch used to crash the whole listing; malformed marker JSON crashed <code>json_extract</code>; more than 999 ids crashed bulk delete/prune. One <code>coerce_epoch()</code> helper on every reader (bad rows render <code>?</code> with a WARNING naming the session), a <code>json_valid</code> guard, IN-list chunking, and batched export hydration. (#108086 — salvage #106071 @Xipong, #101726 @efe-arv, #94701 @liuhao1024, #102679 @mssteuer, #100658 @Mi55ed)</li> <li><strong>Sessions never bind to or read another profile's database.</strong> The Desktop launch backend could pin itself to the wrong profile's <code>state.db</code> under a HERMES_HOME override race; <code>session_search</code> by bare ID silently scanned every profile and returned someone else's transcript; recovery guidance pointed at the wrong file; profile delete kept a handle open (WinError 32). (#108074 — salvage #102534 @HexLab98, #106975 @Sora-bluesky)</li> <li><strong>Opening state.db no longer takes the write lock when nothing needs writing.</strong> A one-shot <code>hermes</code> process opening the store behind a busy gateway stalled 4–20 s and then failed with "database is locked". Now 0.01 s. (#108067 — salvage #106751 @kshitijk4poor, #101881 @jonpol01)</li> </ul> <p>Also in the window from the same subsystem: a fresh <code>state.db</code> no longer publishes FTS tables before owning the rebuild lock (#106311), a handle that lost its WAL generation no longer checkpoints stale frames at shutdown (#106315, #106840), a clobbered first page is quarantined with its WAL instead of opened destructively (#106587), WAL setup leaves an unverifiable database untouched (#106568), and quarantined handles refuse VACUUM/FTS optimize (#106343, #106349). Most of these salvaged community diagnoses by @kshitijk4poor.</p> <h3>Multi-profile isolation hardening</h3> <p>A cluster of fixes for installs running several profiles under one gateway (multiplex): secondary-profile bots no longer inherit the default profile's allow-lists (#107616), adapters no longer send credentials to the default profile's host (#107617), stdio MCP servers no longer receive the default profile's vault secrets (#107630), <code>MEDIA:</code> delivery can no longer attach another profile's <code>.env</code> / <code>auth.json</code> / <code>state.db</code> (#107609), Feishu drive callbacks and <code>/p/<profile>/</code> webhook replies stay on the routed profile (#107620, #107626), and secondary profiles no longer get a sibling's Nous bearer from per-process memos (#107611).</p> <h3>Desktop backend spawn storms are over</h3> <p>Bot Mode used to spawn or dial one backend per profile on launch and on every roster tick, hovering the Bots roster spawned a backend per row, and profile switches could spawn a duplicate primary. (#108069, #108107, #108118, #108134, #107969, #108112 — salvage #102512, #103634, #103399, #107997 and others by @kshitijk4poor)</p> <h3>Password-blind credential vault</h3> <p>The agent can now sign in, pay, and fill addresses from 1Password, Bitwarden, or the local Hermes vault without ever seeing a secret; two-factor codes come from a saved authenticator key or are asked for in the user's UI (#106480, #107585). Private git plugins install with the user's stored credentials (#106981).</p> <h3>Plugin catalog and one Plugins page</h3> <p>A curated, SHA-pinned plugin index with CLI, admission CI, docs and dashboard (#69446); Desktop gets one Plugins page owning agent + desktop plugins, install, catalog and per-commit pinning (#107212, #107314, #107321); Radio ships as an opt-in SDK plugin (#107072).</p> <h3>Nous free tier and guided first launch</h3> <p>Free inference and connectors out of the box with one command to sign in (#105258, #105260), <code>/login</code> from a chat (#105261), connector tools (Gmail, Linear, Notion, ...) searchable through <code>tool_search</code> (#106842), and a guided first launch behind <code>HERMES_GUEST_ONBOARDING=1</code> (#107697, #107958, #107985, #108211).</p> <h2>🐛 Notable Bug Fixes</h2> <p><strong>Gateway & platforms</strong></p> <ul> <li>A bare <code>display:</code> key in config.yaml no longer crashes every gateway turn (#106305); a queued-lane final refused by the platform is recorded and redelivered (#106316); a stalled WebSocket send no longer blocks every later event (#106581); the first turn no longer waits on the Python toolchain probe (#106556).</li> <li>Telegram bots must @mention when <code>bots_require_mention</code> is on, breaking bot-to-bot loops (#106534); Matrix renders LaTeX (#106515); Signal renders markdown tables (#106538); WhatsApp replies to view-once messages keep their quote (#106541); media-only replies report SUCCESS everywhere (#106557).</li> </ul> <p><strong>Providers & routing</strong></p> <ul> <li><code>/model</code> and auxiliary auto never bill a provider you didn't select (#107366); never auto-switch to a provider you have no credentials for (#107281); Bedrock Claude/Converse/Mantle models survive <code>/model</code>, fallback and restore (#107621, #107658); Bedrock Guardrails enforced (#107815).</li> <li>Codex: patch-budget image 400 shrinks and retries (#106525); unentitled primary + fallback no longer oscillate (#106549); Azure Foundry replayed-reasoning rejection classified and pruned (#106718 @erosika). MCP OAuth refresh no longer erases the refresh token (#106185). Anthropic clients send exactly one credential (#107978).</li> <li>DeepSeek V4.1 Flash on Nous Portal and OpenRouter pickers (#107489); GPT Image 2.5 via OpenAI and FAL (#105988); Opus 5 / Fable 5.1 on the native Anthropic picker (#106636 @xxxigm).</li> </ul> <p><strong>Agent loop & compression</strong></p> <ul> <li>One blocked periodic callback no longer stalls lease refresh (#106308); a mid-turn <code>/steer</code> is persisted as its own user row (#106317, #106344); local-inference memory-ceiling rejections back off instead of compressing history (#106307); context-overflow after partial streaming ends the turn (#106567); length continuation stops when the prompt filled the window (#106571); compression no longer times out silently on aux retries (#106866); <code>model_thresholds</code> keys can be provider-scoped (#108061).</li> <li>Surface switch (Desktop↔TUI) no longer rebuilds the system prompt and busts the prompt cache (#105844); CLI keeps the <code>api_content</code> sidecar so the cache survives an early persist (#105842).</li> </ul> <p><strong>CLI, TUI & Desktop</strong></p> <ul> <li><code>hermes -z --resume</code> continues the session (#106313); Shift+letter and Cmd+Shift+Z work on extended-key terminals (#90674 @francip, #105493); <code>browser_exec</code> timeout kills the whole process tree (#106589); update checks poll the GitHub API once a day instead of git-fetching every 30 min (#107648); <code>hermes update</code> names the real cause and can't hang on a stalled fetch (#108053).</li> <li>Desktop: UI language survives the update relaunch (#106476), expired OAuth grants get a one-click re-sign-in (#106965), HUD mode shows the transcript again and always gives the window back (#107491, #107423), the backend exits when its Desktop parent dies (#107977), Windows updates stop reporting false failures (#106175, #107183), WSLg renders on the Windows GPU (#106528), Telegram quick setup with QR ported from the dashboard (#107242), and ~60 more Desktop fixes largely from @OutThisLife and @kshitijk4poor.</li> </ul> <p><strong>Cron & Kanban</strong></p> <ul> <li>An off-tick "run now" no longer cancels the next scheduled run (#106306); a killed manual run no longer blocks the next one for 5 minutes (#106733); a one-shot changed to recurring keeps firing (#106532); unpinned jobs run on their creation-snapshot model (#106499); <code>--clone-all</code> no longer copies cron jobs (#106478); <code>kanban promote</code> refuses undone parents (#106550); <code>kanban_request_review</code> rejects unknown reviewer profiles (#106547).</li> </ul> <p><strong>Tools & memory</strong></p> <ul> <li>A stdio MCP server dying mid-call no longer replays the tool call (#106546); a skills-only background review can no longer delete memory entries (#106310); mem0 memory no longer drops long turns (#106542); <code>tool_search</code> returns nothing rather than five tools sharing one word (#106676); remote NOPASSWD sudo no longer prompts (#107939); RSS and Reddit reading no longer activate by default (#105873).</li> </ul> <p><strong>Housekeeping</strong></p> <ul> <li><code>config.yaml</code> backups live in one bounded <code>backups/config/</code> dir (#106388); <code>hermes backup</code> keeps the newest 3 zips (#106455); <code>hermes setup --reset</code> backs up the real config (#106453); <code>debug share</code> retention shrunk to 1 day on the dpaste fallback (#106531).</li> </ul> <h2>👥 Contributors</h2> <p>Thank you to the <strong>140 contributors</strong> whose commits, co-author trailers, and salvaged PRs landed in this window.</p> <p><strong>state.db campaign — salvaged PR authors:</strong> @RikETS, @JoaoMarcos44, @Halldrix, @TaoMasterCoder, @chelsealong, @ca-shrimp, @gaoanze888, @nikkoxgonzales, @QDung210, @fangliquanflq, @Sahilvishnaliya, @kshitijk4poor, @jonpol01, @HexLab98, @Sora-bluesky, @Xipong, @efe-arv, @liuhao1024, @mssteuer, @Mi55ed, @SulthanZahran1, @Finn763, @nftpoetrist, @jangomango76, @leegunwoo98, @ggoldani.</p> <p><strong>state.db campaign — issue reporters</strong> (the forensics in these threads were often better than the fixes): @thedigitalcarpenterdad, @Rroven, @aoeman84, @StephanRosin, @rubensandrade-sketch, @wanliqin, @chenzheshushi-commits, @CarlosReyesPena, @revazone, @reservassai-art, @Cuttingwater, @soroush5, @e-shizz, @shobhit-87labs, @shivanathd, @hoelzl, @i8ei, @Ace-Kelly, @YinsenWANG, @zbabiarz, @Sravanjangam, @0gl20shk0sbt36, @RChina, @bronder, @ccwssy, @bottenbenny, and @Hitman117890 whose Discord report kicked the campaign off.</p> <p><strong>Everyone in the window (alphabetical):</strong> @0genlab, @0xalydev, @100yenadmin, @1052326311, @686f6c61, @69k4xmdfm2-blip, @abundantbeing, @Adolanium, @Ahmett101, @albert748, @AlexxRussell, @alt-glitch, @auroracapital, @austinpickett, @babatorik, @Bartok9, @benbarclay, @bennybuoy, @brian717, @briandevans, @buihongduc132, @ca-shrimp, @cervantesh, @Cesar-Azeredo, @ChanPark03, @chelsealong, @ckomma, @ClintonEmok, @crazyief, @ctaylor86, @dalzio, @DavidMetcalfe, @Drexuxux, @edosulai, @efe-arv, @emozilla, @ericmaddox, @erosika, @ethernet8023, @everm1nd, @FalconOrtiz, @fangliquanflq, @Finn763, @FirmamentalSpring, @francip, @g3org3yo, @gaoanze888, @ggoldani, @Halldrix, @haydster7, @hbizi, @helix4u, @HexLab98, @huklaa, @IAvecilla, @infinitycrew39, @jahfaliabdulrahman-dev, @jangomango76, @JoaoMarcos44, @jonpol01, @jwilson411, @KeyArgo, @kokhlo, @KoNit-K, @kshitijk4poor, @kyssta-exe, @leegunwoo98, @lesterlxt, @liuhao1024, @Mabolla, @manuelschipper, @MaxFreedomPollard, @mearls0501, @mengyuyuan, @Mi55ed, @MiseHinoha, @mjshorty, @mkrb84, @moisesvalero, @moken627-hub, @mssteuer, @nateEc, @nftpoetrist, @nickseelert, @nikkoxgonzales, @notwitcheer, @onuraycicek, @outdog-hwh, @OutThisLife, @philmossman, @phuongvm, @pierrenode, @portavales, @PRATHAMESH75, @QDung210, @rewbs, @RikETS, @romanovzky, @ryantuc, @Sahilvishnaliya, @salch-cred, @sgarrand, @shannonsands, @simpolism, @Solitud1nem, @somewheresy, @Sora-bluesky, @sprmn24, @squevo, @StellarisW, @Stoltemberg, @SulthanZahran1, @Svector-anu, @szicely, @TaoMasterCoder, @teknium1, @ten82e, @thedavidweng, @tkaufmann, @Totoro-qaq, @Tranquil-Flow, @tuancookiez-hub, @TurgutKural, @ugoenyioha, @unsupportedpastels, @victor-kyriazakos, @webtecnica, @wliu-dev, @wukangcheng1994, @Xipong, @Xixiartemis, @xkam7ar, @xxxigm, @yavarb, @yoniebans, @Youssef, @yoyodine-industries, @yuanchenglu, @YuhGuan, @Zeus-Deus.</p> <p>Also: Youssef.</p> <h2>Updating</h2> <ul> <li>Existing install: <code>hermes update</code></li> <li>Fresh install: <code>curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash</code></li> <li>Managed deployments should update through their deployment tooling using the new tag.</li> <li>If your <code>state.db</code> was already damaged by 0.21.0/0.21.1: run <code>hermes doctor</code> first; it now names structural vs index damage correctly and points at <code>hermes sessions recover --inspect-only</code> (profile-pinned) when a rebuild isn't enough.</li> </ul> <p><strong>Full Changelog:</strong> <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/compare/v2026.9.7...v2026.9.11">v2026.9.7...v2026.9.11</a></p> </div><div class="link-row" data-astro-cid-l7qxtvnw><span class="lr-label" data-astro-cid-l7qxtvnw>Links</span><a href="https://github.com/NousResearch/hermes-agent/releases/tag/v2026.9.11" data-astro-cid-l7qxtvnw>GitHub release notes ↗</a><a href="https://github.com/NousResearch/hermes-agent/compare/v2026.9.7...v2026.9.11" data-astro-cid-l7qxtvnw>Full diff ↗</a><a href="https://github.com/NousResearch/hermes-agent/releases/tag/v2026.9.11" data-astro-cid-l7qxtvnw>Release notes (v2026.9.11) →</a></div></div></details><details class="rel" data-astro-cid-l7qxtvnw><summary data-astro-cid-l7qxtvnw><span class="r-arrow" data-astro-cid-l7qxtvnw>▶</span><span class="r-ver" data-astro-cid-l7qxtvnw>v0.21.1</span><span class="r-date" data-astro-cid-l7qxtvnw>2026-09-07</span></summary><div class="rel-body" data-astro-cid-l7qxtvnw><p class="r-summary" data-astro-cid-l7qxtvnw>Patch release. This tag rolls up current main since v0.21.0 for tagged deployments and downstream consumers.</p><div class="r-notes" data-astro-cid-l7qxtvnw><blockquote> <p>Patch release. This tag rolls up current main since v0.21.0 for tagged deployments and downstream consumers.</p> </blockquote> <h2>About this release</h2> <p>The rollup includes the codebase modularization, file-operation and startup performance work, provider and model updates, desktop session controls and browser annotations, MCP authorization improvements, cron scheduling and delivery fixes, and delegation reliability improvements. This patch does not attempt to enumerate or announce every feature in the window.</p> <p><strong>Full curated release notes for this window will ship with v0.22.0</strong>, covering everything since v0.21.0, including the intervening patch releases, feature details, and complete contributor credits.</p> <h2>Updating</h2> <ul> <li>Existing install: <code>hermes update</code></li> <li>Fresh install: <code>curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash</code></li> <li>Managed deployments should update through their deployment tooling using the new tag.</li> </ul> <p><strong>Full Changelog:</strong> <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/compare/v2026.8.31...v2026.9.7">v2026.8.31...v2026.9.7</a></p> </div><div class="link-row" data-astro-cid-l7qxtvnw><span class="lr-label" data-astro-cid-l7qxtvnw>Links</span><a href="https://github.com/NousResearch/hermes-agent/releases/tag/v2026.9.7" data-astro-cid-l7qxtvnw>GitHub release notes ↗</a><a href="https://github.com/NousResearch/hermes-agent/compare/v2026.8.31...v2026.9.7" data-astro-cid-l7qxtvnw>Full diff ↗</a><a href="https://github.com/NousResearch/hermes-agent/releases/tag/v2026.9.7" data-astro-cid-l7qxtvnw>Release notes (v2026.9.7) →</a></div></div></details></div><div data-astro-cid-l7qxtvnw><h3 class="month-h" data-astro-cid-l7qxtvnw>August 2026</h3><details class="rel" data-astro-cid-l7qxtvnw><summary data-astro-cid-l7qxtvnw><span class="r-arrow" data-astro-cid-l7qxtvnw>▶</span><span class="r-ver" data-astro-cid-l7qxtvnw>v0.21.0</span><span class="r-codename" data-astro-cid-l7qxtvnw>Pantheon Release</span><span class="r-date" data-astro-cid-l7qxtvnw>2026-08-31</span></summary><div class="rel-body" data-astro-cid-l7qxtvnw><p class="r-summary" data-astro-cid-l7qxtvnw><strong>The Pantheon Release.</strong> v0.20.0 made Hermes the herald — he spoke, and he carried word to other agents. In v0.21.0 the gods assemble. Bot Mode ships built into the desktop app: a society of named agents with their own faces and group chats, where your bots talk to each other — and to you — like a team, not a toolbox. Around that spine: cron jobs gained memory and continuity so scheduled agents actually learn between runs, subagents can be steered live mid-flight, the MCP surface became a real command center, and the agent can now drive the desktop's own browser. This release rolls up everything from the v0.20.1–v0.20.6 infrastructure patch tags — those windows are fully documented here.</p><div class="r-notes" data-astro-cid-l7qxtvnw><blockquote> <p><strong>The Pantheon Release.</strong> v0.20.0 made Hermes the herald — he spoke, and he carried word to other agents. In v0.21.0 the gods assemble. Bot Mode ships built into the desktop app: a society of named agents with their own faces and group chats, where your bots talk to each other — and to you — like a team, not a toolbox. Around that spine: cron jobs gained memory and continuity so scheduled agents actually learn between runs, subagents can be steered live mid-flight, the MCP surface became a real command center, and the agent can now drive the desktop's own browser. This release rolls up everything from the v0.20.1–v0.20.6 infrastructure patch tags — those windows are fully documented here.</p> </blockquote> <hr> <h2>✨ Highlights</h2> <ul> <li><p><strong>Bot Mode — your agents become a society, built in</strong> — Bot Mode is now a bundled, default-on part of the desktop app: every agent profile gets a name, a deterministic avatar face (with randomize/lock controls), and a place in a shared roster. Create Discord-style group chats where multiple bots and you talk in one room, @-mention any bot from the composer, and give rooms names and pictures. Before, "multi-agent" meant plumbing; now it looks like a chat app full of coworkers. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/87886">#87886</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/88243">#88243</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/89386">#89386</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/96726">#96726</a> — @teknium1, @OutThisLife, @dokterdok)</p> </li> <li><p><strong><code>hermes peer</code> — bot-to-bot DMs between your agents</strong> — Any Hermes agent can now message any other by handle, across profiles and gateways, from the CLI or from inside a conversation. Ask your research bot to hand findings to your coding bot and get the reply back where you can read it. Replies land in each agent's canonical Bot Chat, so conversations between agents are durable and inspectable, not fire-and-forget. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/88725">#88725</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/88178">#88178</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/91487">#91487</a> — @teknium1)</p> </li> <li><p><strong>Cron jobs that remember</strong> — Scheduled jobs stopped being goldfish. Cron agents now load and update persistent memory like every other agent, <code>continuity=true</code> carries each run's output into the next (so a monitor can dedupe against what it already reported), every job gets a durable notepad scratchpad, monitor-mode jobs skip the LLM entirely when nothing changed, and cron output can land in a bot's canonical Bot Chat — where the bot actually responds. Your 9am briefing job now knows what it told you yesterday. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/91447">#91447</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/80774">#80774</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/81139">#81139</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/81138">#81138</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/91487">#91487</a> — @teknium1, @smwbev)</p> </li> <li><p><strong>Steer your subagents while they run</strong> — <code>delegate_task</code> gained live orchestration: list running children, steer one mid-flight with a course correction, or stop it early and keep the partial result. Add optional JSON-schema validation on child outputs, per-delegation cost surfaced in results, and raised defaults (250 iterations, 10 concurrent children) — delegation went from fire-and-pray to actually managed parallel work. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/85232">#85232</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/81144">#81144</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/81142">#81142</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/86506">#86506</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/86745">#86745</a> — @teknium1)</p> </li> <li><p><strong>The MCP command center</strong> — MCP servers and the catalog merged into one coherent desktop page with drag-in "paste anything" import, background health checks that nudge you to re-auth before a tool call fails, a fleet cost/usage overlay showing schema token estimates and 30-day usage per server, and <code>hermes://</code> deep links that install an MCP server with explicit confirmation. Managing twenty MCP servers used to be config-file archaeology; now it's a dashboard. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/87525">#87525</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/87572">#87572</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/87576">#87576</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/87579">#87579</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/87581">#87581</a> — @teknium1)</p> </li> <li><p><strong>A CLI power wave</strong> — Ctrl+P opens a fuzzy command palette, the <code>/model</code> picker filters as you type, <code>/status</code> shows reasoning mode, pending approvals, and context usage, and the status bar can display live cache-hit %, latency, and tokens/sec with per-field toggles. Plus: a global emergency stop, session pin/unpin, rotating task-oriented composer placeholders — and Ghostty-level <strong>terminal pets</strong>, because a companion should have a companion. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/90730">#90730</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/90717">#90717</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/90745">#90745</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/98250">#98250</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/98282">#98282</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/97666">#97666</a> — @teknium1, and salvaged community work)</p> </li> <li><p><strong>The agent drives the desktop's browser</strong> — The in-app browser stopped being a window the agent could only look at: Hermes now navigates, clicks, and reads it directly, and pages can be popped out to your system browser with full link context menus. Ask it to walk a docs site or debug a web app and watch it happen inside your own app. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/90197">#90197</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/89366">#89366</a> — @OutThisLife, @ethernet8023)</p> </li> <li><p><strong>Six new providers and a model catalog wave</strong> — Meta Model API (Muse Spark) arrives as a built-in provider, alongside CommandCode, Tencent TokenPlan, Nebius Token Factory, Ramp Router, and Actual Computer. The catalogs picked up GLM-5.3-Flash, qwen3.8-max/flash, Gemini 3.7 Flash, MiniMax M3 free, and Nemotron 3.5 Lightning — and <code>model_overrides</code> lets you patch any model's context window or pricing yourself without waiting on a release. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/88565">#88565</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/88308">#88308</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/97917">#97917</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/97916">#97916</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/97915">#97915</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/85560">#85560</a> — @teknium1 and community)</p> </li> <li><p><strong>Security hardening across the board</strong> — Protected agent-instruction files (AGENTS.md, skills, memory stores) now always require write approval so a prompt-injected agent can't quietly rewrite its own standing orders. A deep redaction sweep closed secret-leak gaps across terminal errors, <code>.env</code> file reads, checkpoints, and ACP logs; the approval system learned Windows destructive commands; and macOS permission grants finally survive updates via a stable TCC signing identity. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/81152">#81152</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/80965">#80965</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/84428">#84428</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/95091">#95091</a> — @teknium1 and community)</p> </li> </ul> <hr> <h2>🏗️ Core Agent & Architecture</h2> <h3>Providers & Models</h3> <ul> <li><strong>New providers:</strong> Actual Computer inference (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/79644">#79644</a>, salvage of #26491), CommandCode with GOAT/Pro/Max plans (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/88308">#88308</a>, salvage of #32909), Meta Model API (Muse Spark) as a built-in provider plugin (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/88565">#88565</a>), Tencent TokenPlan (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/97917">#97917</a>), Nebius Token Factory (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/97916">#97916</a>), and Ramp Router (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/97915">#97915</a>).</li> <li><strong>Model catalog wave:</strong> qwen3.8-max and qwen3.8-flash (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/78024">#78024</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/96979">#96979</a>), Gemini 3.7 Flash (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/85526">#85526</a>), GLM-5.3-Flash across OpenRouter/Nous/z.ai/OpenCode (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/95621">#95621</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/96293">#96293</a>), MiniMax M3 + Inkling free SKUs (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/96264">#96264</a>), Nemotron 3.5 Lightning (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/84645">#84645</a>), Meta Muse Spark 1.2 (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/88600">#88600</a>).</li> <li><strong>Per-model metadata overrides</strong> via <code>model_overrides</code> config — patch context windows, pricing, or capabilities for any model without waiting on a release (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/85560">#85560</a>).</li> <li><strong>Data-training-tier warnings</strong> — a unified selection-guard registry warns you across every picker surface when a model trains on your data (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/85917">#85917</a>).</li> <li><strong>Pip-installed model providers</strong> discovered via entry points — third parties can ship providers as packages (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/85504">#85504</a>, salvage #81419).</li> <li><strong>Prompt caching engaged for LiteLLM Claude</strong> on the OpenAI wire (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/87517">#87517</a> — @kshitijk4poor) and api.meta.ai routed through the Responses API for caching (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/88601">#88601</a>).</li> <li><strong>Codex GPT context defaults</strong> back to the verified 272K, with explicit -900k picker variants for the large window (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/92797">#92797</a>).</li> </ul> <h3>Agent Loop & Reliability</h3> <ul> <li><strong>Stalled-provider recovery</strong> — a stalled stream no longer leaves Desktop silent or burns the retry budget (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/87236">#87236</a> — @fangliquanflq).</li> <li><strong>MoA hardening cluster</strong> — the Mixture-of-Agents facade now survives client rebuilds, stream retries, provider rotation, and fallback/restore without leaking prepared requests to native clients (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/90212">#90212</a> and siblings).</li> <li><strong>Structured-output resilience</strong> — auxiliary calls translate <code>response_format</code> for Anthropic wires and retry when a provider rejects structured output (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/89589">#89589</a> — @ethernet8023).</li> <li><strong>Compression: lean tail mode</strong> + a compaction recall eval harness to measure what compression actually preserves (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/87326">#87326</a>).</li> <li><strong>Oversized tool results spill to cache</strong> instead of being truncated in sandbox-less sessions (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/89028">#89028</a>).</li> <li><strong><code>clarify</code> asks multiple independent questions in one call</strong> — one form instead of a chain of round-trips (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/89467">#89467</a> — @ethernet8023).</li> <li><strong>Verify subsystem</strong> (port from superagent-ai/grok-cli): run-recipe detection + environment manifest so "it works" claims are backed by detected build/test commands (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/80686">#80686</a>).</li> </ul> <h3>Sessions & State</h3> <ul> <li><strong>Resumed transcripts never re-append</strong> — <code>_db_persisted</code> stamped at row load time (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/92539">#92539</a> — @kshitijk4poor).</li> <li><strong>SessionDB context-manager protocol</strong> for leak-free DB lifecycles (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/88048">#88048</a> — @jackulau).</li> <li><strong>Instant session naming</strong> from the opening message, with sticky titles across resume (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/81985">#81985</a> — @OutThisLife).</li> <li><strong>Session pin/unpin from the CLI</strong> — durable keep flags (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/80761">#80761</a>).</li> </ul> <h2>📱 Messaging Platforms (Gateway)</h2> <ul> <li><strong>Slack native live cards</strong> — real streaming replies via chat.startStream plus opt-in plan/task cards for tool progress (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/85476">#85476</a>); outbound link-preview suppression across native and relay planes (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/95142">#95142</a> — @benbarclay).</li> <li><strong>Telegram inline picker</strong> — every command and skill searchable via @botname, bypassing Telegram's command-menu cap (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/98317">#98317</a>).</li> <li><strong>Relay matured</strong> — native static/dynamic plugin initialization (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/77915">#77915</a> — @bbednarski9), live-card ops with draft streaming + task cards (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/85796">#85796</a> — @victor-kyriazakos), session-span segmentation (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/85467">#85467</a>), voice-note STT restored over the relay lane (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/95274">#95274</a> — @benbarclay), transport dedupe/fail-fast fixes (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/89584">#89584</a>).</li> <li><strong>Gateway control socket</strong> — fleet consumers query the gateway itself (identify/status), and updaters pause gateways gracefully instead of tree-killing them (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/92447">#92447</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/95695">#95695</a>).</li> <li><strong>Selective multiplex profile serving</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/83400">#83400</a>), per-profile MCP lifecycle RPCs (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/86473">#86473</a>), roster previews showing the latest message (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/85905">#85905</a>), concise background-process notifications by default (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/85877">#85877</a>).</li> <li><strong>Turn-reaper stack dumps</strong> — when the watchdog fires, wedged worker stacks are captured for diagnosis (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/86248">#86248</a>), with loop-watchdog tuning knobs wired end-to-end (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/92317">#92317</a>).</li> <li><strong>Split-delivery bug class closed</strong> — swallowed finals and split deliveries fixed as a class (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/79669">#79669</a> — @kshitijk4poor, salvages #78558).</li> </ul> <h2>🖥️ Desktop App</h2> <ul> <li><strong>Bot Mode built in</strong> — see Highlights. Full sub-catalog: attributed agent-to-agent message cards (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/85855">#85855</a>), sender-side delivery notices (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/85888">#85888</a>), paint-first hydration for instant wakes (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/89510">#89510</a>), editable group names and room pictures (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/89371">#89371</a>), Routines pane (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/88731">#88731</a>), rebuilt on the app design system (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/96726">#96726</a> — @OutThisLife).</li> <li><strong>In-app browser the agent can drive</strong> — the agent uses the desktop's browser tab, not just looks at it (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/90197">#90197</a> — @OutThisLife), with external-open + link context menus (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/89366">#89366</a>).</li> <li><strong>Detached update hand-off on every OS</strong> — quit → update → reopen with a single shim window; Windows desktop updates no longer park on "Updating Hermes" (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/83634">#83634</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/90937">#90937</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/95897">#95897</a>).</li> <li><strong>Quality-of-life wave</strong> — HUD snaps to cursor on ⌘⇧G (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/83130">#83130</a>), paste into the composer without focusing it (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/84955">#84955</a>), per-turn duration badges (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/87245">#87245</a>), readable macOS window translucency (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/88744">#88744</a>), Linux launcher entry (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/76456">#76456</a>), Linux keychain auto-detection (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/84903">#84903</a>), cron + blueprint recipes in the sidebar (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/85162">#85162</a>).</li> <li><strong>Send Diagnostics</strong> — error cards can upload a redacted debug bundle with a support handoff (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/92020">#92020</a>).</li> <li><strong>Seq-stamped event replay</strong> — lossless desktop reconnect over WebSocket (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/94219">#94219</a> — @kshitijk4poor).</li> <li><strong>God-file decomposition</strong> — the desktop codebase refactored into atomic modules (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/89611">#89611</a> — @OutThisLife).</li> </ul> <h2>🖥️ CLI & TUI</h2> <ul> <li>See Highlights for the power wave (command palette, fuzzy /model, richer /status, live status-bar metrics, pets).</li> <li><strong><code>hermes approval-check</code></strong> — dry-run approval verdicts for a command without running it (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/81137">#81137</a>).</li> <li><strong>Session titles in status bars</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/81947">#81947</a>); subagent model exposed in the auxiliary-models picker (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/80463">#80463</a>).</li> <li><strong>Ctrl+C fixed</strong> — stopped pushing the Kitty keyboard protocol that broke interrupts (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/87074">#87074</a>).</li> </ul> <h2>🔧 Tool System & MCP</h2> <ul> <li><strong>MCP command center</strong> — see Highlights (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/87525">#87525</a> et al.).</li> <li><strong>Interrupted commands no longer poison cwd</strong> — the terminal won't adopt a stale working directory after an interrupt (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/85654">#85654</a> — @ethernet8023).</li> <li><strong>Windows rename contention recovery</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/84852">#84852</a> — @OutThisLife); colon-bearing session IDs no longer break sandbox mounts (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/93488">#93488</a>, consolidated 6 PRs).</li> <li><strong>Vision output uncapped</strong> — aux vision calls stop clamping max_tokens (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/75253">#75253</a> — @adikpb).</li> <li><strong>Subagent work protected</strong> — delegate no longer deletes a child's uncommitted work when git inspection fails (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/88419">#88419</a> — @kshitijk4poor).</li> </ul> <h2>🧩 Skills Ecosystem</h2> <ul> <li><strong>Productivity skill wave</strong> (salvaged from @community proposals): document-to-action-items, meeting-action-items, email-inbox-triage, github-issue-to-pr, weekly-review-planning, competitor-news-monitor, product-price-monitor, social-media-content-calendar (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/81185">#81185</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/81749">#81749</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/81672">#81672</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/81708">#81708</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/81936">#81936</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/81945">#81945</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/81906">#81906</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/81942">#81942</a>).</li> <li><strong>HAR-derived API clients</strong> — watch a website once, then call its hidden API directly with no browser (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/70823">#70823</a>).</li> <li><strong>publish-site</strong> — versioned website publishing to GitHub/Cloudflare/Netlify Pages (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/72189">#72189</a>); <strong>session-librarian</strong> for prompt-driven session management (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/84917">#84917</a>); <strong>blocked-page-recovery</strong> fallback ladder (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/84906">#84906</a>); <strong>merge-reconciler</strong> for neutral multi-agent conflict resolution (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/83063">#83063</a>); Box productivity skill (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/85767">#85767</a>); ast-grep codemods (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/80892">#80892</a>); draw-your-font + simple-english optional skills (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/80814">#80814</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/80811">#80811</a>); plan-interrogation (evolved grill-me) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/97831">#97831</a>).</li> <li><strong>Advisory SKILL.md linter on create</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/81896">#81896</a>); skills-hub live-repo fallback for missing optional skills (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/82780">#82780</a>).</li> </ul> <h2>⏰ Cron, Delegation & Multi-Agent</h2> <ul> <li><strong>Cron memory + continuity</strong> — see Highlights (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/91447">#91447</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/80774">#80774</a>).</li> <li><strong>Monitor-mode jobs</strong> with hash-suppressed change detection (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/81138">#81138</a>); per-job durable notepads (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/81139">#81139</a>); pre-dispatch config validation (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/81140">#81140</a>); acked failure signatures stop re-pinging (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/95017">#95017</a>); per-job reasoning-effort pinning (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/91244">#91244</a>); "Trigger now" executes immediately and safely (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/70638">#70638</a> — @smwbev); model-drift impact surfaced in Desktop (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/83266">#83266</a> — @ctaylor86).</li> <li><strong>Live subagent orchestration</strong> — see Highlights (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/85232">#85232</a>); structured-output schemas on delegate_task (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/81144">#81144</a>); batch-quality validation before spawning (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/81141">#81141</a>); truncation markers on capped children (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/86641">#86641</a>).</li> <li><strong>Kanban hardening</strong> — collision-hotspot flagging (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/83428">#83428</a>), split-brain decision-ownership contract (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/83424">#83424</a>), memory-aware dispatch guard (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/88115">#88115</a>), notify/wake delivery modes (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/85487">#85487</a>).</li> </ul> <h2>📊 Observability</h2> <ul> <li><strong>Model/provider usage reporting</strong> and bounded tool-metrics aggregation land as an observability subsystem (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/68881">#68881</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/68882">#68882</a> — @afourniernv), with lifecycle ops bounded so a wedged pipeline can never block the agent (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/83514">#83514</a> — @victor-kyriazakos).</li> </ul> <h2>🔒 Security & Reliability</h2> <ul> <li><strong>Protected instruction files</strong> — writes to AGENTS.md/skills/memory always require approval (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/81152">#81152</a>).</li> <li><strong>Redaction sweep</strong> — emission gaps closed across env-name variants, control-splits, process(list), checkpoints (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/80965">#80965</a>); <code>.env</code> reads redacted via file-read detection (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/80964">#80964</a>); terminal exception results + ACP stderr (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/81675">#81675</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/81686">#81686</a>); SSH target logging (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/88232">#88232</a>).</li> <li><strong>Windows approval coverage</strong> — destructive Windows commands and paths now trip the approval system (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/84428">#84428</a>).</li> <li><strong>Supply-chain response</strong> — the Blender MCP catalog entry and skill were removed after an upstream compromise (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/83404">#83404</a>); plugin installs get Tier-1 security scanning (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/80728">#80728</a>).</li> <li><strong>macOS TCC identity</strong> — permission grants survive every update via <code>hermes desktop --setup-tcc-identity</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/95091">#95091</a>).</li> <li><strong>PKCE cookie fix</strong> — SameSite=None over HTTPS with a matching clear path (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/83536">#83536</a> — @benbarclay).</li> </ul> <h2>🏗️ Infrastructure, CI & Packaging</h2> <ul> <li><strong>Real-OS CI</strong> — macOS and Windows CI lanes with tests gated by real host OS (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/77992">#77992</a> — @ethernet8023); work lanes on 32-core runners (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/92009">#92009</a>); review comments + image builds moved out of the hot CI path (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/82668">#82668</a>).</li> <li><strong>Bootstrap installer</strong> no longer waits on pipe EOF (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/90941">#90941</a> — @OutThisLife).</li> </ul> <h2>🐛 Notable Bug Fixes</h2> <ul> <li>Desktop session races (Stop→edit/resend, submit ownership) fixed as a cluster (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/86594">#86594</a>); workspace-pane idle flicker (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/97513">#97513</a>); assistant-ui boundary recovery (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/81232">#81232</a>).</li> <li>Kanban schema re-creation when a cached DB path loses it (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/83619">#83619</a> — @JoaoMarcos44).</li> <li>Cron jobs no longer inherit a kanban worker's dispatcher identity (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/79657">#79657</a> — @kshitijk4poor); relay-fronted Slack cron delivery (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/85340">#85340</a> — @victor-kyriazakos).</li> <li>Model-picker serves cached custom-provider catalogs on no-probe opens (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/81973">#81973</a> — @austinpickett).</li> <li>Docker sandbox MEDIA attachments no longer silently drop (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/94509">#94509</a>); desktop binary attachments delivered into sandbox backends (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/81717">#81717</a>).</li> <li>Session-hygiene compaction cooldown escalates on repeat failures (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/79741">#79741</a> — @kshitijk4poor).</li> <li>Provider-injected parameter 400s retried instead of aborting the turn (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/91643">#91643</a>).</li> <li>…and roughly two thousand more closed issues' worth — this window averaged ~85 merged PRs per day.</li> </ul> <h2>↩️ Reverted in this window (not shipping)</h2> <ul> <li><strong>Model Council mode (/council)</strong> — landed then reverted; not in this release.</li> <li><strong>DCP context engine</strong> — landed then reverted; not in this release.</li> <li><strong>WS-only gateway server (#94245)</strong> — merged then reverted (#96118); FastAPI remains on the desktop boot path. The seq-stamped event replay (#94219) DID ship.</li> <li>Electron rolled back to 40.10.2; TCC interpreter anchor removed (superseded by the signing-identity approach that shipped).</li> </ul> <h2>👥 Contributors</h2> <h3>Core Team (Nous Research)</h3> <ul> <li><strong>@teknium1</strong> — release direction, Bot Mode, MCP command center, cron memory, and ~1,340 merged PRs</li> <li><strong>@kshitijk4poor</strong> (374 PRs) — gateway delivery classes, session persistence, event replay, MoA/caching fixes</li> <li><strong>@OutThisLife</strong> (209 PRs) — desktop architecture, Bot Mode UI, in-app browser, update hand-off</li> <li><strong>@ethernet8023</strong> (38 PRs) — OS-gated CI lanes, clarify multi-question, tool cwd safety, aux structured-output resilience</li> <li><strong>@benbarclay</strong> (17 PRs) — relay voice STT, Slack link previews, PKCE</li> <li><strong>@victor-kyriazakos</strong> (15 PRs) — relay live cards, observability bounding</li> <li><strong>@rob-maron</strong>, <strong>@austinpickett</strong>, <strong>@jquesnelle</strong>, <strong>@shannonsands</strong> — providers, dashboard, model catalogs, and more</li> </ul> <h3>Top Community Contributors (by merged PR count)</h3> <ul> <li><strong>@helix4u</strong> (31 PRs) — wake-word capture, session UX, fix wave across desktop and gateway</li> <li><strong>@fangliquanflq</strong> (17 PRs) — stalled-provider recovery and agent-loop resilience</li> <li><strong>@bbednarski9</strong> — relay native plugin integration; <strong>@HexLab98</strong>, <strong>@xxxigm</strong>, <strong>@afourniernv</strong> (observability), <strong>@liuhao1024</strong>, <strong>@Christopher-Schulze</strong>, <strong>@Adolanium</strong>, <strong>@webtecnica</strong>, <strong>@smwbev</strong> (cron Trigger-now), <strong>@ctaylor86</strong> (cron drift in Desktop), <strong>@JoaoMarcos44</strong> (kanban schema recovery), <strong>@jackulau</strong> (SessionDB context manager), <strong>@adikpb</strong> (vision output caps), <strong>@dokterdok</strong> (Bot Mode unification), and many more.</li> </ul> <h3>All Contributors</h3> <p>Huge thanks to every one of the 760+ people who contributed code, co-authored fixes, or had their work salvaged into this release:</p> <p>@03farren, @0xarkstar, @0xGr1mm, @0xWhiteMage, @100yenadmin, @1052326311, @29206394, @2ndNatureAI, @3Nya3, @3x3xX3N0N, @404Dealer, @4adwentures, @5Hyeons, @686f6c61, @69k4xmdfm2-blip, @6ylqq, @75day, @a-espinoza, @A-Snegin, @a-yeyang, @a0000001, @A2chitect, @abitme, @abundantbeing, @acewong7, @acgh213, @adamcap926, @addelh, @adikpb, @Adolanium, @adurham, @adybag14-cyber, @afourniernv, @ag9920, @ahmadalzaro1, @Ahmett101, @ai-ag2026, @AIalliAI, @aider4ryder, @Ailirag, @Aintworth, @airo7, @AiwendilInTheWoods, @akivavh, @AL-ZiLLA, @Al3xand3r1987, @albertodepaola, @aldoeliacim, @aleksclark, @AlexanderPrendota, @alexdev03, @AlexFucuson9, @AlexGabbia, @AlexMnrs, @algf, @Allecpu, @allin2, @alt-glitch, @amanning3390, @andrexibiza, @andyst-dev, @angel12, @angeon922-collab, @Angriff36, @aniruddhaadak80, @annguyenNous, @anuvratrastogi, @Aoshi-Dev, @appletechie, @arccat-114, @arcimun, @ArthurFranckPat, @aryaxo, @asdasdadhj, @ashah360, @AshuJoshi, @asimons81, @assimovt, @austinpickett, @AVW7, @Axmr1, @aydnOktay, @ayushnangia, @baihemax, @bananawalnut, @Bartok9, @bashrusakh, @bbednarski9, @BearHuddleston, @benbarclay, @benfrank241, @beplee, @bgrablin, @bka9, @BkashJEE, @BlackishGreen33, @BlakeB254, @blunkjamie-dev, @BobClawblaw, @bradmarshall987, @brian717, @briandevans, @BrianFranco, @BrinShadewater, @brucexu-eth, @BrunoBza, @buffpesos, @burak33bb, @C-EXCITE-STUDIO, @c-pompa, @cadezhou, @calvinnwq, @capt-marbles, @carbongotfound, @carlotestor, @Carry00, @cation98, @ccowan93, @cedricziel, @cervantesh, @cfdude, @Chadmc9889, @CharZhou, @chelsealong, @chesterXalan, @chillerno1, @Christopher-Schulze, @chukirk-svg, @cicav, @citizendev9c, @cj52973, @clarkvines, @ClintonEmok, @clyu168, @cmoiccool, @codexbt, @coe0718, @Cossackx, @coygeek, @crazyhulk, @CrazyWillBear, @criptogus, @cryptoyasenka, @ctaylor86, @cvillarroel2, @cxxCoolStar, @cycorld, @dagbs, @damadorPL, @DanBennettUK, @DanDo385, @DannyFengTianYu, @Dannyzen, @danspicytaco, @dante32683, @darko-mesaros, @daromaj, @david-bartos-phrase, @davidgut1982, @DavidMetcalfe, @davidneyravyr, @daxro, @dcdexhome, @deacon-botdoctor, @deadczarvc, @deaneeth, @DECRUX9812, @deepeet-git, @deniqlab, @DeseretSaint, @dhanesh, @Dhruv7201, @dhruvkej9, @digitalbase, @DmytroVolodymyrson, @dokterdok, @Dolverin, @dombejar, @doncazper, @dougatbuck, @douxy1994, @dpersek, @dplush, @Drexuxux, @drissman, @dromai, @dtownsel, @duclucky, @Dudeman456, @Dusk1e, @dvbaecker, @e-macgregor, @EAbaracus, @eaglezzz0522-cloud, @Eapwrk, @easyvibecoding, @echoes666, @egilewski, @ehz0ah, @ekinnee, @ekzhang, @elbukott1, @elisam0, @elphamale, @ElSnacko, @embwl0x, @emozilla, @EMT5320, @EndeavorYen, @Enough1122, @enwaiax, @epeterpanz, @EpicIsTheOne, @eric-senyao, @ernst-bablick, @Eros-ITA, @erosika, @ethernet8023, @etzelvon, @EvanProgramming, @EvenXieWF, @explainanalyze, @f-trycua, @fanfan343, @fangliquanflq, @fattchris, @felix-windsor, @Finn763, @flaviovargasbrandao, @Fly-onlyone, @flyingdoubleG, @forkercat, @francialisomlimoeiro, @francip, @frankmendes1979, @fred0m, @frendo, @frizikk, @frohsinnllc, @Frowtek, @fukutake1207, @fyzanshaik, @GarlicGo, @Gateton, @georgell-ceo, @gfriesen1, @gigabyte22, @gigashad, @gijoby, @gitong, @gkd2323c, @gnanirahulnutakki, @GodsBoy, @gokay-ai, @goktugvatandas, @golldyck, @goodchang77, @GottZ, @grahfmusic, @gregorustar-maker, @greyvito, @gsy324, @guanla-zz, @guilhermeartileshubsai, @guilhermeraiuga, @h-mascot, @h8hawk, @Haakam21, @Haik-G, @halaprix, @Halldrix, @handnewb, @Hangzian, @hanhvs, @hansai-art, @HAOWANG116, @HarishDarko, @hbentel, @helix4u, @HenryGHJ, @hermias1, @HexLab98, @hillimited, @Hjharris1, @hkfiberlaser-svg, @honor2030, @howdeploy, @hsearcy, @huklaa, @hustwkr, @hutao562, @hxwvaa, @IAvecilla, @icemeng, @infinitycrew39, @infocentr, @InphinitiZ, @insane66613, @Inspired-by-Atmosphere, @intelac, @intellectronica, @isak-ialogics, @ishanparihar, @isheng-eqi, @Ishman82, @iskysun96, @iso2kx, @itsflownium, @izumi0uu, @Jaaneek, @Jackal991, @jackijianxa, @jackoconner45, @jackulau, @jaimedhenriques, @james47kjv, @jbagdonas, @jcjc81, @jdgg777, @jeeves-assistant, @jeff-mettel, @Jefftree, @JElfferich, @jeremyrandria-debug, @JinUltimate1995, @jirathip-k, @jmmaloney4, @JoaoMarcos44, @joe-rodgers, @joe050860, @John-Lussier, @Johnny-xuan, @johnrazmus, @johnsonAyo, @jonpol01, @JonthanaHanh, @JoshPaulie, @Jreevo, @jtstothard, @Julientalbot, @justcarlosm, @justinbowes, @justinjohnson25600, @jwtor7, @k0rnacki, @kadiratesdev, @Kailigithub, @kaishi00, @KarateWilly, @kas-cor, @katie-lpd, @Kavyrocom, @KBANTH, @kchernev, @KeaneYan, @kernel-t1, @KeroZelvin, @kerpopule, @KHALIDagara, @KhanCold, @khanhngoo, @KIAgent01, @kim-miram, @kimyxx, @Kinkoolino-Hermes, @kinsolee, @kitsonk, @klaus765, @koltyj, @konsisumer, @kronexoi, @krunkosaurus, @kshitijk4poor, @kudapara, @kvnloo, @kweiner, @kyssta-exe, @Kyzcreig, @laithrw, @lakshyaag-tavily, @landaun, @laulopezreal, @laviesony, @lazy-idler, @LBeghini, @leeclouddragon, @Leegenux, @LemonSchneid, @LeonardoLGDS, @leonphull, @LeonSGP43, @lepetitprince716-prog, @Lesnak1, @lesterlxt, @lesyuk, @lEWFkRAD, @lextiz, @lgy1027, @Lidang-Jiang, @lilShawtty-byte, @lin-hongkuan, @liuhao1024, @liusencomic-cyber, @lkz-de, @loafoe, @locker95, @LordMelkor, @lorzl, @lost9999, @loulanyue, @LovePlayCode, @luckygreen, @lukeroberts, @luoxiao6645, @luxles, @m1k3s0, @Mabolla, @MagMueller, @magnus919, @magnuslundstedt, @MaheshBhushan, @MarcoFernstaedt, @mariobgsp, @marketing2981, @markmcd, @markmnl, @MarkVLK, @marzukia, @Mat-London, @matsvarn, @mattprusak, @MaximCrabbe, @maxmilian, @mehmetkr-31, @Mengchee118, @menhguin, @metamindedu, @michaelHMK, @michaelsam94, @milnerrad, @MindDragonLabs, @misterdas, @mjolley9, @mmcallister8, @mmcclean-aws, @mmchuangyt-ai, @moisesvalero, @mollusk, @monerostar, @Morad37, @mrkillbob, @mrmixx-max, @mrsucesso, @MrTheSoulz, @MustafaK99, @myk0la-b, @mzkarami, @n-leezy, @n1majne3, @NaMinhyeok, @nanami7777777, @nankingjing, @natebransc, @nateEc, @Navlem, @nbxuhk, @nductien, @Ne0teric, @NealZhouPanda, @necoweb3, @negroni334, @nftpoetrist, @nicochase, @Nicolas-Formenton, @nicolasdmolina, @nikitaBarkov, @NikolaRHristov, @noahingh, @nolanchic, @NorethSea, @notkisk, @notwitcheer, @NousResearch, @null-runner, @ojassharma7, @oliver-mee, @olympusbuildz, @OmarB97, @ooiuuii, @openclaww-xz, @opti-josh-holt, @osgeek90, @ousiaresearch, @OutThisLife, @Owen-narcissus, @paoloantinori, @Parker-Fawcett, @pasevin, @pasmud, @PaulBlackSwan, @paultaki, @peetteerr, @pefontana, @Per0-1, @pierrenode, @PINKIIILQWQ, @pittosporum-seu, @pju-hoge, @plcunha, @Pluviobyte, @pmos69, @pnascimento9596, @poisdahl, @potatosalad, @prashantjain25, @PRATHAMESH75, @professorpalmer, @projetsjsl, @protas-box, @qazasdsdqaza, @QDung210, @qixuancao, @QuarkAssistant, @quocanh261997, @ragingbulld, @rainbowgore, @rapsealk, @Raven26-VooDoo, @RaviTharuma, @RayCharlizard, @razultull, @re-ITRT, @Reksely, @RelaxJonh, @repfigit, @RGerrish, @RibatTRW, @RichardGuan1, @RichardHojunJang, @richardhowes, @RickyYii, @rikkarth, @rille111, @Ringo6107, @rjhilgefort, @rjvandeve, @rkfshakti, @rlaope, @Rmohid, @rob-maron, @rodrigogs, @royalaid, @royzhrxy-glitch, @rroverin, @rshi0212, @rsk-731, @rtcopenclawgh, @ruangraung, @rudrakshchahal, @ruochu88s, @rweddle, @ryankhart, @S-Claw, @Sahil-SS9, @salch-cred, @sam7894604, @samclams, @saralilyb, @sashmatash, @sasquatch9818, @satotakumi, @ScaleLeanChris, @SeashoreShi, @serefyarar, @shaase-ctrl, @shali10, @shannonsands, @shanthans-es, @ShaoRou459, @shaqalaka, @shauneccles, @Shedrackeze002, @SHL0MS, @ShonnQ, @Shotflame, @silence-de, @simonvanlaak, @SiteupAgencia, @sjungwon03, @skip-agent, @SLC-BTC, @Slobaka, @smarzola, @smause, @SmelterLabs, @smfworks, @smwbev, @sohomsahaun, @Soju06, @SolshineCode, @solyanviktor-star, @somewheresy, @SongotenU, @songshikang0111, @Sora-bluesky, @SouthpawIN, @spfcraze, @srojk34, @Starfie1d1272, @starship-s, @StellarisW, @steveonjava, @Stoltemberg, @strnadchristopher, @strzhao, @sujeet111, @suntech-wang, @supotato-ipj, @sweetcornna, @sycamoregroupltd, @sylbae, @tachyon-r, @tauros1983, @terry197913, @texasich, @th3sull1van, @thacid22, @thatssoheil, @TheAngryPit, @thebizfixer, @thejpanganiban, @thelonewander3r, @thenabbu, @TheophilusChinomona, @TheSmokeDev, @TheTom, @thomasbek3, @tigercraft4, @Tigrannnnnnn, @Tilly-YL, @tmchow, @tmielika, @tmingos, @TMShiroiko, @TomAce7, @tomatau, @Tomenatore, @Tommy00748, @TomSpoct, @toprakeker, @Tranquil-Flow, @tranquilflow, @trevornk, @trippyogi, @troyrowe-resource, @tt-a1i, @tuancookiez-hub, @tugrulguner, @TurgutKural, @tyfcontent, @Ufonik88, @UniversePeak, @unsupportedpastels, @uperLu, @uttkarsh-26, @V0v1kkkAssistant, @vadelma-agent, @vanniaxel06, @VBS2004, @verybigdog, @victor-kyriazakos, @victorftrdba, @victoronwuanaku, @victorv2i, @vignesh-oai, @vinayshah1998, @vinsew, @VIVAAN-DHAWAN, @vKongv, @vondelomlo, @vorburger, @wanglufei-567, @wangs1203, @wanquanY, @wdon, @web-wyf, @webdevtodayjason, @webtecnica, @webtoolbox, @weisiwu, @weismanfamily, @Wenfengcheng, @wesleysimplicio, @westkite1201, @whirmill, @whisky0809, @whoislikemiha, @will-lynas, @willfrombr, @wingkwong, @Wintle, @wiseconnex, @wo-o, @WolframRavenwolf, @WolftacDigital, @worlldz, @wz-heng, @x1051445024, @x7peeps, @xaviersudre, @XiaoZAZA, @xkam7ar, @xrwang8, @xthezealot, @xxxigm, @Yanir-R, @YappLeCunt, @yatesjalex, @yflmq001, @ygd58, @Yiipu, @yingliang-zhang, @yinkev, @Yishova, @yoniebans, @youtiaowei, @ypQQ1984, @yu-xin-c, @yukinomon, @yuric, @YusenZhang0601, @YuYigeng, @yuzilongleif-collab, @yy28, @zabih-sudo, @ZachariahChu, @zakame, @zapabob, @zccyman, @zcj1122-rgb, @zengzheqing, @Zeraphim, @Zeus-Deus, @zgqq, @zhangfei1231231-sketch, @zhao0112, @zhaomengfan, @ZHJay, @zhongwater123, @zhuermu, @zoidypuh, @zons-zhaozhy, @zuowen7, @zyz619963502zyz, @zzz163519</p> <p>Also: @mkoistinen, @JoaoMarcos44, @StanleyStetson.</p> <hr> <p><strong>Full Changelog</strong>: <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/compare/v2026.8.3...v2026.8.31">v2026.8.3...v2026.8.31</a></p> <p><em>This release rolls up and fully documents the v0.20.1, v0.20.2, v0.20.3, v0.20.5, and v0.20.6 patch-tag windows (Aug 13–27), whose notes were deferred to this minor per the rollup-release policy.</em></p> </div><div class="link-row" data-astro-cid-l7qxtvnw><span class="lr-label" data-astro-cid-l7qxtvnw>Links</span><a href="https://github.com/NousResearch/hermes-agent/releases/tag/v2026.8.31" data-astro-cid-l7qxtvnw>GitHub release notes ↗</a><a href="https://github.com/NousResearch/hermes-agent/compare/v2026.8.27...v2026.8.31" data-astro-cid-l7qxtvnw>Full diff ↗</a><a href="/tools/" data-astro-cid-l7qxtvnw>Tools Reference →</a><a href="/blog/2026-06-06-hermes-desktop-surface-release/" data-astro-cid-l7qxtvnw>Desktop deep-dive →</a><a href="/blog/cron-job-patterns-2026/" data-astro-cid-l7qxtvnw>Cron patterns guide →</a></div></div></details><details class="rel" data-astro-cid-l7qxtvnw><summary data-astro-cid-l7qxtvnw><span class="r-arrow" data-astro-cid-l7qxtvnw>▶</span><span class="r-ver" data-astro-cid-l7qxtvnw>v0.20.6</span><span class="r-date" data-astro-cid-l7qxtvnw>2026-08-27</span></summary><div class="rel-body" data-astro-cid-l7qxtvnw><p class="r-summary" data-astro-cid-l7qxtvnw>Patch release. This tag rolls up the ~525 PRs merged since v0.20.5 into a stable tagged release for downstream consumers (Docker images, hosted deployments, fresh installs).</p><div class="r-notes" data-astro-cid-l7qxtvnw><blockquote> <p>Patch release. This tag rolls up the ~525 PRs merged since v0.20.5 into a stable tagged release for downstream consumers (Docker images, hosted deployments, fresh installs).</p> </blockquote> <hr> <h2>About this release</h2> <p><strong>Full curated release notes for this window will ship with v0.21.0</strong>, which will document everything from v0.20.0 onward — highlights, feature areas, and complete contributor credits. Nothing in this window is skipped.</p> <h2>Updating</h2> <ul> <li><code>hermes update</code> from an existing install</li> <li>Fresh install: <code>curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash</code></li> </ul> <p><strong>Full Changelog</strong>: <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/compare/v2026.8.19...v2026.8.27">v2026.8.19...v2026.8.27</a></p> </div><div class="link-row" data-astro-cid-l7qxtvnw><span class="lr-label" data-astro-cid-l7qxtvnw>Links</span><a href="https://github.com/NousResearch/hermes-agent/releases/tag/v2026.8.27" data-astro-cid-l7qxtvnw>GitHub release notes ↗</a><a href="https://github.com/NousResearch/hermes-agent/compare/v2026.8.19...v2026.8.27" data-astro-cid-l7qxtvnw>Full diff ↗</a><a href="/blog/2026-06-06-hermes-desktop-surface-release/" data-astro-cid-l7qxtvnw>Desktop deep-dive →</a></div></div></details><details class="rel" data-astro-cid-l7qxtvnw><summary data-astro-cid-l7qxtvnw><span class="r-arrow" data-astro-cid-l7qxtvnw>▶</span><span class="r-ver" data-astro-cid-l7qxtvnw>v0.20.5</span><span class="r-date" data-astro-cid-l7qxtvnw>2026-08-21</span></summary><div class="rel-body" data-astro-cid-l7qxtvnw><p class="r-summary" data-astro-cid-l7qxtvnw>Patch release. This tag rolls up the ~323 PRs merged since v0.20.4 into a stable tagged release for downstream consumers (Docker images, hosted deployments, fresh installs).</p><div class="r-notes" data-astro-cid-l7qxtvnw><blockquote> <p>Patch release. This tag rolls up the ~323 PRs merged since v0.20.4 into a stable tagged release for downstream consumers (Docker images, hosted deployments, fresh installs).</p> </blockquote> <hr> <h2>About this release</h2> <p><strong>Full curated release notes for this window will ship with v0.21.0</strong>, which will document everything from v0.20.0 onward — highlights, feature areas, and complete contributor credits. Nothing in this window is skipped.</p> <h2>Updating</h2> <ul> <li><code>hermes update</code> from an existing install</li> <li>Fresh install: <code>curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash</code></li> </ul> <p><strong>Full Changelog</strong>: <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/compare/v2026.8.18...v2026.8.19">https://github.com/NousResearch/hermes-agent/compare/v2026.8.18...v2026.8.19</a></p> </div><div class="link-row" data-astro-cid-l7qxtvnw><span class="lr-label" data-astro-cid-l7qxtvnw>Links</span><a href="https://github.com/NousResearch/hermes-agent/releases/tag/v2026.8.19" data-astro-cid-l7qxtvnw>GitHub release notes ↗</a><a href="https://github.com/NousResearch/hermes-agent/compare/v2026.8.18...v2026.8.19" data-astro-cid-l7qxtvnw>Full diff ↗</a><a href="/blog/hermes-v0205-release/" data-astro-cid-l7qxtvnw>Our release deep-dive →</a></div></div></details><details class="rel" data-astro-cid-l7qxtvnw><summary data-astro-cid-l7qxtvnw><span class="r-arrow" data-astro-cid-l7qxtvnw>▶</span><span class="r-ver" data-astro-cid-l7qxtvnw>v0.20.4</span><span class="r-date" data-astro-cid-l7qxtvnw>2026-08-18</span></summary><div class="rel-body" data-astro-cid-l7qxtvnw><p class="r-summary" data-astro-cid-l7qxtvnw>Patch release. This tag rolls up the ~74 PRs merged since v0.20.3 into a stable tagged release for downstream consumers (Docker images, hosted deployments, fresh installs).</p><div class="r-notes" data-astro-cid-l7qxtvnw><blockquote> <p>Patch release. This tag rolls up the ~74 PRs merged since v0.20.3 into a stable tagged release for downstream consumers (Docker images, hosted deployments, fresh installs).</p> </blockquote> <hr> <h2>About this release</h2> <p><strong>Full curated release notes for this window will ship with v0.21.0</strong>, which will document everything from v0.20.0 onward — highlights, feature areas, and complete contributor credits. Nothing in this window is skipped.</p> <h2>Updating</h2> <ul> <li><code>hermes update</code> from an existing install</li> <li>Fresh install: <code>curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash</code></li> </ul> <p><strong>Full Changelog</strong>: <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/compare/v2026.8.16.2...v2026.8.18">https://github.com/NousResearch/hermes-agent/compare/v2026.8.16.2...v2026.8.18</a></p> </div><div class="link-row" data-astro-cid-l7qxtvnw><span class="lr-label" data-astro-cid-l7qxtvnw>Links</span><a href="https://github.com/NousResearch/hermes-agent/releases/tag/v2026.8.18" data-astro-cid-l7qxtvnw>GitHub release notes ↗</a><a href="https://github.com/NousResearch/hermes-agent/compare/v2026.8.16.2...v2026.8.18" data-astro-cid-l7qxtvnw>Full diff ↗</a><a href="/blog/2026-06-06-hermes-desktop-surface-release/" data-astro-cid-l7qxtvnw>Desktop deep-dive →</a></div></div></details><details class="rel" data-astro-cid-l7qxtvnw><summary data-astro-cid-l7qxtvnw><span class="r-arrow" data-astro-cid-l7qxtvnw>▶</span><span class="r-ver" data-astro-cid-l7qxtvnw>v0.20.3</span><span class="r-date" data-astro-cid-l7qxtvnw>2026-08-17</span></summary><div class="rel-body" data-astro-cid-l7qxtvnw><p class="r-summary" data-astro-cid-l7qxtvnw>Patch release. This tag rolls up the ~125 PRs merged since v0.20.2 into a stable tagged release for downstream consumers (Docker images, hosted deployments, fresh installs).</p><div class="r-notes" data-astro-cid-l7qxtvnw><blockquote> <p>Patch release. This tag rolls up the ~125 PRs merged since v0.20.2 into a stable tagged release for downstream consumers (Docker images, hosted deployments, fresh installs).</p> </blockquote> <hr> <h2>About this release</h2> <p><strong>Full curated release notes for this window will ship with v0.21.0</strong>, which will document everything from v0.20.0 onward — highlights, feature areas, and complete contributor credits. Nothing in this window is skipped.</p> <h2>Updating</h2> <ul> <li><code>hermes update</code> from an existing install</li> <li>Fresh install: <code>curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash</code></li> </ul> <p><strong>Full Changelog</strong>: <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/compare/v2026.8.16...v2026.8.16.2">https://github.com/NousResearch/hermes-agent/compare/v2026.8.16...v2026.8.16.2</a></p> </div><div class="link-row" data-astro-cid-l7qxtvnw><span class="lr-label" data-astro-cid-l7qxtvnw>Links</span><a href="https://github.com/NousResearch/hermes-agent/releases/tag/v2026.8.16.2" data-astro-cid-l7qxtvnw>GitHub release notes ↗</a><a href="https://github.com/NousResearch/hermes-agent/compare/v2026.8.16...v2026.8.16.2" data-astro-cid-l7qxtvnw>Full diff ↗</a><a href="/tools/" data-astro-cid-l7qxtvnw>Tools Reference →</a><a href="/providers/" data-astro-cid-l7qxtvnw>Providers Reference →</a></div></div></details><details class="rel" data-astro-cid-l7qxtvnw><summary data-astro-cid-l7qxtvnw><span class="r-arrow" data-astro-cid-l7qxtvnw>▶</span><span class="r-ver" data-astro-cid-l7qxtvnw>v0.20.2</span><span class="r-date" data-astro-cid-l7qxtvnw>2026-08-16</span></summary><div class="rel-body" data-astro-cid-l7qxtvnw><p class="r-summary" data-astro-cid-l7qxtvnw>Patch release. This tag rolls up the ~397 PRs merged since v0.20.1 into a stable tagged release for downstream consumers (Docker images, hosted deployments, fresh installs).</p><div class="r-notes" data-astro-cid-l7qxtvnw><blockquote> <p>Patch release. This tag rolls up the ~397 PRs merged since v0.20.1 into a stable tagged release for downstream consumers (Docker images, hosted deployments, fresh installs).</p> </blockquote> <hr> <h2>About this release</h2> <p><strong>Full curated release notes for this window will ship with v0.21.0</strong>, which will document everything from v0.20.0 onward — highlights, feature areas, and complete contributor credits. Nothing in this window is skipped.</p> <h2>Updating</h2> <ul> <li><code>hermes update</code> from an existing install</li> <li>Fresh install: <code>curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash</code></li> </ul> <p><strong>Full Changelog</strong>: <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/compare/v2026.8.13...v2026.8.16">https://github.com/NousResearch/hermes-agent/compare/v2026.8.13...v2026.8.16</a></p> </div><div class="link-row" data-astro-cid-l7qxtvnw><span class="lr-label" data-astro-cid-l7qxtvnw>Links</span><a href="https://github.com/NousResearch/hermes-agent/releases/tag/v2026.8.16" data-astro-cid-l7qxtvnw>GitHub release notes ↗</a><a href="https://github.com/NousResearch/hermes-agent/compare/v2026.8.13...v2026.8.16" data-astro-cid-l7qxtvnw>Full diff ↗</a><a href="/tools/" data-astro-cid-l7qxtvnw>Tools Reference →</a><a href="/gateway/" data-astro-cid-l7qxtvnw>Gateway Guide →</a><a href="/blog/2026-06-06-hermes-desktop-surface-release/" data-astro-cid-l7qxtvnw>Desktop deep-dive →</a></div></div></details><details class="rel" data-astro-cid-l7qxtvnw><summary data-astro-cid-l7qxtvnw><span class="r-arrow" data-astro-cid-l7qxtvnw>▶</span><span class="r-ver" data-astro-cid-l7qxtvnw>v0.20.1</span><span class="r-date" data-astro-cid-l7qxtvnw>2026-08-13</span></summary><div class="rel-body" data-astro-cid-l7qxtvnw><p class="r-summary" data-astro-cid-l7qxtvnw>Patch release. This tag rolls up the ~656 PRs merged since v0.20.0 into a stable tagged release for downstream consumers (Docker images, hosted deployments, and anyone installing from the latest tag).</p><div class="r-notes" data-astro-cid-l7qxtvnw><blockquote> <p>Patch release. This tag rolls up the ~656 PRs merged since v0.20.0 into a stable tagged release for downstream consumers (Docker images, hosted deployments, and anyone installing from the latest tag).</p> </blockquote> <hr> <h2>About this release</h2> <p><strong>Full curated release notes for this window will ship with v0.21.0</strong>, which will document everything from v0.20.0 onward — highlights, feature areas, and complete contributor credits. Nothing in this window is skipped.</p> <h2>Updating</h2> <ul> <li>Existing installs: <code>hermes update</code></li> <li>Fresh install: see the installer one-liner in the <a rel="noopener" href="https://github.com/NousResearch/hermes-agent#readme">README</a></li> </ul> <p><strong>Full Changelog</strong>: <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/compare/v2026.8.3...v2026.8.13">v2026.8.3...v2026.8.13</a></p> </div><div class="link-row" data-astro-cid-l7qxtvnw><span class="lr-label" data-astro-cid-l7qxtvnw>Links</span><a href="https://github.com/NousResearch/hermes-agent/releases/tag/v2026.8.13" data-astro-cid-l7qxtvnw>GitHub release notes ↗</a><a href="https://github.com/NousResearch/hermes-agent/compare/v2026.8.3...v2026.8.13" data-astro-cid-l7qxtvnw>Full diff ↗</a><a href="/gateway/" data-astro-cid-l7qxtvnw>Gateway Guide →</a><a href="/providers/" data-astro-cid-l7qxtvnw>Providers Reference →</a><a href="/blog/2026-06-06-hermes-desktop-surface-release/" data-astro-cid-l7qxtvnw>Desktop deep-dive →</a></div></div></details><details class="rel" data-astro-cid-l7qxtvnw><summary data-astro-cid-l7qxtvnw><span class="r-arrow" data-astro-cid-l7qxtvnw>▶</span><span class="r-ver" data-astro-cid-l7qxtvnw>v0.20.0</span><span class="r-codename" data-astro-cid-l7qxtvnw>Herald Release</span><span class="r-date" data-astro-cid-l7qxtvnw>2026-08-03</span></summary><div class="rel-body" data-astro-cid-l7qxtvnw><p class="r-summary" data-astro-cid-l7qxtvnw><strong>The Herald Release.</strong> Hermes is the herald of the gods, and this release makes him one in earnest: he <strong>speaks</strong> (real-time conversational voice with streaming TTS, barge-in, on-device wake words, and hands-free control across the CLI, desktop, and every audio-capable gateway platform), he <strong>carries word to other agents</strong> (A2A v1.0), he <strong>announces events to your systems</strong> (signed outbound webhooks), and he <strong>cites his sources</strong> (grounded research with verifiable citations and fact-checking). Around that spine: the desktop app became a platform (artifacts with live preview, a plugin SDK, quick-entry from anywhere, multiple windows), the CLI got a wave of power commands (<code>!</code> shell mode, <code>/init</code>, <code>/diff</code>, <code>/context</code>, <code>/focus</code>), compression got smarter and gentler, and the tools themselves now recover from their own failures instead of making the model guess. This release rolls up everything from the v0.19.1 infrastructure patch tag — that window is fully documented here.</p><div class="r-notes" data-astro-cid-l7qxtvnw><blockquote> <p><strong>The Herald Release.</strong> Hermes is the herald of the gods, and this release makes him one in earnest: he <strong>speaks</strong> (real-time conversational voice with streaming TTS, barge-in, on-device wake words, and hands-free control across the CLI, desktop, and every audio-capable gateway platform), he <strong>carries word to other agents</strong> (A2A v1.0), he <strong>announces events to your systems</strong> (signed outbound webhooks), and he <strong>cites his sources</strong> (grounded research with verifiable citations and fact-checking). Around that spine: the desktop app became a platform (artifacts with live preview, a plugin SDK, quick-entry from anywhere, multiple windows), the CLI got a wave of power commands (<code>!</code> shell mode, <code>/init</code>, <code>/diff</code>, <code>/context</code>, <code>/focus</code>), compression got smarter and gentler, and the tools themselves now recover from their own failures instead of making the model guess. This release rolls up everything from the v0.19.1 infrastructure patch tag — that window is fully documented here.</p> </blockquote> <hr> <h2>✨ Highlights</h2> <ul> <li><p><strong>Talk to Hermes — streaming, conversational voice with barge-in</strong> — Voice mode used to mean: speak, wait for the whole reply to generate, then listen to one long audio file. Now Hermes speaks clause-by-clause as the response streams, you can interrupt it mid-sentence by just talking (it stops, listens, and the model is told you cut in), and busy-aware silence detection means it doesn't talk over you. This works in CLI voice mode, on the desktop, and through gateway adapters. Talking to Hermes finally feels like a conversation, not a voicemail exchange. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/69511">#69511</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/73862">#73862</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/74223">#74223</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/74000">#74000</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/69602">#69602</a> — @teknium1, @OutThisLife)</p> </li> <li><p><strong>Wake words and hands-free control</strong> — Say your own open-vocabulary wake phrase ("hey Hermes", or anything you pick) and Hermes starts listening — detection runs on-device, so no audio leaves your machine while it waits. Multi-profile voice routing means different wake words can reach different profiles, and saying "stop" ends the voice chat on every surface without touching the keyboard. Your terminal is now something you can talk to from across the room. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/70509">#70509</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/73106">#73106</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/73933">#73933</a> — @teknium1)</p> </li> <li><p><strong>Voice on every platform</strong> — Send a voice note to Hermes on WhatsApp, Feishu, DingTalk, LINE, QQ, Photon, or Weixin and it's transcribed and answered; auto-TTS replies are delivered platform-aware (opus where platforms want opus, captions attached correctly). STT is now fully configurable — its own <code>hermes tools</code> category, GUI toggles, dashboard dropdowns, unified language resolution so transcripts stop coming back in the wrong language, and OpenAI's gpt-transcribe support. One unified spoken-text preprocessor cleans markdown, code, and URLs out of speech across all TTS providers. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/73515">#73515</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/73508">#73508</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/73910">#73910</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/73513">#73513</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/73067">#73067</a> — @teknium1)</p> </li> <li><p><strong>Research you can trust — grounded citations with fact-checking</strong> — The new <code>grounded-citations</code> skill makes Hermes produce research where every claim is backed by a verifiable source: quotes are matched against the actual page text (not hallucinated), citations link to the exact evidence, and a fact-checking mode turns the same machinery on any document or claim you hand it — it tells you what checks out, what doesn't, and what couldn't be verified. If you use Hermes for research, this is the difference between "sounds right" and "provably sourced." (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/71698">#71698</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/77104">#77104</a> — @teknium1)</p> </li> <li><p><strong>Outbound webhooks — Hermes pushes events to your systems</strong> — Until now, integrating with Hermes meant polling or listening on a platform. Now Hermes pushes <strong>signed lifecycle events</strong> (session activity, turn completions, tool events) to any HTTP endpoint you register — with HMAC signatures so your receiver can verify authenticity. Wire Hermes into your CI, your home automation, your dashboards, or any service that speaks HTTP, with no polling loop. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/69406">#69406</a> — @teknium1)</p> </li> <li><p><strong>The desktop app becomes a platform — artifacts, plugin SDK, quick entry</strong> — Hermes desktop now renders <strong>artifacts</strong>: versioned cards with sandboxed live preview in a right-rail viewer, so generated HTML/apps run safely next to the chat. A real <strong>plugin SDK</strong> landed with Kanban as its founding plugin, <code>ctx.download</code> for handing users files, floating pane placement, and multiple GUI windows. A global-hotkey <strong>quick-entry window</strong> captures a thought into any session from anywhere in your OS. The desktop stopped being a chat client and started being a workbench. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/72345">#72345</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/61173">#61173</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/74413">#74413</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/72315">#72315</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/68259">#68259</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/73143">#73143</a> — @OutThisLife, @teknium1)</p> </li> <li><p><strong>Hermes speaks Agent-to-Agent — A2A v1.0</strong> — A new bundled plugin implements the Agent-to-Agent protocol, so Hermes can discover, talk to, and be driven by other A2A-compatible agents. This closes issue #514 — one of the oldest open feature requests in the repo. If you're building multi-agent systems with heterogeneous stacks, Hermes now has a standard wire protocol for joining them. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/77109">#77109</a> — @teknium1)</p> </li> <li><p><strong>CLI power-user wave</strong> — <code>!command</code> runs a shell command instantly without spending a model turn. <code>/init</code> scans your project and generates (or updates) an <code>AGENTS.md</code>. <code>/diff</code> shows staged/all/session changes from any surface, <code>/context</code> breaks down exactly what's filling your context window, <code>/focus</code> gives you a reduced-output view with hidden-line recovery, and Ctrl+S stashes a half-written prompt into a browsable panel. Plus <code>hermes import-agent</code> migrates your Claude Code or Codex CLI setup into Hermes in one command. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/72257">#72257</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/72178">#72178</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/72240">#72240</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/72242">#72242</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/72302">#72302</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/72262">#72262</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/72190">#72190</a> — @teknium1, several salvaging long-standing community PRs)</p> </li> <li><p><strong>Correct the agent mid-turn — redirects</strong> — If Hermes is heading the wrong way, you no longer have to <code>/stop</code> and re-explain. Type a correction while it works and the active turn is redirected: work in flight is preserved, the original prompt is kept, and the agent course-corrects with your new guidance. Paired with double-ESC draft discard and a composer undo stack, steering feels like editing, not restarting. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/63104">#63104</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/72339">#72339</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/74736">#74736</a> — @OutThisLife)</p> </li> <li><p><strong>Tools that fix themselves</strong> — A sweep of self-recovery upgrades means the agent wastes far fewer turns on tool friction: truncated terminal output spills to a file the agent can read back, <code>patch</code> detects already-applied edits and diagnoses whitespace mismatches, <code>write_file</code> verifies content on disk, searches that match nothing probe for near-misses and recover, and common failure classes come back with actionable hints. The default tool-calling iteration limit also jumped 90 → 500 — long autonomous runs stopped hitting an artificial wall. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/77041">#77041</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/76998">#76998</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/77024">#77024</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/77055">#77055</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/77011">#77011</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/76992">#76992</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/72176">#72176</a> — @teknium1)</p> </li> <li><p><strong>Compression that respects your conversation</strong> — Context compression got a deep overhaul: proactive tool-result pruning for large-window models, per-turn micro-compaction that amortizes the cost instead of one giant pause, a guaranteed N-user-message tail so recent conversation always survives, progress-aware timeouts that stop punishing slow summary models, and ghost-skill defense so a pruned skill can never silently haunt a session. Thresholds are now configurable per-model and in absolute tokens. Long sessions stay coherent and stop stalling. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/70254">#70254</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/75345">#75345</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/70250">#70250</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/71508">#71508</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/70275">#70275</a> — @teknium1, @kshitijk4poor, salvaging multiple community PRs)</p> </li> <li><p><strong>Smart approvals grow up</strong> — <code>hermes approvals suggest</code> mines your approval history into allowlist proposals, operators can customize the smart-approval policy, a consecutive-denial circuit breaker stops a misbehaving loop cold, and desktop pairing approvals are profile-correct with a proper surface to answer them from. Plus a new approval gate for docker/podman daemon-redirect commands. Less clicking "approve", without giving an inch of control. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/72259">#72259</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/72186">#72186</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/72203">#72203</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/74446">#74446</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/71092">#71092</a> — @teknium1, @OutThisLife)</p> </li> <li><p><strong>Faster everywhere, again</strong> — Prompt caching now covers tool schemas on native Anthropic without history loss. <code>hermes -w</code> cold start dropped ~14s → ~1.8s, <code>hermes update</code> no-ops got 2–6s faster, heavy SDKs lazy-load off the import path, config reads stopped deep-copying (54× faster on the telemetry gate), and the desktop shipped a second 60fps wave — streaming cost independent of transcript length, drag at 60fps with five streaming tabs, idle CPU near zero in the background. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/76032">#76032</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/71637">#71637</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/74218">#74218</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/74204">#74204</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/71835">#71835</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/72346">#72346</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/75218">#75218</a> — @kshitijk4poor, @teknium1, @OutThisLife)</p> </li> <li><p><strong>New places to run and be reached</strong> — Buzz lands as a bundled gateway platform (Block's Nostr-based messenger, with native WebSocket transport and NIP-42 auth), the Vercel AI Gateway provider and Vercel Sandbox terminal backend return modernized, desktop gains an SSH remote-backend connection mode, and the Relay shipped four phases of parity — media, interactive prompts, thread lifecycle, typing indicators — plus HSP personal + org skill sync. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/73610">#73610</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/73761">#73761</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/74518">#74518</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/68130">#68130</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/71300">#71300</a>–<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/71624">#71624</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/66730">#66730</a> — @teknium1, @yoniebans, @benbarclay)</p> </li> </ul> <hr> <h2>🎙️ Voice & Speech</h2> <h3>Conversational voice</h3> <ul> <li>Streaming, conversational TTS with barge-in across all surfaces; clause-by-clause synthesis for CLI voice mode + gateway adapters (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/69511">#69511</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/73862">#73862</a> — @OutThisLife, @teknium1)</li> <li>Voice chat UX polish — busy-aware silence, stop hint, thinking sounds, barge-in fix; full-duplex turn listener (interrupt by voice during generation AND playback) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/74000">#74000</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/74223">#74223</a> — @teknium1)</li> <li>On-device wake words with open-vocabulary phrases + multi-profile voice routing; say "stop" to end voice chat hands-free on every surface (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/70509">#70509</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/73106">#73106</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/73933">#73933</a> — @teknium1)</li> <li>The model is told when the user interrupts its spoken reply; desktop speaks the whole turn and idle-flushes held narration (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/69602">#69602</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/69936">#69936</a> — @OutThisLife, @teknium1)</li> <li>15-item CLI/TUI voice-mode UX and environment fix wave (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/73520">#73520</a> — @teknium1)</li> </ul> <h3>TTS / STT infrastructure</h3> <ul> <li>Unified spoken-text preprocessing + speed/instructions/provider tool params; unified STT language resolution (fixes the wrong-language transcription class); global <code>stt.language</code> defaults to <code>en</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/73513">#73513</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/73067">#73067</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/73100">#73100</a> — @teknium1)</li> <li>Fully configurable STT — <code>hermes tools</code> category, GUI toggle/matrix, dashboard dropdowns, setup status; OpenAI gpt-transcribe support (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/73910">#73910</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/73853">#73853</a> — @teknium1)</li> <li>Platform-aware auto-TTS voice delivery (opus platforms, streamed/global gap, captions); inbound voice classification/routing for Feishu, DingTalk, LINE, QQ, Photon, WhatsApp, Weixin (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/73508">#73508</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/73515">#73515</a> — @teknium1)</li> <li>Command TTS/STT provider hardening — idle timeouts, env scrubbing, no-shell, path guards (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/73514">#73514</a> — @teknium1)</li> <li>Sync per-sentence TTS synthesis pipelined with playback — the next sentence renders while the current one speaks (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/77355">#77355</a> — @kshitijk4poor)</li> <li>Discord voice PCM streams to ffmpeg stdin instead of a temp file (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/76970">#76970</a> — @kshitijk4poor)</li> </ul> <h2>🏗️ Core Agent & Architecture</h2> <h3>Compression & context</h3> <ul> <li>Proactive tool-result pruning for large-window models; per-turn micro-compaction; N-user tail guarantee (<code>compression.min_tail_user_messages</code>); bounded summarizer input with head+tail retention (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/70254">#70254</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/75345">#75345</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/70250">#70250</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/70249">#70249</a> — @teknium1, @kshitijk4poor)</li> <li>Ghost-skill defense — <code>[SKILL_PRUNED]</code> markers, protected prune, deterministic survival; progress-aware timeouts; lock-contended compression soft-defers instead of exhausting (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/70275">#70275</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/71508">#71508</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/70285">#70285</a> — @teknium1)</li> <li>Per-model threshold overrides; absolute token threshold (<code>compression.threshold_tokens</code>); opt-in idle-triggered compaction; opt-in progress notices; structured local logging for compression attempts (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/69339">#69339</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/69335">#69335</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/69360">#69360</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/70457">#70457</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/69338">#69338</a> — @teknium1)</li> <li>Context-engine ABC grows <code>select_context()</code> + <code>on_turn_complete()</code> verbs (salvage of @chaos-xxl's RFC work); engines can suppress or customize compaction status (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/70458">#70458</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/69859">#69859</a> — @teknium1)</li> <li>Strict redaction applied at every compaction text boundary (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/69294">#69294</a> — @teknium1)</li> </ul> <h3>Prompt caching & hot-path performance</h3> <ul> <li>Tool schemas cached on native Anthropic without history loss + consolidated cache-plan internals (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/76032">#76032</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/76067">#76067</a> — @kshitijk4poor)</li> <li>DeepSeek prompt caching on OpenCode gateways; per-API-call token accounting off the turn thread; OpenAI wire client reused across sequential LLM calls; send-path tool-call canonicalization memoized (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/75886">#75886</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/73359">#73359</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/73375">#73375</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/76880">#76880</a> — @teknium1, @kshitijk4poor)</li> <li>Readonly config loader at 29 call sites (28× cheaper reads); per-turn config deepcopies killed (telemetry gate 54×); one raw config.yaml parse per process; inter-tool delay removed (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/74322">#74322</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/74211">#74211</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/74228">#74228</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/64172">#64172</a> — @teknium1, @Soju06)</li> <li>Lazy heavy-SDK imports (−8-10% import cost on top of the mcp/tool-discovery diet); streaming hot loop drops per-chunk repr() (~3× cheaper accounting); cursor/memo optimizations for per-iteration history walks (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/74204">#74204</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/74194">#74194</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/74221">#74221</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/74231">#74231</a> — @teknium1)</li> <li>Cold-start ~14s GIL stall during backend init mitigated; turn flush batched into one SQLite transaction; provider-capability-gated prompt cache keys (implied for api.openai.com) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/77814">#77814</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/77619">#77619</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/77609">#77609</a> — @kshitijk4poor)</li> <li>AIAgent hot-path salvage — prompt-cache copy, reasoning-timeout precompute, lazy compressor init (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/57229">#57229</a> — @kshitijk4poor)</li> </ul> <h3>Approvals & the agent loop</h3> <ul> <li><code>hermes approvals suggest</code> mines approval history into allowlist proposals; operator-customizable <code>approvals.smart_policy</code>; consecutive-denial circuit breaker; cross-surface approvals mode command (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/72259">#72259</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/72186">#72186</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/72203">#72203</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/63517">#63517</a> — @teknium1)</li> <li>Docker/podman daemon-redirect commands require approval; session-wide runaway-loop caps for web_search + delegate_task (Claude Code-inspired) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/71092">#71092</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/66600">#66600</a> — @teknium1)</li> <li>Mid-turn redirects — user corrections steer the active turn, preserving in-flight work and the original prompt (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/63104">#63104</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/72339">#72339</a> — @OutThisLife)</li> <li>Delegation: structured timeout/stall metadata + live per-child status in <code>/agents</code>; subagents can use <code>execute_code</code>; redacted child tool history exposed in <code>subagent_stop</code>; public subagent lifecycle API for plugins (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/72300">#72300</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/69325">#69325</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/72403">#72403</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/72501">#72501</a> — @teknium1)</li> <li>Single-owner refactors for backend identity + failure-scoped skips, empty-content wire repair, call_id/reasoning sanitization, model-switch parsing (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/72505">#72505</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/73071">#73071</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/74319">#74319</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/74229">#74229</a> — @teknium1)</li> <li>Labeled reasoning excerpt surfaced at the empty-response terminal; tool_search probe-validates blind tool_call args (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/65144">#65144</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/59267">#59267</a> — @teknium1)</li> </ul> <h3>Tool self-recovery wave</h3> <ul> <li>Terminal: recoverable truncation (full output spilled + pre-truncation size), cwd echoed when a command changes directory, output-pattern failure hints (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/77041">#77041</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/77004">#77004</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/76992">#76992</a> — @teknium1)</li> <li>Patch: already-applied edits return success no-op, whitespace-visualized no-match diagnosis, ambiguous-match locations listed (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/76998">#76998</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/77024">#77024</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/77001">#77001</a> — @teknium1)</li> <li>Search: zero-match probes + multi-path recovery, auto-multiline for newline patterns; read_file default limit 500 → 2000 lines; negative-result cache for read/search misses; write_file verifies on-disk content (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/77011">#77011</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/77102">#77102</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/76996">#76996</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/76945">#76945</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/77055">#77055</a> — @teknium1, @kshitijk4poor)</li> <li>execute_code recovery hints; skill_view dedup stub for unchanged re-reads; terminal/execute_code schema prose trimmed ~40%; tiered tool disclosure scales with catalog size; default iteration limit 90 → 500 (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/77106">#77106</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/77095">#77095</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/77023">#77023</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/67034">#67034</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/72176">#72176</a> — @teknium1)</li> </ul> <h3>Providers & models</h3> <ul> <li>Vercel AI Gateway provider + Vercel Sandbox terminal backend return, modernized (SDK 0.7.2, telemetry off) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/74518">#74518</a> — @teknium1)</li> <li>Gemini 3.1 Pro + 3.6 Flash in catalogs; Gemini salvage cluster (3.6-flash aux default, Vertex catalog, direct cost tracking); claude-opus-5 in OpenRouter + Nous Portal; deepseek-v4-flash-0731 (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/73479">#73479</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/73516">#73516</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/70946">#70946</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/75501">#75501</a> — @teknium1)</li> <li>Bedrock Converse API prompt caching (cachePoint) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/70231">#70231</a> — @JoaoMarcos44)</li> <li>OpenAI data-residency endpoints get declared transport + correct catalog; provider-aware API-server request routing; backend-acknowledged session model lock; Nous sticky routing via top-level session_id (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/74958">#74958</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/70853">#70853</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/70950">#70950</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/69253">#69253</a> — @victor-kyriazakos, @teknium1)</li> <li>Model picker: curated defaults + collapsible providers + select-all; stale caches served instantly with background refresh; custom-endpoint probe capped at 1.5s; honcho OAuth device-code login (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/73172">#73172</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/76430">#76430</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/76922">#76922</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/61608">#61608</a> — @OutThisLife, @teknium1, @kshitijk4poor, @akattelu)</li> <li>ACP: named custom providers in the model selector; authenticated cross-provider model choices; non-blocking startup via background MCP discovery (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/70082">#70082</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/70404">#70404</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/75985">#75985</a> — @israellot, @amanning3390, @kshitijk4poor)</li> </ul> <h3>Secrets & config</h3> <ul> <li>Command-helper secret source (composes with all vaults); one-command token rotation + actionable startup errors; opt-in encrypted break-glass cache for Bitwarden; vault-injected keys scoped per profile home; orchestrator preserve_existing + profile aliasing (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/69266">#69266</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/68605">#68605</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/69251">#69251</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/69250">#69250</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/69058">#69058</a> — @teknium1)</li> <li><code>${env:VAR}</code> SecretRef parity between config.yaml and MCP config; secret-source env vars reach stdio MCP servers (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/69267">#69267</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/69053">#69053</a> — @teknium1)</li> <li>Canonical config loaders for behavioral reads; table-driven config migration registry; DEFAULT_CONFIG extracted to config_defaults.py; auto-migration support floor at v12 (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/74237">#74237</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/74200">#74200</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/74182">#74182</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/74433">#74433</a> — @teknium1)</li> </ul> <h2>🌐 Gateway, Relay & Fleet</h2> <ul> <li>Session activity heartbeats, stall watchdog, and bounded compression waits — re-landed hardened after an in-window revert cycle (originally #72424 by @fangliquanflq) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/76354">#76354</a> — @teknium1)</li> <li>SessionState consolidation (19 session-keyed dicts → one turn/conversation/persistent-scoped object); TurnContext/TurnRunner seam extraction; declarative busy_policy on CommandDef (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/74289">#74289</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/74353">#74353</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/74197">#74197</a> — @teknium1)</li> <li>Relay parity waves: Phase 1 (supported_ops discovery, identity fields, /handoff aliasing), Phase 2 media, Phase 3 interactive prompts, Phase 4 thread lifecycle; egress typing indicators (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/71300">#71300</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/71363">#71363</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/71404">#71404</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/71624">#71624</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/69721">#69721</a> — @benbarclay)</li> <li>HSP skill sync: personal client (M1) + org-skills client (M2) + org-skill namespace with token-gated discovery (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/66730">#66730</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/70024">#70024</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/70459">#70459</a> — @benbarclay)</li> <li>Buzz (Block/Nostr) platform adapter with native WebSocket inbound transport + NIP-42 auth (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/73610">#73610</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/73761">#73761</a> — @teknium1)</li> <li>Photon: native polls, effects, clarify-as-poll, rich links (4-PR salvage) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/73614">#73614</a> — @teknium1)</li> <li>Slack: native Block Kit clarify buttons; opt-in reaction triggers; outbound payload sanitization; thread-context lifecycle fixes (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/69318">#69318</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/70195">#70195</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/69317">#69317</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/69320">#69320</a> — @teknium1)</li> <li>Discord auto-thread sessions keyed on prospective_thread_id; reply references built from ids (no fetch_message); WhatsApp configurable inbound read receipts (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/76513">#76513</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/76875">#76875</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/73322">#73322</a> — @benbarclay, @kshitijk4poor)</li> <li>Kanban wakes resume the creator's DM/thread session; kanban/delegate wake-ups reach api_server sessions; per-task model + thinking-depth from the board (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/72191">#72191</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/70171">#70171</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/69876">#69876</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/76417">#76417</a> — @teknium1, @OutThisLife)</li> <li>Relay: Discord tool-progress routed into the auto-thread instead of the parent channel (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/77830">#77830</a> — @benbarclay)</li> <li>Outbound webhooks — push signed lifecycle events to external endpoints; simplex channel enumeration in <code>hermes send --list</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/69406">#69406</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/77110">#77110</a> — @teknium1)</li> </ul> <h2>🖥️ Hermes Desktop App</h2> <h3>The platform wave</h3> <ul> <li><strong>Artifacts</strong> — versioned cards, sandboxed live preview, right-rail viewer (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/72345">#72345</a> — @teknium1)</li> <li><strong>Plugin SDK</strong> — Kanban as the founding desktop plugin; <code>ctx.download</code> hands the user a file; widget-app SDK (apps as state+reducer+render) with three reference apps; widget-grid layout engine + background-aware theme engine (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/61173">#61173</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/74413">#74413</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/68306">#68306</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20379">#20379</a> — @OutThisLife)</li> <li>Quick-entry window (global hotkey → any session); multiple GUI windows; floating pane placement; pane toggles anywhere + hidden header; ⌘O open-folder-as-project (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/72315">#72315</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/68259">#68259</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/73143">#73143</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/75848">#75848</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/74623">#74623</a> — @teknium1, @OutThisLife)</li> <li>SSH remote-backend connection mode; event-driven live sync replaces always-on polls; remote profile routing/sessions/pool lifecycle repaired (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/68130">#68130</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/73673">#73673</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/72835">#72835</a> — @yoniebans, @OutThisLife)</li> <li>Let the agent drive the shell (preview pane + pane focus) AND inspect the desktop app it's developing; find-in-page (Ctrl+F); GUI terminal copy/paste + font picker (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/69519">#69519</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/73121">#73121</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/72235">#72235</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/73705">#73705</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/76395">#76395</a> — @OutThisLife, @teknium1)</li> </ul> <h3>Composer & UX</h3> <ul> <li>Attach files/folders/links via picker; composer chips for @ paths and pasted links; composer undo stack; double-ESC discards draft; double-Enter sends the queued turn; type-to-focus (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/74668">#74668</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/73110">#73110</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/72201">#72201</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/72288">#72288</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/74736">#74736</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/73101">#73101</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/68918">#68918</a> — @OutThisLife)</li> <li>2-keypress model switching (⌘⇧M); YOLO in ⌘K with live toggle state; keyboard-first pickers; keyboard navigation for clarify choices; server-owned pins that follow you between apps (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/74545">#74545</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/74674">#74674</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/74602">#74602</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/69799">#69799</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/74234">#74234</a> — @OutThisLife)</li> <li>Grouped, live-ticking tool-activity line; improved tool call detail views; @session links resolve to clickable titles; brand icons on known-domain links; iMessage-style emoji reactions (opt-in, two-way); double-click to heart (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/72893">#72893</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/69868">#69868</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/71162">#71162</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/73047">#73047</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/74533">#74533</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/74644">#74644</a> — @OutThisLife, @teknium1)</li> <li>Sidebar date dividers + pinned section + opt-in stale-session auto-archive; sessions stop lying about running state; credit-usage toasts; configurable attachment size limit; Cron Blueprints + Webhooks pages; searchable timezone picker (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/70822">#70822</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/72303">#72303</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/69828">#69828</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/73221">#73221</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/70066">#70066</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/69687">#69687</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/73505">#73505</a> — @OutThisLife, @austinpickett, @Adolanium, @teknium1)</li> <li>RFC 8252 native desktop sign-in (system browser + PKCE, no webview cookies); "Connect to existing Hermes" in first-run onboarding; profile-correct pairing approvals with a desktop surface (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/67920">#67920</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/70907">#70907</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/74446">#74446</a> — @benbarclay, @OutThisLife)</li> <li>Keep-computer-awake toggle + notch wake indicator; /battery status-bar toggle; UI zoom 90% default preset; status bar hideable (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/68140">#68140</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/76396">#76396</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/68860">#68860</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/73161">#73161</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/72960">#72960</a> — @OutThisLife, @teknium1)</li> </ul> <h3>Desktop performance (60fps wave 2)</h3> <ul> <li>Streaming cost independent of transcript length; 60fps on real sessions (reflow-gated pins, adaptive flush); drag at 60fps with five streaming tabs; multitab streaming made fast (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/71835">#71835</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/72504">#72504</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/72346">#72346</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/71780">#71780</a> — @OutThisLife)</li> <li>Hidden-pane timers paused (agents view, cron sidebar, floating pet), scroll/status loops stopped in busy sessions (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/77651">#77651</a> — @kshitijk4poor); idle CPU near zero in the background; sidebar/overlay render churn killed; statusbar + transcript stop re-rendering per token/sash-drag/session-switch; ⌘K opens instantly; renderer cold start keeps shiki/mermaid off the boot path (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/75218">#75218</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/73698">#73698</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/72163">#72163</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/72245">#72245</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/72524">#72524</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/74665">#74665</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/73024">#73024</a> — @OutThisLife)</li> <li>State diagnostics (render + store churn counters) + a lint rule banning atom-mirrored refs so the stale-read bug class cannot return; Playwright E2E suite with visual regression diffs (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/71925">#71925</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/71560">#71560</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/65805">#65805</a> — @OutThisLife, @teknium1, @ethernet8023)</li> </ul> <h2>🖥️ CLI, TUI & Dashboard</h2> <ul> <li><code>!</code> shell mode; <code>/init</code> AGENTS.md generation; <code>/diff</code> (staged/all/session, cross-surface); <code>/context</code> breakdown; <code>/focus</code> reduced-output view; Ctrl+S prompt stash; persistent <code>/goal</code> indicator; multi-select clarify (checkboxes) across CLI/gateway/TUI (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/72257">#72257</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/72178">#72178</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/72240">#72240</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/72242">#72242</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/72302">#72302</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/72262">#72262</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/72244">#72244</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/72188">#72188</a> — @teknium1, salvaging @SHL0MS, @iRonin, @gigi206 + more)</li> <li><code>hermes import-agent</code> — one-command migration from Claude Code / Codex CLI setups (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/72190">#72190</a> — @teknium1)</li> <li>Per-turn summary line + live token flow in the spinner; cross-surface theme SDK (one skin themes CLI, TUI, and desktop, live) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/72246">#72246</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/68857">#68857</a> — @teknium1, @OutThisLife)</li> <li>TUI: reach the model picker without wrecking your draft + mid-turn switching; slash menu leads with your most-used skills; attachments live in the composer; Arabic (ar) locale with RTL across desktop/dashboard/agent (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/74756">#74756</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/75931">#75931</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/75210">#75210</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/70870">#70870</a> — @OutThisLife)</li> <li><code>hermes -w</code> startup ~14s → ~1.8s; global <code>--version</code> fast path; banner update-check 6× faster; dashboard lazy-loads routes + GROUP BY session stats; session filtering tabs (Chats/Automation/All) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/71637">#71637</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/62096">#62096</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/74188">#74188</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/72294">#72294</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/73362">#73362</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/73865">#73865</a> — @teknium1, @kshitijk4poor)</li> <li>Runtime: Node 26 required across installers/heal/upgrade, managed Node/uv resolve before bare PATH, outdated managed trees heal to target major; brew + pip/PyPI wheel channels retired (shell installer / Docker / Nix are the supported channels) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/76459">#76459</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/68217">#68217</a> — @ethernet8023)</li> </ul> <h2>🧩 Skills, Plugins & MCP</h2> <ul> <li><strong>A2A v1.0</strong> — Agent-to-Agent protocol plugin (closes #514) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/77109">#77109</a> — @teknium1)</li> <li>Curator: surface unmanaged skills + <code>curator adopt</code>; skill-description truncation surfaced to authors; grounded-citations skill (+ fact-checking mode); simplify-code v1.1; tldraw-offline scripting skill (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/71648">#71648</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/70519">#70519</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/71698">#71698</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/77104">#77104</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/70440">#70440</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/66896">#66896</a> — @teknium1)</li> <li>Office skills bundled: docx, xlsx, pdf + refreshed powerpoint; skills-tree debloat continues (yuanbao, segment-anything, jupyter, heartmula, audiocraft → optional-skills; claude-marketplace source removed; hub restructure absorbing themes/desktop-plugins/tui-widgets) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/68595">#68595</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/70452">#70452</a>–<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/70456">#70456</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/73903">#73903</a> — @teknium1)</li> <li>MCP: Comfy Cloud catalog entry with curated 20-tool default; hidden-whitespace warnings in MCP config; pinecone-research optional skill (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/66112">#66112</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/75736">#75736</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/70512">#70512</a> — @teknium1)</li> <li>MCP lazy server startup from a fingerprint-keyed on-disk tool-schema cache — configured servers no longer all boot at session start (design from #56832) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/77511">#77511</a> — @kshitijk4poor)</li> <li>NeMo Relay observability integration — re-landed after an in-window revert, on stable NeMo Relay 0.6 (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/67607">#67607</a> — @afourniernv)</li> <li>Gateway health & diagnostics OTLP export (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/64536">#64536</a> — @victor-kyriazakos)</li> </ul> <h2>🔒 Security & Reliability</h2> <ul> <li>Iron-proxy credential-injection egress firewall re-landed (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/70848">#70848</a> — @teknium1)</li> <li>DNS-pinned SSRF-safe fetches + Slack CDN allowlist; strict redaction at compaction boundaries; ReDoS eliminated in config-key redaction patterns; prose words embedding a secret keyword no longer masked (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/70193">#70193</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/69294">#69294</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/76083">#76083</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/67776">#67776</a> — @teknium1)</li> <li>Tier-3 credential reads scoped (FAL/XAI/VERCEL/DAYTONA/GITHUB presence checks etc.); CVE dependency pins refreshed (cryptography, starlette, python-multipart); hindsight env file 0600; /model moved off the gateway event loop (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/75888">#75888</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/72362">#72362</a> — @teknium1)</li> <li>Windows hardening wave: text-mode subprocess decode bug class closed repo-wide, console flashes hidden across daemons/env probes/LSP/installer paths, residual encoding gaps (MCP stdio, gateway update I/O, STT/TTS, desktop spawn) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/70875">#70875</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/70205">#70205</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/70264">#70264</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/71014">#71014</a> — @teknium1, salvaging several community PRs)</li> <li>State/session integrity: four session-state fixes (safe close tracking, flush-cursor class fix, row-retry, usage-PK healer); compact v23 FTS layout + <code>hermes sessions optimize</code> + CJK-bigram FTS; read-path split with per-thread read-only connections (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/75883">#75883</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/65798">#65798</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/69423">#69423</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/73344">#73344</a> — @teknium1, @kshitijk4poor)</li> <li>OpenViking memory-provider hardening — fail closed on blocked endpoints, server verification before credentials are sent, config.yaml-first settings (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/77747">#77747</a> — @kshitijk4poor)</li> <li>Credential pool: reset-aware primary restore (stay on fallback until the rate-limit window resets) + deferred-refresh locking fixes; FTS UPDATE triggers narrowed with fail-closed CJK migration (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/77631">#77631</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/77628">#77628</a> — @kshitijk4poor)</li> <li>Config-driven memory allocator trim with telemetry; holographic memory vectors stored float32; loop-invariant HRR encodes hoisted (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/76905">#76905</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/76917">#76917</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/76881">#76881</a> — @kshitijk4poor)</li> </ul> <h2>🐛 Notable Bug Fixes</h2> <ul> <li>Voice: full-duplex interruption during generation AND playback; whole-turn desktop speech; auto-TTS delivery gaps (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/74223">#74223</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/69936">#69936</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/73508">#73508</a> — @teknium1)</li> <li>Desktop: Stop parks the queue instead of firing the next queued prompt; branch-in-new-chat restart loss; false remote-gateway reauthentication; cross-session composer leaks (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/68725">#68725</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/71960">#71960</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/68250">#68250</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/70986">#70986</a> — @SHL0MS, @alelpoan, @helix4u, @OutThisLife)</li> <li>Gateway: session lists scoped before limiting; relay-backed home delivery after restart; timeline display events persisted (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/65509">#65509</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/70102">#70102</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/69771">#69771</a> — @GodsBoy, @victor-kyriazakos, @ethernet8023)</li> <li>Agent: context-length fallback logging + batch trajectory durability; Codex OAuth context windows revalidated against the live catalog (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/76027">#76027</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/68554">#68554</a> — @kshitijk4poor, @teknium1)</li> <li>...plus roughly 770 more <code>fix:</code> PRs across every subsystem this window.</li> </ul> <h2>👥 Contributors</h2> <p><strong>647 contributors</strong> shipped this release (commit authors, co-authors, and salvaged-PR credits).</p> <h3>Core</h3> <p>@teknium1, @OutThisLife (desktop, voice, perf), @kshitijk4poor (perf, caching, salvage), @ethernet8023 (runtime, E2E, desktop), @benbarclay (relay, HSP, auth)</p> <h3>All Contributors (alphabetical)</h3> <p>@02356abc, @0301chris, @0xAlcibiades, @0xDevNinja, @0xLeathery, @0xprincess, @0xr00tf3rr3t, @100yenadmin, @2001Y, @3ssiri, @55nx954gn6-debug, @686f6c61, @87degrees, @aaronlab, @abundantbeing, @Adolanium, @adriansotomora, @adurham, @afourniernv, @afurm, @AgenticSpark, @ahmadashfq, @AhmetArif0, @ai-ag2026, @AIalliAI, @aider4ryder, @airclear, @ajzrva-sys, @akattelu, @AKAZIK-py, @akb4q, @akshan-main, @AlanBurningsuit, @alelpoan, @AlexFucuson9, @AlexxRussell, @AllardQuek, @alt-glitch, @aman-merchant, @amanning3390, @amathxbt, @aml1973, @amoreno16003, @AndrewMoryakov, @andrexibiza, @andynguyendk, @andyylin, @aneym, @angelos, @aniruddhaadak80, @AnnasMazhar, @annguyenNous, @anoopmehendale-cue, @AnthonyFrancis, @arcabotai, @ArcherQAQ, @Ares4Tech, @arimu1, @arnoldfrancisca, @asimons81, @asorry75, @AtakanGs, @ATran28, @austinpickett, @Automata-intelligentsia, @awain7, @aweiker, @aydnOktay, @ayushere, @b, @baau, @baauzi, @baenregod, @bakhtiersizhaev, @Baophan00, @baoyu0, @Bartok9, @basilalshukaili, @BB-light, @bbopen, @Beandon13, @beardedeagle, @bedirhancode, @benbarclay, @benegessarit, @benjamin2026-dot, @bennybuoy, @BenSheridanEdwards, @BKStock, @BlackishGreen33, @bnikanjam, @bounce12340, @Bounty13, @bpross, @briandevans, @bricelb, @brunopirz, @bryanneva, @byshubham, @camaleonidas, @canorionen, @carbongotfound, @carljborg, @carlotestor, @carrion256, @caseyanthony, @cat-thats-fat, @Cdddo, @ceverson70, @chancelu, @chaos-xxl, @CharlesMcquade, @chazmaniandinkle, @chefboyrdave21, @chelsealong, @Christopher-Schulze, @chuenchen309, @ciabata-git, @cifangyiquan, @cipry0200, @ckaznocha, @ckorhonen, @CleanDev-Fix, @CocaKova, @coffee-the-dev, @colingreig, @Commander, @connorblack, @CoreyNoDream, @Cossackx, @crayfish-ai, @criptogus, @ctaylor86, @cucurigoo, @cypres0099, @d31tcjg, @Da7-Tech, @damiankluk, @danielblankhh, @DanielMaly, @Dannou, @davesecops, @davidgut1982, @DavidMetcalfe, @davidrobertson, @ddifa86, @ddy4633, @deacon-botdoctor, @deaneeth, @deepjia, @deltaahead, @DESXIE, @devsart95, @dhruvkej9, @dhruvraajeev, @DI404N, @diegomarino, @diffen77, @dirtyren, @dnth, @DocAwk, @dolphin-creator, @Dolverin, @dombejar, @doncazper, @dongjiang1989, @DonutsDelivery, @dorukardahan, @Doud-FR, @drafish, @Drexuxux, @drleadflow, @dsitmilis, @dskwe, @dso2ng, @dstkwll, @Dusk1e, @dyreckt, @eagle-nyp, @Eapwrk, @eason2026, @eazye19, @egilewski, @ehz0ah, @elcocoel, @eliemada, @eloklam, @elphamale, @embwl0x, @emozilla, @Enough1122, @enzo2, @erick713006, @ErnestHysa, @Esther-Zhu023, @ethernet8023, @evgyur, @f-trycua, @faikwo, @falkoro, @fangliquanflq, @fazerluga-creator, @fcavalcantirj, @ferminquant, @fesalfayed, @FixItFoundry, @flag0x369, @floatingrain, @FlorianVal, @flyingdoubleG, @FraserHum, @frizikk, @frohsinnllc, @Frowtek, @FvanW, @fyzanshaik, @ganzziani, @gercamjr, @giggling-ginger, @gigi206, @giladbau, @glesperance, @gnanam1990, @GodsBoy, @golldyck, @gonzalofrancoceballos, @gshall, @gumclaw, @Guoen0, @Gurud25, @gvago, @HaisamAbbas, @hansai-art, @hanyu1212, @happy5318, @haran2001, @hariNEzuMI928, @harjothkhara, @harrisonmedmedmetrics, @Harshkamdar67, @hdd69, @heathley, @helix4u, @HeLLGURD, @hellofrommorgan, @hereicq, @hermz580, @HexLab98, @hinablue, @HOYALIM, @hrnbld, @huntsyea, @iamwongeeeee, @ianks, @ibaldr89, @Icather, @ijevin, @ildunari, @Imgaojp, @imgyf, @immuhammadfurqan, @iniak, @iRonin, @isheng-eqi, @iso2kx, @israellot, @itsflownium, @IvanMiao, @iveywest, @izumi0uu, @Jaaneek, @JabberELF, @jackjin1997, @jakelongvu-bot, @Janig88, @jasoisjaso, @jbbottoms, @jeeaay, @jeeves-assistant, @jeff-mettel, @JeffStone69, @JeliTron, @jethac, @jfmusa2024-cyber, @Jiahui-Gu, @jinglun010-cpu, @JoaoMarcos44, @joelbrilliant, @John-Lussier, @johnkattenhorn, @Johnny-xuan, @johnnykor82, @joncaldwell90, @JonthanaHanh, @jordanhubbard, @JorkeyLiu, @jquesnelle, @jrfbch, @juanmartitegui, @Julientalbot, @juniperbevensee, @justemu, @kael-odin, @kaishi00, @kaiyisg, @kamonspecial, @kandotrun, @KCAYAAI, @keepConcentration, @kelsia14, @Kenmege, @kerpopule, @Kev-fs, @Kewe63, @kharitonov-ivan, @Kingdomwarrior23, @kingrubic, @Kinkoolino-Hermes, @kjames2001, @knoal, @kohoj, @Kolektori, @konsisumer, @koshaji, @kronexoi, @kshitijk4poor, @kuangmi-bit, @kudi88, @kylezh, @kyssta-exe, @Kyzcreig, @lanyusea, @LauraGPT, @LavyaTandel, @LeonSGP43, @leoprodz, @LevSky22, @lEWFkRAD, @lewis4x4, @lexgenius, @LFDMcore, @LiangYang666, @lidises, @light-merlin-dark, @lihengming, @Linux2010, @LionGateOS, @liuhao1024, @liusencomic-cyber, @ljsdut, @lkevincc0, @LLQWQ, @locker95, @logical-and, @LordNikon1983, @lost9999, @Love-JourneY, @LunarNexus, @luxiaolu4827, @lxman, @m4r13y, @MaartenDMT, @MacroAnarchy, @maff-t2b, @MahdiHedhli, @mahdiwafy, @malaiwah, @mannnrachman, @mapu-og, @markoub, @matarbot, @materemias, @matt-strawbridge, @mattezell, @MattMaximo, @mattmillerai, @mattshapsss, @MaxFreedomPollard, @maxmilian, @McHermes, @mehmetkr-31, @menhguin, @metamon-p, @mijanx, @MLcogTech, @moeadham, @mollusk, @monerostar, @MorAlekss, @morolab, @motoblurr, @MrAbsaroka, @mrzlab630, @ms-alan, @muctobi, @MustafaK99, @mwbrooks, @myk0la-b, @mzkarami, @namredips, @nanami7777777, @nanckh, @natebransc, @nateEc, @navahc09, @Ne0teric, @necoweb3, @nftpoetrist, @nickkarhan, @Ninso112, @nkreadly07, @nnnet, @NPFernando, @nrmjeremy, @nu476, @null-runner, @nullptr0807, @NYTEMODEONLY, @obelisk-complex, @OfficialDelta, @okalentiev, @oliviaaaa7788, @OmarB97, @omid3098, @ooiuuii, @oppenheimor, @oreoluwa, @ousiaresearch, @OutThisLife, @panDing19, @paralegalia, @patp, @PavelTajdus, @peacockesq, @Pebrd, @peterw, @phantom-instruction-set, @pierrenode, @PINKIIILQWQ, @piyushbag, @plainOldCode, @pnascimento9596, @pooyan6, @pprism13, @praneshnikhar, @PRATHAMESH75, @Prontsevich, @quantumbyte1617, @QuarkAssistant, @Que0x, @Qwinty, @rayjerrywoo, @rayjun, @Reaper-Forge, @RedClaus, @redsol-llc, @reinbeumer, @RelaxJonh, @RemyFevry, @replygirl, @rerdi92, @rhylryan21, @RichardHojunJang, @richkapp, @rkfshakti, @rlaope, @rob-coco, @rob-maron, @robbyczgw-cla, @robgfl45, @robzolkos, @rod-nxtlevel, @rodboev, @Roger--Han, @rsayar, @rudironsoni, @ruizanthony, @rungmc357, @s00rz, @s905060, @Sahil-SS9, @sakhnenkoff, @salimhamed, @samrusani, @sbe27, @ScaleLeanChris, @schattenan, @sealca, @seamusmore, @sebaorrego-koronet, @seppegadeyne, @sergioperezcheco, @sethmills21, @sg-shag, @sgtworkman, @shady2k, @shannonsands, @shellybotmoyer, @sherman-yang, @shivasymbl, @Shizoqua, @SHL0MS, @simonmmafs, @skyer-flyyy, @Skywind5487, @sl4m3, @Slopez2023, @SmallNew2003, @smfworks, @Soju06, @Solitud1nem, @solyanviktor-star, @somewheresy, @Sora-bluesky, @sowork-skills, @soynchux, @sparkeros, @spfcraze, @spiky02plateau, @spro-work, @SquabbyZ, @srojk34, @StanleyStetson, @StartupBros-com, @StellarisW, @stephenschoettler, @Stoltemberg, @stremtec, @Studio729, @stwith, @subhoya, @sunwz1115, @suparious, @supplefrog, @sycamoregroupltd, @szzhoujiarui, @tachyon-r, @Tamaz-sujashvili, @tandixit95, @tank321, @tavva, @tcconnally, @temalo, @th3wingman, @the3asic, @TheAngryPit, @TheEpTic, @theone139344, @TheSmokeDev, @thirstycrow, @tianma-if, @Tianworld, @tinetwork, @to-na, @tom-channel, @tomqiaozc, @toomij99, @trac3r00, @Tranquil-Flow, @Trantor-develops, @trevorgordon981, @trevornk, @trippyogi, @trymhaak, @tsuk1nose, @tusharui, @TutkuEroglu, @tw0316, @twe-cloud, @tymrtn, @UltraInstinct0x, @umi008, @unixwzrd, @upicat, @vaibhavjnf, @valda, @Vansh5632, @Variable85, @vb3, @VerbalChainsaw, @vexclawx31, @victor-kyriazakos, @vigilancetech-com, @virtuadex, @Vissirexa, @VittoriaLanzo, @VIVAAN-DHAWAN, @wangyunyou, @waroffchange, @wayne1992127, @web3blind, @webtecnica, @WeiYusc, @wen0531, @wernerhp, @wesleysimplicio, @westkite1201, @wgd753, @wgu9, @wjj1872744570-source, @wjq990112, @WojtekMR3, @WOLIKIMCHENG, @Wpnx330, @wreed4, @wuli666, @WXBR, @wz-heng, @x7peeps, @xcompass, @xd-Neji, @xenodmc, @Xipong, @xrazai, @Xue-1997, @xxxigm, @y0shua1ee, @yaleman, @yemi-lagosinternationalmarket, @ygd58, @yingliang-zhang, @yinkev, @yitang, @YLChen-007, @yoniebans, @youzi-1122, @ypwcharles, @yuexiongHNU, @yungchentang, @yuzilongleif-collab, @yyzquwu, @z23, @ZachariahChu, @zakhounet, @zapabob, @Zavianx, @zehuaw1, @zengzheqing, @Zeraphim, @zgzczzw, @zhangyang-crazy-one, @Zhekinmaksim, @Zioywishing, @zmlgit, @zombopanda, @ZundamonnoVRChatkaisetu Also: @kyssta-exe 25470058+kyssta-exe.</p> <p>Thank you to every one of the 647 people who contributed code, co-authored fixes, filed the ~1,200 issues this release closes, and had their PRs salvaged into main. Hermes ships this fast because of you.</p> <hr> <p><strong>Full Changelog</strong>: <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/compare/v2026.7.20...v2026.8.3">v2026.7.20...v2026.8.3</a></p> </div><div class="link-row" data-astro-cid-l7qxtvnw><span class="lr-label" data-astro-cid-l7qxtvnw>Links</span><a href="https://github.com/NousResearch/hermes-agent/releases/tag/v2026.8.3" data-astro-cid-l7qxtvnw>GitHub release notes ↗</a><a href="https://github.com/NousResearch/hermes-agent/compare/v2026.7.30...v2026.8.3" data-astro-cid-l7qxtvnw>Full diff ↗</a><a href="/blog/2026-08-08-hermes-herald-release-v020/" data-astro-cid-l7qxtvnw>Our release deep-dive →</a><a href="/skills/" data-astro-cid-l7qxtvnw>Skill Library →</a></div></div></details></div><div data-astro-cid-l7qxtvnw><h3 class="month-h" data-astro-cid-l7qxtvnw>July 2026</h3><details class="rel" data-astro-cid-l7qxtvnw><summary data-astro-cid-l7qxtvnw><span class="r-arrow" data-astro-cid-l7qxtvnw>▶</span><span class="r-ver" data-astro-cid-l7qxtvnw>v0.19.1</span><span class="r-date" data-astro-cid-l7qxtvnw>2026-07-30</span></summary><div class="rel-body" data-astro-cid-l7qxtvnw><p class="r-summary" data-astro-cid-l7qxtvnw>Patch release. This tag rolls up the ~1,000+ PRs merged since v0.19.0 into a stable tagged release for downstream consumers (Docker images, hosted deployments, fresh installs).</p><div class="r-notes" data-astro-cid-l7qxtvnw><blockquote> <p>Patch release. This tag rolls up the ~1,000+ PRs merged since v0.19.0 into a stable tagged release for downstream consumers (Docker images, hosted deployments, fresh installs).</p> </blockquote> <hr> <h2>About this release</h2> <p><strong>Full curated release notes for this window will ship with v0.20.0</strong>, which will document everything from v0.19.0 onward — highlights, feature areas, and complete contributor credits. Nothing in this window is skipped.</p> <h2>Updating</h2> <pre><code class="language-bash">hermes update # or fresh install: curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash </code></pre> <p><strong>Full Changelog</strong>: <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/compare/v2026.7.20...v2026.7.30">v2026.7.20...v2026.7.30</a></p> </div><div class="link-row" data-astro-cid-l7qxtvnw><span class="lr-label" data-astro-cid-l7qxtvnw>Links</span><a href="https://github.com/NousResearch/hermes-agent/releases/tag/v2026.7.30" data-astro-cid-l7qxtvnw>GitHub release notes ↗</a><a href="https://github.com/NousResearch/hermes-agent/compare/v2026.7.20...v2026.7.30" data-astro-cid-l7qxtvnw>Full diff ↗</a><a href="/gateway/" data-astro-cid-l7qxtvnw>Gateway Guide →</a><a href="/blog/2026-06-06-hermes-desktop-surface-release/" data-astro-cid-l7qxtvnw>Desktop deep-dive →</a></div></div></details><details class="rel" data-astro-cid-l7qxtvnw><summary data-astro-cid-l7qxtvnw><span class="r-arrow" data-astro-cid-l7qxtvnw>▶</span><span class="r-ver" data-astro-cid-l7qxtvnw>v0.19.0</span><span class="r-codename" data-astro-cid-l7qxtvnw>Quicksilver Release</span><span class="r-date" data-astro-cid-l7qxtvnw>2026-07-20</span></summary><div class="rel-body" data-astro-cid-l7qxtvnw><p class="r-summary" data-astro-cid-l7qxtvnw><strong>The Quicksilver Release.</strong> Hermes is the messenger god, and this window we made him move like it. First-turn time-to-first-token dropped <strong>~80% on every platform</strong>, reasoning streams live by default, the desktop app got a ~20-PR speed overhaul (14× faster streaming markdown, virtualized diffs, snappy session switching), and the TUI renders markdown incrementally. Around that speed spine: you can now <strong>manage your Nous subscription without leaving the terminal</strong>, plug <strong>Bitwarden and 1Password</strong> straight into Hermes, let <strong>smart approvals</strong> judge flagged commands for you by default, <strong>watch your subagents work live</strong>, and trust that a finished response <strong>survives a gateway crash</strong> thanks to a durable delivery ledger. This release also rolls up everything from the v0.18.1 and v0.18.2 infrastructure patch tags — those windows are fully documented here.</p><div class="r-notes" data-astro-cid-l7qxtvnw><blockquote> <p><strong>The Quicksilver Release.</strong> Hermes is the messenger god, and this window we made him move like it. First-turn time-to-first-token dropped <strong>~80% on every platform</strong>, reasoning streams live by default, the desktop app got a ~20-PR speed overhaul (14× faster streaming markdown, virtualized diffs, snappy session switching), and the TUI renders markdown incrementally. Around that speed spine: you can now <strong>manage your Nous subscription without leaving the terminal</strong>, plug <strong>Bitwarden and 1Password</strong> straight into Hermes, let <strong>smart approvals</strong> judge flagged commands for you by default, <strong>watch your subagents work live</strong>, and trust that a finished response <strong>survives a gateway crash</strong> thanks to a durable delivery ledger. This release also rolls up everything from the v0.18.1 and v0.18.2 infrastructure patch tags — those windows are fully documented here.</p> </blockquote> <hr> <h2>✨ Highlights</h2> <ul> <li><p><strong>Hermes got dramatically faster — first token in a fraction of the time</strong> — Cold-start "Initializing agent..." used to eat ~4.3 seconds before your first turn even reached the model; it's now ~0.9s, an ~80% cut that applies to the CLI, gateway, TUI, desktop, and cron alike. Round 2 attacked what you <em>see</em> while waiting: reasoning models now stream their thinking live by default (no more staring at a spinner for 30 seconds), and the response box paints per token instead of per line. If Hermes ever felt like it took a deep breath before answering, that breath is gone. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/59332">#59332</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/59389">#59389</a> — @teknium1)</p> </li> <li><p><strong>The desktop app speed wave — 20+ targeted perf PRs</strong> — Long replies used to cost 14× more CPU in the markdown splitter than they do now; giant diffs froze the review pane until we virtualized it; switching sessions thrashes layout no more. Streaming no longer re-renders the sidebar and every tool row per token, profile backends pre-warm on hover intent, and boot-hidden panes mount at idle instead of on the cold-start critical path. The net effect: the desktop app feels like a native app under load, even with huge transcripts and busy agents. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/67154">#67154</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/67818">#67818</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/65898">#65898</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/66033">#66033</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/66747">#66747</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/67742">#67742</a> and more — @OutThisLife)</p> </li> <li><p><strong>Manage your Nous plan from the terminal — <code>/subscription</code> and <code>/topup</code></strong> — Changing your subscription used to mean a trip to the billing website. Now <code>/subscription</code> opens a full flow right in the TUI or classic CLI: see your plan and remaining allowance, preview exactly what an upgrade costs ("Pay $46.30 & upgrade now") or when a downgrade takes effect, and apply it — with scheduled-change banners and undo. The desktop app got a matching billing settings tab. Your wallet never has to leave the keyboard. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/51639">#51639</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/61054">#61054</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/61067">#61067</a> — @alt-glitch)</p> </li> <li><p><strong>Smart approvals are now the default</strong> — When Hermes wants to run a flagged command, an LLM reviewer now assesses it independently instead of asking you to approve every single one — and each verdict covers only that exact command, so a later command matching the same pattern gets its own review. Combined with the new <strong>user-defined deny rules</strong> (which block commands even under yolo mode) and <code>/deny <reason></code> (which tells the agent <em>why</em> you refused so it course-corrects), day-to-day approval fatigue drops sharply without giving up control. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/62661">#62661</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/59164">#59164</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/54518">#54518</a> — @teknium1)</p> </li> <li><p><strong>Plug your password manager into Hermes — Bitwarden & 1Password secret sources</strong> — API keys no longer have to live in a plaintext <code>.env</code>. A new pluggable <code>SecretSource</code> interface lets Hermes fetch secrets from Bitwarden and 1Password (<code>op://</code> references) at load time, with multiple vaults enabled simultaneously, deterministic precedence, conflict warnings, and per-variable provenance. This consolidated eleven competing community PRs into one orchestrated interface — future vault providers drop in as plugins. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/59498">#59498</a> — @teknium1, 1Password provider salvaged from @hwrdprkns)</p> </li> <li><p><strong>Watch your subagents work — live transcripts + durable background delegation</strong> — <code>delegate_task</code> dispatches now return live transcript files you can <code>tail -f</code> the moment the subagents launch: every tool call, result, and streamed reply, one human-readable log per child. And background delegation completions are now <strong>durable</strong> — if the process restarts mid-run, results are restored and delivered through an ownership-checked ledger instead of vanishing. Fan out a fleet, watch any worker live, and never lose the results. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/67479">#67479</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/63494">#63494</a> — @teknium1)</p> </li> <li><p><strong>A finished answer can no longer be lost — the delivery-obligation ledger</strong> — If the gateway died between generating your response and confirming the platform actually delivered it, that answer used to be silently gone (and you'd paid for the turn). Final responses are now recorded in a durable ledger in <code>state.db</code> around the platform send and <strong>redelivered on the next boot</strong> — closing a P1 silent-loss window for Telegram, Discord, Slack, and every other channel. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/67181">#67181</a> — @teknium1)</p> </li> <li><p><strong>One gateway, many profiles — profile-based message routing</strong> — A single multiplexed gateway sharing one bot token can now route specific guilds, channels, or threads to different profiles — each with fully isolated config, skills, memory, and secrets. Point your work Discord server at the <code>work</code> profile and your hobby server at <code>personal</code>, from one bot. A second multiplex hardening wave means one misconfigured profile can no longer take down the whole gateway. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/64835">#64835</a> salvaging @Burgunthy, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/65700">#65700</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/60589">#60589</a> — @teknium1, @benbarclay + six salvaged contributors)</p> </li> <li><p><strong>New providers and the newest frontier models</strong> — Fireworks AI and DeepInfra land as first-class providers (Fireworks with cost estimation and a #2 slot in the provider picker), Upstage Solar joins via salvage, and the model catalogs picked up <strong>GPT-5.6 (Sol/Terra/Luna + Pro variants, wired end-to-end across every route)</strong>, <strong>grok-4.5 (GA)</strong>, <strong>moonshotai/kimi-k3</strong>, <strong>claude-fable-5 / claude-sonnet-5</strong>, and GA <strong>tencent/hy3</strong> — plus LM Studio JIT model loading for local setups. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/62593">#62593</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/63969">#63969</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/61616">#61616</a> — @kshitijk4poor completing @rob-maron's #61578, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/60887">#60887</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/65913">#65913</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/64541">#64541</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/65472">#65472</a>)</p> </li> <li><p><strong>Crank the thinking to max — new reasoning effort tiers and per-model control</strong> — Reasoning effort gained <code>max</code> and <code>ultra</code> levels (GPT-5.6 and Codex's top tiers), selectable everywhere from the CLI to the desktop, with sane clamping on providers with smaller scales. You can now also pin <strong>per-model reasoning-effort overrides</strong> in config, set <strong>per-slot effort in MoA presets</strong> (your advisors think hard, your synthesizer stays fast), and per-task effort for auxiliary models. Thinking depth is now a dial, not a global switch. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/62650">#62650</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/64458">#64458</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/64631">#64631</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/64597">#64597</a> — @teknium1)</p> </li> <li><p><strong>Your sessions, your data — export everything</strong> — <code>hermes sessions export</code> now writes Markdown, Quarto, HTML, prompt-only, and even Hugging Face-ready trace formats, with the full filter surface (age, workspace, platform), an opt-in <code>--redact</code> secret-scrubbing pass, and compacted-session lineage stitched into one logical export. Pair with the new prune filters and bulk archive to keep your session store tidy. Your conversation history is a real dataset now, not a black box. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/60186">#60186</a> salvaging @web3blind, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/60492">#60492</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/60507">#60507</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/59327">#59327</a> — @teknium1)</p> </li> <li><p><strong>Security hardening round</strong> — This window closed a long list of credential-surface gaps: Vertex credentials scoped away from subprocess env and through profile secret scopes, media/vision/image-gen local-file reads routed through one shared credential-read guard, a webhook body-size-cap sweep across every aiohttp server, bot-token redaction in Telegram transport errors, Fireworks token prefixes added to the redactor, six P1 browser/MEDIA/.env hardening PRs salvaged in one pass, and CI hardened against untrusted-ref interpolation. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/57660">#57660</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/58709">#58709</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/59215">#59215</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/56582">#56582</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/57842">#57842</a> — @teknium1, @srojk34, @kshitijk4poor, @jquesnelle)</p> </li> </ul> <hr> <h2>⚡ Performance — the speed spine</h2> <h3>First-turn latency (all platforms)</h3> <ul> <li><strong>~80% TTFT cut</strong> — Discord capability detection off the critical path (token-keyed 24h disk cache + background refresh), Ollama probe skipped for known non-Ollama providers, agent-init blocking work removed; cold submit→dispatch ~4.3s → ~0.9s (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/59332">#59332</a> — @teknium1)</li> <li><strong>Perceived-latency round 2</strong> — <code>display.show_reasoning</code> default ON (watch the model think instead of a spinner), per-token response-box painting with width-aware force-flush, prompt-build caching, mtime-cached timezone resolution (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/59389">#59389</a> — @teknium1)</li> <li>Segment mixed tool batches to recover lost concurrency; drop per-call base64 re-serialization from request-size estimates (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/64460">#64460</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/67788">#67788</a> — @teknium1, @OutThisLife)</li> </ul> <h3>Desktop speed wave</h3> <ul> <li>14× less splitter CPU via incremental block lexing for streaming markdown; virtualized review-pane diffs (no more full-Shiki freeze); snappy session switching on large transcripts; killed the layout-thrash cascade on session switch (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/67154">#67154</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/67818">#67818</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/65898">#65898</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/66033">#66033</a> — @OutThisLife)</li> <li>Cut startup serialization + per-turn REST amplification; pre-warm profile backends and gateway sockets on hover intent; idle-mount boot-hidden panes; fast model picker + dialogs (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/66747">#66747</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/66347">#66347</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/67857">#67857</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/66470">#66470</a> — @OutThisLife)</li> <li>Stop per-token sidebar + tool-row re-renders during streaming; stop eager JSON.stringify of every tool's args/result; scope tool-diff subscriptions; batch sidebar session slices into one profile-DB pass; targeted file-tree revalidation; rAF-coalesced sash resizes (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/67742">#67742</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/67842">#67842</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/67195">#67195</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/67245">#67245</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/67824">#67824</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/67838">#67838</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/67844">#67844</a> — @OutThisLife)</li> <li>Systematized perf benchmark harness with trustworthy cold-start + first-token measurement, replacing 12 one-off scripts (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/67466">#67466</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/67697">#67697</a> — @OutThisLife)</li> </ul> <h3>Everywhere else</h3> <ul> <li>TUI renders streamed markdown incrementally per block (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/67236">#67236</a> — @OutThisLife)</li> <li>Skill discovery cached by scan signature; snapshot manifest builds ~5× faster; text prefilter before AST parse in tool discovery (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/61414">#61414</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/61131">#61131</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/63941">#63941</a> — @kshitijk4poor, @ethernet8023)</li> <li>Copy-on-write message prep instead of full deepcopy; model-metadata probe-cache cluster; gateway <code>session.resume</code> model + display history from one SELECT (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/61133">#61133</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/61368">#61368</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/67247">#67247</a> — @kshitijk4poor, @OutThisLife)</li> <li><code>hermes update</code> skips npm install when Node manifests are unchanged; dashboard session-list payloads trimmed + messages paginated (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/61580">#61580</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/60883">#60883</a> — @kshitijk4poor)</li> <li>Byte-stable gateway system prompts — pinned session-context render keeps the prompt cache alive across turns (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/67403">#67403</a> — @kshitijk4poor)</li> </ul> <h2>🏗️ Core Agent & Architecture</h2> <h3>Providers & models</h3> <ul> <li><strong>Fireworks AI provider</strong> with cost estimation + cached picker price columns, promoted to #2 in provider pickers (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/62593">#62593</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/65476">#65476</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/65214">#65214</a> — @teknium1)</li> <li><strong>DeepInfra</strong> hardened integration; <strong>Upstage Solar</strong> provider (#42231 salvage) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/63969">#63969</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/64541">#64541</a> — @kshitijk4poor)</li> <li><strong>GPT-5.6 (Sol/Terra/Luna + Pro) end-to-end</strong> — context lengths, native/Codex catalogs, pricing, compaction caps across every route (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/61616">#61616</a> — @kshitijk4poor, building on @rob-maron)</li> <li>grok-4.5 (GA) catalog + reasoning allowlist; kimi-k3 on Nous Portal + OpenRouter (kimi-k2.x retired) + K3 discovery on the Kimi Coding endpoint; claude-fable-5 / claude-sonnet-5 / fugu-ultra curated; GA tencent/hy3 (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/60887">#60887</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/65913">#65913</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/65922">#65922</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/56617">#56617</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/60943">#60943</a> — @teknium1)</li> <li>Catalog-labeled silent default (GLM-5.2) + bare-provider <code>/model</code> cost-safe routing; LM Studio JIT load mode; adaptive thinking for Kimi-family Anthropic endpoints (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/64771">#64771</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/65472">#65472</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/67606">#67606</a> — @teknium1, @kshitijk4poor)</li> <li>GLM-5.2 native reasoning_effort controls; Gemini request-context improvements; extra HTTP headers for LLM API calls; per-client model routing on the API server (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/58884">#58884</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/61873">#61873</a> — @vishal-dharm, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/57038">#57038</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/57028">#57028</a> — @teknium1)</li> <li><strong>Claude Sonnet 5 fully wired</strong> — curated lists, intro pricing, and metadata across every route (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/67932">#67932</a> — @teknium1)</li> <li><strong>Hide providers you don't use</strong> — <code>enabled: false</code> per-provider flag + <code>excluded_providers</code> config scrub unwanted providers from <code>/model</code> pickers and built-in resolution (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/67971">#67971</a> — @teknium1)</li> <li>Bedrock catalog wave: real context-window probing from the live endpoint, 1M-context rows for current-gen Claude + Fable, geo-prefix parity, versioned profile-ID pricing, Opus 4.8/4.7 rows (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/68007">#68007</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/67977">#67977</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/68005">#68005</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/67976">#67976</a> — @teknium1)</li> <li>kimi-k3 rollout completed across Kimi-direct catalog surfaces with 1M context on canonical Kimi Coding endpoints (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/68108">#68108</a> — @teknium1)</li> <li>Provider pickers: Qwen providers folded into one group row; collapsible provider groups in the desktop model picker; friendlier TUI model display grouping same-endpoint providers (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/67758">#67758</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/67904">#67904</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/67908">#67908</a> — @teknium1)</li> </ul> <h3>Reasoning & MoA</h3> <ul> <li><code>max</code> + <code>ultra</code> effort levels across every surface and route (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/62650">#62650</a> — @teknium1)</li> <li>Per-model reasoning_effort overrides via a unified resolution chokepoint; per-task auxiliary effort; per-slot MoA preset effort; session-scoped <code>/reasoning</code> in the CLI (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/64458">#64458</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/64597">#64597</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/64631">#64631</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/67946">#67946</a> — @teknium1)</li> <li>MoA: <code>reference_max_tokens</code> to cap advisor output and cut latency; per-preset fanout cadence (<code>user_turn</code> runs advisors once per user turn); stale presets surfaced without retries; half-filled preset saves rejected at the API boundary; aggregator resolves reasoning like an acting model (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/56756">#56756</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/57591">#57591</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/64756">#64756</a> — @teknium1)</li> </ul> <h3>Delegation, approvals & the agent loop</h3> <ul> <li>Live subagent transcripts + durable background completions (see Highlights) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/67479">#67479</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/63494">#63494</a> — @teknium1)</li> <li>Smart approvals default; user-defined deny rules (block even under yolo); <code>/deny <reason></code> relays the denial reason; plugin <code>pre_tool_call</code> approve action escalates to a human gate (re-landed with rule keys) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/62661">#62661</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/59164">#59164</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/54518">#54518</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/60504">#60504</a> — @teknium1, @kshitijk4poor)</li> <li>Unified delegation concurrency caps (<code>max_async_children</code> deprecated); explain long provider waits on the live status line; deterministic tool-output risk exposure (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/56955">#56955</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/64775">#64775</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/61793">#61793</a> — @teknium1)</li> <li>Codex: live TUI/desktop tool cards for the app-server runtime, commentary streamed as visible interim messages, compaction routed through <code>thread/compact/start</code>, max-output truncation recovery, oversized message ids dropped on replay, banked usage-limit resets via <code>/usage reset</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/66514">#66514</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/66115">#66115</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/60114">#60114</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/58155">#58155</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/62225">#62225</a> — @teknium1, @kshitijk4poor, @JoaoMarcos44, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/64280">#64280</a> — @teknium1)</li> <li>Hooks: oversized hook-injected context spills to disk (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20468">#20468</a> — @teknium1)</li> <li>Vibe reactions — floating hearts on affection across CLI/TUI/desktop, token-free core detection (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/62016">#62016</a> — @OutThisLife)</li> </ul> <h3>Secrets & config</h3> <ul> <li>Pluggable <code>SecretSource</code> interface + Bitwarden & 1Password providers (see Highlights) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/59498">#59498</a> — @teknium1, @hwrdprkns)</li> <li><code>hermes config get</code> / <code>unset</code>; warn on unknown root config keys + doctor deprecated-key reporting; <code>display.timestamp_format</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/65540">#65540</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/67370">#67370</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/40622">#40622</a> — @teknium1)</li> <li>Auxiliary model usage recorded per task in session accounting; conversation-scoped Nous Portal usage tags across aux/MoA/delegate calls; <code>--usage-file</code> JSON report for <code>hermes -z</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/65537">#65537</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/65468">#65468</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/59615">#59615</a> — @teknium1)</li> </ul> <h3>Sessions & compression</h3> <ul> <li>Sessions export: Markdown/QMD/HTML/prompt-only/trace formats, HF upload, <code>--redact</code>, unified filters; full prune filter surface + bulk archive; CLI workspace filter + restore-cwd-on-resume (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/60186">#60186</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/60492">#60492</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/60507">#60507</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/59327">#59327</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/63091">#63091</a> — @teknium1, @web3blind)</li> <li>Compression: preserve human intent and durable handoffs; retain prompt cache when memory is unchanged; flatten multimodal content for the summarizer keeping image handles; gateway compression routing integrity (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/67275">#67275</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/67916">#67916</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/65046">#65046</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/56868">#56868</a> — @kshitijk4poor, @teknium1)</li> <li>Gateway session metadata consolidated into state.db; routing index moved to state.db (sessions.json now an optional legacy mirror); exact API bytes persisted in an <code>api_content</code> sidecar (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/58899">#58899</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/59203">#59203</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/67274">#67274</a> — @teknium1, @kshitijk4poor)</li> </ul> <h2>🌐 Gateway, Fleet & Relay</h2> <ul> <li><strong>Durable delivery-obligation ledger</strong> for final responses (see Highlights) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/67181">#67181</a> — @teknium1)</li> <li><strong>Profile-based routing for inbound messages</strong> + multiplex hardening wave 2 + <code>GATEWAY_MULTIPLEX_PROFILES</code> override (see Highlights) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/64835">#64835</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/65700">#65700</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/60589">#60589</a> — @teknium1, @benbarclay + salvaged contributors)</li> <li>Per-session turn lease + conversation-scope funnel; unified session reset boundaries (reset sessions stay reset); truthful runtime readiness checks; per-channel model and system prompt overrides; per-session <code>/model</code> overrides persist across restarts (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/67401">#67401</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/65783">#65783</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/62645">#62645</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/56967">#56967</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/57030">#57030</a> — @teknium1)</li> <li>Session auto-reset default off; <code>/sessions search <query></code>; webhook payload filters + route scripts; platform HTTP event callback routing; configurable long-running status phrases (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/60194">#60194</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/57685">#57685</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/60944">#60944</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/65702">#65702</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/58872">#58872</a> — @teknium1)</li> <li>Relay: generic OIDC client-credentials provisioning (NAS-free), routed profile carried from the connector wire source, channel context consumed from the connector; Nous auth forensics + <code>nous_session_valid</code> on <code>/api/status</code> for hosted self-heal; Docker re-seeds a terminally-dead Nous bootstrap session on boot (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/60730">#60730</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/60586">#60586</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/64649">#64649</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/59976">#59976</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/59969">#59969</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/59983">#59983</a> — @benbarclay)</li> </ul> <h2>📱 Messaging Platforms</h2> <ul> <li><strong>Inline choice pickers</strong> for <code>/reasoning</code> and <code>/fast</code> on Telegram, Discord, and Matrix — one-tap native buttons instead of typing (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/65799">#65799</a> — @teknium1)</li> <li>WhatsApp: native Baileys polls (clarify renders as a poll), locations, rich inbound metadata; dashboard pairing flow (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/58865">#58865</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/60571">#60571</a> — @teknium1)</li> <li>Discord: recover messages missed during reconnect; auto-created threads renamed to generated session titles; configurable interactive view timeout; opt-in owner mentions on exec-approval prompts; optional admin-only gate for approval buttons (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/66149">#66149</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/60187">#60187</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/60230">#60230</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/60493">#60493</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/51751">#51751</a> — @teknium1)</li> <li>Slack: live per-tool status line (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/67080">#67080</a> — @teknium1, salvaging #62007)</li> <li>Telegram: per-topic free-response allowlist; Google Chat clarify prompts rendered as cards (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/65543">#65543</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/65546">#65546</a> — @teknium1)</li> <li>Voice: <code>stt.echo_transcripts</code> toggle; MEDIA: captions attached to the media bubble on standalone sends; <code>display.tool_progress: log</code> option (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/58859">#58859</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/61415">#61415</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/57014">#57014</a> — @teknium1, @kshitijk4poor)</li> </ul> <h2>🖥️ Hermes Desktop App</h2> <ul> <li><strong>Contribution-driven shell on a layout-tree model</strong> — panes, zones, and layouts as data; plugin-scoped i18n locale bundles followed (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/60638">#60638</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/67303">#67303</a> — @OutThisLife)</li> <li><strong>Capabilities page</strong> — Skills/Tools/MCP + Hub in one place, with responsive overlay nav; CLI/dashboard parity for skills hub, MCP test/toggle/catalog, maintenance ops, log filters; five UX fixes from live testing (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/57590">#57590</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/57441">#57441</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/67482">#67482</a> — @OutThisLife, @teknium1)</li> <li><strong>Hermes Cloud connection mode</strong> (salvage of #55402); soft gateway switch + gateway-settings polish; terminal execution backend picker with health probes (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/61912">#61912</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/61916">#61916</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/67203">#67203</a> — @OutThisLife, @teknium1)</li> <li>Keybind hint tooltips + keybinds settings tab + unified worktree dialog; base-branch picker for new worktrees; green unread dot for background-finished sessions; background-task sidebar indicators; grouped tool calls across text-less messages; auto-scrolling window for long tool-call runs (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/65204">#65204</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/62243">#62243</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/65109">#65109</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/65174">#65174</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/61147">#61147</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/57913">#57913</a> — @ethernet8023, @OutThisLife)</li> <li>Session + project color system (inherit from project, per-session override, shared across sidebar/tabs); unified active-project identity in chat status; workspace path status action (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/67469">#67469</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/67681">#67681</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/67282">#67282</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/63086">#63086</a> — @OutThisLife)</li> <li>Declarative memory-provider panel + full-config modal; config-defined TTS/STT providers + xAI TTS params; custom endpoint settings; per-job cron model picker; profile-aware approval mode control; UI scale setting; Ctrl/Cmd+wheel zoom; chat backdrop toggle; <code>/journey</code> opens the memory graph overlay (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/67206">#67206</a> salvaging @erosika, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/67209">#67209</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/67759">#67759</a> — @austinpickett, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/67472">#67472</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/63520">#63520</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/60457">#60457</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/67029">#67029</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/64598">#64598</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/57267">#57267</a> — @teknium1, @OutThisLife)</li> <li>Full TypeScript conversion of the desktop tree (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/57855">#57855</a> — @ethernet8023)</li> </ul> <h2>📊 Web Dashboard</h2> <ul> <li>Memory provider switching; safe session import flow; WhatsApp pairing; Discord-specific toolsets editable from the web UI; clarified manual Telegram bot setup (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/60569">#60569</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/63699">#63699</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/60571">#60571</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/65361">#65361</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/64636">#64636</a> — @teknium1, @kshitijk4poor, @shannonsands)</li> <li>Terminal keep-alive + reattach for dashboard chat sessions; heavy turns isolated in a compute host; paste/drop images into Chat; <code>browser.headed</code> schema toggle; profile + gateway topology on <code>/api/status</code>; mobile/hosted OpenAI OAuth login (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/60515">#60515</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/65895">#65895</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/61929">#61929</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/67046">#67046</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/60537">#60537</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/61330">#61330</a> — @teknium1, @OutThisLife, @benbarclay)</li> <li><code>hermes serve</code> is a true headless backend (no web UI build/mount) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/55923">#55923</a> — @OutThisLife)</li> </ul> <h2>🧰 CLI & TUI</h2> <ul> <li><code>/subscription</code> + <code>/topup</code> terminal billing (see Highlights) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/51639">#51639</a> — @alt-glitch)</li> <li><strong><code>/model --once</code></strong> — one-turn model override that reverts automatically (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/67113">#67113</a> — @teknium1, salvaging #29923)</li> <li><strong>Stacked slash-skill invocations</strong> — <code>/skill-a /skill-b do XYZ</code> loads both skills in order (Claude Code port), with autocomplete + ghost text (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/57987">#57987</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/58763">#58763</a> — @teknium1)</li> <li><code>--safe-mode</code> troubleshooting flag; uninstall dry-run; TLS failures fail fast with fix hints; <code>/compact</code> alias + preview flags; pip/Homebrew installs warned unsupported (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/45300">#45300</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/60111">#60111</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/57992">#57992</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/57029">#57029</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/57225">#57225</a> — @teknium1, @ethernet8023)</li> <li>TUI: model picker refresh support; custom skill bundles dispatched as agent turns; banner sizes skills display to terminal width (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/59782">#59782</a> — @helix4u, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/62859">#62859</a> — @Adolanium, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/40624">#40624</a> — @teknium1)</li> <li>Hermes Console REPL + perf follow-ups; <code>hermes curator usage</code> all-skills view; entry-point plugins surfaced in <code>hermes plugins list</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/57781">#57781</a> — @kshitijk4poor, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/36727">#36727</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/40623">#40623</a> — @teknium1)</li> </ul> <h2>🔧 Tool System, Skills & MCP</h2> <ul> <li>MCP: <code>mcp__server__tool</code> naming convention; server log notifications surfaced in agent.log; hosted OAuth completed across Dashboard + Desktop; configurable <code>redirect_uri</code>/<code>redirect_host</code> for proxied/WAF setups; OAuth callback port races closed; Blender added to the MCP catalog with a curated 4-tool default (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/52750">#52750</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/57416">#57416</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/66151">#66151</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/65610">#65610</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/65622">#65622</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/64463">#64463</a> — @teknium1, @benbarclay)</li> <li>Skills: <code>security/unbroker</code> (autonomous data-broker removal) + blind opt-out hardening; <code>unreal-mcp</code> companion skill; blender-mcp reworked around the catalog entry; humanizer pattern expansion; <code>mcp-oauth-remote-gateway</code> optional skill (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/57438">#57438</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/57902">#57902</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/65989">#65989</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/64715">#64715</a> — @SHL0MS, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/65066">#65066</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/65486">#65486</a> — @teknium1)</li> <li>Browser: full snapshots stored on truncation, eval denylist opt-in; computer_use follows cua-driver's verify→escalate ladder (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/65923">#65923</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/67123">#67123</a> — @teknium1)</li> <li>Kanban: modal create-task dialog + editable board project directory; Done-card results made obvious; grab-to-pan board scrolling; attachment toolset + CLI with SSRF-guarded URL fetch; project directory captured at board creation (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/66333">#66333</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/63638">#63638</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/60226">#60226</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/65698">#65698</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/63249">#63249</a> — @teknium1)</li> <li>Cron: durable execution audit history; one-shot stale-removal race fixed; run-claim TTL derived from HERMES_CRON_TIMEOUT (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/61791">#61791</a> — @teknium1, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/62014">#62014</a> — @PRATHAMESH75, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/59567">#59567</a>)</li> <li>mem0: self-hosted dashboard backend + recall tuning + setup-wizard mode (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/56943">#56943</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/60494">#60494</a> — @kshitijk4poor, @teknium1)</li> <li>Image gen: Codex image inputs; unsupported Codex image accounts classified; tool args recursively normalized by schema (cline port) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/57017">#57017</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/63627">#63627</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/52220">#52220</a> — @teknium1, @kshitijk4poor)</li> </ul> <h2>🔒 Security & Reliability</h2> <ul> <li>Vertex: credential/project/region resolution through the profile secret scope; <code>VERTEX_CREDENTIALS_PATH</code>/<code>GOOGLE_APPLICATION_CREDENTIALS</code> stripped from subprocess env (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/56680">#56680</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/56582">#56582</a> — @srojk34)</li> <li>Six P1 hardening PRs salvaged in one pass — browser guards, MEDIA anchoring, .env lockdown, delegate ACP transport (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/57660">#57660</a> — @teknium1)</li> <li>Media/vision/image-gen local-file reads routed through the shared credential-read guard; native image routing guarded by file-safety policy; unified image-source resolver + terminal-backend confinement (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/58709">#58709</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/58752">#58752</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/57890">#57890</a> — @teknium1)</li> <li>Webhook body-cap sweep: explicit <code>client_max_size</code> on 3 uncapped aiohttp servers + completion sweep; Raft chunked-request body limit; timestamp-bound V2 webhook signatures (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/59180">#59180</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/59215">#59215</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/58902">#58902</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/58508">#58508</a> — @teknium1, @srojk34)</li> <li>Redaction: Fireworks token prefixes + Telegram transport errors; env-lookup false positives fixed for KEY=value and JSON/YAML config fields; bot tokens scrubbed from Telegram connect/send errors (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/58501">#58501</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/58534">#58534</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/58915">#58915</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/58893">#58893</a> — @teknium1)</li> <li>computer-use: subprocess env sanitized across all five cua-driver spawn sites (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/58889">#58889</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/59165">#59165</a> — @teknium1)</li> <li>Dashboard: managed-files credential guard widened past .env + dir-tree gap closed; OAuth token TOCTOU closed with atomic 0o600 writes; stale dashboards can't recreate deleted profiles (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/58222">#58222</a> — @kshitijk4poor, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/60236">#60236</a> — @teknium1, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/49435">#49435</a> — @LeonSGP43)</li> <li>CI: untrusted refs passed through env, not <code>run:</code> interpolation; JS/TS tests wired into CI with source-regex tests banned; js-autofix pushes via PR instead of direct-to-main (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/57842">#57842</a> — @jquesnelle, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/60707">#60707</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/65186">#65186</a> — @ethernet8023)</li> <li>Docker: terminal network toggle with full-path coverage; Git Bash Mandatory-ASLR install failures detected; Windows updater console hidden during handoff (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/59149">#59149</a> — @teknium1, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/64651">#64651</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/66040">#66040</a> — @helix4u)</li> <li>Anthropic: request-local clients so the stale/interrupt watchdog never corrupts SQLite; per-profile OAuth file; OAuth login 429 fixed (UA must not be claude-code/) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/67238">#67238</a> — @OutThisLife, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/59339">#59339</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/58178">#58178</a> — @teknium1)</li> <li>Gateway/agent: tool_call_id deduplicated across pre-API sanitizers; background review inherits parent reasoning_config for Anthropic cache parity; <code>/new</code> memory extraction moved off the command path (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/58350">#58350</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/64379">#64379</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/61139">#61139</a> — @teknium1, @kshitijk4poor)</li> </ul> <h2>🔁 Reverted in this window (for the record)</h2> <ul> <li>iron-proxy credential-injection egress firewall (#30179 → reverted in <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/58489">#58489</a>) — not shipping in this release</li> <li>dynamic-workflow orchestration skill (landed, then reverted) — not shipping</li> <li>memory provider-actions extension point (landed, then reverted) — not shipping</li> <li>Note: the plugin <code>pre_tool_call</code> approve escalation was reverted mid-window but <strong>re-landed</strong> in <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/60504">#60504</a> and ships in this release.</li> </ul> <h2>👥 Contributors</h2> <p><strong>450+ people</strong> contributed to this release (via commits, co-author trailers, and salvaged PRs) — the biggest contributor window yet. Thank you, all of you.</p> <h3>Core team</h3> <ul> <li>@teknium1 — release lead; TTFT perf wave, delivery + delegation durability, smart approvals, SecretSource, gateway multiplex + profile routing, sessions export, security round, and a ~290-PR community salvage burn</li> <li>@OutThisLife — desktop app (the speed wave, layout-tree shell, Capabilities page, session colors, vibe reactions, TUI incremental markdown, perf harness)</li> <li>@kshitijk4poor — GPT-5.6 end-to-end, DeepInfra + Upstage Solar providers, perf cluster, compression integrity, mem0, dashboard guards</li> <li>@ethernet8023 — CI overhaul (JS/TS tests wired in, autofix-via-PR, python speedups), desktop keybinds/worktrees/status indicators, full desktop TypeScript conversion</li> <li>@benbarclay — relay OIDC provisioning, gateway multiplex override, Nous auth self-heal, hosted MCP OAuth groundwork</li> <li>@alt-glitch — terminal billing (<code>/subscription</code>, <code>/topup</code>), desktop billing tab</li> <li>@helix4u — desktop provider/model UX, TUI model picker refresh, Windows install/updater hardening</li> <li>@austinpickett — desktop custom endpoint settings</li> <li>@SHL0MS — unbroker + unreal-mcp skills, humanizer expansion</li> </ul> <h3>Top community contributors</h3> <ul> <li>@srojk34 — security hardening: Vertex credential/project/region scoping through the profile secret scope, subprocess env stripping, Raft chunked-request body limits</li> <li>@HexLab98 — 11 fixes across MCP capability gating, Windows installer PATH, desktop cron editing, gateway systemd warnings</li> <li>@UnathiCodex — desktop stability: zoom across display moves, LaTeX rendering, resume-stall and runtime-readiness fixes</li> <li>@xxxigm — <code><think></code> leak fix after thinking-only retry flush, dashboard auth/theme/PTY fixes</li> <li>@erosika — desktop declarative memory-provider panel + honcho recall/timeout correctness</li> <li>@Frowtek — credential security: master stores never mounted into skill sandboxes, live-transcript redaction, dashboard api_key precedence</li> <li>@necoweb3 — browser private-page CDP guard, cron one-shot liveness, gateway compression fail-closed</li> <li>@DavidMetcalfe — desktop updater version pill, Local/custom endpoint exposure, sidebar collapse behavior</li> <li>@shannonsands — dashboard: mobile channel setup, Discord toolsets from web UI, Telegram setup clarity</li> <li>@vishal-dharm — Gemini request-context improvements</li> <li>@PRATHAMESH75 — cron one-shot stale-removal race, dashboard multiplex port-binding guard</li> <li>@alelpoan, @embwl0x, @Adolanium, @giggling-ginger, @Drexuxux, @frizikk, @JoaoMarcos44, @wesleysimplici, @LeonSGP43, @pierrenode, @simpolism, @MorAlekss, @r266-tech, @WadydX, @nv-kasikritc — targeted fixes across desktop, TUI, gateway, cron, webhook, nix, and browser surfaces</li> <li>Salvaged-work authors whose PRs were cherry-picked with credit this window: @Burgunthy (profile routing), @web3blind (sessions export), @hwrdprkns (1Password), @Christopher-Schulze, @Ahmett101, @sjiangtao2024, and many more — see the salvage PR bodies for full attribution</li> </ul> <h3>All contributors</h3> <p>@0-CYBERDYNE-SYSTEMS-0, @0disoft, @0xbyt4, @100yenadmin, @17324393074, @2751738943, @8294, @abhibansal-sg, @adambiggs, @Adolanium, @aeyeopsdev, @aguung, @AhmetArif0, @Ahmett101, @ai-ag2026, @AIalliAI, @ajzrva-sys, @alastraz, @alelpoan, @alex-fireworks, @alex-heritier, @alex107ivanov, @AlexFucuson9, @Alix-007, @allenliang2022, @Almurat123, @AlsayedHoota, @alt-glitch, @alvarosanchez, @amanning3390, @AmAzing129, @AndreasHiltner, @andrewhomeyer, @annguyenNous, @ansel-f, @antydizajn, @arminanton, @arnispiekus, @asimons81, @asscan, @ats3v, @austinlaw076, @austinpickett, @avifenesh, @aydnOktay, @Bartok9, @bautrey, @bbednarski9, @bbopen, @benbarclay, @bigstar0920, @binhnt92, @bird, @Black0Fox0, @BlackishGreen33, @bo.fu, @brendandebeasi, @briandevans, @BROCCOLO1D, @Bruce-anle, @brunz-me, @Burgunthy, @bytesnail, @catbearlove1-lang, @Cdddo, @cgarwood82, @CharmingGroot, @chouqin, @Christopher-Schulze, @claudlos, @CocaKova, @Code-suphub, @CodeForgeNet, @craigdfrench, @CrazyBoyM, @crazywriter1, @cresslank, @cruzanstx, @cyrkstudios, @danilofalcao, @datachainsystems, @DatTheMaster, @davidb73-hub, @davidgut1982, @DavidMetcalfe, @davidrobertson, @deacon-botdoctor, @DECK6, @deepujain, @derek2000139, @designnotdrum, @deusyu, @devatnull, @devorun, @dexhunter, @dfein38347g, @Dhravya, @DictatorBacon, @digitalbase, @dlkakbs, @dmabry, @DNAlec, @dodo-reach, @doncazper, @dorokuma, @doxe0x, @Drexuxux, @dschnurbusch, @Dusk1e, @EdderTalmor, @egilewski, @elashera, @Elektrofussel, @eliteworkstation94-ai, @embwl0x, @emo-eth, @emozilla, @enzo-adami, @Epoxidex, @ErnestHysa, @Erosika, @esthonjr, @ethernet8023, @evefromwayback, @evelynburger, @F4TB0Yz, @falkoro, @fanyangCS, @firefly, @fjlaowan1983, @flewe, @flo1t, @flow-digital-ny, @floze-the-genius, @frizikk, @Frowtek, @FuryMartin, @fyzanshaik, @gauravsaxena1997, @geoffreybutler94, @georgedrury, @gigakun3030, @giggling-ginger, @Git-on-my-level, @gitcommit90, @githubespresso407, @gnodet, @GottZ, @Gridzilla, @grimmjoww578, @gumclaw, @Gutslabs, @HaiderSultanArc, @harjothkhara, @heathley, @hejuntt1014, @helix4u, @HeLLGURD, @hellno, @herbalizer404, @HexLab98, @hmirin, @Hopfensaft, @Hotragn, @hsy5571616, @huanshan5195, @HumphreySun98, @hwrdprkns, @hydracoco7, @hydraxman, @iamlukethedev, @iborazzi, @IgorGanapolsky, @iizotov, @ildunari, @infinitycrew39, @IpastorSan, @irresi, @isfttr, @isheng-eqi, @itsflownium, @izumi0uu, @Jaaneek, @JacketPants, @jaisup, @jakelongvu-bot, @jakepresent, @jaketracey, @JAlmanzarMint, @JasonFang1993, @jbbottoms, @jcjc81, @JiaDe-Wu, @Jiahui-Gu, @Jigoooo, @jingsong-liu, @jneeee, @JoaoMarcos44, @joelbrilliant, @John-Lussier, @jplew, @jtstothard, @juniperbevensee, @Jupiter363, @justinschille, @k4z4n0v4, @kaishi00, @karfly, @kartik-mem0, @kavioavio, @KCAYAAI, @kenyonxu, @keslerm, @kevinrajaram, @knoal, @kocaemre, @kohoj, @konsisumer, @krowd3v, @kshitijk4poor, @kuangmi-bit, @kubolko, @kyssta-exe, @Kyzcreig, @l0h1nth, @labsobsidian, @laurinaitis, @LavyaTandel, @lawyer112, @lemonwan, @LeonSGP43, @lEWFkRAD, @linfeng961, @liuhao1024, @liuwei666888, @ljy-2000, @loes5050, @logical-and, @LoicHmh, @loongfay, @lord-dubious, @lost9999, @lucasfdale, @lucaskvasirr, @luxuguang-leo, @ly-wang19, @m0n5t3r, @m1qaweb, @M1racleShih, @MaartenDMT, @mahdiwafy, @MaheshBhushan, @ManniBr, @marcelohildebrand, @marcolivierlavoie, @markoub, @MarkVLK, @Marxb85, @matantsevs, @maxpetrusenkoagent, @mbac, @mdc2122, @mguttmann, @Mibayy, @michaelHMK, @mijanx, @minchang, @momomojo, @MorAlekss, @morluto, @msh01, @mssteuer, @mvanhorn, @nanami7777777, @nankingjing, @necoweb3, @neo-claw-bot, @neoguyverx, @nicha16, @nikshepsvn, @nima20002000, @nnnet, @NousResearch, @nullptr0807, @nv-kasikritc, @okisdev, @OmarB97, @ooiuuii, @ooovenenoso, @oppih, @Osraka, @ostravajih, @otsune, @OutThisLife, @OYLFLMH, @patrick-muller, @pdmartins, @pedrommaiaa, @Peterskaronis, @petrichor-op, @pgregg88, @pierrenode, @pixel4039, @plcunha, @pnascimento9596, @Polyhistor, @PRATHAMESH75, @professorpalmer, @Punyko8, @Que0x, @Qwinty, @r0gersm1th, @r266-tech, @rabadaki, @ragingbulld, @RainbowAndSun, @rainbowgore, @randimt, @rarf, @rasitakyol, @rayjun, @raymondyan-zhijie, @re-ITRT, @RenoMG, @Rival, @RKelln, @rlaehddus302, @rob-maron, @rodboev, @roryford, @rungmc357, @ruslanvasylev, @s0xn1ck, @s905060, @s96919, @sahibzada-allahyar, @sahil-shubham, @Sahil-SS9, @SahilRakhaiya05, @sam7894604, @SAMBAS123, @samrusani, @sanidhyasin, @sasquatch9818, @sberan, @ScotterMonk, @seagpt, @sebastianlutycz, @SemonCat, @setclock, @shannonsands, @sharziki, @shashwatgokhe, @SHL0MS, @shuangxinniao, @SilentKnight87, @simplast, @simpolism, @SiteupAgencia, @sjiangtao2024, @sk-holmes, @slow4cyl, @smtony, @soddy022, @Soju06, @solyanviktor-star, @SongotenU, @spiky02plateau, @sprmn24, @SquabbyZ, @srojk34, @ssiweifnag, @stantheman0128, @StellarisW, @stephenschoettler, @suninrain086, @superposition, @Supersynergy, @sweetcornna, @szafranski, @tanmayxchoudhary, @tarunravi, @tcconnally, @terry197913, @Thatgfsj, @thegoodguysla, @thestudionorth, @TheTom, @TinkerOfThings, @tjboudreaux, @tjp2021, @Tortugasaur, @Tosko4, @Tranquil-Flow, @trevorgordon981, @trismegistus-wanderer, @tt-a1i, @tuancookiez-hub, @TurgutKural, @Umi4Life, @UnathiCodex, @unsupportedpastels, @uzaylisak, @valda, @vampyren, @veradim, @victor-kyriazakos, @virtualex-itv, @vishal-dharm, @Vissirexa, @vizi0uz, @vkkong, @vKongv, @VolodymyrBg, @vortexopenclaw, @VrtxOmega, @WadydX, @waroffchange, @waseemshahwan, @web3blind, @webtecnica, @wesleion, @wesleysimplicio, @williamumu, @WilsonKinyua, @wxy-nlp, @wyuebei-cloud, @x7peeps, @x9x9x9x9x9x91, @xuezhaolan, @xxxigm, @ya-nsh, @yatesjalex, @ygd58, @yingliang-zhang, @yinkev, @YLChen-007, @yu-xin-c, @yungchentang, @zapabob, @zccyman, @zeapsu, @ziliangpeng, @zwcf5200, @zzpigpinggai</p> <p>Also: bo.fu, Paulo Henrique, kyssta-exe 25470058+kyssta-exe.fu, Paulo Henrique, kyssta-exe 25470058+kyssta-exe.</p> <hr> <p><strong>Full Changelog</strong>: <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/compare/v2026.7.1...v2026.7.20">v2026.7.1...v2026.7.20</a></p> </div><div class="link-row" data-astro-cid-l7qxtvnw><span class="lr-label" data-astro-cid-l7qxtvnw>Links</span><a href="https://github.com/NousResearch/hermes-agent/releases/tag/v2026.7.20" data-astro-cid-l7qxtvnw>GitHub release notes ↗</a><a href="https://github.com/NousResearch/hermes-agent/compare/v2026.7.7.2...v2026.7.20" data-astro-cid-l7qxtvnw>Full diff ↗</a><a href="/blog/2026-07-20-hermes-quicksilver-release-v019/" data-astro-cid-l7qxtvnw>Our release deep-dive →</a><a href="/gateway/" data-astro-cid-l7qxtvnw>Gateway Guide →</a><a href="/blog/2026-06-06-hermes-desktop-surface-release/" data-astro-cid-l7qxtvnw>Desktop deep-dive →</a></div></div></details><details class="rel" data-astro-cid-l7qxtvnw><summary data-astro-cid-l7qxtvnw><span class="r-arrow" data-astro-cid-l7qxtvnw>▶</span><span class="r-ver" data-astro-cid-l7qxtvnw>v0.18.2</span><span class="r-date" data-astro-cid-l7qxtvnw>2026-07-08</span></summary><div class="rel-body" data-astro-cid-l7qxtvnw><p class="r-summary" data-astro-cid-l7qxtvnw>Same-day patch on top of v0.18.1, picking up the WhatsApp Baileys dependency fix needed for tagged-release Docker builds.</p><div class="r-notes" data-astro-cid-l7qxtvnw><blockquote> <p>Same-day patch on top of v0.18.1, picking up the WhatsApp Baileys dependency fix needed for tagged-release Docker builds.</p> </blockquote> <hr> <h2>What's in this patch</h2> <ul> <li><strong>fix(whatsapp): unpin Baileys from git commit, use published 7.0.0-rc13</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/60643">#60643</a>) — the WhatsApp bridge dependency now installs from the published npm release instead of a pinned git commit, making installs and Docker image builds reliable.</li> </ul> <p>Full curated release notes for the entire post-v0.18.0 window ship with v0.19.0.</p> <h2>Updating</h2> <pre><code class="language-bash">hermes update # existing installs pip install -U hermes-agent </code></pre> <p><strong>Full Changelog</strong>: <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/compare/v2026.7.7...v2026.7.7.2">v2026.7.7...v2026.7.7.2</a></p> </div><div class="link-row" data-astro-cid-l7qxtvnw><span class="lr-label" data-astro-cid-l7qxtvnw>Links</span><a href="https://github.com/NousResearch/hermes-agent/releases/tag/v2026.7.7.2" data-astro-cid-l7qxtvnw>GitHub release notes ↗</a><a href="https://github.com/NousResearch/hermes-agent/compare/v2026.7.7...v2026.7.7.2" data-astro-cid-l7qxtvnw>Full diff ↗</a><a href="https://github.com/NousResearch/hermes-agent/releases/tag/v2026.7.7.2" data-astro-cid-l7qxtvnw>Release notes (v2026.7.7.2) →</a></div></div></details><details class="rel" data-astro-cid-l7qxtvnw><summary data-astro-cid-l7qxtvnw><span class="r-arrow" data-astro-cid-l7qxtvnw>▶</span><span class="r-ver" data-astro-cid-l7qxtvnw>v0.18.1</span><span class="r-date" data-astro-cid-l7qxtvnw>2026-07-08</span></summary><div class="rel-body" data-astro-cid-l7qxtvnw><p class="r-summary" data-astro-cid-l7qxtvnw>Patch release. This tag rolls up the ~660 PRs merged since v0.18.0 (July 1) — bug fixes, hardening, and in-progress feature work — into a stable tagged release for downstream consumers (Docker images, hosted deployments, PyPI installs).</p><div class="r-notes" data-astro-cid-l7qxtvnw><blockquote> <p>Patch release. This tag rolls up the ~660 PRs merged since v0.18.0 (July 1) — bug fixes, hardening, and in-progress feature work — into a stable tagged release for downstream consumers (Docker images, hosted deployments, PyPI installs).</p> </blockquote> <hr> <h2>About this release</h2> <p><strong>Full curated release notes for this window will ship with v0.19.0</strong>, which will document everything from v0.18.0 onward — highlights, feature areas, and complete contributor credits. Nothing in this window is skipped; it's documented in the next minor release.</p> <h2>Updating</h2> <pre><code class="language-bash">hermes update # existing installs pip install -U hermes-agent </code></pre> <p><strong>Full Changelog</strong>: <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/compare/v2026.7.1...v2026.7.7">v2026.7.1...v2026.7.7</a></p> </div><div class="link-row" data-astro-cid-l7qxtvnw><span class="lr-label" data-astro-cid-l7qxtvnw>Links</span><a href="https://github.com/NousResearch/hermes-agent/releases/tag/v2026.7.7" data-astro-cid-l7qxtvnw>GitHub release notes ↗</a><a href="https://github.com/NousResearch/hermes-agent/compare/v2026.7.1...v2026.7.7" data-astro-cid-l7qxtvnw>Full diff ↗</a><a href="/tools/" data-astro-cid-l7qxtvnw>Tools Reference →</a><a href="/gateway/" data-astro-cid-l7qxtvnw>Gateway Guide →</a><a href="/providers/" data-astro-cid-l7qxtvnw>Providers Reference →</a></div></div></details><details class="rel" data-astro-cid-l7qxtvnw><summary data-astro-cid-l7qxtvnw><span class="r-arrow" data-astro-cid-l7qxtvnw>▶</span><span class="r-ver" data-astro-cid-l7qxtvnw>v0.18.0</span><span class="r-codename" data-astro-cid-l7qxtvnw>Judgment Release</span><span class="r-date" data-astro-cid-l7qxtvnw>2026-07-01</span></summary><div class="rel-body" data-astro-cid-l7qxtvnw><p class="r-summary" data-astro-cid-l7qxtvnw><strong>The Judgment Release.</strong> Over the last week and a half the team put nearly all of its effort into one goal: resolve <strong>every P0 and P1 issue and PR in the entire Hermes Agent repo</strong> — and as of this release, <strong>100% of them are closed.</strong> Zero open P0s. Zero open P1s. That's <strong>~700 highest-priority items</strong> cleared as part of <strong>~1,950 total issues and PRs closed</strong> this window. We intend to keep P0/P1 at zero from here on.</p><div class="r-notes" data-astro-cid-l7qxtvnw><blockquote> <p><strong>The Judgment Release.</strong> Over the last week and a half the team put nearly all of its effort into one goal: resolve <strong>every P0 and P1 issue and PR in the entire Hermes Agent repo</strong> — and as of this release, <strong>100% of them are closed.</strong> Zero open P0s. Zero open P1s. That's <strong>~700 highest-priority items</strong> cleared as part of <strong>~1,950 total issues and PRs closed</strong> this window. We intend to keep P0/P1 at zero from here on.</p> <p>On top of that clean-sweep, v0.18.0 is about how <em>well</em> Hermes thinks and how it <em>knows when its work is actually done</em>. Mixture-of-Agents became a first-class citizen — named ensembles of models you can pick like any other model, with every reference model's reasoning shown to you and the aggregator's answer streamed live. The agent learned to verify its own work against evidence instead of vibes, <code>/goal</code> gained completion contracts, and <code>/learn</code> + <code>/journey</code> turned self-improvement into something you can see and steer. Underneath, the gateway became genuinely deployable-at-scale (scale-to-zero, drain coordination), the desktop grew first-class coding projects and a playable memory graph, and subagents can now fan out in the background.</p> </blockquote> <h2>🎯 The P0/P1 Clean Sweep — 100% resolved</h2> <p>This is the release headline. For a week and a half the team hammered the priority backlog day and night, and every single P0 and P1 across the whole repo is now closed:</p> <table> <thead> <tr> <th>Priority</th> <th>Issues closed</th> <th>PRs merged</th> </tr> </thead> <tbody><tr> <td><strong>P0</strong> (critical)</td> <td>3</td> <td>8</td> </tr> <tr> <td><strong>P1</strong> (high)</td> <td>493</td> <td>188</td> </tr> <tr> <td><strong>Total</strong></td> <td><strong>496</strong></td> <td><strong>196</strong></td> </tr> </tbody></table> <p>That's <strong>~692 highest-priority items resolved</strong> in twelve days — and at the moment the sweep completed, the open P0/P1 count hit <strong>0 across the entire repo.</strong> The final cluster to fall was the interrupt-protected-compression sibling-fork bug (issue #56391) and its fix (#56416), closed on an all-nighter right before this release cut.</p> <p>Special shoutout to <strong>@kshitijk4poor</strong>, who burned through the priority backlog day and night alongside the core team — the cron reliability wave, the compression-fork fix, the credential-exfil hardening, and a huge share of the P1 closures are his.</p> <p>We're keeping P0/P1 at <strong>0</strong> from here forward. 🫡</p> <h2>✨ Highlights</h2> <ul> <li><p><strong>Mixture-of-Agents is now a first-class model you can pick</strong> — MoA used to be a mode you toggled; now every named MoA preset shows up as a selectable model under a <code>moa</code> provider, right alongside Claude, GPT, and Grok in every model picker (CLI, TUI, desktop, gateway). Pick "my-council" the same way you'd pick any model, and Hermes routes your prompt through that ensemble automatically. An ensemble of frontier models deliberating on your hardest questions is now one selection away, on every surface. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/46081">#46081</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/53548">#53548</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/53561">#53561</a> — @teknium1)</p> </li> <li><p><strong>See every model's reasoning, then watch the answer stream in</strong> — When a MoA ensemble runs, each reference model's full output now renders as its own labelled block — you can read what GPT-5 thought, what Claude thought, and what Grok thought, before the aggregator synthesizes them into one answer. And that final answer now streams to you live instead of appearing all at once after a long silence. This works in the CLI, the TUI, and the desktop app. You get to watch the committee deliberate, not just read the verdict. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/53793">#53793</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/53855">#53855</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/55625">#55625</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/56101">#56101</a> — @teknium1)</p> </li> <li><p><strong>The agent verifies its own work — "done" means proven, not claimed</strong> — Hermes now records verification evidence for coding work and can decide it's finished by actually running your project's checks, not by asserting success. <code>/goal</code> gained <strong>completion contracts</strong>: you state what "done" looks like, and the standing-goal loop judges completion against that evidence instead of stopping when the model feels like it. There's a <code>pre_verify</code> hook for wiring in custom checks and a one-time migration that tunes the defaults sensibly. The difference between "I think I fixed it" and "the tests pass, here's proof." (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/50501">#50501</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/52285">#52285</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/55413">#55413</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/53552">#53552</a> — @teknium1, @OutThisLife)</p> </li> <li><p><strong><code>/learn</code> — turn anything into a reusable skill by describing it</strong> — Run <code>/learn <anything></code> and Hermes distills a reusable skill out of whatever you point it at — a directory, a URL, or just the workflow you walked it through five minutes ago. It writes the skill to the standards in your CONTRIBUTING.md automatically. The next time you need that workflow, it's already there. Teaching Hermes a new trick is now a single command, not a manual skill-authoring session. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/51506">#51506</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/52372">#52372</a> — @teknium1)</p> </li> <li><p><strong><code>/journey</code> — a playable timeline of everything Hermes has learned about you</strong> — The CLI and TUI gained <code>/journey</code>, a learning timeline that shows the memories and skills Hermes has accumulated over time — and you can edit or delete any of them right from the view. Pair it with the desktop's new <strong>memory graph</strong> (a top-down, playable radial timeline of memories and skills) and for the first time you can actually <em>see</em> what your agent knows, watch it grow, and prune what's wrong. Your agent's memory stops being a black box. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/55555">#55555</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/55859">#55859</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/55226">#55226</a> — @OutThisLife)</p> </li> <li><p><strong>Delegate a pile of work and keep going — background fan-out</strong> — <code>delegate_task</code> can now fan out multiple subagents that all run in the <strong>background</strong>: your chat is never blocked, and when every subagent finishes, their results come back as a single consolidated turn. Kick off "research these five competitors in parallel" or "audit these three modules," then carry on with something else while a small fleet works. When it's all done, you get one clean summary instead of babysitting each one. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/49734">#49734</a> — @teknium1)</p> </li> <li><p><strong>First-class coding Projects in the desktop app</strong> — The desktop app gained real, per-profile <strong>Projects</strong> — a sidebar of your codebases, a coding rail, a review pane, git worktree management, and agent-facing project tools, all backed by a proper <code>project → repo → lane</code> model. Instead of scattered chat sessions, your coding work is organized into projects the agent understands and can act on. It's the desktop turning into an actual coding cockpit. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/49037">#49037</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/54385">#54385</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/54517">#54517</a> — @OutThisLife)</p> </li> <li><p><strong>Run Hermes at scale — scale-to-zero and drain coordination</strong> — The gateway can now go <strong>dormant when idle</strong> and quiesce cleanly before a restart, migration, or auto-update — without dropping in-flight conversations. A hosted or relay-only Hermes can scale to zero when nobody's talking to it and wake back up on demand, and disruptive lifecycle actions coordinate an external drain so nobody gets cut off mid-turn. Running Hermes for a team or as a hosted service just got a lot more production-grade. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/52243">#52243</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/52937">#52937</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/54824">#54824</a> — @teknium1, @benbarclay)</p> </li> <li><p><strong>Cheaper self-improvement — smarter background review</strong> — The post-turn self-improvement fork (the one that decides whether to save a memory or skill) now routes to an auxiliary model, digests context instead of replaying the whole conversation, and adapts its cadence — so the "learn from what just happened" loop that runs after your turns costs a fraction of what it used to. You keep the self-improvement, you stop paying full main-model price for it. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/49252">#49252</a> — @teknium1)</p> </li> <li><p><strong>Compose your next prompt in your editor — <code>/prompt</code></strong> — <code>/prompt</code> opens your <code>$EDITOR</code> so you can hand-write a long, multi-line prompt in real markdown instead of fighting a one-line input box. Draft a detailed spec, a structured question, or a big paste, save, and it's queued as your next message. Small thing, huge quality-of-life win for anyone who writes Hermes more than a sentence at a time. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/50509">#50509</a> — @teknium1)</p> </li> <li><p><strong>Google Vertex AI — Gemini through your GCP service account, no static key</strong> — Vertex AI is now a first-class provider for Gemini models over Vertex's OpenAI-compatible endpoint. The reason a plain custom-provider setup always died mid-session is that Vertex has no static API key — every request needs a short-lived OAuth2 access token (~1h TTL) minted from a service-account JSON or Application Default Credentials. Hermes now mints and auto-refreshes those tokens for you, so if your org runs Gemini through Google Cloud, you point Hermes at your service account and it just works — no token-pasting, no mid-session expiry. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/56363">#56363</a> — @teknium1, @slawt)</p> </li> <li><p><strong>Security round</strong> — This window hardened several surfaces: MCP-config persistence attack surface locked down, cron <code>base_url</code> overrides that could exfiltrate provider credentials blocked, a non-reusable sentinel for prefix secrets in file reads, Slack app-level (<code>xapp-</code>) token redaction, a browser cloud-metadata floor enforced on every backend, and an <code>aiohttp</code> CVE floor across the lazy messaging paths. Fewer ways for a prompt-injected or misconfigured session to leak a credential. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/50476">#50476</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/56196">#56196</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/54166">#54166</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/56227">#56227</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/52349">#52349</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/56237">#56237</a> — @teknium1, @kshitijk4poor, @claudlos)</p> </li> </ul> <hr> <h2>🧠 Mixture-of-Agents (MoA)</h2> <p>MoA graduated from a mode to a first-class part of the model system this window.</p> <ul> <li><strong>Presets as selectable virtual models</strong> — each named MoA preset appears as a model under provider <code>moa</code>; pick it in any model picker and Hermes routes through the ensemble (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/46081">#46081</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/53561">#53561</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/53775">#53775</a> — @teknium1)</li> <li><strong><code>/moa</code> is now one-shot sugar</strong> — runs a single prompt through the default preset and restores your model afterward; persistent switching goes through the model picker (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/53548">#53548</a> — @teknium1)</li> <li><strong>Reference-model output shown as labelled blocks</strong> in CLI, TUI, and desktop — read each model's reasoning before the aggregator's synthesis (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/53793">#53793</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/53855">#53855</a> — @teknium1)</li> <li><strong>Aggregator response streams live</strong> instead of appearing whole after a silence (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/55625">#55625</a> — @teknium1)</li> <li><strong>References see full tool state and fire on every user/tool response</strong>; advisory references end on a user turn and get a reference-role system prompt (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/54016">#54016</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/54007">#54007</a> — @teknium1)</li> <li><strong>Opt-in full-turn trace persistence to JSONL</strong> (<code>moa.save_traces</code>) for debugging and eval (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/56101">#56101</a> — @teknium1)</li> <li>Reliability: reference + aggregator models called through their provider's real route; context window resolved from the aggregator (not the 256K default); auxiliary tasks resolve to the aggregator; virtual provider blocked as a reference/aggregator slot; tolerant of hand-edited preset config (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/53580">#53580</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/53780">#53780</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/53827">#53827</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/53281">#53281</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/53275">#53275</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/53556">#53556</a> — @teknium1)</li> <li>MoA slot provider-identity unified on the single <code>call_llm</code> chokepoint; HermesBench results documented (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/55991">#55991</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/53206">#53206</a> — @teknium1)</li> </ul> <h2>✅ Verification & Goals — the agent proves its work</h2> <ul> <li><strong>Completion contracts for <code>/goal</code></strong> — state what "done" looks like; the standing-goal loop judges against evidence, not the model's say-so (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/50501">#50501</a> — @teknium1)</li> <li><strong><code>/goal wait <pid></code></strong> — park the standing-goal loop on a background process instead of re-poking the agent (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/50503">#50503</a> — @teknium1)</li> <li><strong>Coding verification evidence ledger</strong> — profile-scoped record of canonical project checks detected by <code>agent.coding_context</code>; gateway exposes verification status (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/52285">#52285</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/52286">#52286</a> — @OutThisLife)</li> <li><strong><code>pre_verify</code> hook + coding guidance config</strong>; verification stop loop + ad-hoc verification scripts (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/55413">#55413</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/52296">#52296</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/52297">#52297</a> — @OutThisLife)</li> <li><strong>verify-on-stop defaults OFF</strong> with a one-time v32 migration; skips doc-only edits; surface-aware "auto" default restored; gated off for messaging surfaces (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/53552">#53552</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/54740">#54740</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/55449">#55449</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/52412">#52412</a> — @teknium1, @OutThisLife, @GodsBoy)</li> </ul> <h2>🎓 Self-Improvement (Learn / Journey)</h2> <ul> <li><strong><code>/learn <anything></code></strong> — distill a reusable skill from a directory, URL, or a workflow you just walked through; honors CONTRIBUTING.md skill standards and mixed requirements (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/51506">#51506</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/52372">#52372</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/55956">#55956</a> — @teknium1)</li> <li><strong><code>/journey</code></strong> — CLI + TUI learning timeline of accumulated memories and skills, with in-place edit/delete (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/55555">#55555</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/55859">#55859</a> — @OutThisLife)</li> <li><strong>Cheaper background review</strong> — aux-model routing + context digest + adaptive cadence for the post-turn self-improvement fork (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/49252">#49252</a> — @teknium1)</li> <li><strong><code>memory</code> graph</strong> in the desktop — playable radial timeline of memories + skills over time (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/55226">#55226</a> — @OutThisLife)</li> </ul> <h2>🖥️ Hermes Desktop App</h2> <h3>Coding cockpit</h3> <ul> <li><strong>First-class Projects</strong> — per-profile sidebar, coding rail, review pane, agent project tools (<code>project → repo → lane</code>); remote-gateway-aware folder picker + git cockpit (status, review, worktrees) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/49037">#49037</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/54385">#54385</a> — @OutThisLife)</li> <li><strong>Multi-terminal panel</strong> with read-only agent terminals; persist & restore terminal tabs + scrollback across relaunch (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/54517">#54517</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/54585">#54585</a> — @OutThisLife)</li> <li><strong>PR-style file diffs in chat</strong>; in-app spot editor for the file preview pane; inline rich embeds, diagrams & alerts in assistant markdown (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/50731">#50731</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/52772">#52772</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/52935">#52935</a> — @OutThisLife)</li> </ul> <h3>UX & surfaces</h3> <ul> <li>Conversation timeline rail for long threads; context-usage breakdown popover; read-only spectator transcript for subagent watch windows; pop the composer into a draggable floating window (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/51094">#51094</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/54907">#54907</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/55033">#55033</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/49488">#49488</a> — @OutThisLife, @austinpickett)</li> <li>Read replies aloud (auto-TTS) composer toggle; remember window size/position/maximized across launches; redesigned clarify prompt; shared overlay Panel primitive for cron/profiles/agents (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/55154">#55154</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/52086">#52086</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/52993">#52993</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/54558">#54558</a> — @OutThisLife)</li> <li>Backup import/create/download from the web UI; add context-usage popover; flag already-installed themes in install pickers; config-driven Electron launch flags + GPU policy (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/54611">#54611</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/55410">#55410</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/53991">#53991</a> — @teknium1, @OutThisLife)</li> <li><strong>Pets</strong> — roaming pet (opt-in), calmer/realistic roam, Alt+wheel scaling never cropped, frame-perfect hatch flow + CPU-safe chroma, pop-out overlay + notifications (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/55114">#55114</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/55400">#55400</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/52877">#52877</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/47959">#47959</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/52303">#52303</a> — @OutThisLife)</li> </ul> <h3>Refactor wave (composer / god-file de-entangle)</h3> <ul> <li>Decomposed the composer into isolated engine hooks; extracted branch/esc/url/placeholder/popout engines; split <code>thread.tsx</code>, <code>sidebar/index.tsx</code>, onboarding overlay, and <code>use-prompt-actions</code> god files into focused modules; shared WebSocket layer decoupling desktop from dashboard (<code>hermes serve</code>) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/55500">#55500</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/55842">#55842</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/55451">#55451</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/55453">#55453</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/55807">#55807</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/55504">#55504</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/54568">#54568</a> — @OutThisLife)</li> <li>perf: bound tool-result rendering so big <code>/learn</code> runs don't freeze; fast session switching under load (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/52273">#52273</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/52620">#52620</a> — @OutThisLife)</li> </ul> <h2>📊 Web Dashboard</h2> <ul> <li>Auto-initiate portal SSO redirect on unauthenticated load; interactive auth setup on no-provider non-loopback bind; confidential-client (<code>client_secret</code>) support in self-hosted OIDC (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/54846">#54846</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/50551">#50551</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/55344">#55344</a> — @teknium1, @benbarclay)</li> <li>Catalogue all memory-provider API keys in <code>OPTIONAL_ENV_VARS</code>; list & add arbitrary custom <code>.env</code> keys on the Keys page; expose cron job execution fields; backup import/create/download (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/54546">#54546</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/54552">#54552</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/53551">#53551</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/54611">#54611</a> — @benbarclay, @teknium1)</li> <li>Offload PTY spawn/close off the event loop; exclude non-interactive providers from interactive login surfaces (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/53227">#53227</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/53239">#53239</a> — @IAvecilla)</li> </ul> <h2>🏗️ Core Agent & Architecture</h2> <h3>Delegation & subagents</h3> <ul> <li><strong>Background fan-out</strong> — parallel subagents run in the background, one consolidated return when all finish; calm "will resume" affordance for background <code>delegate_task</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/49734">#49734</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/52756">#52756</a> — @teknium1, @OutThisLife)</li> <li>Track background subagents in the CLI + TUI status bar (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/51441">#51441</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/51485">#51485</a> — @teknium1)</li> </ul> <h3>Agent loop, tools & coding context</h3> <ul> <li>One-shot LLM helper + <code>llm.oneshot</code> gateway RPC; expose coding-context project facts (<code>project.facts</code> RPC) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/51261">#51261</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/51259">#51259</a> — @OutThisLife)</li> <li><code>web_extract</code> truncate-and-store instead of LLM summarization; concurrent @-reference expansion (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/54843">#54843</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/55207">#55207</a> — @teknium1, @kshitijk4poor)</li> <li>Friendly human-phrased tool labels for built-in tools; <code>/reasoning full</code> (uncapped thinking); <code>/timestamps</code> + timestamps in <code>/history</code>; <code>/prompt</code> composes in <code>$EDITOR</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/55166">#55166</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/50499">#50499</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/50506">#50506</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/50509">#50509</a> — @teknium1)</li> <li>Per-reasoning-model stale-timeout floor in stream + non-stream detectors; escalate SIGTERM→SIGKILL on host-pid termination after grace (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/52845">#52845</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/50489">#50489</a> — @teknium1)</li> <li>Multiple <code>HERMES_WRITE_SAFE_ROOT</code> dirs; opt-in HTTP/WS body capture to an isolated, share-excluded <code>gui_bodies.log</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/53292">#53292</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/49044">#49044</a> — @kshitijk4poor)</li> </ul> <h3>Compression & sessions</h3> <ul> <li>In-place compaction option (single session id); flip <code>in_place</code> default to True with a guard fix (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/49739">#49739</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/52658">#52658</a> — @teknium1)</li> <li>Backup includes <code>projects.db</code> and kanban boards in the pre-update snapshot (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/52990">#52990</a> — @kshitijk4poor)</li> </ul> <h3>Providers & models</h3> <ul> <li><strong>Google Vertex AI</strong> first-class provider for Gemini over the OpenAI-compatible endpoint — auto-mints and refreshes short-lived OAuth2 tokens from a service-account JSON / ADC (no static key); salvages & modernizes #8427 by @slawt (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/56363">#56363</a> — @teknium1, @slawt)</li> <li>Krea via managed Nous Subscription gateway; Z.AI endpoint picker (Global/China/Coding Plan); Ollama-cloud reasoning_effort wiring; remove google-gemini-cli + google-antigravity OAuth providers (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/52647">#52647</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/52364">#52364</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/51494">#51494</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/50492">#50492</a> — @teknium1, @kshitijk4poor)</li> <li>Honor <code>NOUS_INFERENCE_BASE_URL</code> env override for Nous OAuth; keep Nous auth fresh for idle dashboard/gateway agents (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/52270">#52270</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/50567">#50567</a> — @benbarclay, @teknium1)</li> </ul> <h2>🌐 Gateway, Fleet & Relay</h2> <h3>Scale-to-zero & drain</h3> <ul> <li><strong>Scale-to-zero idle detection + dormant-quiesce (Phase 0)</strong>; hardened dormancy guards; fixed arm-gate counting disabled placeholder platforms (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/52243">#52243</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/52359">#52359</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/52831">#52831</a> — @teknium1, @benbarclay)</li> <li><strong>External drain coordination (safe-shutdown Phase 2)</strong>; suppress home-channel shutdown broadcast on flagged drains; persist in-flight transcript on restart/shutdown drain timeout; busy/idle readout for safe lifecycle actions (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/52937">#52937</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/54824">#54824</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/50312">#50312</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/50131">#50131</a> — @teknium1, @benbarclay, @kshitijk4poor)</li> <li>Default <code>restart_drain_timeout</code> to 0 to kill a systemd crash loop; self-heal a gateway stranded in draining/degraded (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/54066">#54066</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/55397">#55397</a> — @teknium1)</li> </ul> <h3>Relay (Phase 5 / 6)</h3> <ul> <li>Wake primitive (gateway side); going-idle / buffered-flip primitive; <code>passthrough_forward</code> over WS; multi-platform-per-agent identity + per-frame egress; forward stable instance id at self-provision; declare relevance policy to the connector (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/51595">#51595</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/51572">#51572</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/50702">#50702</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/52830">#52830</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/50772">#50772</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/51248">#51248</a> — @benbarclay)</li> <li>Authorize relay-delivered events by delivery, not <code>source.platform</code>; adopt <code>scope_id</code> wire key; purge platform-specific scope terminology (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/52306">#52306</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/55289">#55289</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/56016">#56016</a> — @benbarclay)</li> </ul> <h3>Gateway core & rendering</h3> <ul> <li>Typed send-error classification (<code>SendResult.error_kind</code>); per-platform <code>typing_indicator</code> toggle; per-category context breakdown in <code>/usage</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/50342">#50342</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/55394">#55394</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/55204">#55204</a> — @teknium1)</li> <li>API server: configurable concurrent-run cap to prevent DoS; scope run approvals by run id (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/50007">#50007</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/56129">#56129</a> — @teknium1)</li> </ul> <h2>📱 Messaging Platforms</h2> <ul> <li><strong>Cron continuations</strong> — continuable cron jobs (thread-preferred continuation with DM-mirror fallback); flat in-channel continuable cron delivery for Slack; warn when gateway not running on cron create/list (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/52250">#52250</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/56254">#56254</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/51696">#51696</a> — @teknium1)</li> <li>Telegram: configurable command menu + raised default cap so skills stay visible; gate rich draft previews separately; drain general send pool on pool timeout before retry (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/51716">#51716</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/52088">#52088</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/54121">#54121</a> — @teknium1, @helix4u)</li> <li>Slack: opt-in Block Kit rendering for agent messages; <code>--no-assistant</code> flag for manifest generation (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/56102">#56102</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/51487">#51487</a> — @teknium1)</li> <li>Discord: render reasoning as <code>-#</code> subtext via <code>display.reasoning_style</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/51168">#51168</a> — @teknium1)</li> <li>Native WhatsApp media delivery via the Baileys bridge; Teams native <code>send_video</code>/<code>send_voice</code>/<code>send_document</code>; photon sidecar upgraded to spectrum-ts v8 with tapback correlation; Raft gateway setup wizard (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/53598">#53598</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/49308">#49308</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/53451">#53451</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/56230">#56230</a> — @teknium1)</li> <li>Signal: AAC voice-note remux + shared markdown formatting (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/49530">#49530</a> — @kshitijk4poor)</li> <li>Migrate slack/dingtalk/whatsapp/matrix/feishu/telegram/wecom/email/sms adapters to bundled (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/49408">#49408</a> — @teknium1)</li> </ul> <h2>🔧 Tool System, Skills & MCP</h2> <ul> <li>Blank Slate setup mode — minimal agent, opt in to everything (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/36733">#36733</a> — @teknium1)</li> <li>MCP: config persistence attack surface hardened; block base_url exfil; keepalive for short-TTL sessions (see Security) — plus catalog & UX carried from v0.17.0</li> <li>Skills: <code>/learn</code> distillation (see Self-Improvement); <code>cloudflare-temporary-deploy</code> optional skill; creative-ideation v2.1.0 method library (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/50849">#50849</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/42402">#42402</a> — @teknium1, @SHL0MS)</li> <li>Kanban: task lifecycle plugin hooks (claimed/completed/blocked); typed block reasons + unblock-loop breaker; handoff freshness stamping (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/50349">#50349</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/52848">#52848</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/53973">#53973</a> — @teknium1)</li> <li>Plugins: <code>ctx.profile_name</code> for session-agnostic profile access (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/50346">#50346</a> — @teknium1)</li> <li>LSP: PowerShellEditorServices language server; mem0 v3 API + OSS mode + update/delete tools (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/55930">#55930</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/15624">#15624</a> — @teknium1, @kartik-mem0)</li> </ul> <h2>⚡ Performance</h2> <ul> <li>Cold start: lazy-load gateway platform adapters; parse config + plugin manifests with libyaml <code>CSafeLoader</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/54448">#54448</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/54486">#54486</a> — @teknium1)</li> <li>State: merge FTS5 segments + <code>handoff_state</code> index to curb write-lock contention; single-pass <code>list_profiles</code> alias map + skill-count cache + event-loop offload (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/54752">#54752</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/54770">#54770</a> — @kshitijk4poor, @teknium1)</li> </ul> <h2>🔒 Security & Reliability</h2> <ul> <li>Harden MCP-config persistence attack surface; block cron <code>base_url</code> overrides that exfiltrate provider credentials; non-reusable sentinel for prefix secrets in file reads (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/50476">#50476</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/56196">#56196</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/54166">#54166</a> — @teknium1, @kshitijk4poor)</li> <li>Redact Slack App-Level (<code>xapp-</code>) tokens; browser cloud-metadata floor on all backends (CDP non-local); re-check private-network guard after <code>browser_back</code> navigation; scope <code>/resume</code> and <code>/sessions</code> to caller origin (IDOR); <code>aiohttp</code> 3.14.1 CVE floor across lazy messaging paths + pin-drift guard (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/56227">#56227</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/52349">#52349</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/56526">#56526</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/56378">#56378</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/56237">#56237</a> — @teknium1, @claudlos, @kshitijk4poor)</li> <li>Cron reliability wave: fail closed when an unpinned job's provider drifts; run missed-grace jobs once instead of deferring forever; keep the ticker alive on <code>BaseException</code> + heartbeat-aware status; layer enabled MCP servers onto per-job toolsets; guard cron model-tool path + auto-resume loop breaker (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/51051">#51051</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/50062">#50062</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/50016">#50016</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/50117">#50117</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/56240">#56240</a> — @kshitijk4poor, @teknium1)</li> <li>Windows: suppress console flashes + harden gateway restarts; prefer cmd npm shim on PATH fallback; respawn gateway windowless after GUI update; prefer managed node for whatsapp/desktop (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/52340">#52340</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/50398">#50398</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/52239">#52239</a> — @helix4u, @teknium1)</li> </ul> <h2>🔁 Reverts (in-window, for the record)</h2> <ul> <li>cron job storage returned to per-profile (reverts #32117 + #50993); don't clone <code>auth.json</code> (duplicating OAuth grant causes sibling revocation); windows terminal-popup PRs rolled back; <code>prompt_caching.enabled</code> toggle backed out for re-evaluation (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/51116">#51116</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/51732">#51732</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/53853">#53853</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/56126">#56126</a> — @teknium1)</li> </ul> <h2>👥 Contributors</h2> <p><strong>381 people</strong> contributed to this release (via commits, co-author trailers, and salvaged PRs). Thank you, all of you.</p> <h3>Core</h3> <ul> <li>@teknium1 — release lead; MoA first-class, verification/goals, <code>/learn</code>, background review, security round, providers, the P0/P1 clean-sweep</li> <li>@OutThisLife — desktop app (projects, memory graph, <code>/journey</code>, multi-terminal, composer refactor wave, pets, verification UX)</li> </ul> <h3>Top community contributors</h3> <ul> <li>@kshitijk4poor — the P0/P1 backlog burn: cron reliability wave, state perf, security (cron credential-exfil), gateway/signal, TUI config — a huge share of the priority closures</li> <li>@benbarclay — relay Phase 5/6, scale-to-zero / drain coordination, dashboard auth/keys, gateway hardening</li> <li>@ethernet8023 — CI/docker (unified jobs, faster builds, timings report)</li> <li>@helix4u — Windows hardening (console flashes, npm shim, gateway restarts)</li> </ul> <h3>All contributors</h3> <p>@0xbyt4, @0xDevNinja, @0xsir0000, @1RB, @595650661, @aaronlab, @abchiaravalle, @adammatski1972, @AetherAgents, @Afnath-max, @agt-user, @ahmadashfq, @AhmetArif0, @AIalliAI, @aieng-abdullah, @ailang323, @ailthrim, @aj-nt, @alelpoan, @alloevil, @amathxbt, @ambition0802, @anderskev, @andressommerhoff, @angelos, @annguyenNous, @Antimatter543, @arminanton, @arthurzhang, @asimons81, @austinpickett, @baolingao, @Bartok9, @basilalshukaili, @BBCrypto-web, @bbopen, @Beandon13, @beardthelion, @benbarclay, @benbenlijie, @binhnt92, @bitcryptic-gw, @Blaryxoff, @bogerman1, @bradhallett, @brett539, @briandevans, @buihongduc132, @bykim0119, @catapreta, @chaithanyak42, @charleneleong-ai, @CharlieKerfoot, @chazmaniandinkle, @chrispersico, @Christopher-Schulze, @chriswesley4, @claudlos, @clovericbot, @cmcejas, @codexGW, @Cossackx, @counterposition, @coygeek, @CRWuTJ, @cyb0rgk1tty, @cyb3rwr3n, @cypctlinux, @cypres0099, @dalenguyen, @Danamove, @DanAsBjorn, @DataAdvisory, @davidgut1982, @DavidMetcalfe, @davidvv, @de1tydev, @denisqq, @devorun, @devsart95, @DhivinX, @DiamondEyesFox, @difujia, @Disaster-Terminator, @djimit, @djstunami, @dodo-reach, @donovan-yohan, @Dr1985, @DrZM007, @Dusk1e, @egilewski, @ehz0ah, @Eji4h, @EloquentBrush0x, @Elshayib, @emozilla, @entropy-0x, @Erosika, @EtherAura, @etherman-os, @ethernet8023, @f-trycua, @fayenix, @fesalfayed, @firefly, @flamiinngo, @flobo3, @francescomucio, @franksong2702, @friendshipisover, @fsaad1984, @fyzanshaik, @GauravPatil2515, @gdeyoung, @georgex8001, @GodsBoy, @graphanov, @Gromykoss, @gustavosmendes, @Gutslabs, @H2KFORGIVEN, @haileymarshall, @hakanpak, @happy5318, @haran2001, @harjothkhara, @heathley, @hehehe0803, @helix4u, @herbalizer404, @HexLab98, @HiddenPuppy, @Hinotoi-agent, @HODLCLONE, @houko, @huangsen365, @huangxudong663-sys, @huangxun375-stack, @HwangJohn, @iaji, @iamlukethedev, @IamSanchoPanza, @IAvecilla, @Icather, @iizotov, @indigokarasu, @infinitycrew39, @ipriyaaanshu, @isair, @islam666, @itenev, @itsflownium, @izumi0uu, @Jaaneek, @JabberELF, @jackjin1997, @jackroofan, @janrenz, @jasnoorgill, @jasonQin6, @jcjc81, @jearnest11, @jeeves-assistant, @Jeffgithub0029, @jeffrobodie-glitch, @JezzaHehn, @jimmyjohansson84, @jmmaloney4, @jnibarger01, @JoaoMarcos44, @jplew, @Junass1, @justemu, @justin-cyhuang, @JustinOhms, @jvradahellys24-art, @Kailigithub, @kaishi00, @kangsoo-bit, @kartik-mem0, @keiravoss94, @kenyonxu, @kernel-t1, @Kewe63, @KeyArgo, @KiruyaMomochi, @kn8-codes, @Kolektori, @konsisumer, @kshitijk4poor, @kyssta-exe, @Kyzcreig, @Lazymonter, @LehaoLin, @LeonSGP43, @lEWFkRAD, @libre-7, @LIC99, @LifeJiggy, @linyubin, @liuhao1024, @lkevincc0, @lkz-de, @loes5050, @londo161, @lubosxyz, @m24927605, @MaheshtheDev, @manus-use, @marco0158, @MarioYounger, @martinramos002-bot, @MattKotsenas, @max-chen, @MaxFreedomPollard, @maxmilian, @maxpetrusenko, @memosr, @Mibayy, @Minksgo, @mintybasil, @mkslzk, @mohamedorigami-jpg, @MorAlekss, @mrparker0980, @ms-alan, @namredips, @nankingjing, @natehale, @necoweb3, @neo-2026, @Nickperillo, @nightq, @nikshepsvn, @nnnet, @nocturnum91, @nodejun, @NousResearch, @nycomar, @OmarB97, @orbisai0security, @oreoluwa, @outsourc-e, @OutThisLife, @p-andhika, @panghuer023, @Paperclip, @peetwan, @pefontana, @petrichor-op, @pinguarmy, @PINKIIILQWQ, @pmos69, @PolyphonyRequiem, @pprism13, @PRATHAMESH75, @professorpalmer, @pyxl-dev, @Que0x, @qWaitCrypto, @r266-tech, @RafaelMiMi, @Railway9784, @randomuser2026x, @rayjun, @rc-int, @rebel0789, @redactdeveloper, @riyas22, @rlaope, @rob-maron, @rodboev, @rodrigoeqnit, @rratmansky, @rrevenanttt, @ruangraung, @Ruzzgar, @ryo-solo, @s010mn, @Sahil-SS9, @SahilRakhaiya05, @SandroHub013, @Sanjays2402, @sasquatch9818, @ScotterMonk, @season179, @sgabel, @sgaofen, @sgtworkman, @shandian64, @shannonsands, @shashwatgokhe, @shawchanshek, @sherman-yang, @SHL0MS, @SidUParis, @SimoKiihamaki, @simpolism, @sjh9714, @skabartem, @skyc1e, @slawt, @soynchux, @spiky02plateau, @spjoes, @sprmn24, @srojk34, @stepanov1975, @steveonjava, @Subway2023, @sweetcornna, @swissly, @Sworntech-dev, @syahidfrd, @synapsesx, @szzhoujiarui-sketch, @talmax1124, @telos-oc, @testingbuddies24, @texhy, @tgmerritt, @theAgenticBuilder, @thestral123, @tkwong, @Tortugasaur, @Tranquil-Flow, @trevorgordon981, @truenorth-lj, @tt-a1i, @tuancookiez-hub, @TutkuEroglu, @tymrtn, @udatny, @UgwujaGeorge, @underthestars-zhy, @uperLu, @uzunkuyruk, @valenteff, @valentt, @vanthinh6886, @Versun, @victor-kyriazakos, @virtuadex, @vKongv, @w31rdm4ch1nZ, @weidzhou, @wgu9, @whoislikemiha, @wnuuee1, @woaini30050, @WuKongAI-CMU, @WuTianyi123, @WXBR, @x7peeps, @x9x9x9x9x9x91, @Xowiek, @xxchan, @xxxigm, @xydigit-zt, @yapsrubricsz0, @yashiels, @yeyitech, @ygd58, @YLChen-007, @yong2bba, @yoniebans, @ypwcharles, @yu-xin-c, @yungchentang, @yusekiotacode, @YuShu, @yyzquwu, @zapabob, @zccyman, @zeapsu, @zmlgit, @znding04, @Zyxxx-xxxyZ</p> <p>Also: Lucas Nicolas.</p> <hr> <p><strong>Full Changelog</strong>: <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/compare/v2026.6.19...v2026.7.1">v2026.6.19...v2026.7.1</a></p> </div><div class="link-row" data-astro-cid-l7qxtvnw><span class="lr-label" data-astro-cid-l7qxtvnw>Links</span><a href="https://github.com/NousResearch/hermes-agent/releases/tag/v2026.7.1" data-astro-cid-l7qxtvnw>GitHub release notes ↗</a><a href="https://github.com/NousResearch/hermes-agent/compare/v2026.6.19...v2026.7.1" data-astro-cid-l7qxtvnw>Full diff ↗</a><a href="/blog/2026-07-04-hermes-judgment-release-v018/" data-astro-cid-l7qxtvnw>Our release deep-dive →</a><a href="/skills/" data-astro-cid-l7qxtvnw>Skill Library →</a><a href="/providers/" data-astro-cid-l7qxtvnw>Providers Reference →</a><a href="/blog/2026-06-06-hermes-desktop-surface-release/" data-astro-cid-l7qxtvnw>Desktop deep-dive →</a></div></div></details></div><div data-astro-cid-l7qxtvnw><h3 class="month-h" data-astro-cid-l7qxtvnw>June 2026</h3><details class="rel" data-astro-cid-l7qxtvnw><summary data-astro-cid-l7qxtvnw><span class="r-arrow" data-astro-cid-l7qxtvnw>▶</span><span class="r-ver" data-astro-cid-l7qxtvnw>v0.17.0</span><span class="r-codename" data-astro-cid-l7qxtvnw>Reach Release</span><span class="r-date" data-astro-cid-l7qxtvnw>2026-06-19</span></summary><div class="rel-body" data-astro-cid-l7qxtvnw><p class="r-summary" data-astro-cid-l7qxtvnw><strong>The Reach Release.</strong> v0.16.0 put Hermes on your desktop. v0.17.0 is about how far that reach extends — across new places to talk to it, deeper into the tools you already use, and out to the people running Hermes for a team. Hermes reached two new channels (iMessage via Photon, and the Raft agent network), the desktop app gained substantial new capability, subagents can now run in the background, image generation learned to edit, and Cursor's Composer model is reachable through an xAI Grok subscription. The dashboard got a full profile builder and secure login, the Skills Hub browser was rehauled, the <code>memory</code> tool got a major upgrade, and the curator stopped spending aux-model budget on every routine run. 300+ issues closed ride along, plus a security round.</p><div class="r-notes" data-astro-cid-l7qxtvnw><blockquote> <p><strong>The Reach Release.</strong> v0.16.0 put Hermes on your desktop. v0.17.0 is about how far that reach extends — across new places to talk to it, deeper into the tools you already use, and out to the people running Hermes for a team. Hermes reached two new channels (iMessage via Photon, and the Raft agent network), the desktop app gained substantial new capability, subagents can now run in the background, image generation learned to edit, and Cursor's Composer model is reachable through an xAI Grok subscription. The dashboard got a full profile builder and secure login, the Skills Hub browser was rehauled, the <code>memory</code> tool got a major upgrade, and the curator stopped spending aux-model budget on every routine run. 300+ issues closed ride along, plus a security round.</p> </blockquote> <h2>✨ Highlights</h2> <ul> <li><p><strong>Hermes reaches iMessage — Photon Spectrum, no Mac relay required</strong> — There's now an iMessage platform plugin built on Photon's managed line pool. Run <code>hermes photon login</code>, authenticate with a device code, and Hermes can send and receive iMessage — no Mac sitting in a closet running a relay, no BlueBubbles bridge to babysit. It's positioned as the successor to BlueBubbles: free to start, nothing to self-host. If your friends and family live in the blue bubbles, Hermes lives there now too. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/32348">#32348</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/42582">#42582</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/44713">#44713</a> — @teknium1)</p> </li> <li><p><strong>Raft — Hermes joins the Raft agent network as a gateway channel</strong> — A new bundled Raft platform adapter lets Hermes connect to <a rel="noopener" href="https://raft.build">Raft</a> as an external agent through a wake-channel bridge. Set <code>RAFT_PROFILE</code>, run the bridge, and Raft can wake Hermes to handle messages — with a privacy-by-contract design where wake payloads carry only metadata (event IDs, timestamps), never message bodies. Another surface where Hermes can show up and do work. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/48210">#48210</a> — @xxchan, @teknium1)</p> </li> <li><p><strong>A substantially more capable desktop app</strong> — v0.16.0 shipped the desktop app; v0.17.0 deepened it across dozens of PRs. Rebindable keyboard shortcuts, native OS notifications with per-type toggles, live subagent <strong>watch-windows</strong> that stream a delegated agent's activity into its own pane, a composer model selector with per-model presets, automatic RTL/bidi text direction, a resizable VS Code-themed terminal pane, per-thread composer drafts, and the ability to install <strong>any VS Code Marketplace theme</strong> directly into the app. The desktop is now a serious daily driver, not a preview. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/45866">#45866</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/40660">#40660</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/47060">#47060</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/46959">#46959</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/43292">#43292</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/44596">#44596</a> — @OutThisLife, @teknium1)</p> </li> <li><p><strong>Background / async subagents — delegate work and keep going</strong> — <code>delegate_task(background=true)</code> now dispatches a subagent that runs in the background and returns a handle immediately. You and the model keep working while it churns, and the full result re-enters the conversation as a new turn the moment it finishes. Kick off a long research dive or a multi-step build, then carry on with something else instead of sitting blocked waiting on it. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/40946">#40946</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/46968">#46968</a> — @teknium1)</p> </li> <li><p><strong>Edit images, not just generate them — image-to-image in <code>image_generate</code></strong> — <code>image_generate</code> can now edit and transform a source image, not only create one from scratch. Pass an existing image and a prompt and it routes to the backend's edit endpoint (same tool, same pattern as <code>video_generate</code>), across every supported image provider. "Make this logo blue," "remove the background," "turn this sketch into a render" — all from the tool you already use. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/48705">#48705</a> — @teknium1)</p> </li> <li><p><strong>Automation Blueprints — schedule things without learning cron</strong> — Pick an automation by name and Hermes asks you for what it needs — no cron syntax, no <code>slot=value</code> typing. One blueprint definition renders natively on every surface: a form in the dashboard, a slash command in the CLI/TUI/messenger, a conversation with the agent, an entry in the docs catalog. "Daily news briefing at 8am" becomes a thing you set up by answering questions, not by memorizing <code>0 8 * * *</code>. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/41309">#41309</a> — @teknium1)</p> </li> <li><p><strong>Cursor's Composer model, through your xAI Grok subscription</strong> — <code>grok-composer-2.5-fast</code> is now in the xAI OAuth model picker, with its context window reconciled to the full 200k. Composer is the fast coding model behind Cursor — and if you have an xAI Grok subscription, you can now point Hermes at it directly over OAuth, no separate API key. Your Grok plan, Hermes's agent loop, Composer's coding speed. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/47908">#47908</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/47371">#6f89e17</a> — @teknium1)</p> </li> <li><p><strong>Full profile builder in the dashboard</strong> — Build a complete Hermes profile from the browser — pick its model, choose its skills, attach its MCP servers — without hand-editing <code>config.yaml</code>. The dashboard also unified multi-profile management into one machine-wide view with a global profile switcher, so you manage every profile from a single place. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/39084">#39084</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/44007">#44007</a> — @teknium1)</p> </li> <li><p><strong>Skills Hub browser rehaul</strong> — The dashboard's Skills Hub got a ground-up rework: connected hubs, a Featured section, full skill previews before you install, and a security scan on each skill. Browsing and installing skills from the trusted taps (OpenAI, Anthropic, HuggingFace, NVIDIA) is now a real browsing experience, not a flat list. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/40384">#40384</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/43398">#43398</a> — @teknium1)</p> </li> <li><p><strong>The <code>memory</code> tool got a major upgrade — atomic batch operations</strong> — The <code>memory</code> tool gained an <code>operations</code> array that applies a batch of add/replace/remove edits <strong>atomically against the final character budget</strong>. The model can free up space and add new entries in a single call — even when an add alone would overflow the budget — collapsing what used to be a fragile multi-turn dance into one reliable operation. Memory updates are now faster and far less likely to fail mid-edit. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/48507">#48507</a> — @teknium1)</p> </li> <li><p><strong>Secure dashboard login</strong> — The dashboard's authentication was hardened: every token-required endpoint now correctly returns 401 behind the OAuth gate, websocket auth uses the served dashboard token, and a warning fires when a <code>public_url</code> override is silently rejected. Exposing your dashboard to the network is safer by default. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/42578">#42578</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/43214">#42578</a> — @benbarclay, @teknium1)</p> </li> <li><p><strong>Official WhatsApp Business Cloud API adapter</strong> — Alongside the existing Baileys bridge, Hermes now speaks the <strong>official</strong> WhatsApp Business Cloud API — Meta's first-party, hosted, no-bridge-process path. Point it at your Business API credentials and Hermes talks WhatsApp through the supported channel, with no QR-scanning bridge process to keep alive. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/44331">#44331</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/43921">#43921</a> — @jquesnelle, @teknium1)</p> </li> <li><p><strong>Rich text for Telegram — Bot API 10.1 rich messages</strong> — Telegram replies now render as proper rich messages via Bot API 10.1: better formatting, cleaner long-message handling, native markup instead of flattened text. It's on by default with an opt-out, so your Telegram conversations look the way they should without any configuration. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/44829">#44829</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/45584">#45584</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/45953">#45953</a> — @teknium1)</p> </li> <li><p><strong>Curator cost optimization — no aux-model spend on routine runs</strong> — The skill curator now prunes stale skills by default but no longer runs its LLM-powered consolidation pass unless you opt in (<code>curator.consolidate: true</code> or <code>hermes curator run --consolidate</code>). The deterministic inactivity sweep keeps running for free; the opinionated, aux-model-spending "build umbrella skills" fork is now off by default. Routine background curation costs you <strong>zero tokens</strong>. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/47840">#47840</a> — @teknium1)</p> </li> </ul> <h2>🖥️ Hermes Desktop App</h2> <h3>New surfaces & UX</h3> <ul> <li>Rebindable keyboard shortcuts panel; native OS notifications with per-type toggles; curated turn-completion cue + dismissable error banners (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/40660">#40660</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/45866">#45866</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/42480">#42480</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/47985">#47985</a> — @OutThisLife, @teknium1)</li> <li>Live subagent <strong>watch-windows</strong> — stream a delegated agent's activity into its own pane; composer status stack + editable prompts; open any chat in its own window; new-session-in-compact-window hotkey (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/47060">#47060</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/44630">#44630</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/43219">#43219</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/46951">#46951</a> — @OutThisLife, @teknium1)</li> <li>Composer model selector + per-model presets + external-provider disconnect; surface every provider/model from <code>hermes model</code> in the GUI; unify provider list to one source; warn when a main-model switch leaves auxiliary tasks pinned elsewhere (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/46959">#46959</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/40563">#40563</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/49080">#49080</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/40286">#40286</a> — @teknium1, @OutThisLife)</li> <li>Install <strong>any VS Code Marketplace theme</strong>; assignable themes per profile; window translucency slider; unified overlay design system + BrandMark + onboarding redesign (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/43292">#43292</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/42286">#42286</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/45086">#45086</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/40708">#40708</a> — @teknium1, @OutThisLife)</li> <li>Resizable VS Code-themed terminal pane + palette polish; auto-detect RTL/bidi text direction in chat; Mac-style session switcher (^Tab / ^1-9); worktree-aware sidebar grouping; hover-reveal collapsed sidebars; messaging source folders in sidebar (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/42521">#42521</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/44596">#44596</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/43111">#43111</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/45273">#45273</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/41670">#41670</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/41751">#41751</a> — @OutThisLife)</li> <li>Arrow-key history + queue editing in composer; expand full command inline from the approval bar; follow-streaming-at-bottom + jump-to-bottom button; first-class cron jobs in the sidebar + dashboard scheduler (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/40234">#40234</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/44864">#44864</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/45263">#45263</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/40684">#40684</a> — @OutThisLife, @teknium1)</li> <li>Desktop pets — pop-out overlay + notifications (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/47938">#47938</a> — @teknium1)</li> <li>Full tool-backend config (pickers + per-backend settings) in Settings; run tool-backend post-setup installs from the GUI; uninstall the Chat GUI without removing the agent; Shift+click status-bar zap to toggle YOLO globally; <code>/browser connect</code> on a local gateway (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/41232">#41232</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/40559">#40559</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/40355">#40355</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/41666">#41666</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/47245">#47245</a> — @teknium1, @OutThisLife)</li> <li>Japanese + Traditional Chinese language switching (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/40114">#40114</a>)</li> <li>"Restart gateway" action (renamed from "Restart messaging") surfaced in the statusbar + on messaging save/toggle toasts; rendered logs are selectable/copyable (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/49094">#49094</a> — @OutThisLife)</li> </ul> <h3>Remote-gateway & multi-profile</h3> <ul> <li><strong>Remote media relay</strong> — attach images/PDFs and display agent-written images over the network for the first time; remote-gateway file attachments via <code>file.attach</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/41336">#41336</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/42634">#42634</a> — @teknium1)</li> <li>Client + backend version buttons + remote-backend update flow; browse remote backend files; route global-remote profile REST calls; recover chat after sleep/wake by revalidating a stale remote backend (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/42181">#42181</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/44326">#44326</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/47011">#47011</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/41350">#41350</a> — @OutThisLife, @teknium1)</li> <li>Multi-profile fallout cleanup — WS auth + cross-profile session reads; release profile backends before delete; scope session list/model switch/timer per session (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/44529">#44529</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/42613">#42613</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/41103">#41103</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/41120">#41120</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/41182">#41182</a> — @OutThisLife, @teknium1)</li> <li>Stream subagent activity into watch windows; keep streaming painting in unfocused secondary chat windows; recover stranded session windows (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/47060">#47060</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/47919">#47919</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/47655">#47655</a> — @OutThisLife)</li> </ul> <h2>📊 Web Dashboard</h2> <ul> <li>Full-featured profile builder (model + skills + MCPs); unify multi-profile management — one machine dashboard + global profile switcher; profile-scoped skills & toolsets; session switcher panel on the Chat tab (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/39084">#39084</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/44007">#44007</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/43808">#43808</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/49077">#49077</a> — @teknium1)</li> <li>Skills hub browser rehaul — connected hubs, featured, preview + security scan; SKILL.md editor on Skills page + attach-skill selector in cron modals; full per-MCP catalog detail; full tool-backend config in the GUI (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/40384">#40384</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/44231">#44231</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/48520">#48520</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/40418">#40418</a> — @teknium1)</li> <li>Enable webhooks from the Webhooks page; idempotent <code>hermes dashboard register</code>; auto-restart gateway after Telegram QR onboarding; file browser; change UI font from the theme picker; reasoning-effort picker in the chat sidebar (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/44021">#44021</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/42455">#42455</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/43424">#43424</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/43512">#43512</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/41145">#41145</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/49141">#49141</a> — @teknium1)</li> </ul> <h2>🏗️ Core Agent & Architecture</h2> <h3>God-file refactor wave (run_agent.py / cli.py / gateway/run.py)</h3> <ul> <li><strong><code>cli.py</code> main() 3297 → 954 lines</strong> — extracted 28 subcommand parsers into <code>hermes_cli/subcommands/</code>, then promoted 9 closure handlers; 32 slash-command handlers → <code>CLICommandsMixin</code>; 18 model-flow wizard functions → <code>model_setup_flows</code>; agent-construction cluster → <code>CLIAgentSetupMixin</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/41798">#41798</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/41835">#41835</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/41942">#41942</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/42174">#42174</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/42153">#42153</a> — @teknium1)</li> <li><strong><code>gateway/run.py</code> 19157 → 15870 lines</strong> — 42 slash-command handlers → <code>GatewaySlashCommandsMixin</code>; authorization cluster → <code>GatewayAuthorizationMixin</code>; kanban watcher loops → <code>GatewayKanbanWatchersMixin</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/41886">#41886</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/42159">#42159</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/41849">#41849</a> — @teknium1)</li> <li><strong><code>run_agent.py</code> turn loop</strong> — extracted prologue into <code>TurnContext</code>, post-loop tail into <code>finalize_turn</code>, consolidated inner-retry-loop recovery flags into <code>TurnRetryState</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/41778">#41778</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/42169">#42169</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/41828">#41828</a> — @teknium1)</li> </ul> <h3>Agent loop, prompt & tools</h3> <ul> <li><strong><code>memory</code> batch operations</strong> — atomic add/replace/remove array against the final char budget, so a single call can free space and add entries (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/48507">#48507</a> — @teknium1)</li> <li><strong><code>search_files</code> lossless densification</strong> — headroom evaluation report + the one densification improvement worth shipping (fewer tokens per result, same matches) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/47866">#47866</a> — @teknium1)</li> <li>Removed the agent-callable <code>send_message</code> tool; coding-context posture across CLI/TUI/desktop/ACP; <code>read_file</code> extracts <code>.ipynb</code>/<code>.docx</code>/<code>.xlsx</code> to text (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/47856">#47856</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/43316">#43316</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/37082">#37082</a> — @teknium1)</li> <li>Context-file handling: configurable truncation limit + warnings; scale context-file cap to model window + point agent at the truncated file (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/47251">#47251</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/47846">#47846</a> — @teknium1)</li> <li>Compression: temporal anchoring in compaction summaries; raise compaction trigger to 85% for gpt-5.5 on Codex OAuth (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/41102">#41102</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/40957">#40957</a> — @teknium1)</li> <li>Adaptive middleware (consumed by NeMo-Relay observer telemetry); usable mid-turn steer — desktop affordance + trusted injection (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/29724">#29724</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/40240">#40240</a> — @teknium1)</li> </ul> <h3>Provider & model support</h3> <ul> <li>New models: <code>z-ai/glm-5.2</code> (verified 1M context, OpenRouter + Nous), <code>anthropic/claude-fable-5</code>, <code>laguna-m.1</code> + <code>nemotron-3-ultra</code>, xAI Composer 2.5 in the OAuth picker; default xAI to <code>grok-build-0.1</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/47391">#47391</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/45695">#45695</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/42979">#42979</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/42629">#42629</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/47908">#47908</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/47371">#47371</a> — @teknium1)</li> <li>Model picker: Refresh-Models control to bust stale cache; persist Nous recommended-models to disk + fall back on Portal failure; seed catalog disk cache from checkout on update; MiniMax-M3 reports true 1M context (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/48691">#48691</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/42628">#42628</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/42614">#42614</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/43338">#43338</a> — @teknium1)</li> <li>Anthropic adaptive models: default to modern thinking contract; never send <code>reasoning</code> field; route <code>reasoning_effort</code> to verbosity; require confirmation for very expensive selections (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/42991">#42991</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/43012">#43012</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/43436">#43436</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/43391">#43391</a> — @teknium1)</li> <li>Auth: auto-detect OpenRouter credential from the pool; keep Codex OAuth pool accounts distinct on add/re-auth; resolve xAI OAuth across profiles + write rotated tokens back to root; honor <code>model.default_headers</code> for custom OpenAI-compatible providers (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/42263">#42263</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/42316">#42316</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/46614">#46614</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/41096">#41096</a> — @teknium1)</li> <li>Bedrock falls back to non-streaming <code>InvokeModel</code> when IAM denies the streaming variant; Ollama default <code>max_tokens=65536</code>; surface model refusals as <code>content_filter</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/44293">#44293</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/41694">#41694</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/46013">#46013</a> — @teknium1)</li> </ul> <h3>Sessions, state & multi-agent</h3> <ul> <li>Optional <strong>max session cap</strong>; drop empty sessions on CLI exit and rotation; ACP session-provenance metadata for compression rotation (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/42389">#42389</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/43855">#43855</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/41724">#41724</a> — @teknium1)</li> <li>Delegation: resolve custom-endpoint subagent pools by endpoint identity; remove the default subagent wall-clock timeout; stop subagent completion lines leaking into parent CLI display (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/41730">#41730</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/45149">#45149</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/44223">#44223</a> — @teknium1)</li> <li>Kanban: config-gated auto-subscribe on <code>kanban_create</code>; machine-global singleton lock for the embedded dispatcher; pin assigned profile toolsets for workers; hold reclaim while worker still alive (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/48635">#48635</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/49068">#49068</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/45590">#45590</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/49064">#49064</a> — @teknium1)</li> <li>Memory: configurable Hindsight retain observation scopes; OpenViking setup UX; Honcho gateway-gated identity tree; Supermemory session-level ingest (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/46611">#46611</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/48262">#48262</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/44431">#44431</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/38756">#38756</a> — @teknium1, @alt-glitch)</li> </ul> <h2>📱 Messaging Platforms (Gateway)</h2> <h3>New channels</h3> <ul> <li><strong>iMessage via Photon Spectrum</strong> — <code>hermes photon login</code> (device-code OAuth), gRPC-native channel (no webhook), markdown rendering, emoji reactions, outbound media via spectrum-ts (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/32348">#32348</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/42582">#42582</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/44713">#44713</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/42397">#42397</a> — @teknium1)</li> <li><strong>WhatsApp Business Cloud API</strong> adapter (official, no bridge process) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/44331">#44331</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/43921">#43921</a> — @jquesnelle, @teknium1)</li> <li><strong>SimpleX</strong> — groups, native attachments, text batching, auto-accept; <strong>Raft</strong> bundled platform plugin with activity hooks (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/42584">#42584</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/48210">#48210</a> — @teknium1)</li> </ul> <h3>Gateway core & rendering</h3> <ul> <li>Render terminal tool calls as native bash code blocks on markdown platforms; bare fenced code blocks in chat; optional message timestamps for LLM context; configurable <code>tool_progress_grouping</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/41215">#41215</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/42576">#42576</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/47253">#47253</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/47228">#47228</a> — @teknium1)</li> <li>Telegram: Bot API 10.1 rich messages (now always-on with opt-out); opt-in Online/Offline bot status indicator; stop cutting long streamed responses; MarkdownV2 on progress edits; gate oversized voice/audio before download (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/44829">#44829</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/45584">#45584</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/49134">#49134</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/43761">#43761</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/44245">#44245</a> — @teknium1)</li> <li>Discord: propagate <code>role_authorized</code> so <code>DISCORD_ALLOWED_ROLES</code> works end-to-end; recover from runtime gateway task exits; cancel <code>_bot_task</code> on connect failure; stop typing after replies (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/43327">#43327</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/44383">#44383</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/44432">#44432</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/44836">#44836</a> — @teknium1)</li> <li>Slack: scope top-level channel messages when <code>reply_in_thread=false</code>; thread approval UX (block-size overflow + typed-prefix); make video attachments available to agents; <code>register_slack_action_handler</code> plugin API (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/41703">#41703</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/43444">#43444</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/45512">#45512</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/44664">#44664</a> — @teknium1)</li> <li>Replied-to media attachments included; document attachments classified as DOCUMENT on Signal/Email/SimpleX/Teams; WhatsApp restarts stale bridge processes; Matrix room-context isolation; QQbot CPU-spin fix; Weixin rate-limit circuit breaker (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/46107">#46107</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/44695">#44695</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/44205">#44205</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/18505">#18505</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/40574">#40574</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/41718">#41718</a> — @teknium1, @banditburai)</li> </ul> <h2>🖥️ CLI, TUI & Setup</h2> <ul> <li><code>/version</code> slash command; <code>/billing</code> interactive terminal billing (TUI + CLI); show time since last final agent response on the status bar; persist resolved approval/clarify prompts in scrollback (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/40214">#40214</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/45449">#45449</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/44265">#44265</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/44702">#44702</a> — @teknium1)</li> <li>Lock hermes worktrees so concurrent processes can't clobber them; display custom profile alias names in list/show; clone profiles from any source (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/48699">#48699</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/40371">#40371</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/45630">#45630</a> — @teknium1)</li> <li>Opt-in structured profile-build path on first contact; configurable per-platform system-prompt hints; configurable background memory/skill notifications (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/41114">#41114</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/48630">#48630</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/47226">#47226</a> — @teknium1)</li> <li>TUI: interactive Plugins Hub enable/disable overlay; session name in the terminal titlebar; paint approval/clarify/sudo/secret modals directly (not via throttle); wrap long approval commands instead of truncating (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/42965">#42965</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/43188">#43188</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/41155">#41155</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/44691">#44691</a> — @teknium1)</li> <li>TTS: Gemini persona prompts + audio tags; xAI auto speech tags + speed/streaming knobs; Piper speaker_id; OGG for Telegram auto-TTS (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/43442">#43442</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/49061">#49061</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/49062">#49062</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/49060">#49060</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/41644">#41644</a> — @teknium1)</li> </ul> <h2>🔧 Tool System, Skills & MCP</h2> <ul> <li><strong>image-to-image / editing</strong> in <code>image_generate</code> across all backends; shrink images to provider dimension limit (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/48705">#48705</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/45979">#45979</a> — @teknium1)</li> <li>MCP: official <strong>Unreal Engine 5.8</strong> MCP server in the catalog; <strong>elicitation handler</strong> so MCP servers can prompt for mid-tool-call confirmation (payment/OAuth) on whichever surface owns the session — CLI/TUI/Telegram/Slack; expose late-connecting MCP tools to the agent between turns (cache-safe); keepalive ping for short-TTL HTTP sessions; block exfil-shaped / suspicious stdio configs before probe; capability-gate <code>tools/list</code> so prompt-only servers connect; preserve stdio argv passthrough + Windows env vars (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/48397">#48397</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/49203">#49203</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/49208">#49208</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/49221">#49221</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/46083">#46083</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/44550">#44550</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/44324">#44324</a> — @teknium1, @lgalabru)</li> <li>Skills: <code>simplify-code</code> skill (parallel 3-agent code review & cleanup) + risk-tiered application with Chesterton's Fence; find & diff user-modified bundled skills; optional <strong>payments</strong> skills (Stripe Link, MPP, Projects); CLI-based shop skill; live per-source browse progress (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/41691">#41691</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/49070">#49070</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/48286">#48286</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/31343">#31343</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/47309">#47309</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/43398">#43398</a> — @teknium1, @colinwren-stripe)</li> <li>Curator: make skill consolidation opt-in (prune stays default-on) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/47840">#47840</a> — @teknium1)</li> <li>Plugins: install from a subdirectory within a repo; accept browser-pasted GitHub URLs in <code>hermes plugins install</code>; <code>session:compress</code> lifecycle event + <code>thread_id</code>/<code>chat_type</code> in agent:start/end context (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/42963">#42963</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/33539">#33539</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/47252">#47252</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/41672">#41672</a> — @teknium1)</li> <li>Memory/skill <strong>write approval</strong> gate (default off) — boolean <code>write_approval</code> replaces the tri-state <code>write_mode</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/38199">#38199</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/43354">#43354</a> — @teknium1)</li> </ul> <h2>🌐 Fleet, Relay & Automation</h2> <ul> <li><strong>Managed scope</strong> — administrator-pinned, user-immutable config & secrets from a root-owned <code>/etc/hermes</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/49098">#49098</a> — @teknium1)</li> <li><strong>Multiplex all profiles over one gateway process</strong> (opt-in) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/48273">#48273</a> — @benbarclay)</li> <li><strong>Pluggable CronScheduler</strong> + Chronos managed-cron provider (scale-to-zero) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/48275">#48275</a> — @benbarclay)</li> <li><strong>Automation Blueprints</strong> — parameterized automation templates across every surface (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/41309">#41309</a> — @teknium1)</li> <li>Gateway-Gateway relay (phases 0-3): relay adapter + capability descriptor, connector⇄gateway channel auth + signed-HTTP inbound + enroll CLI, WS-only inbound, managed-boot self-provision client (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/48078">#48078</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/48147">#48147</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/48294">#48294</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/48242">#48242</a> — @teknium1)</li> </ul> <h2>🐳 Docker, Nix & Installer</h2> <ul> <li>s6: detect supervisor directly for gateway restart; register profile gateways without auto-starting; persist desired state; clear stale log locks (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/46290">#46290</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/46266">#46266</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/46292">#46292</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/46289">#46289</a> — @teknium1)</li> <li>Docker: optimize image size (.dockerignore, drop dev deps, split layers); pre-install matrix deps; supervised gateway uses <code>--replace</code>; harden hosted install tree against self-modification (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/38749">#38749</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/42413">#42413</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/47555">#47555</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/47490">#47490</a> — @teknium1)</li> <li>Nix: cold npm build fixes + auto-fix-lockfiles workflow; hashless npm deps via <code>importNpmLock</code>; refresh npmDepsHash after Electron 40.10.2 pin (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/41867">#41867</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/48883">#48883</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/48457">#48457</a> — @teknium1)</li> <li>Installer: clear unmerged git index before autostash; scope install-method stamp to the code tree (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/45515">#45515</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/48188">#48188</a> — @teknium1)</li> </ul> <h2>🔒 Security & Reliability</h2> <ul> <li>Fail closed on own-policy gateway adapters; fail closed for approval-button auth on Slack/Feishu/Discord when no allowlist is set (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/45634">#45634</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/41226">#41226</a> — @teknium1)</li> <li>Redact secrets in request debug dumps; withhold host metadata from public status; block exfil-shaped / suspicious MCP stdio configs before probe (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/46637">#46637</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/45642">#45642</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/46083">#46083</a> — @teknium1)</li> <li>Close shell-escape denylist bypass + fail-closed on missing approval module; scrub operator environment before launching cua-driver MCP; sanitize env for cron job-script subprocesses; bound TodoStore content length/count; scan REST cron prompts for parity with the agent tool (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/40591">#40591</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/48423">#48423</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/49207">#49207</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/41648">#41648</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/41335">#41335</a> — @teknium1, @kshitijk4poor)</li> <li>Bump urllib3 and PyJWT to clear CVEs; Langfuse redacts base64 data URIs instead of truncating into invalid base64 (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/40179">#40179</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/43322">#43322</a> — @teknium1)</li> </ul> <h2>🪟 Windows</h2> <ul> <li>Dashboard <code>/chat</code> tab via ConPTY (<code>win_pty_bridge</code>) + tests; resolve PowerShell host instead of bare <code>powershell</code> for uv install; resolve <code>powershell.exe</code> by absolute path so Desktop install doesn't stall (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/42251">#42251</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/48341">#48341</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/40927">#40927</a> — @teknium1)</li> <li>Repair stale winget registration + refresh/merge PATH; kill hermes before recreating venv to release <code>_bcrypt.pyd</code> lock; read HERMES_HOME from the registry when env is stale; quarantine running <code>hermes.exe</code> during update repair (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/44084">#44084</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/45120">#45120</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/46772">#46772</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/40409">#40409</a> — @teknium1)</li> <li>JOB-breakaway watcher reliability + status --deep probes; handle Windows PTY stdin + detached WS frames; decode subprocess output as UTF-8; confirm-modal on native Windows (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/40909">#40909</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/41953">#41953</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/44328">#44328</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/42419">#42419</a> — @teknium1)</li> </ul> <h2>🐛 Notable Bug Fixes</h2> <ul> <li>Percent-encode non-ascii URL components; sanitize <code>:</code> in FTS5 queries so colon searches don't silently return empty (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/41430">#41430</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/40653">#40653</a> — @teknium1)</li> <li>Preserve multimodal user content through crash-resilience persist; flatten multimodal content before provider sync; strip MEDIA directives from compressor input (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/47907">#47907</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/44738">#44738</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/44708">#44708</a> — @teknium1)</li> <li>Re-enter retry loop on genuine Nous 429 so the fallback guard runs; scope Nous tags to Nous auxiliary calls; suppress "Credit access paused" notice on free models (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/45136">#45136</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/45801">#45801</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/43669">#43669</a> — @teknium1)</li> <li>Cron: don't strict-scan script-injected output in no-skills jobs; resolve per-job provider "custom" to <code>providers.custom</code> instead of codex; repair cron ownership on container restart (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/43223">#43223</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/43505">#43505</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/41976">#41976</a> — @teknium1)</li> <li><em>(300+ issues closed this window; full per-area fix list is exhaustive — these are the highest-impact.)</em></li> </ul> <h2>↩️ Reverted in this window (not shipping)</h2> <ul> <li><code>html-artifact</code> skill + sketch/architecture-diagram/concept-diagrams fold (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/48899">#48899</a>) — reverted (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/49053">#49053</a>); absent on main.</li> <li>Cron per-job profile support reverted (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/43956">#43956</a>); a nix patchPhase workaround reverted (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/42151">#42151</a>).</li> </ul> <h2>👥 Contributors</h2> <p>A huge thank-you to everyone who contributed to this release — <strong>245 contributors</strong> across commits, co-author trailers, and salvaged PRs.</p> <h3>Core</h3> <p>@teknium1</p> <h3>Top community contributors (by merged PRs)</h3> <ul> <li>@OutThisLife — 92 PRs (desktop app maturity (shortcuts, notifications, watch-windows, themes))</li> <li>@kshitijk4poor — 60 PRs (onboarding, model picker, cron env sanitization)</li> <li>@xxxigm — 27 PRs (desktop & gateway fixes)</li> <li>@benbarclay — 23 PRs (gateway multiplex, Chronos cron, dashboard auth)</li> <li>@helix4u — 21 PRs (gateway & installer reliability)</li> <li>@austinpickett — 19 PRs (dashboard & desktop UX)</li> <li>@alt-glitch — 14 PRs (usage-aware credits, Supermemory)</li> <li>@ethernet8023 — 14 PRs (desktop build pipeline & Linux/Windows)</li> <li>@liuhao1024 — 5 PRs (session lifecycle fixes)</li> </ul> <h3>All contributors (alphabetical)</h3> <p>@0z1-ghb, @0xdany, @0xneobyte, @0xyg3n, @1960697431, @895252509, @achaljhawar, @Adolanium, @AhmetArif0, @AIalliAI, @aimable100, @AJ, @ak2k, @alarcritty, @AlchemistChaos, @aldoeliacim, @alelpoan, @AlexanderBFoley, @alfred-smith-0, @ali-nld, @alt-glitch, @am423, @ameobius, @AMIK-coorporations, @annguyenNous, @ArcanePivot, @ARegalado1, @asdlem, @ashishpatel26, @austinpickett, @banditburai, @barronlroth, @Bartok9, @basilalshukaili, @bbednarski9, @bcsmith528, @benbarclay, @benegessarit, @benfrank241, @bionicbutterfly13, @BlackishGreen33, @blut-agent, @bmoore210, @bpasquini, @briandevans, @BROCCOLO1D, @capt-marbles, @ccook1963, @Cdddo, @channkim, @ChasLui, @chimpera, @chromalinx, @CiarasClaws, @claytonchew, @cnfi, @colinwren-stripe, @cresslank, @cyb0rgk1tty, @dangelo352, @davidgut1982, @deaneeth, @definitelynotguru, @Diyoncrz18, @draix, @dschnurbusch, @Dusk1e, @dusterbloom, @ehz0ah, @emozilla, @enesilhaydin, @Erosika, @ethernet8023, @Evisolpxe, @firefly, @flooryyyy, @flyinhigh, @foras910521-lab, @Frowtek, @ft-ioxcs, @fyzanshaik, @Ganesh0690, @gauravsaxena1997, @giladbau, @glesperance, @GodsBoy, @goku94123, @H-Ali13381, @HaozheZhang6, @haran2001, @harshitAgr, @hbentel, @helix4u, @HeLLGURD, @Hermes, @huangxun375-stack, @iamlukethedev, @ianculling, @IAvecilla, @iborazzi, @infinitycrew39, @islam666, @ITheEqualizer, @itsflownium, @Jaaneek, @james47kjv, @jeeves-assistant, @jeffrobodie-glitch, @JezzaHehn, @jiangkoumo, @jimjsong, @JimLiu, @JimStenstrom, @jmsunseri, @JoaoMarcos44, @joel611, @JoelJJohnson, @joerj123, @johnjacobkenny, @jooray, @joshuadow, @jplew, @justinbao19, @Justlrnal4, @Kailigithub, @kamonspecial, @kdunn926, @Kenmege, @Kewe63, @kmccammon, @konsisumer, @kristianvast, @kshitijk4poor, @kyssta-exe, @l37525778-coder, @LaPhilosophie, @leo4226, @LeonSGP43, @liuhao1024, @Llugaes, @loongfay, @loongzhao, @lsaether, @m4dni5, @manishbyatroy, @MaxFreedomPollard, @maxmilian, @maxtrigify, @mnajafian-nv, @mohamedorigami-jpg, @mollusk, @MrDiamondBallz, @mssteuer, @mvanhorn, @naqerl, @Nea74, @necoweb3, @nepenth, @nicoloboschi, @NormallyGaussian, @OmarB97, @omegazheng, @OndrejDrapalik, @OutThisLife, @oxngon, @OYLFLMH, @Paperclip, @paulb26, @pengyuyanITYU, @PhilipAD, @pinguarmy, @plcunha, @ProgramCaiCai, @psionic73, @qin-ctx, @qingshan89, @Que0x, @qWaitCrypto, @r266-tech, @randomsnowflake, @rbrtbn, @rewbs, @rio-jeong, @Rivuza, @rob-maron, @rodboev, @ruangraung, @RyTsYdUp, @Sahil-SS9, @salesondemandio, @sanidhyasin, @sarvesh1327, @sdyckjq-lab, @shannonsands, @SHL0MS, @simpolism, @sitkarev, @skyc1e, @skylarbpayne, @SNooZyy2, @Spaceman-Spiffy, @srojk34, @sweetcornna, @synapsesx, @Tamaz-sujashvili, @tangtaizong666, @temalo, @tfournet, @thedavidweng, @TheGardenGallery, @tim404x, @tomekpanek, @Tranquil-Flow, @tt-a1i, @tuancookiez-hub, @underthestars-zhy, @Veritas-7, @victor-kyriazakos, @wesleysimplicio, @WolframRavenwolf, @WompaJango, @x1erra, @xiaoxinova, @xtymac, @xushibo, @XVVH, @xxchan, @xxxigm, @xy200303, @y0shua1ee, @yanxue06, @yatesjalex, @YLChen-007, @yoniebans, @youjunxiaji, @yubingz, @zakame, @zapabob, @zccyman, @zimigit2020, @ziwon, @zwcf5200, @zxcasongs.</p> <hr> <p><strong>Full Changelog</strong>: <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/compare/v2026.6.5...v2026.6.19">v2026.6.5...v2026.6.19</a></p> </div><div class="link-row" data-astro-cid-l7qxtvnw><span class="lr-label" data-astro-cid-l7qxtvnw>Links</span><a href="https://github.com/NousResearch/hermes-agent/releases/tag/v2026.6.19" data-astro-cid-l7qxtvnw>GitHub release notes ↗</a><a href="https://github.com/NousResearch/hermes-agent/compare/v2026.6.5...v2026.6.19" data-astro-cid-l7qxtvnw>Full diff ↗</a><a href="/gateway/" data-astro-cid-l7qxtvnw>Gateway Guide →</a><a href="/blog/2026-06-06-hermes-desktop-surface-release/" data-astro-cid-l7qxtvnw>Desktop deep-dive →</a></div></div></details><details class="rel" data-astro-cid-l7qxtvnw><summary data-astro-cid-l7qxtvnw><span class="r-arrow" data-astro-cid-l7qxtvnw>▶</span><span class="r-ver" data-astro-cid-l7qxtvnw>v0.16.0</span><span class="r-codename" data-astro-cid-l7qxtvnw>Surface Release</span><span class="r-date" data-astro-cid-l7qxtvnw>2026-06-06</span></summary><div class="rel-body" data-astro-cid-l7qxtvnw><p class="r-summary" data-astro-cid-l7qxtvnw><strong>The Surface Release.</strong> Hermes meets you wherever you work. A brand-new native desktop app — built across 100 PRs and 159 commits in a single week — gives you Hermes as a real macOS/Linux/Windows application: one-click install, in-app self-update, drag-and-drop files into chat, an inline model picker in the status bar, concurrent multi-profile sessions, a full Simplified Chinese translation, and the ability to connect to a remote Hermes gateway over OAuth or username/password. Alongside it, the web dashboard grew a full browser-based administration panel (MCP catalog, messaging channels, credentials, webhooks, memory, pluggable OIDC / username-password login), and first-time setup got a "Quick Setup via Nous Portal" path that gets you from install to first message in seconds. The default skill set was trimmed to what you actually need, NVIDIA/skills joined the trusted Skills Hub taps, the model picker is now fuzzy-searchable everywhere (desktop, web, TUI, CLI), and <code>/undo</code> finally lets you take back the last N turns. 2 P0 and 62 P1 closures ride along, plus a security round (CVE-2026-48710 Starlette pin, SSRF off-loop hardening, subprocess credential stripping).</p><div class="r-notes" data-astro-cid-l7qxtvnw><blockquote> <p><strong>The Surface Release.</strong> Hermes meets you wherever you work. A brand-new native desktop app — built across 100 PRs and 159 commits in a single week — gives you Hermes as a real macOS/Linux/Windows application: one-click install, in-app self-update, drag-and-drop files into chat, an inline model picker in the status bar, concurrent multi-profile sessions, a full Simplified Chinese translation, and the ability to connect to a remote Hermes gateway over OAuth or username/password. Alongside it, the web dashboard grew a full browser-based administration panel (MCP catalog, messaging channels, credentials, webhooks, memory, pluggable OIDC / username-password login), and first-time setup got a "Quick Setup via Nous Portal" path that gets you from install to first message in seconds. The default skill set was trimmed to what you actually need, NVIDIA/skills joined the trusted Skills Hub taps, the model picker is now fuzzy-searchable everywhere (desktop, web, TUI, CLI), and <code>/undo</code> finally lets you take back the last N turns. 2 P0 and 62 P1 closures ride along, plus a security round (CVE-2026-48710 Starlette pin, SSRF off-loop hardening, subprocess credential stripping).</p> </blockquote> <hr> <h2>✨ Highlights</h2> <ul> <li><p><strong>Hermes Desktop — a real native app, not a terminal wrapper</strong> — This is the headline. There's now a <code>apps/desktop/</code> Electron application that installs like any other desktop app on macOS, Linux, and Windows, updates itself in place from inside the app, and gives you a polished GUI for everything Hermes does. You get a proper chat window with streaming, a session list you can archive and search, drag-and-drop files anywhere in the chat area, clipboard image paste, a Cmd+K command palette, and a model picker right in the status bar. If you've been telling friends "it's a CLI agent" and watching their eyes glaze over — now you can just send them an installer. None of this existed a week ago. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20059">#20059</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/35607">#35607</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/37099">#37099</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/37379">#37379</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/38631">#38631</a> — @OutThisLife, @jquesnelle, @ethernet8023, @austinpickett, @benbarclay)</p> </li> <li><p><strong>Run the desktop app against a remote Hermes — sign in with OAuth or username/password</strong> — The desktop app doesn't have to run Hermes locally. Point it at a remote Hermes gateway (your homelab, a hosted box, a teammate's server) and it connects over a secure WebSocket, authenticating with OAuth or a username/password login — no fiddling with <code>--insecure</code> flags or hand-copied session tokens. Each profile can target its own remote host, and you can run concurrent sessions across multiple profiles in one window with cross-profile <code>@session</code> links. The practical version: your laptop runs a thin GUI, the heavy agent runs wherever your API keys and compute live. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/37888">#37888</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/38851">#38851</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/39330">#39330</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/39778">#39778</a> — @benbarclay, @OutThisLife, @teknium1)</p> </li> <li><p><strong>The web dashboard is now a full admin panel — configure everything from the browser</strong> — The dashboard grew from "view your sessions" into a complete administration surface. There's a Channels page that sets up every gateway messaging platform (Telegram, Discord, Slack, etc.) from the browser, an admin panel for the MCP catalog with enable/disable toggles, credential management, webhook and hook creation, memory configuration, gateway controls, and a System page with check-before-update and one-click Debug Share. You no longer have to SSH in and edit <code>config.yaml</code> to wire up a new messaging channel or MCP server — it's all point-and-click now. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/36704">#36704</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/36736">#36736</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/37211">#37211</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/38205">#38205</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/38600">#38600</a> — @teknium1)</p> </li> <li><p><strong>Hermes Desktop speaks Simplified Chinese — full 简体中文 in the chat GUI</strong> — The desktop app now ships a complete Simplified Chinese (简体中文) translation across every UI surface — the chat window itself, sidebar, settings, command center, cron, messaging, profiles, skills, agents, the lot. English stays the default; switch language in Appearance settings and the choice persists to your config (<code>display.language</code>). It's built on a proper typed i18n layer, so adding more languages from here is straightforward. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/38241">#38241</a> — @JimLiu)</p> </li> <li><p><strong>Leaner default skill set — Hermes ships only what you actually need</strong> — The bundled skill set got a deliberate trim. Skills that were redundant or dead are gone (<code>spotify</code> — superseded by the native Spotify plugin's 7 tools; <code>linear</code> — superseded by <code>hermes mcp install linear</code>; <code>kanban-codex-lane</code>, <code>debugging-hermes-tui-commands</code>, a stale <code>domain</code> orphan, and several empty category markers). Heavier or niche skills moved from bundled to optional (the Baoyu creative set, <code>dspy</code>, <code>subagent-driven-development</code>, <code>minecraft-modpack-server</code>, <code>pokemon-player</code>, <code>hermes-s6-container-supervision</code>) — still one <code>hermes skills install</code> away, just not loaded by default. And a new <code>environments:</code> relevance gate keeps context-specific skills (kanban, docker/s6) out of the skills index for users who'll never use them, while still loading them on explicit request. The result: a smaller, sharper default skill list, less noise in the picker, and a lighter prompt. The curator can now prune unused <strong>built-in</strong> skills too (not just agent-created ones), with usage tracked for every skill. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/39028">#39028</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/36701">#36701</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/36228">#36228</a> — @teknium1)</p> </li> <li><p><strong>NVIDIA/skills is now a built-in trusted skills tap</strong> — <code>NVIDIA/skills</code> joins OpenAI, Anthropic, and HuggingFace as a default trusted tap in the Skills Hub — discoverable, browsable, searchable, and auto-updating through the same pipeline. NVIDIA's verified skills for CUDA-X, AIQ, cuOpt and the rest of their product stack are one install away, with real category labels from the repo's <code>skills.sh.json</code> sidecar. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/34333">#34333</a> — @teknium1)</p> </li> <li><p><strong>Quick Setup via Nous Portal — from install to first message in seconds</strong> — First-time setup was thinned down to two clear paths: Quick Setup (sign in with Nous Portal, get a model picker, start chatting immediately) or Full Setup (the detailed wizard for power users). <code>hermes portal</code> is now the human-readable alias that runs the full quick-setup Nous flow. The first-run menu explains the difference inline so newcomers aren't guessing. The goal: a brand-new user shouldn't need to read docs to send their first message. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/35723">#35723</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/36227">#36227</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/38449">#38449</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/38465">#38465</a> — @teknium1, @kshitijk4poor)</p> </li> <li><p><strong>Fuzzy model picker, everywhere — type a few letters, find your model</strong> — The model picker now does fuzzy search across the desktop app, web dashboard, TUI, and CLI. Type "v4fl" and <code>deepseek-v4-flash</code> surfaces; multi-endpoint providers are grouped under one row instead of cluttering the list with duplicates, and each row carries a description so you know what you're picking. The catalog refreshes hourly instead of daily, so new models show up the same day they launch. New this window: <code>deepseek-v4-flash</code>, <code>MiniMax-M3</code> with 1M context, <code>qwen3.7-plus</code>. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/36928">#36928</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/35227">#35227</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/35756">#35756</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/35659">#35659</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/36214">#36214</a> — @kshitijk4poor, @teknium1)</p> </li> <li><p><strong><code>/undo [N]</code> — take back the last N turns</strong> — Said the wrong thing, or sent the agent down a bad path? <code>/undo</code> backs up N user turns, prefills your last message so you can edit and resend, and soft-deletes the turns in between. It works in the CLI, the TUI, and across messaging platforms (Telegram, Discord, etc.) with full parity. Closes a long-standing request (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/21910">#21910</a>). (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/36229">#36229</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/36699">#36699</a> — @teknium1)</p> </li> <li><p><strong>Choose your default interface — <code>cli</code> or <code>tui</code></strong> — You can now set whether <code>hermes chat</code> drops you into the classic CLI or the Ink TUI by default, with a <code>--cli</code> flag to override per-invocation. The TUI also got a single unified <code>/model</code> command and a Sessions overlay for switching between live sessions. Use the interface you actually like. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/37782">#37782</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/37112">#37112</a> — @OutThisLife)</p> </li> </ul> <hr> <h2>🖥️ Hermes Desktop App (NEW)</h2> <h3>Install & lifecycle</h3> <ul> <li>macOS desktop install + in-app self-update; rebuild-and-relaunch cleanly on macOS (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/35607">#35607</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/36198">#36198</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/38296">#38296</a> — @OutThisLife)</li> <li>macOS installer renamed to "Hermes" and turned into a launcher (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/37516">#37516</a> — @OutThisLife)</li> <li>Build desktop in its own <code>desktop</code> stage on macOS/Linux instead of silently skipping; content-hash build stamp, <code>--build-only</code> / <code>--force-build</code> flags (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/36134">#36134</a> — @OutThisLife, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/37597">#37597</a> — @ethernet8023)</li> <li>Boot-failure recovery + live API-key validation; cancellable install; recover from corrupt cached Electron download (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/35864">#35864</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/37379">#37379</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/39032">#39032</a> — @OutThisLife, @teknium1)</li> <li>Windows: recover from corrupt Electron cache in bootstrap install; stop racing our own backend during in-app update (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/39465">#39465</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/39828">#39828</a> — @teknium1, @OutThisLife)</li> <li>Linux: configure Electron sandbox helper; detect linux arm64 binary; disable GPU acceleration on remote displays to stop flicker (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/37691">#37691</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/38594">#38594</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/37932">#37932</a> — @ethernet8023, @OutThisLife)</li> <li>Require Node ≥20.19/22.12 for the desktop build; zero eslint/typecheck debt + prettier pass (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/38255">#38255</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/39100">#39100</a> — @OutThisLife)</li> </ul> <h3>Remote-gateway & multi-profile</h3> <ul> <li>Connect to OAuth-gated remote gateways; username/password login for remote gateways; per-profile remote gateway hosts (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/37888">#37888</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/38851">#38851</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/39778">#39778</a> — @benbarclay, @teknium1, @OutThisLife)</li> <li>Concurrent multi-profile sessions, cross-profile <code>@session</code> links; re-mint OAuth WS ticket on gateway reconnect; gate OAuth remote connect on AT-or-RT (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/39330">#39330</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/38886">#38886</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/39464">#39464</a> — @OutThisLife, @teknium1, @benbarclay)</li> <li>Offer remote sign-in on a gated-gateway boot failure; validate live WebSocket in remote gateway test (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/39402">#39402</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/39511">#39511</a> — @teknium1)</li> </ul> <h3>Chat UX & settings</h3> <ul> <li>Drop files anywhere in the chat area; clipboard image paste with dedupe; attachments on Enter, IME composition handling (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/36262">#36262</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/38306">#38306</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/38677">#38677</a> — @OutThisLife, @teknium1)</li> <li>Background needs-input indicator, clarify redesign, Cmd+K palette & UI consistency pass; inline model picker in the status bar; YOLO toggle in the status bar (TUI parity) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/38631">#38631</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/37738">#37738</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/38517">#38517</a> — @OutThisLife)</li> <li>Session-list overhaul, session hygiene/archive, media streaming + connecting overlay; search sessions by id (SQL-bounded) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/37379">#37379</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/37099">#37099</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/39062">#39062</a> — @OutThisLife, @teknium1)</li> <li>Dedicated Providers settings + polished Accounts/API-keys UX; consolidate skills + tools management into one pane; move model management into Settings (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/38551">#38551</a> — @austinpickett, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/37310">#37310</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/37330">#37330</a> — @jquesnelle)</li> <li>Render approval/sudo/secret prompts so tools stop silently timing out; surface skill & quick-command slash commands in the palette; first-class xAI Grok OAuth provider in the launcher (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/38578">#38578</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/38531">#38531</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/37697">#37697</a> — @teknium1, @OutThisLife)</li> <li>"Choose provider later" skip on first-run onboarding; onboarding can configure a local/custom endpoint without an API key; custom zoom shortcuts (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/39483">#39483</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/38572">#38572</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/37894">#37894</a> — @teknium1, @ethernet8023)</li> <li>macOS helper microphone entitlement; scroll-jump fixes (native anchoring, at-rest jump, wheel-up snap-back); thinking block stays open mid-streaming (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/37745">#37745</a> — @xxxigm, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/37866">#37866</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/38221">#38221</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/38809">#38809</a> — @OutThisLife, @teknium1, @stremtec)</li> <li>GUI quality-of-life triage batch; salvaged AhmetArif0 desktop/dashboard fixes; rename session via <code>session.title</code> RPC so <code>/title</code> works (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/37536">#37536</a> — @austinpickett, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/39070">#39070</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/39410">#39410</a> — @teknium1, @benbarclay)</li> <li><code>hermes debug share</code> / <code>/debug</code> / <code>hermes logs</code> now include <code>desktop.log</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/38203">#38203</a> — @teknium1)</li> <li><strong>Simplified Chinese (简体中文) translation</strong> across every desktop UI surface — typed i18n layer, switch in Appearance settings, persisted via <code>display.language</code> (English remains default) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/38241">#38241</a> — @JimLiu)</li> <li>Full multi-profile support over one global-remote dashboard; remote-profile sessions are first-class (resume, read, rename/archive/delete); new chats honor their profile in global-remote mode (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/39921">#39921</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/39894">#39894</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/39993">#39993</a> — @OutThisLife)</li> </ul> <h2>📊 Web Dashboard</h2> <h3>Administration panel (NEW)</h3> <ul> <li>Full administration panel — MCP catalog with enable/disable toggles, pairing, webhooks, credentials, memory, gateway, hook creation, system settings (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/36704">#36704</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/36736">#36736</a> — @teknium1)</li> <li>Channels page — set up every gateway messaging channel from the browser (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/37211">#37211</a> — @teknium1)</li> <li>System page: check-before-update flow + Debug Share (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/38205">#38205</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/38600">#38600</a> — @teknium1)</li> <li>nous-blue theme, bulk sessions, schedule picker; enriched profiles dashboard + de-dupe channel env vars; configurable terminal background via theme (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/37383">#37383</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/37872">#37872</a> — @austinpickett, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/37156">#37156</a> — @teknium1)</li> <li>Always enable embedded chat; remove dashboard <code>--tui</code> flag (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/38591">#38591</a> — @benbarclay)</li> </ul> <h3>Auth</h3> <ul> <li>Pluggable username/password login (Option B); generic self-hosted OIDC provider + multi-provider verify fix; <code>hermes dashboard register</code> for self-hosted OAuth client (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/38819">#38819</a> — @benbarclay, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/38917">#38917</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/38802">#38802</a> — @teknium1)</li> <li>Rotate dashboard sessions via refresh token; share <code>/api/*</code> public allowlist between legacy and OAuth gates; drop <code>/api/*</code> paths from OAuth <code>next=</code> round trip (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/37247">#37247</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/34254">#34254</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/36244">#36244</a> — @benbarclay)</li> <li>Chat tab works in gated (OAuth) mode; trust non-web WS origins on OAuth-gated binds after ticket auth; authenticate server-spawned PTY child WS; sanction plugin WS/upload auth via SDK helpers (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/34793">#34793</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/37870">#37870</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/37972">#37972</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/38549">#38549</a> — @teknium1, @benbarclay, @kshitijk4poor)</li> <li>Allow desktop websocket origins on remote binds (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/37747">#37747</a> — @teknium1)</li> </ul> <h2>🏗️ Core Agent & Architecture</h2> <h3>Provider & model support</h3> <ul> <li>New models: <code>deepseek-v4-flash</code> (+ trimmed variants, maker-grouped curated lists), <code>MiniMax-M3</code> with 1M context on native minimax providers, <code>qwen3.7-plus</code> (Nous + OpenRouter), <code>gemini-3.5-flash</code> to Gemini OAuth + API-key pickers (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/35659">#35659</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/36214">#36214</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/39409">#39409</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/37046">#37046</a> — @teknium1)</li> <li>Model picker: fuzzy search across WebUI/TUI/CLI; group multi-endpoint providers under one row; refresh provider descriptions + describe grouped rows; refresh catalog hourly; stop routing OpenAI selection to OpenRouter (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/36928">#36928</a> — @kshitijk4poor, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/35227">#35227</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/35773">#35773</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/35756">#35756</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/37175">#37175</a>)</li> <li>Always show Nous Tool Gateway backends, login on select; surface the Nous free tool pool (entitlement + setup prompt); route FAL video gen through managed Nous gateway (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/35792">#35792</a> — @teknium1, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/36153">#36153</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/33259">#33259</a> — @alt-glitch)</li> <li>Persist mid-session model switch to database; recover model on post-interrupt recovery turn (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/35256">#35256</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/35381">#35381</a> — @teknium1)</li> <li>Credential pool: <code>STATUS_DEAD</code> for terminal OAuth failures; isolate custom provider picker credentials (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/34412">#34412</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/34810">#34810</a> — @teknium1)</li> <li>Disable Nous Portal legacy session-key inference fallback — JWT-only (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/34508">#34508</a> — @kshitijk4poor)</li> </ul> <h3>Agent loop, prompt & tools</h3> <ul> <li><code>/undo [N]</code> — backs up N user turns with prefill + soft-delete (CLI/TUI + messaging-platform parity) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/36229">#36229</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/36699">#36699</a> — @teknium1)</li> <li>Progressive tool disclosure for MCP and plugin tools (scoped); embedder environment-hint hook for the system prompt; universal task-completion guidance + local Python toolchain probe (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/34493">#34493</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/34574">#34574</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/34340">#34340</a> — @teknium1)</li> <li>Uncap delegation <code>max_spawn_depth</code> (floor 1, no ceiling); broaden Hermes self-knowledge pointer to docs + skill; <code>hermes prompt-size</code> diagnostic (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/39772">#39772</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/38538">#38538</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/35276">#35276</a> — @teknium1)</li> <li><code>perf(read_file)</code>: compact line-number gutter — ~14% fewer tokens per read (now the only format) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/35368">#35368</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/35532">#35532</a> — @teknium1)</li> <li>Resolve agent cwd from <code>TERMINAL_CWD</code> via one reader; align prefill messages key handling; resume relaunches in the session's original working directory (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/35028">#35028</a> — @banditburai, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/38760">#38760</a> — @helix4u, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/38562">#38562</a> — @teknium1)</li> <li>Prevent session-id fork from concurrent compressions; observer telemetry hooks + NeMo-Relay plugin (gated tool emit) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/34351">#34351</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/38232">#38232</a> — @teknium1)</li> </ul> <h3>Sessions, state & memory</h3> <ul> <li><code>perf(state)</code>: merge FTS5 segments on VACUUM + <code>hermes sessions optimize</code>; keep <code>/branch</code> sessions visible after parent reopen; survive missing FTS5 runtimes (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/34596">#34596</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/39214">#39214</a> — @teknium1, @kshitijk4poor, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/35452">#35452</a> — @helix4u)</li> <li>Honcho: make startup fail open; harden self-hosted setup paths (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/24847">#24847</a> — @stephenschoettler, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/35170">#35170</a> — @kshitijk4poor)</li> <li>Supermemory: session-level ingest + kebab aliases (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/38756">#38756</a> — @alt-glitch)</li> </ul> <h2>🧩 Multi-Agent (Kanban) & Skills</h2> <h3>Kanban</h3> <ul> <li><code>goal_mode</code> cards run workers in a <code>/goal</code> loop; file attachments on tasks; attach images referenced in task bodies to worker vision (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/35710">#35710</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/35395">#35395</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/34210">#34210</a> — @teknium1)</li> <li><code>default_assignee</code> fallback + per-profile concurrency cap; <code>POST /runs/{run_id}/terminate</code> endpoint; gate notifier watcher on <code>dispatch_in_gateway</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/34244">#34244</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/34449">#34449</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/37174">#37174</a> — @teknium1)</li> <li>CLI dispatch config passthrough + humanizer skill swap (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/34337">#34337</a> — @teknium1)</li> </ul> <h3>Skills</h3> <ul> <li><strong>Leaner default skill set</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/39028">#39028</a> — @teknium1):<ul> <li>Removed (redundant / dead): <code>spotify</code> (→ Spotify plugin's 7 native tools), <code>linear</code> (→ <code>hermes mcp install linear</code>), <code>kanban-codex-lane</code>, <code>debugging-hermes-tui-commands</code>, stale <code>domain</code> orphan, empty category markers (<code>diagramming</code>, <code>gifs</code>, <code>inference-sh</code>, <code>mlops/training</code>, <code>mlops/vector-databases</code>)</li> <li>Bundled → optional: <code>baoyu-article-illustrator</code>, <code>baoyu-comic</code>, <code>creative-ideation</code>, <code>pixel-art</code>, <code>dspy</code>, <code>subagent-driven-development</code>, <code>minecraft-modpack-server</code>, <code>pokemon-player</code>, <code>hermes-s6-container-supervision</code></li> <li>Consolidated: <code>webhook-subscriptions</code> + <code>native-mcp</code> folded into the <code>hermes-agent</code> skill as on-demand references; <code>writing-plans</code> merged into <code>plan</code> (v2.0.0)</li> <li>New <code>environments:</code> frontmatter relevance gate (<code>kanban</code> / <code>docker</code> / <code>s6</code>) — context-specific skills stop appearing in the index for users who won't use them, still load on explicit request</li> </ul> </li> <li>Curator can now prune unused <strong>built-in</strong> skills (not just agent-created), with usage tracked for every skill (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/36701">#36701</a> — @teknium1)</li> <li>Blank-slate skills — <code>install --no-skills</code> + opt-out/opt-in for the default profile (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/36228">#36228</a> — @teknium1)</li> <li><strong>NVIDIA/skills trusted tap</strong> — <code>NVIDIA/skills</code> is now a default trusted Skills Hub tap alongside OpenAI/Anthropic/HuggingFace; <code>skills.sh.json</code> sidecar gives taps real category labels (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/34333">#34333</a> — @teknium1)</li> <li>Skills Hub: fix browse cap, add source links + copy buttons + category cleanup (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/37143">#37143</a> — @teknium1)</li> <li>New optional skills: <code>grok</code> (xAI Grok Build CLI), <code>antigravity-cli</code> operator (under autonomous-ai-agents) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/34582">#34582</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/34583">#34583</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/34604">#34604</a> — @teknium1)</li> </ul> <h2>📱 Messaging Platforms (Gateway)</h2> <ul> <li>Structured stream-event protocol + Telegram draft formatting parity; per-platform streaming defaults (Telegram on, Discord off) + dashboard toggles; surface gateway streaming block in <code>DEFAULT_CONFIG</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/37250">#37250</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/37303">#37303</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/37285">#37285</a> — @teknium1)</li> <li>Discord voice-channel mixer — ambient idle bed + verbal acks that overlap TTS; explain <code>/voice</code> usage when toggled bare (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/39659">#39659</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/39766">#39766</a> — @teknium1)</li> <li>Handle Feishu meeting invitations; bluebubbles group mention gating; matrix bang-command aliases; matrix fail-closed approval reaction auth (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/39040">#39040</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/37091">#37091</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/38175">#38175</a> — @teknium1, @alt-glitch, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/34567">#34567</a>)</li> <li>Clean service restart flow; close ResponseStore + dispose unowned adapter on reconnect failure; weixin <code>asyncio.wait_for</code> timeouts (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/36188">#36188</a> — @helix4u, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/37679">#37679</a> — @Fearvox, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/35117">#35117</a> — @banditburai)</li> </ul> <h2>🖥️ CLI, TUI & Setup</h2> <ul> <li>Configurable default interface (cli vs tui) + <code>--cli</code> flag; TUI single <code>/model</code> command + unified Sessions overlay; nudge toward <code>/agents</code> dashboard when delegation starts (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/37782">#37782</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/37112">#37112</a> — @OutThisLife, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/34704">#34704</a> — @kshitijk4poor)</li> <li>Thin out setup — Quick Setup via Nous Portal + Full Setup defaults; explain Quick vs Full inline; <code>hermes portal</code> human-readable Portal onboarding alias + full quick-setup Nous flow (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/35723">#35723</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/36227">#36227</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/38449">#38449</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/38465">#38465</a> — @teknium1, @kshitijk4poor)</li> <li>Set process title to <code>hermes</code> in ps/top/htop; warn on unsupported pip installs + fix stale update-check cache (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/35143">#35143</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/34846">#34846</a> — @teknium1)</li> <li>TUI perf: stop slow/dead MCP servers from freezing startup; stop eager MCP discovery from blocking agent-capable startup; stop persisting full tool output in trail lines (silent OOM) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/35273">#35273</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/35397">#35397</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/38224">#38224</a> — @teknium1)</li> <li>TUI fixes: auto-recover session on unexpected gateway death; reassemble split SGR mouse sequences; preserve UTF-8 in PowerShell clipboard; reset terminal input modes on exit; <code>/save</code> snapshots under Hermes home (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/35893">#35893</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/38564">#38564</a> — @OutThisLife, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/35222">#35222</a> — @teknium1, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/36864">#36864</a> — @maxmilian, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/38251">#38251</a> — @austinpickett)</li> <li>Setup model/provider pickers migrated off <code>simple_term_menu</code> to curses (ESC + ghost-row fixes); default browser/TTS picker to free local backend, not paid Nous (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/35806">#35806</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/37800">#37800</a> — @teknium1)</li> </ul> <h2>🔧 Tool System & Installer</h2> <ul> <li><code>single managed-uv path</code>, delete fts5 installer escalation; installer commit pinning opt-in (default branch-follow); shallow clones (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/37660">#37660</a> — @ethernet8023, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/37123">#37123</a> — @jquesnelle, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/39423">#39423</a> — @ethernet8023)</li> <li><code>ensure_uv()</code> survives the update boundary (no first-run crash); harden venv rebuild + verify core deps after install; require managed marker before destructive clean; stash/restore by default for non-interactive updates (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/39780">#39780</a> — @OutThisLife, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/38887">#38887</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/39568">#39568</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/39645">#39645</a> — @teknium1, @helix4u)</li> <li>MCP: stop reporting false OAuth success when no token was obtained; vision honors <code>model.supports_vision</code> in <code>vision_analyze</code> + <code>browser_vision</code>; MiniMax t2a_v2 TTS <code>raise_for_status</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/34807">#34807</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/34562">#34562</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/39057">#39057</a> — @teknium1)</li> <li>yuanbao: cache resolved media resources by resourceId (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/34474">#34474</a> — @teknium1)</li> </ul> <h2>🐳 Docker & Deployment</h2> <ul> <li>Container reuse + bounded-sync cleanup + orphan reaper; auto-join Docker socket group for docker-in-docker backend; boot non-root containers (skip s6-setuidgid drop when already unprivileged) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/33645">#33645</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/34407">#34407</a> — @benbarclay, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/34837">#34837</a> — @IAvecilla)</li> <li>Skip unnecessary boot chown when volume ownership matches remapped UID; seed <code>gateway_state.json</code> from <code>HERMES_GATEWAY_BOOTSTRAP_STATE</code> on first boot; tag containers with hermes-agent labels for identification (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/35027">#35027</a> — @Foldblade, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/37896">#37896</a> — @benbarclay)</li> <li>Point TUI launcher at prebuilt bundle via <code>HERMES_TUI_DIR</code>; consolidate node/nix workspace lockfile + update all consumers (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/37923">#37923</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/36171">#36171</a> — @benbarclay, @ethernet8023)</li> </ul> <h2>🔒 Security & Reliability</h2> <ul> <li><strong>CVE-2026-48710 (Starlette BadHost)</strong> — pin patched Starlette ≥1.0.1 (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/35118">#35118</a> — @teknium1)</li> <li>Run URL SSRF checks off the event loop in async paths; strip Bedrock inference bearer token from subprocess env; add <code>bws_cache.json</code> to file-safety read guard; neutralize file paths in mutation-verifier footer (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/39046">#39046</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/34498">#34498</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/34421">#34421</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/35684">#35684</a> — @teknium1)</li> <li>Restore approval/sudo context in <code>execute_code</code> + guard entry points; add docker restart/stop/kill to <code>DANGEROUS_PATTERNS</code>; sanitize invisible unicode in vetted skill content; deepcopy tools before in-place xAI mutation (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/34497">#34497</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/33438">#33438</a> — @teknium1, @Sarbai, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/37245">#37245</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/34416">#34416</a>)</li> <li>Sandbox-mirror soft guard for writes to per-task <code>.hermes</code> mirrors; honcho fail-open on startup (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/32213">#32213</a> — @briandevans, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/24847">#24847</a> — @stephenschoettler)</li> </ul> <h2>🐛 Notable Bug Fixes</h2> <ul> <li><strong>399 issues closed</strong> this window (2 P0, 62 P1, 16 security-tagged, 262 bug-labeled).</li> <li>Desktop: keep in-flight new chats from vanishing on refresh; Stop button actually interrupts when a turn is queued; stop background session messages bleeding into the active transcript; slash/@ completion menu navigable & Esc-dismissable; IME Enter no longer splits messages (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/37908">#37908</a> — @OutThisLife, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/37948">#37948</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/37975">#37975</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/37937">#37937</a> — @kshitijk4poor, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/38333">#38333</a> — @stremtec)</li> <li>Update: stop stash/restore from clobbering desktop source on managed clones; don't fail desktop rebuild/skills sync on mid-rebuild venv; export launcher virtualenv to uv (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/38542">#38542</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/38885">#38885</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/35224">#35224</a> — @teknium1)</li> <li>Voice: honor <code>PIPEWIRE_REMOTE</code> in PortAudio fallback; allow <code>/voice</code> over SSH when a sound server is reachable; restore mistralai (2.4.8 clean, ban lifted) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/33473">#33473</a> — @Dusk1e, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/35719">#35719</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/34841">#34841</a> — @teknium1)</li> </ul> <h2>📚 Documentation</h2> <ul> <li>New Desktop App guide + remote-backend sections (session token, <code>--tui</code> requirement, username/password connect, dashboard/gateway prerequisites) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/37457">#37457</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/38144">#38144</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/38180">#38180</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/38534">#38534</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/39128">#39128</a> — @teknium1)</li> <li>Dashboard auth-provider suitability + registration across dashboard/Docker/Desktop; network egress isolation guide for Docker (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/39633">#39633</a> — @benbarclay, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/26385">#26385</a> — @Manzela)</li> </ul> <hr> <p><img src="https://v3b.fal.media/files/b/0a9d248f/AyRBEKS8C4o6HZNF6KjbD_M2U5y4wY.png" alt="Hermes Agent v0.16.0 — The Surface Release"></p> <h2>👥 Contributors</h2> <p>A huge thank-you to the <strong>170 community contributors</strong> (including co-authors) who shipped work in this release.</p> <h3>Core</h3> <ul> <li>@teknium1</li> </ul> <h3>Top community contributors (by merged-PR count)</h3> <ul> <li><strong>@OutThisLife</strong> (52) — built the desktop app end to end: install, self-update, remote-gateway connect, multi-profile sessions, chat UX, status-bar model picker</li> <li><strong>@benbarclay</strong> (44) — Docker hardening, dashboard auth (OIDC, username/password, refresh-token rotation), desktop OAuth remote connect</li> <li><strong>@kshitijk4poor</strong> (29) — fuzzy model picker, setup/portal onboarding, desktop completion-menu & Stop-button fixes, honcho hardening</li> <li><strong>@ethernet8023</strong> (18) — desktop build pipeline (content-hash stamp, build flags), Linux/arm64 desktop support, managed-uv consolidation</li> <li><strong>@austinpickett</strong> (8) — dashboard nous-blue theme + bulk sessions, desktop Providers settings, GUI QoL triage</li> <li><strong>@alt-glitch</strong> (7) — Nous tool-pool entitlement surfacing, FAL video-gen managed gateway, supermemory session ingest, matrix aliases</li> <li><strong>@helix4u</strong> (6) — gateway service-restart flow, update destructive-clean guard, config prefill alignment</li> <li><strong>@jquesnelle</strong> (4) — installer commit-pinning opt-in, desktop skills/tools + model-management consolidation</li> <li><strong>@JimLiu</strong> — full Simplified Chinese (简体中文) desktop translation + typed i18n layer</li> </ul> <h3>All Contributors</h3> <p>@0xharryriddle, @a1245582339, @adybag14-cyber, @AhmetArif0, @alaamohanad169-ship-it, @alelpoan, @alt-glitch, @Aman113114-IITD, @amathxbt, @aminvakil, @annguyenNous, @aqilaziz, @Archerouyang, @ashishpatel26, @asimons81, @austinpickett, @banditburai, @baofuen, @Bartok9, @bbednarski9, @beardthelion, @bedirhancode, @benbarclay, @benfrank241, @blackpilledsoftware-prog, @bluefishs, @brian-doherty, @briancl2, @briandevans, @BROCCOLO1D, @caojiguang, @CharZhou, @counterposition, @coygeek, @CryptoByz, @davetist, @davidgut1982, @dchenk, @dirtyren, @donovan-yohan, @dparikh79, @dskwe, @Dusk1e, @dvir-pashut, @EloquentBrush0x, @emozilla, @ErnestHysa, @Erosika, @ethernet8023, @f3rs3n, @faisfamilytravel, @Fearvox, @ferminquant, @fesalfayed, @firefly, @flooryyyy, @Foldblade, @Frowtek, @gbarany, @Glucksberg, @GodsBoy, @haran2001, @harjothkhara, @HashClawAI, @hayka-pacha, @helix4u, @HeLLGURD, @Hinotoi-agent, @hllqkb, @IAvecilla, @inchargeautomation-lab, @Interstellar-code, @isair, @ITheEqualizer, @jeffrobodie-glitch, @JezzaHehn, @JimLiu, @Julientalbot, @julio-cloudvisor, @karmeleon, @Kenmege, @Kewe63, @Kolektori, @konsisumer, @kshitijk4poor, @kurobaryo, @kweiner, @kyssta-exe, @Kyzcreig, @LengR, @leonardsellem, @LeonSGP43, @libre-7, @liuboacean, @liuhao1024, @loongzhao, @luyao618, @MaheshtheDev, @Manzela, @mathijsvandenhurk, @MattMaximo, @maxcz79, @maxmilian, @Moikapy, @MustafaKara7, @nateGeorge, @nepenth, @nielskaspers, @ninjmnky, @octavioturra, @OCWC22, @ohMyJason, @ousiaresearch, @outsourc-e, @OutThisLife, @Pluviobyte, @polnikale, @pxdsgnco, @Que0x, @r266-tech, @redpiggy-cyber, @rewbs, @rexdotsh, @rob-maron, @SaguaroDev, @sahibzada-allahyar, @Sarbai, @sarvesh1327, @scubamount, @SeaXen, @seppegadeyne, @shannonsands, @SHL0MS, @SimoKiihamaki, @SiTaggart, @solaitken, @sprmn24, @stephenschoettler, @steveonjava, @stremtec, @Subway2023, @sweetcornna, @Sylw3ster, @ThyFriendlyFox, @tillfalko, @tmchow, @TonyPepeBear, @Tranquil-Flow, @truenorth-lj, @tuancookiez-hub, @Twanislas, @tymrtn, @uzunkuyruk, @ViewWay, @VinciZhu, @vinoth12940, @vladkvlchk, @vynxevainglory-ai, @WadydX, @wenchengxucool, @whyhkzk, @worlldz, @Wysie, @x1am1, @xxxigm, @ygd58, @youngstar-eth, @zapabob, @zhaoleibd, @Zyrixtrex</p> <hr> <p><strong>Full Changelog</strong>: <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/compare/v2026.5.29.2...v2026.6.5">v2026.5.29.2...v2026.6.5</a></p> </div><div class="link-row" data-astro-cid-l7qxtvnw><span class="lr-label" data-astro-cid-l7qxtvnw>Links</span><a href="https://github.com/NousResearch/hermes-agent/releases/tag/v2026.6.5" data-astro-cid-l7qxtvnw>GitHub release notes ↗</a><a href="https://github.com/NousResearch/hermes-agent/compare/v2026.5.29.2...v2026.6.5" data-astro-cid-l7qxtvnw>Full diff ↗</a><a href="/skills/" data-astro-cid-l7qxtvnw>Skill Library →</a><a href="/gateway/" data-astro-cid-l7qxtvnw>Gateway Guide →</a><a href="/blog/2026-06-06-hermes-desktop-surface-release/" data-astro-cid-l7qxtvnw>Desktop deep-dive →</a><a href="/blog/cron-job-patterns-2026/" data-astro-cid-l7qxtvnw>Cron patterns guide →</a></div></div></details></div><div data-astro-cid-l7qxtvnw><h3 class="month-h" data-astro-cid-l7qxtvnw>May 2026</h3><details class="rel" data-astro-cid-l7qxtvnw><summary data-astro-cid-l7qxtvnw><span class="r-arrow" data-astro-cid-l7qxtvnw>▶</span><span class="r-ver" data-astro-cid-l7qxtvnw>v0.15.2</span><span class="r-date" data-astro-cid-l7qxtvnw>2026-05-29</span></summary><div class="rel-body" data-astro-cid-l7qxtvnw><div class="r-notes" data-astro-cid-l7qxtvnw><h2>🐛 Bug Fixes</h2> <ul> <li>Packaging): ship bundled plugin.yaml manifests in wheel and sdist (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/commit/827f7f07825be57108cbea18325e8f5e9fb5d2f2"><code>827f7f07</code></a>)</li> </ul> <h2>👥 Contributors</h2> <p>Thank you to everyone who contributed to this release!</p> <ul> <li>@outsourc-e (1 commit)</li> <li>@dparikh79 (1 commit)</li> <li>@ousiaresearch (1 commit)</li> <li>@libre-7 (1 commit)</li> </ul> <p><strong>Full Changelog</strong>: <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/compare/v2026.5.29...v2026.5.29.2">v2026.5.29...v2026.5.29.2</a></p> </div><div class="link-row" data-astro-cid-l7qxtvnw><span class="lr-label" data-astro-cid-l7qxtvnw>Links</span><a href="https://github.com/NousResearch/hermes-agent/releases/tag/v2026.5.29.2" data-astro-cid-l7qxtvnw>GitHub release notes ↗</a><a href="https://github.com/NousResearch/hermes-agent/compare/v2026.5.29...v2026.5.29.2" data-astro-cid-l7qxtvnw>Full diff ↗</a><a href="https://github.com/NousResearch/hermes-agent/releases/tag/v2026.5.29.2" data-astro-cid-l7qxtvnw>Release notes (v2026.5.29.2) →</a></div></div></details><details class="rel" data-astro-cid-l7qxtvnw><summary data-astro-cid-l7qxtvnw><span class="r-arrow" data-astro-cid-l7qxtvnw>▶</span><span class="r-ver" data-astro-cid-l7qxtvnw>v0.15.1</span><span class="r-codename" data-astro-cid-l7qxtvnw>Patch Release</span><span class="r-date" data-astro-cid-l7qxtvnw>2026-05-29</span></summary><div class="rel-body" data-astro-cid-l7qxtvnw><p class="r-summary" data-astro-cid-l7qxtvnw><strong>The Patch Release.</strong> A same-day hotfix for v0.15.0. Headline fix: the dashboard infinite-reload loop that hit anyone running v0.15.0 in loopback mode (Docker, hosted Hermes, fresh installs). A handful of other v0.15.0 follow-ups go along for the ride — kanban worker SIGTERM, <code>/model</code> picker unification, <code>/yolo</code> session bypass, the full 19,932-entry skills.sh catalog, <code>.md</code> media delivery restoration, gateway probe-stepdown safety, web-URL redaction passthrough, kanban worker vision on referenced images, hindsight observation-default. Docker users get an explicit <code>--insecure</code> opt-in env var (no more bind-host inference), MCP server bare-command PATH resolution, and arm64 PR-build cache fixes.</p><div class="r-notes" data-astro-cid-l7qxtvnw><blockquote> <p><strong>The Patch Release.</strong> A same-day hotfix for v0.15.0. Headline fix: the dashboard infinite-reload loop that hit anyone running v0.15.0 in loopback mode (Docker, hosted Hermes, fresh installs). A handful of other v0.15.0 follow-ups go along for the ride — kanban worker SIGTERM, <code>/model</code> picker unification, <code>/yolo</code> session bypass, the full 19,932-entry skills.sh catalog, <code>.md</code> media delivery restoration, gateway probe-stepdown safety, web-URL redaction passthrough, kanban worker vision on referenced images, hindsight observation-default. Docker users get an explicit <code>--insecure</code> opt-in env var (no more bind-host inference), MCP server bare-command PATH resolution, and arm64 PR-build cache fixes.</p> </blockquote> <hr> <h2>✨ Highlights</h2> <ul> <li><p><strong>Dashboard 401 reload loop fixed</strong> — In loopback mode the dashboard's identity probe (<code>/api/auth/me</code>) returns 401 by design, but v0.15.0's stale-token reload guard treated every 401 as a rotated session token and full-page-reloaded to pick up a fresh one. Every successful sibling call cleared the one-shot reload guard, so the page reload-looped forever (Firefox: "Navigated to /sessions" storm; Chrome: React re-render storm). Fix adds an <code>allowUnauthorized</code> opt-out to <code>fetchJSON</code> that skips only the loopback stale-token reload — 401 still throws so <code>AuthWidget</code> swallows it, gated-mode <code>login_url</code> redirects are unaffected. Closes <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/34206">#34206</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/34202">#34202</a>. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/30698">#30698</a> — @austinpickett)</p> </li> <li><p><strong>Docker dashboard <code>--insecure</code> is now an explicit env opt-in, never derived from bind host</strong> — Previously the Docker entrypoint inferred <code>--insecure</code> when the dashboard bound to a non-loopback host. That conflated "I want LAN access" with "I want to disable the same-origin guard." The fix splits them: bind host is bind host, and disabling the dashboard's loopback auth requires an explicit <code>HERMES_DASHBOARD_INSECURE=1</code>. Existing setups that genuinely wanted insecure binding must now set the env var. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/34188">#34188</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/34204">#34204</a> — @benbarclay)</p> </li> <li><p><strong>MCP bare command resolution under Docker</strong> — MCP servers configured with bare commands (<code>npx</code>, <code>npm</code>, <code>node</code>) now resolve against <code>/usr/local/bin</code> so they actually launch inside the Docker image where those binaries live. v0.15.0 left these failing silently in containers when the agent's effective PATH didn't include the Node toolchain location. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/34186">#34186</a> — @benbarclay)</p> </li> <li><p><strong>Skills page sidebar / source pills restored</strong> — A stale <code>useMemo</code> dependency in the new dashboard skills page collapsed the source pills and category sidebar to "All" only. Fixed; both surfaces now reflect the live catalog state. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/34194">#34194</a>)</p> </li> <li><p><strong>Kanban worker can be killed again</strong> — <code>SIGTERM</code> on a kanban worker was being absorbed by an intermediate process and the worker stayed running. Closes <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/28181">#28181</a>. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/34045">#34045</a>)</p> </li> <li><p><strong>Full skills.sh catalog (858 → 19,932 entries)</strong> — The skills hub page was pulling a partial paginated catalog. The fetch now walks the sitemap, so all 19,932 skills.sh entries surface in the picker instead of just the first 858. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/34025">#34025</a>)</p> </li> </ul> <hr> <h2>🐛 Bug Fixes</h2> <h3>Dashboard / Web</h3> <ul> <li><strong><code>/api/auth/me</code> 401 no longer triggers reload loop</strong> in loopback mode — (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/30698">#30698</a> — @austinpickett)</li> <li><strong>Skills page source pills + category sidebar restored</strong> — stale <code>useMemo</code> dep (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/34194">#34194</a>)</li> </ul> <h3>Docker</h3> <ul> <li><strong><code>--insecure</code> is now explicit opt-in via env var</strong>, not derived from bind host (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/34188">#34188</a> — @benbarclay)</li> <li><strong>Dashboard test suite repaired</strong> to match the insecure-opt-in fix (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/34204">#34204</a> — @benbarclay)</li> <li><strong>arm64 PR builds skip the GHA cache</strong> to avoid cache-thrash on cross-arch builders (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/33704">#33704</a> — @BROCCOLO1D)</li> </ul> <h3>MCP</h3> <ul> <li><strong>Bare <code>npx</code>/<code>npm</code>/<code>node</code> resolve against <code>/usr/local/bin</code></strong> for Docker compatibility (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/34186">#34186</a> — @benbarclay)</li> </ul> <h3>Kanban</h3> <ul> <li><strong>Worker SIGTERM actually terminates the process</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/34045">#34045</a>)</li> <li><strong>Workers receive images referenced in task bodies</strong> for vision-capable models (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/34210">#34210</a>)</li> </ul> <h3>Gateway</h3> <ul> <li><strong><code>.md</code> files deliver again</strong> — media-delivery validation defaults to denylist-only instead of an overly-narrow allowlist (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/34022">#34022</a>)</li> <li><strong>Probe stepdown safety</strong> — on a context-overflow without an explicit provider context limit, the agent no longer steps down to a smaller model based on an unknown ceiling (salvage of <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/33673">#33673</a>) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/33826">#33826</a>)</li> </ul> <h3>CLI</h3> <ul> <li><strong><code>/yolo</code> mid-session enables the per-session bypass</strong> instead of just toggling the env var (which the running agent had already snapshotted) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/33931">#33931</a> — @kshitijk4poor)</li> <li><strong><code>/model</code> and <code>hermes model</code> show the same list</strong>, plus disk cache for picker startup (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/33867">#33867</a>)</li> </ul> <h3>Skills</h3> <ul> <li><strong>Full skills.sh catalog via sitemap</strong> — 858 → 19,932 entries (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/34025">#34025</a>)</li> </ul> <h3>Redaction</h3> <ul> <li><strong>Web URLs pass through unchanged</strong> — the redactor was eating query parameters that looked credential-shaped (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/34029">#34029</a>)</li> </ul> <hr> <h2>✨ Small Features</h2> <ul> <li><strong>Hindsight default narrowed to observation-only</strong> for <code>recall_types</code> — tool path is also narrowed (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/34079">#34079</a> — @nicoloboschi, follow-up <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4df62d239e38bf8c212a595721c9c01e176f6c3a">#34091</a> — @kshitijk4poor)</li> <li><strong>Memory providers receive completed-turn message context</strong> — salvage of <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28065">#28065</a> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/34097">#34097</a> — @kshitijk4poor, credit to @devwdave)</li> </ul> <hr> <h2>📚 Documentation</h2> <ul> <li><strong><code>--no-supervise</code> / <code>HERMES_GATEWAY_NO_SUPERVISE</code> documented</strong> in the reference docs (follow-up to <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/33583">#33583</a>) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/33751">#33751</a> — @r266-tech)</li> </ul> <hr> <h2>🛠️ Infrastructure</h2> <ul> <li><strong>Vercel deploy workflow accepts <code>workflow_dispatch</code></strong> so docs deploys can be manually triggered (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/34081">#34081</a>)</li> <li><strong><code>@nous-research/ui</code> bumped to 0.18.2</strong> (Nix <code>npmDepsHash</code> also updated to match) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/34193">#34193</a> follow-ups — @austinpickett)</li> </ul> <hr> <h2>👥 Contributors</h2> <h3>Core</h3> <ul> <li>@teknium1</li> </ul> <h3>Community</h3> <ul> <li>@austinpickett — dashboard 401 reload-loop fix (the headline), <code>@nous-research/ui</code> bump, Nix <code>npmDepsHash</code> updates</li> <li>@benbarclay — Docker <code>--insecure</code> opt-in, MCP bare-command resolution, dashboard test repair</li> <li>@kshitijk4poor — <code>/yolo</code> session bypass, completed-turn memory context salvage, hindsight follow-up docs</li> <li>@nicoloboschi — hindsight <code>recall_types</code> observation default</li> <li>@BROCCOLO1D — arm64 PR build cache fix</li> <li>@r266-tech — <code>--no-supervise</code> reference docs</li> <li>@yangguangjin — probe stepdown safety (salvage of @yanghd's #33673)</li> <li>@devwdave — completed-turn memory context (credited via salvage)</li> <li>@andrewhosf — co-author</li> </ul> <h3>Issue Reporters (the 401 loop)</h3> <ul> <li>@routesmith (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/34206">#34206</a>)</li> <li>@beeaton (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/34202">#34202</a>)</li> </ul> <hr> <p><strong>Full Changelog</strong>: <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/compare/v2026.5.28...v2026.5.29">v2026.5.28...v2026.5.29</a></p> </div><div class="link-row" data-astro-cid-l7qxtvnw><span class="lr-label" data-astro-cid-l7qxtvnw>Links</span><a href="https://github.com/NousResearch/hermes-agent/releases/tag/v2026.5.29" data-astro-cid-l7qxtvnw>GitHub release notes ↗</a><a href="https://github.com/NousResearch/hermes-agent/compare/v2026.5.28...v2026.5.29" data-astro-cid-l7qxtvnw>Full diff ↗</a><a href="/tools/" data-astro-cid-l7qxtvnw>Tools Reference →</a><a href="/skills/" data-astro-cid-l7qxtvnw>Skill Library →</a></div></div></details><details class="rel" data-astro-cid-l7qxtvnw><summary data-astro-cid-l7qxtvnw><span class="r-arrow" data-astro-cid-l7qxtvnw>▶</span><span class="r-ver" data-astro-cid-l7qxtvnw>v0.15.0</span><span class="r-codename" data-astro-cid-l7qxtvnw>Velocity Release</span><span class="r-date" data-astro-cid-l7qxtvnw>2026-05-28</span></summary><div class="rel-body" data-astro-cid-l7qxtvnw><p class="r-summary" data-astro-cid-l7qxtvnw><strong>The Velocity Release.</strong> Hermes gets dramatically faster — to start, to run, to ship work, and to grow. The 16,083-line <code>run_agent.py</code> collapses to 3,821 (-76%) across 14 cohesive <code>agent/*</code> modules. Kanban grew into a real multi-agent platform across 104 PRs — orchestrator auto-decomposition, swarm topology, scheduled tasks, worktree-per-task, per-task model overrides. The cold-start perf wave keeps going: another second shaved off launch, 47% fewer per-conversation function calls, <code>hermes --version</code> flipping the head-to-head benchmark against Codex CLI. <code>session_search</code> is 4,500× faster and free now. Promptware defense lands against Brainworm-class attacks. Bitwarden Secrets Manager replaces N per-provider API keys with one bootstrap token. Skill bundles let one slash command load a whole workflow. The Ink TUI gets a multi-session orchestrator. Two new image_gen providers (Krea 2 Medium + Large, FAL ported to plugin), the Nous-approved MCP catalog with an interactive picker, an OpenHands orchestration skill, ntfy as the 23rd messaging platform, and a deep xAI integration round (Web Search plugin, xai-oauth <code>hermes proxy</code> upstream, retired-May-15 model detection + <code>hermes migrate xai</code>, natural TTS speech-tag pauses, base_url leak guard, OpenAI-style execution guidance for Grok). 15 P0 + 65 P1 closures alongside.</p><div class="r-notes" data-astro-cid-l7qxtvnw><blockquote> <p><strong>The Velocity Release.</strong> Hermes gets dramatically faster — to start, to run, to ship work, and to grow. The 16,083-line <code>run_agent.py</code> collapses to 3,821 (-76%) across 14 cohesive <code>agent/*</code> modules. Kanban grew into a real multi-agent platform across 104 PRs — orchestrator auto-decomposition, swarm topology, scheduled tasks, worktree-per-task, per-task model overrides. The cold-start perf wave keeps going: another second shaved off launch, 47% fewer per-conversation function calls, <code>hermes --version</code> flipping the head-to-head benchmark against Codex CLI. <code>session_search</code> is 4,500× faster and free now. Promptware defense lands against Brainworm-class attacks. Bitwarden Secrets Manager replaces N per-provider API keys with one bootstrap token. Skill bundles let one slash command load a whole workflow. The Ink TUI gets a multi-session orchestrator. Two new image_gen providers (Krea 2 Medium + Large, FAL ported to plugin), the Nous-approved MCP catalog with an interactive picker, an OpenHands orchestration skill, ntfy as the 23rd messaging platform, and a deep xAI integration round (Web Search plugin, xai-oauth <code>hermes proxy</code> upstream, retired-May-15 model detection + <code>hermes migrate xai</code>, natural TTS speech-tag pauses, base_url leak guard, OpenAI-style execution guidance for Grok). 15 P0 + 65 P1 closures alongside.</p> </blockquote> <hr> <h2>✨ Highlights</h2> <ul> <li><p><strong>The Big Refactor — <code>run_agent.py</code> is no longer 16,000 lines</strong> — The file at the heart of Hermes — the agent conversation loop — has been reduced from 16,083 lines to 3,821 (-76%), with the extracted code redistributed across 14 cohesive modules under <code>agent/</code>. Behavior is unchanged: every extraction keeps a thin forwarder on <code>AIAgent</code>, every test patch path still works, every external caller is compatible. The reason you care: future Hermes development moves faster, plugin authors can finally grep the codebase, and the file that took 90 seconds to load in your editor opens in a blink. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/27248">#27248</a>)</p> </li> <li><p><strong>Kanban grew into a real multi-agent platform — 104 PRs end to end</strong> — Triage auto-decomposes one task into a tree of sub-tasks. <code>hermes kanban swarm</code> creates a full Swarm v1 graph in one command — root, parallel workers, gated verifier, gated synthesizer, shared blackboard. Tasks support per-task model overrides (cheap models for boilerplate, expensive ones for hard sub-tasks), board-level default workdirs, per-task worktree paths and branches, scheduled start times, configurable claim TTL, retry fingerprinting, stale-task detection, respawn guards, and a drag-to-delete trash zone. Workers report through <code>/workers/active</code>, <code>/runs/{id}</code>, and <code>/inspect</code> endpoints. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/27572">#27572</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28443">#28443</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28364">#28364</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28394">#28394</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28462">#28462</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28384">#28384</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28467">#28467</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28455">#28455</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28452">#28452</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28432">#28432</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28468">#28468</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28420">#28420</a>)</p> </li> <li><p><strong>Cold-start perf wave keeps going — another second saved, 47% fewer per-turn function calls</strong> — Three new optimization rounds: defer <code>openai._base_client</code> import (-240ms / -17MB on every CLI invocation), hot-path optimizations cut 47% of per-conversation function calls (399k → 213k for 31-turn chat), defer compression-feasibility check (-170 to -290ms on every agent construction), adaptive subprocess polling (-195ms per tool call, 1+ second per turn). Termux cold start drops from 2.9s to 0.8s. <code>hermes --version</code> cold drops 63% (701ms → 258ms), flipping the head-to-head benchmark against Codex CLI from 5/11 wins to 6/11. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28864">#28864</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28866">#28866</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28957">#28957</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/29006">#29006</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/29419">#29419</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/30121">#30121</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/30609">#30609</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/31968">#31968</a>)</p> </li> <li><p><strong><code>session_search</code> rebuilt — no LLM, no cost, 4,500× faster</strong> — The old <code>session_search</code> was an aux-LLM-powered tool that cost ~$0.30/call and took ~30 seconds to summarize three sessions, sometimes confabulating when the right session wasn't even in the FTS5 hit list. The new shape is one tool with three modes (discovery, scroll, browse) inferred from which args are set — no <code>mode</code> parameter, no aux-LLM, no config knob, no companion skill. Discovery is ~20ms instead of ~90s; scroll is ~1ms. Searching your past sessions for context is now free and instant. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/27590">#27590</a>)</p> </li> <li><p><strong>Promptware defense — Brainworm-class attacks blocked at three chokepoints</strong> — Inspired by recent Brainworm / Promptware Kill Chain research (Origin HQ, arxiv 2601.09625), Hermes now defends the context window against prompt-injection attacks that try to hijack the agent via tool output, recalled memory, or stored skills. Single source of truth (<code>tools/threat_patterns.py</code>) with ~15 new Brainworm/C2 patterns; recalled memory is scanned at load time; tool results get delimiter markers so a malicious file or remote service can't impersonate Hermes' own system content. Paired with a new <code>security-guidance</code> plugin that pattern-matches dangerous code writes. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/32269">#32269</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/33131">#33131</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/9151">#9151</a>)</p> </li> <li><p><strong>Bitwarden Secrets Manager — one bootstrap token replaces every per-provider API key</strong> — Stop keeping plaintext API keys in <code>~/.hermes/.env</code>. Install Bitwarden Secrets Manager (<code>bws</code> auto-installs lazily on first use), point Hermes at it with one bootstrap token (<code>BWS_ACCESS_TOKEN</code>), and every credential you need comes from Bitwarden at startup. Rotate a key in the Bitwarden web app and the rotation actually takes effect — Bitwarden defaults to source-of-truth so its values overwrite matching env vars on startup. Flip <code>secrets.bitwarden.override_existing: false</code> to invert. EU Cloud and self-hosted Bitwarden server URLs supported. Detected credentials are now labeled with their source so you can see at a glance which keys came from Bitwarden vs. the local env. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/30035">#30035</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/31378">#31378</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/30364">#30364</a>)</p> </li> <li><p><strong>ntfy as the 23rd messaging platform — push notifications without an account</strong> — ntfy is the self-hostable push-notification service with no signup, no API key, just a topic URL. Hermes now adapts to it as a platform plugin (zero edits to core), so your agent can send you push notifications from any cron job, kanban task completion, or chat <code>send_message</code> — to your phone, your watch, your desktop, your homelab. (salvages <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/30625">#30625</a> → originally <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4043">#4043</a>) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/30867">#30867</a>)</p> </li> <li><p><strong>Skill bundles — <code>/<name></code> loads multiple skills at once</strong> — A skill bundle is a named group of skills that loads them all together with one slash command. Set up your "writing day" bundle (humanizer + ideation + obsidian + youtube-content) and <code>/writing-day</code> activates all four for the session. Skills Hub now has health checks, a freshness badge, and a watchdog cron. Three new optional skills land: <code>code-wiki</code> (Karpathy's LLM-Wiki, persistent indexed dev wiki), <code>openhands</code> (delegate to OpenHands for parallel coding agents), and <code>web-pentest</code> (OWASP-style web pentest recipes). (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28373">#28373</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/32345">#32345</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/32240">#32240</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/32261">#32261</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/32265">#32265</a>)</p> </li> <li><p><strong>TUI session orchestrator — multiple live sessions in one TUI window</strong> — The Ink TUI gained an active-session switcher overlay. List, switch between, refresh, and close multiple live process-local sessions without leaving the TUI; dispatch a new session with a session-scoped model picker. Plus a wave of TUI polish — mouse-tracking DEC mode presets, scrollback preservation across branches and termux, slash-dropdown fixes, x.com link rendering, and CJK / IME input rendering improvements. (salvages <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/27642">#27642</a>) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/32980">#32980</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/30084">#30084</a>)</p> </li> <li><p><strong>Two new image_gen providers — Krea 2 Medium + Large, FAL ported to plugin</strong> — Krea joins the image_gen lineup as a built-in plugin: <code>Krea 2 Medium</code> ($0.03) and <code>Krea 2 Large</code> ($0.06), auto-discovered, selectable via <code>hermes tools</code> → Image Generation → Krea. Available through both the native Krea plugin and the FAL.ai catalog. The FAL.ai backend got pulled out of the monolithic image-generation tool into <code>plugins/image_gen/fal/</code>, completing the four-way architectural parity already established by web, browser, and video_gen — new image providers are now one file, not a fork. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/33236">#33236</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/30380">#30380</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/33506">#33506</a>)</p> </li> <li><p><strong>Nous-approved MCP catalog with interactive picker</strong> — A curated catalog of Nous-vetted MCP servers, mirroring the optional-skills shape. Run <code>hermes mcp</code> and you get an interactive picker; install with one keystroke, credentials prompted at install time and written to <code>~/.hermes/.env</code>. Ships with the n8n manifest first. Closes the discovery gap that left users hunting GitHub for trusted MCP servers. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/30870">#30870</a>)</p> </li> <li><p><strong>OpenHands orchestration skill</strong> — A new optional skill under <code>optional-skills/autonomous-ai-agents/openhands/</code> lets the agent delegate coding tasks to the OpenHands CLI alongside <code>claude-code</code>, <code>codex</code>, and <code>opencode</code>. OpenHands is the model-agnostic member of that family — any LiteLLM-supported provider works (OpenAI, Anthropic, OpenRouter, your own), so you can route a sub-task to the cheapest model that can finish it. Drop-in worker for kanban swarms and <code>/delegate</code> flows. (closes <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/477">#477</a>) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/32261">#32261</a>)</p> </li> <li><p><strong>Deep xAI integration round — Web Search plugin, OAuth proxy upstream, May 15 retirement detection, natural TTS, security hardening</strong> — Six interlocking xAI improvements:</p> <ul> <li><strong>xAI Web Search</strong> lands as a <code>plugins/web/xai/</code> provider, slots alongside Brave / Tavily / Exa / SearXNG / DDGS / Firecrawl — reuses your existing Grok OAuth or <code>XAI_API_KEY</code> credentials, no new env vars. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/29042">#29042</a>)</li> <li><strong><code>hermes proxy</code> gains an xAI upstream</strong> — your local OpenAI-compatible endpoint can now be backed by SuperGrok OAuth, no PKCE-refresh code to write in your client. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28356">#28356</a>)</li> <li><strong>May 15 model retirement detection</strong> — <code>grok-4</code>, <code>grok-4-fast{,-reasoning,-non-reasoning}</code>, <code>grok-3</code>, <code>grok-code-fast-1</code>, <code>grok-imagine-image-pro</code> etc. are detected in doctor and chat startup, with <code>hermes migrate xai</code> to one-shot config migration to the supported model. No more silent 404s after the retirement date. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/29277">#29277</a>)</li> <li><strong>Opt-in <code>auto_speech_tags</code></strong> for xAI TTS — inserts light <code>[pause]</code> tags between paragraphs and sentences for more natural-sounding voice replies. Default OFF. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/29376">#29376</a>)</li> <li><strong><code>xai-oauth</code> <code>base_url</code> pinned to <code>x.ai</code> origin</strong> — closes a silent credential-leak vector where <code>XAI_BASE_URL</code> could repoint OAuth-authenticated inference to an attacker-controlled host. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28952">#28952</a>)</li> <li><strong>OpenAI-style execution guidance applied to Grok models</strong> — Grok and xai-oauth now get the same family-specific execution discipline block GPT/Codex have, so the model stops claiming completion without tool calls and stops suggesting workarounds instead of using existing tools. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/27797">#27797</a>)</li> <li>Plus <code>x_search</code> degraded-results surfacing, tier-gated 403 with API-key fallback, PKCE <code>code_challenge</code> round-trip fix, dead-token quarantine on terminal refresh failure, MiniMax-style short-token refresh on per-request, and <code>WKE=unauthenticated</code> honor at both classifier sites. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/29484">#29484</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28351">#28351</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/27560">#27560</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28116">#28116</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/30619">#30619</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/30872">#30872</a>)</li> </ul> </li> </ul> <hr> <h2>🏗️ Core Agent & Architecture</h2> <h3>The Big Refactor — <code>run_agent.py</code> 16k → 3.8k</h3> <ul> <li><code>run_agent.py</code> from 16,083 → 3,821 lines (-76%), extracted into 14 cohesive <code>agent/*</code> modules. <code>run_conversation</code> alone was 3,877 lines before the refactor. Every extraction keeps a thin forwarder on <code>AIAgent</code>, every test-patch path is preserved, every external caller stays compatible. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/27248">#27248</a>)</li> </ul> <h3>Agent loop & conversation</h3> <ul> <li>Auxiliary task layered fallback (primary → chain → main agent → graceful fail) on capacity errors (402/429/connection). (salvages <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/26811">#26811</a> + <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/26998">#26998</a>) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/27625">#27625</a>)</li> <li>Buffer retry/fallback status; surface only on terminal failure (no more noisy "retrying..." spam in mid-run output). (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/33816">#33816</a>)</li> <li>Host contract for external context engines — condenses 5 prior PRs into one extension surface. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/33750">#33750</a>)</li> <li>Fallback immediately on provider content-policy blocks. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/33883">#33883</a>)</li> <li>Re-pad <code>reasoning_content</code> on cross-provider fallback to require-side providers. (salvage <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/33784">#33784</a>) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/33795">#33795</a>)</li> <li>Per-turn tool-outcome verifier — patch tool gets indent preservation, CRLF preservation, per-file failure escalation. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/32273">#32273</a>)</li> <li>Single-knob native vision for custom-provider models. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/29679">#29679</a>)</li> <li>Background review fork isolated from external memory plugins. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/27190">#27190</a>)</li> <li>Background review inherits parent toolset config for <code>tools[]</code> cache parity. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/29704">#29704</a>)</li> <li>Recover from providers returning list-type tool content. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/30259">#30259</a>)</li> <li>Treat partial-stream stub responses as length truncation rather than clean stop. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/30998">#30998</a>)</li> <li>OpenAI execution guidance applied to xAI Grok / xai-oauth. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/27797">#27797</a>)</li> <li>ContextVars propagate to concurrent tool worker threads.</li> <li>Preload <code>jiter</code> native parser. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/33692">#33692</a>)</li> <li>Expose context engine tools with saved toolsets. (salvage of <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/31194">#31194</a>) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/33719">#33719</a>)</li> </ul> <h3>Sessions & memory</h3> <ul> <li><code>session_search</code> rebuilt — single-shape (discovery + scroll + browse), no aux-LLM, ~20ms vs. ~90s. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/27590">#27590</a>)</li> <li>Salvage <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/29182">#29182</a> — opt-in JSON snapshot writer for sessions. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/29278">#29278</a>)</li> <li>Persist <code>platform_message_id</code> for recall across gateway restarts. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/29449">#29449</a>)</li> <li>Inline memory-context mentions stay visible in conversation. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28132">#28132</a>)</li> <li>Recalled memory labeled informational, not authoritative. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28583">#28583</a>)</li> <li>Memory + context-engine tool injection gated on <code>enabled_toolsets</code>. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/30177">#30177</a>)</li> <li>Guard against external drift in <code>MEMORY.md</code> / <code>USER.md</code>. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/30877">#30877</a>)</li> <li>Honcho runtime peer mapping — correctness follow-ups + setup wizard + docs. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/30077">#30077</a>)</li> <li>Periodic memory logging for leak detection. (salvage of <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17667">#17667</a>) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/27102">#27102</a>)</li> </ul> <h3>Codex / Responses-API maturation</h3> <ul> <li>TTFB watchdog for stalled Codex Responses streams. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/32042">#32042</a>)</li> <li>Actionable hint when stale-call detector fires on known silent-reject pattern. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/32016">#32016</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/33133">#33133</a>)</li> <li>Drop SDK <code>responses.stream()</code> helper; consume events directly. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/33042">#33042</a>)</li> <li>Gracefully recover from <code>invalid_encrypted_content</code>. (salvage of <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/10144">#10144</a>) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/33035">#33035</a>)</li> <li>Recover Codex Responses streams with null output. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/32963">#32963</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/33390">#33390</a>)</li> <li>Drop foreign-issuer reasoning and transient <code>rs_tmp</code> reasoning replay state. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/33156">#33156</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/33146">#33146</a>)</li> <li>Codex 429 quota classified as rate-limit, not missing credentials. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/33168">#33168</a>)</li> <li>Codex chat path falls back to credential_pool when singleton is empty. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/33189">#33189</a>)</li> <li>Codex re-auth syncs credential_pool. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/33164">#33164</a>)</li> <li>Omit <code>tools</code> key when no tools registered. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/33409">#33409</a>)</li> <li>Parse Codex image-generation SSE directly. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/32933">#32933</a>)</li> </ul> <hr> <h2>🎛️ Kanban — Multi-Agent Maturation Wave</h2> <h3>Orchestration & dispatch</h3> <ul> <li>Orchestrator-driven auto-decomposition on triage. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/27572">#27572</a>)</li> <li>Kanban swarm topology helper — <code>hermes kanban swarm</code> creates a Swarm v1 graph (root + parallel workers + gated verifier + gated synthesizer + shared blackboard). (salvages <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/26791">#26791</a> by @Niraven) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28443">#28443</a>)</li> <li>Dispatcher wires review agents from the review column. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28449">#28449</a>)</li> <li>Stale-detection for running tasks in dispatcher. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28452">#28452</a>)</li> <li>Respawn guard blocks repeat worker storms. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28455">#28455</a>)</li> <li>Respawn guard defers <code>blocker_auth</code> instead of auto-blocking. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28683">#28683</a>)</li> <li>Cross-profile cron jobs surface in dashboard. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28457">#28457</a>)</li> <li>Worker visibility endpoints: <code>/workers/active</code>, <code>/runs/{id}</code>, <code>/inspect</code>. (salvages <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/23761">#23761</a> by @Interstellar-code) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28432">#28432</a>)</li> </ul> <h3>Task configuration & scheduling</h3> <ul> <li>Per-task model override. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28364">#28364</a>)</li> <li>Board-level default workdir. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28394">#28394</a>)</li> <li>Configurable worktree paths and branches. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28462">#28462</a>)</li> <li>Scheduled task start times. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28384">#28384</a>)</li> <li>Scheduled status for delayed follow-ups. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28467">#28467</a>)</li> <li>Trimmed task comments. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28399">#28399</a>)</li> <li>Initial-status for human-ops cards. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28414">#28414</a>)</li> <li><code>max_in_progress</code> config to cap concurrent running tasks. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28420">#28420</a>)</li> <li>Filter tasks by workflow fields. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28454">#28454</a>)</li> <li><code>--sort</code> for <code>hermes kanban list</code>. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28427">#28427</a>)</li> <li>Optional <code>board</code> parameter on all MCP tools. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28444">#28444</a>)</li> <li>Stamp originating ACP session_id on tasks. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28447">#28447</a>)</li> <li><code>auto_promote_children</code> config toggle. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28344">#28344</a>)</li> <li><code>archive --rm</code> to hard-delete archived tasks. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28355">#28355</a>)</li> <li>Promote dependents when parent is archived. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28372">#28372</a>)</li> <li>Promote blocked tasks when parent dependencies complete. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28377">#28377</a>)</li> <li>Demote ready children when parent is reopened. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28382">#28382</a>)</li> <li><code>promote</code> verb for manual <code>todo→ready</code> recovery + bulk <code>--ids</code>. (salvage <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/29464">#29464</a>) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/31334">#31334</a>)</li> </ul> <h3>Dashboard</h3> <ul> <li>Drag-to-delete trash zone + bulk delete. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28468">#28468</a>)</li> <li>Surface per-task <code>model_override</code> in show + tool output. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28442">#28442</a>)</li> <li>Cross-profile notification delivery via <code>kanban.notification_sources</code>. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28395">#28395</a>)</li> <li>Scratch-workspace deletion warning for users. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/30949">#30949</a>)</li> <li>Mobile dashboard UX polish. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28127">#28127</a>)</li> </ul> <h3>Reliability</h3> <ul> <li>Worker log retention configurable. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/27867">#27867</a>)</li> <li>Configurable claim TTL. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28392">#28392</a>)</li> <li>Fingerprint crash errors to prevent fleet-wide retry exhaustion. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28380">#28380</a>)</li> <li>Reset failure counters on <code>unblock_task</code>. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28379">#28379</a>)</li> <li>Detect cycles in <code>decompose_triage_task</code> sibling-link pre-validation. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28088">#28088</a>)</li> <li>Surface unusable triage auxiliary model (auto-decompose aware). (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/27871">#27871</a>)</li> <li>Align failure diagnostics with retry limit. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/27868">#27868</a>)</li> <li>Align worker terminal timeout with task runtime. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/27864">#27864</a>)</li> <li>Auto-install bundled skills (kanban-worker) on init. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28368">#28368</a>)</li> <li>Make legacy task migration idempotent. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28397">#28397</a>)</li> <li>Serialize DB initialization. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28383">#28383</a>)</li> <li>Persist worker session metadata on completion. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28387">#28387</a>)</li> <li>Pass <code>accept-hooks</code> to worker chat subprocess. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28393">#28393</a>)</li> <li>Preserve worker tools with restricted toolsets. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28396">#28396</a>)</li> <li>Avoid unsafe Windows worker Hermes shim resolution. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28398">#28398</a>)</li> <li>Sync slash subcommands with live parser. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28376">#28376</a>)</li> <li>Show scheduled kanban tasks in dashboard. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28400">#28400</a>)</li> <li>Assign single-task kanban decompositions. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28401">#28401</a>)</li> <li>Configurable <code>max_tokens</code> for kanban specify. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28374">#28374</a>)</li> <li>Per-job profile support for cron. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28124">#28124</a>)</li> <li>Codex app-server: include every Kanban-pinned path in <code>writable_roots</code>. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28435">#28435</a>)</li> <li>Cache kanban worker guidance at session init for prompt-cache reuse. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28425">#28425</a>)</li> </ul> <hr> <h2>⚡ Performance</h2> <ul> <li><code>openai._base_client</code> import deferred — 240ms / 17MB off every CLI cold start. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28864">#28864</a>)</li> <li>Agent-loop hot-path optimizations — 47% fewer per-conversation function calls (399k → 213k for 31-turn chat). (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28866">#28866</a>)</li> <li>Compression-feasibility check deferred — 170-290ms off every agent construction. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28957">#28957</a>)</li> <li>Adaptive subprocess poll — ~195ms off every tool call, 1+ second per turn. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/29006">#29006</a>)</li> <li>Termux TUI cold start speedup. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/29419">#29419</a>)</li> <li>Termux non-TUI cold start speedup. (salvage <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/29438">#29438</a>) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/30121">#30121</a>)</li> <li>Termux fast-path version + deferred bare-prompt agent startup. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/30609">#30609</a>)</li> <li>Cut hermes <code>--version</code> wall time 63% — flips head-to-head vs Codex CLI. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/31968">#31968</a>)</li> <li>Date-only timestamp + loud gateway-DB roundtrip logging — improves prompt-cache hit rate. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/27675">#27675</a>)</li> <li>Cache kanban worker guidance at session init for prompt-cache reuse. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28425">#28425</a>)</li> </ul> <hr> <h2>🔧 Tool System</h2> <h3>Tool surface</h3> <ul> <li><code>patch</code>: indent preservation, CRLF preservation, per-file failure escalation. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/32273">#32273</a>)</li> <li><code>terminal</code>: warn at call time when <code>background=true</code> runs silently. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/31289">#31289</a>)</li> <li><code>terminal</code>: nudge homebrewed CI pollers at the tool surface. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/33142">#33142</a>)</li> <li><code>x_search</code>: surface degraded results + validate dates. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/29484">#29484</a>)</li> <li><code>x_search</code>: auto-enable toolset when xAI credentials are configured. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/27376">#27376</a>)</li> <li><code>computer_use</code>: route SOM/vision captures via auxiliary.vision. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/30126">#30126</a>)</li> <li><code>transcription</code>: reject symlinked audio inputs. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/10082">#10082</a>)</li> <li>TTS: prevent double <code>[pause]</code> in xAI auto speech tags. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/32237">#32237</a>)</li> <li>TTS: preserve native audio outside Telegram voice delivery. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28512">#28512</a>)</li> <li>TTS: opt-in xAI <code>auto_speech_tags</code> speech-tag pauses for natural voice replies. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/29376">#29376</a>)</li> <li>Voice: chunk oversized CLI recordings. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/30044">#30044</a>)</li> <li>Voice: honor <code>PULSE_SERVER</code> / <code>PIPEWIRE_REMOTE</code> inside Docker. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/22534">#22534</a>)</li> </ul> <h3>Browser</h3> <ul> <li>All cloud browser providers (Browserbase, Anchor, Camofox, Hyperbrowser, etc.) migrated to image_gen-style plugins. (salvages <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/25580">#25580</a>) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/27403">#27403</a>)</li> <li>Auto-launch Chromium-family browser for CDP. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/29106">#29106</a>)</li> <li>Docker: discover agent-browser Chromium binary at boot. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/33184">#33184</a>)</li> </ul> <h3>Image generation</h3> <ul> <li><strong>Krea</strong> provider plugin (Krea 2 Medium + Large). (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/33236">#33236</a>)</li> <li>FAL backend ported to <code>plugins/image_gen/fal</code>. (salvage <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/27966">#27966</a>) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/30380">#30380</a>)</li> <li>Cache xAI ephemeral URL responses to disk. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/31759">#31759</a>)</li> </ul> <h3>Web search</h3> <ul> <li><strong>xAI Web Search</strong> as a provider plugin. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/29042">#29042</a>)</li> </ul> <h3>MCP</h3> <ul> <li><strong>Nous-approved MCP catalog</strong> with interactive picker. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/30870">#30870</a>)</li> <li><strong>TLS client certificate (mTLS) support</strong> for HTTP and SSE MCP servers. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/33721">#33721</a>)</li> <li>Stdin paste-back fallback for headless OAuth flow. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/32053">#32053</a>)</li> <li><code>skip</code> at paste prompt bypasses auth without disabling server. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/32069">#32069</a>)</li> <li>Registry-aware <code>mcp_</code> prefix on both ends of round-trip. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/31700">#31700</a>)</li> </ul> <hr> <h2>🧩 Skills Ecosystem</h2> <h3>Skills system</h3> <ul> <li><strong>Skill bundles</strong> — <code>/<name></code> loads multiple skills. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28373">#28373</a>)</li> <li>Skills Hub: health checks, freshness badge, and a watchdog cron. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/32345">#32345</a>)</li> <li>Opt-in AST deep diagnostics on skill writes. (salvage of <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/30918">#30918</a>) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/31198">#31198</a>)</li> <li>Bundled/pinned skill protection in background-review prompts. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28338">#28338</a>)</li> <li>Show user-modified skill names in bundled skill sync summary. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28671">#28671</a>)</li> <li>Load symlinked skill slash commands. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/27759">#27759</a>)</li> <li>Deduplicate Skills Hub search results by identifier, not name. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/29490">#29490</a>)</li> </ul> <h3>New skills</h3> <ul> <li><code>openhands</code> — delegate-to-OpenHands orchestration skill (closes <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/477">#477</a>) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/32261">#32261</a>)</li> <li><code>code-wiki</code> — persistent indexed dev wiki (closes <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/486">#486</a>) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/32240">#32240</a>)</li> <li><code>web-pentest</code> — OWASP recipes (closes <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/400">#400</a>) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/32265">#32265</a>)</li> <li><code>baoyu-article-illustrator</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28287">#28287</a>)</li> </ul> <hr> <h2>☁️ Providers</h2> <h3>xAI deep integration</h3> <ul> <li><strong>xAI Web Search</strong> as a <code>plugins/web/xai/</code> provider plugin. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/29042">#29042</a>)</li> <li><strong><code>hermes proxy</code> xAI upstream</strong> — OpenAI-compatible local proxy backed by xai-oauth. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28356">#28356</a>)</li> <li><strong>May 15 model retirement detection + <code>hermes migrate xai</code></strong> for grok-4 / grok-3 / grok-code-fast-1 / grok-imagine-image-pro. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/29277">#29277</a>)</li> <li><strong>Opt-in <code>auto_speech_tags</code></strong> for natural xAI TTS voice replies. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/29376">#29376</a>)</li> <li><strong>xai-oauth base_url pinned to x.ai origin</strong> — closes silent credential-leak vector. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28952">#28952</a>)</li> <li><strong>OpenAI-style execution guidance</strong> applied to Grok / xai-oauth models. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/27797">#27797</a>)</li> <li>xAI: detect retired May 15 models in doctor/chat startup. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/29277">#29277</a>)</li> <li>xAI: resolve Grok Build context for OAuth. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/30579">#30579</a>)</li> <li>xAI OAuth: tier-gated 403 with API-key fallback. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28351">#28351</a>)</li> <li>xAI OAuth: PKCE <code>code_challenge</code> echo. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/27560">#27560</a>)</li> <li>xAI OAuth: quarantine dead tokens on terminal refresh failure. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28116">#28116</a>)</li> <li>xAI OAuth: honor <code>WKE=unauthenticated</code> disambiguator at both classifier sites. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/30872">#30872</a>)</li> <li>xAI OAuth: accept bare-code manual paste (state=None). (closes <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/26923">#26923</a>) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/33880">#33880</a>)</li> <li>xAI OAuth: fall back to manual paste on loopback timeout. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/33231">#33231</a>)</li> <li>xAI proxy: handle 429 rate-limit responses in proxy retry path. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/33743">#33743</a>)</li> </ul> <h3>Other providers</h3> <ul> <li><strong>OpenAI API as a first-class provider</strong> (distinct from Codex runtime). (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/31898">#31898</a>)</li> <li><strong>Microsoft Entra ID</strong> auth for Azure Foundry (with 1M Anthropic-Messages beta preserved on Bearer). (salvages <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/27509">#27509</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/27022">#27022</a>) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28101">#28101</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28084">#28084</a>)</li> <li><strong>OpenRouter</strong> sticky routing — <code>session_id</code> passed via <code>extra_body</code> so a long-running session keeps landing on the same upstream provider. (@Cybourgeoisie) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/33939">#33939</a>)</li> <li>Nous: JWT token for inference; stop replaying invalid Nous refresh tokens. (@rewbs) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/27663">#27663</a>)</li> <li>Nous Portal: one-shot setup, status CLI, and Nous-included markers. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/30860">#30860</a>)</li> <li>Anthropic adapter: extract 7 helpers from <code>convert_messages_to_anthropic</code>. (salvage <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/27784">#27784</a>) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/30386">#30386</a>)</li> <li>Catalog: add <code>qwen3.7-max</code> to Alibaba + Alibaba-Coding-Plan model lists. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/33129">#33129</a>)</li> <li>opencode-go: route <code>qwen3.7-max</code> via <code>anthropic_messages</code>. (@beardthelion) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/32780">#32780</a>)</li> <li>opencode-go: expose Kimi K2 + DeepSeek reasoning controls. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/30845">#30845</a>)</li> <li>Remove Vercel AI Gateway and Vercel Sandbox.</li> <li>MiniMax OAuth: refresh short-lived access tokens per request. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/30619">#30619</a>)</li> <li>Codex OAuth: quarantine terminal refresh errors. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28118">#28118</a>)</li> <li>Codex: drop dead model slugs that HTTP 400 on ChatGPT Pro. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/33424">#33424</a>)</li> <li>Codex: sync <code>manual:device_code</code> pool entries on re-auth. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/33744">#33744</a>)</li> <li>MiniMax OAuth: quarantine terminal refresh errors. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28119">#28119</a>)</li> </ul> <hr> <h2>🔑 Secrets</h2> <ul> <li><strong>Bitwarden Secrets Manager</strong> integration with lazy <code>bws</code> install. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/30035">#30035</a>)</li> <li>Bitwarden: EU Cloud + self-hosted server URL support. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/31378">#31378</a>)</li> <li>Label detected credentials with their source (Bitwarden). (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/30364">#30364</a>)</li> </ul> <hr> <h2>📱 Messaging Platforms (Gateway)</h2> <h3>Gateway core</h3> <ul> <li><strong>Deliverable mode</strong> — agents ship artifacts as native uploads from any platform (Slack/Discord/Telegram/Teams/Email). (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/27813">#27813</a>)</li> <li><code>hermes send</code> — pipe any script's output to any messaging platform. (salvage of <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/19631">#19631</a>) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/27188">#27188</a>)</li> <li>Debounce queued text follow-ups during active sessions. (salvage of <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/31235">#31235</a>) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/31341">#31341</a>)</li> <li>Plugin-transformed final_response delivered through streaming gate. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/31433">#31433</a>)</li> <li>Refresh cached agent tools on <code>/reload-mcp</code>. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/32815">#32815</a>)</li> <li>Harden kanban + provider cleanup races on long-running workloads. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/29479">#29479</a>)</li> </ul> <h3>New / reorganized adapters</h3> <ul> <li><strong>ntfy</strong> — 23rd platform, push notifications, plugin shape, zero core edits. (salvages <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/30625">#30625</a> → <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4043">#4043</a>) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/30867">#30867</a>)</li> <li><strong>Discord</strong> adapter migrated to bundled plugin. (salvage of <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/24356">#24356</a>) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/30591">#30591</a>)</li> <li><strong>Mattermost</strong> adapter migrated to bundled plugin. (salvage of <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/30916">#30916</a>) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/31748">#31748</a>)</li> </ul> <h3>Telegram</h3> <ul> <li>Edit status messages in place instead of appending. (based on <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/30141">#30141</a> by @qike-ms) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/30864">#30864</a>)</li> <li>Skip-STT audio path + 2GB cap via local Bot API server. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28541">#28541</a>)</li> <li>Route image documents (.png/.jpg/.webp/.gif) through vision pipeline. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28519">#28519</a>)</li> <li>Route audio file attachments away from STT pipeline. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28478">#28478</a>)</li> <li><code>disable_topic_auto_rename</code> gateway flag. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28523">#28523</a>)</li> <li><code>ignore_root_dm</code> config to drop messages without thread_id. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28536">#28536</a>)</li> <li>Chat-scoped auth without sender user_id. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28525">#28525</a>)</li> <li>Fail-closed auth fallback when <code>TELEGRAM_ALLOWED_USERS</code> is empty. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28494">#28494</a>)</li> <li>Roll over tool progress bubbles + scope audio_file_paths. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28482">#28482</a>)</li> <li>Avoid duplicate text after auto-TTS voice replies. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28509">#28509</a>)</li> <li>Mark final voice reply notify-worthy so Telegram delivers it audibly. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28504">#28504</a>)</li> </ul> <h3>Discord</h3> <ul> <li>Recover Windows voice opus decoding. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/33182">#33182</a>)</li> <li><code>allow_any_attachment</code> config to accept arbitrary file types. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/27245">#27245</a>)</li> <li>Transcribe native voice notes. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28993">#28993</a>)</li> <li>Define UI view classes after lazy install. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28817">#28817</a>)</li> </ul> <h3>Signal / Matrix / Feishu / Slack / WeCom</h3> <ul> <li>Signal: <code>require_mention</code> filter for group chats. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28574">#28574</a>)</li> <li>Matrix: warn on clock-skew silent message drops. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/27330">#27330</a>)</li> <li>Matrix E2EE installs full dep set; plugins respect <code>is_connected</code>. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/31688">#31688</a>)</li> <li>Feishu: require webhook auth secret + honor config extras. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/30746">#30746</a>)</li> <li>Feishu: enforce auth and chat binding for approval buttons. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/30744">#30744</a>)</li> <li>Slack: socket recovery + Windows restart dedupe. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28873">#28873</a>)</li> <li>WeCom: safe-parse untrusted XML. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/32442">#32442</a>)</li> </ul> <h3>DingTalk / Webhooks / Microsoft Graph</h3> <ul> <li>DingTalk: transcribe native voice notes. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28993">#28993</a>)</li> <li>Webhook: enforce <code>INSECURE_NO_AUTH</code> safety rail on dynamic route reloads. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/30863">#30863</a>)</li> <li>Webhook: restrict default toolset capabilities. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/30745">#30745</a>)</li> <li>Microsoft Graph: harden webhook auth requirements. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/30169">#30169</a>)</li> </ul> <hr> <h2>🖥️ CLI & TUI</h2> <h3>CLI</h3> <ul> <li><code>/update</code> slash command in CLI and TUI. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/23854">#23854</a>)</li> <li>Update auto-rollback when post-pull syntax check fails. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28669">#28669</a>)</li> <li><code>--branch</code> flag for <code>hermes update</code>. (@jquesnelle) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/29591">#29591</a>)</li> <li><code>/exit --delete</code> flag to remove session on quit. (salvage of <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17665">#17665</a>) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/27101">#27101</a>)</li> <li><code>▶ N</code> indicator in status bar for running <code>/background</code> tasks. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/27175">#27175</a>)</li> <li>Live background terminal-process count in status bar. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/32061">#32061</a>)</li> <li>Append session recap to <code>/status</code> output. (salvage of <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/18587">#18587</a>) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/27176">#27176</a>)</li> <li>Configurable paste-collapse thresholds (TUI + CLI). (salvage <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/29723">#29723</a>) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/32087">#32087</a>)</li> <li><code>/resume</code> accepts position numbers. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/31709">#31709</a>)</li> <li>Bring tool-call display back — verbose mode, specific failure reasons, todo progress. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/31293">#31293</a>)</li> <li>Validate runtime token refresh in Qwen auth status. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/31196">#31196</a>)</li> </ul> <h3>TUI</h3> <ul> <li><strong>TUI session orchestrator</strong> — multiple live sessions in one TUI window. (salvages <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/27642">#27642</a>) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/32980">#32980</a>)</li> <li><code>mouse_tracking</code> DEC mode presets. (salvage of <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/26681">#26681</a> by @OutThisLife) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/30084">#30084</a>)</li> <li>Termux scrollback preservation + touch-friendly defaults. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28910">#28910</a>)</li> <li>Full assistant text in scrollback (no history truncation). (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28829">#28829</a>)</li> <li>Preserve scrollback when branching sessions. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/30162">#30162</a>)</li> <li>Preserve Python dunder identifiers in markdown. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28582">#28582</a>)</li> <li>Active profile shown in TUI prompt. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28581">#28581</a>)</li> <li>Improve Charizard completion menu contrast. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28346">#28346</a>)</li> <li>Stop slash dropdown chopping last char of <code>/goal</code>. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/31311">#31311</a>)</li> <li>Clipboard copy on linux/wayland. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/29342">#29342</a>)</li> <li>Anchor <code>splitReasoning</code> unclosed-tag regex; stop eating last paragraph. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/29426">#29426</a>)</li> <li>Surface verbose tool details. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/30225">#30225</a>)</li> <li>Load Linux skills on Termux + salvage @adybag14-cyber's Termux gates. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/30166">#30166</a>)</li> <li>Handle images with codex app-server. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/31220">#31220</a>)</li> <li>Refresh virtual transcript on viewport resize. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/31077">#31077</a>)</li> <li>Ignore late thinking deltas after completion. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/31055">#31055</a>)</li> <li>Commit composer input bursts immediately. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/31053">#31053</a>)</li> <li>Log parent gateway lifecycle exits. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/31051">#31051</a>)</li> <li>Clear TTS env var on voice off + TTS indicator in status bar. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/30987">#30987</a>)</li> <li>Pass <code>--expose-gc</code> as node argv instead of NODE_OPTIONS. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/29998">#29998</a>)</li> <li>Align composer cursorLayout with wrap-ansi to kill multiline cursor drift. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/27489">#27489</a>)</li> <li>Harden Terminal.app rendering and color paths. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/27251">#27251</a>)</li> <li>Keep <code>/goal</code> verdict out of compact status row. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/27971">#27971</a>)</li> <li>Clamp curses color 8 for 8-color terminals (Docker). (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/30260">#30260</a>)</li> </ul> <hr> <h2>🔒 Security & Reliability</h2> <h3>Promptware & memory hardening</h3> <ul> <li><strong>Promptware defense</strong> — shared threat patterns + memory load-time scan + tool-result delimiters. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/32269">#32269</a>)</li> <li>Expand memory content scanning patterns to parity with skills guard. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/9151">#9151</a>)</li> <li>Harden Skills Guard multi-word prompt patterns. (@YLChen-007) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/26852">#26852</a>)</li> <li>Split cron scanner so skill prose stops false-positiving exfil patterns. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/32339">#32339</a>)</li> </ul> <h3>File safety</h3> <ul> <li>Protect Hermes control-plane files from prompt injection (<code>auth.json</code>, <code>config.yaml</code>, <code>webhook_subscriptions.json</code>, <code>mcp-tokens/</code>). (salvages @PratikRai0101's <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/14157">#14157</a>) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/30397">#30397</a>)</li> <li>Write-deny <code><root>/.env</code> when running under a profile. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/29687">#29687</a>)</li> <li>Defense-in-depth read-deny on credential stores. (salvages <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17659">#17659</a> + <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/8055">#8055</a>) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/30721">#30721</a>)</li> <li>TTS <code>output_path</code> traversal + update ZIP symlink reject. (salvage <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/6693">#6693</a> + <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/15881">#15881</a>) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/32056">#32056</a>)</li> <li>Reject symlinked audio inputs. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/10082">#10082</a>)</li> </ul> <h3>Credential safety</h3> <ul> <li>Avoid persisting borrowed credential secrets — runtime env-sourced keys no longer leak into <code>auth.json</code>. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/31416">#31416</a>)</li> <li>Validate Nous Portal <code>inference_base_url</code> against host allowlist. (salvages <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/27612">#27612</a>) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/30611">#30611</a>)</li> <li>Harden API server key placeholder handling. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/30738">#30738</a>)</li> <li>Harden Google Chat OAuth credential persistence. (@Zyrixtrex) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/24788">#24788</a>)</li> <li>xAI OAuth: pin inference <code>base_url</code> to x.ai origin. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28952">#28952</a>)</li> <li>Quarantine dead OAuth tokens on terminal refresh failure (xAI, Codex, MiniMax). (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28116">#28116</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28118">#28118</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28119">#28119</a>)</li> </ul> <h3>Supply-chain</h3> <ul> <li><strong>On-demand supply-chain audit via OSV.dev</strong> — <code>hermes audit</code>. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/31460">#31460</a>)</li> <li><code>hermes update</code> syntax-validates critical files post-pull, auto-rollback on failure. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28669">#28669</a>)</li> <li>Quarantine <code>hermes.exe</code> vs concurrent Windows instance. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/26677">#26677</a>)</li> </ul> <h3>Other hardening</h3> <ul> <li>Restrict default webhook toolset capabilities. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/30745">#30745</a>)</li> <li>Harden Microsoft Graph webhook auth requirements. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/30169">#30169</a>)</li> <li>Require source CIDR allowlisting for public msgraph webhook binds. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/33722">#33722</a>)</li> <li>Require <code>API_SERVER_KEY</code> before dispatching API server work. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/33232">#33232</a>)</li> <li>env_passthrough: apply GHSA-rhgp-j443-p4rf filter to config.yaml path. (@roadhero) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/27794">#27794</a>)</li> <li>Dashboard + WeCom: restrict markdown link schemes; safe-parse untrusted XML. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/32442">#32442</a>)</li> <li>Salvage project-plugin RCE bypass fix from PR <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/29311">#29311</a> (GHSA-5qr3-c538-wm9j). (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/30837">#30837</a>)</li> <li>Cross-profile soft guard on file-write tools + system-prompt hint. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/31290">#31290</a>)</li> <li>Reject unsafe tar members in Android psutil compatibility installer. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/33742">#33742</a>)</li> <li>Reject non-regular tar members during tirith auto-install. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/33786">#33786</a>)</li> </ul> <hr> <h2>🪟 Native Windows (Beta Continued)</h2> <ul> <li>Complete Windows bootstrap — <code>dep_ensure</code> + <code>install.ps1</code> + detection. (@alt-glitch) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/27845">#27845</a>)</li> <li><code>install.ps1</code>: strip BOM, <code>-Commit</code>/<code>-Tag</code> pin params, harden git ops. (@jquesnelle) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28169">#28169</a>)</li> <li>Consolidate ACP browser bootstrap into <code>install.{sh,ps1}</code>. (@alt-glitch) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/27851">#27851</a>)</li> <li><code>hermes update</code> quarantines live <code>hermes.exe</code>. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/26677">#26677</a>)</li> <li>Discord voice opus decoding on Windows. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/33182">#33182</a>)</li> <li>Windows Docker Desktop compatible compose file. (@Sunil123135) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/31031">#31031</a>)</li> </ul> <hr> <h2>🖥️ Web Dashboard</h2> <ul> <li>Hardened Slack socket recovery + Windows restart dedupe. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28873">#28873</a>)</li> <li>Web dashboard: migrate checkboxes to <code>@nous-research/ui</code> + design-system polish. (@austinpickett) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28814">#28814</a>)</li> <li>Web dashboard: collapsible sidebar. (@austinpickett) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/33421">#33421</a>)</li> <li>Dashboard typography & contrast pass. (salvage of <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28832">#28832</a>) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/30714">#30714</a>)</li> <li>Skills page: lazy-fetch catalog instead of bundling 34MB into JS. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/33809">#33809</a>)</li> </ul> <hr> <h2>🐳 Docker</h2> <ul> <li><strong>s6-overlay container supervision</strong> — abstract <code>ServiceManager</code> protocol (systemd/launchd/Windows/s6 backends), per-profile gateway supervision in-container, container-restart reconciliation, hadolint/shellcheck CI. (salvage of <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/30136">#30136</a>, @benbarclay) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/31760">#31760</a>)</li> <li>Auto-redirect <code>gateway run</code> to supervised mode inside the s6 image. (@benbarclay) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/33583">#33583</a>)</li> <li>Tee supervised gateway stdout to docker logs. (@benbarclay) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/33621">#33621</a>)</li> <li>Drop <code>docker exec</code> to hermes uid before invoking the CLI. (@benbarclay) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/33628">#33628</a>)</li> <li>Align HOME for dashboard and s6 gateway services. (@Dusk1e) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/33481">#33481</a>)</li> <li>Bake build-time git SHA into image so <code>hermes dump</code> reports it. (@benbarclay) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/33655">#33655</a>)</li> <li><code>hermes update</code> prints <code>docker pull</code> guidance instead of bogus git error. (@benbarclay) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/33659">#33659</a>)</li> <li>Upgrade Node to 22 LTS via multi-stage from <code>node:22-bookworm-slim</code>. (@benbarclay) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/33060">#33060</a>)</li> <li>Drop <code>build-essential</code> from apt install. (@benbarclay) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/33028">#33028</a>)</li> <li>Propagate env through s6 to cont-init and main CMD. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/32412">#32412</a>)</li> <li>Targeted chown to preserve host file ownership in <code>HERMES_HOME</code>. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/33033">#33033</a>)</li> <li><code>mkdir HERMES_HOME</code> as root in stage2 before chown / privilege drop. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/33078">#33078</a>)</li> <li>chown <code>ui-tui</code> and <code>node_modules</code> on UID remap so TUI esbuild works. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/33045">#33045</a>)</li> <li>Include <code>anthropic</code>, <code>bedrock</code>, <code>azure-identity</code> extras in image. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/30504">#30504</a>)</li> <li>Stop pushing per-commit SHA tags to Docker Hub. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/29387">#29387</a>)</li> <li>Simplify Docker tagging — push both <code>:main</code> and <code>:latest</code> on main push. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/33225">#33225</a>)</li> <li>Test slicing across GH actions jobs. (@ethernet8023) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/30575">#30575</a>)</li> <li>Discover agent-browser Chromium binary at boot. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/33184">#33184</a>)</li> </ul> <hr> <h2>🌐 API Server</h2> <ul> <li><strong>Session control API</strong> — <code>/api/sessions/*</code> (list/create/read/patch/delete/fork) + SSE-streaming chat. (salvages <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/29302">#29302</a> by @Codename-11 + multimodal followup by @Schwartz10) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/33134">#33134</a>)</li> <li><code>GET /v1/skills</code> and <code>/v1/toolsets</code>. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/33016">#33016</a>)</li> <li>Coerce stringified booleans in stream/store/approval payloads. (salvage <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/26639">#26639</a>) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/27293">#27293</a>)</li> <li>Honor <code>key_env</code> in auth-failure fallback resolution. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/30840">#30840</a>)</li> </ul> <hr> <h2>🎟️ ACP (VS Code / Zed / JetBrains)</h2> <ul> <li>Session edit auto-approval modes. (salvage of <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/27034">#27034</a>) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/27862">#27862</a>)</li> <li>Enrich Zed permission cards — command in title + <code>reject_always</code>. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28148">#28148</a>)</li> <li>Replay session history before responding to <code>session/load</code>. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/26957">#26957</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/26943">#26943</a>)</li> <li>Plugin-transformed final_response delivered through streaming gate. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/31433">#31433</a>)</li> </ul> <hr> <h2>🔌 Plugin Surface</h2> <ul> <li><code>register_tts_provider()</code> plugin hook. (salvage of <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/30420">#30420</a>) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/31745">#31745</a>)</li> <li><code>register_transcription_provider()</code> hook + <code>stt.providers</code> command-provider registry. (salvage of <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/30493">#30493</a>) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/31907">#31907</a>)</li> <li><code>register_auxiliary_task()</code> in PluginContext API. (salvage <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/29817">#29817</a>) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/31177">#31177</a>)</li> <li>Bundled <code>security-guidance</code> plugin. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/33131">#33131</a>)</li> <li>Discord and Mattermost migrated to bundled plugins. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/30591">#30591</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/31748">#31748</a>)</li> <li>ntfy as platform plugin. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/30867">#30867</a>)</li> <li>Surface category-namespaced plugins in <code>hermes plugins list</code>. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/27187">#27187</a>)</li> <li>Plugin discovery failures raised to WARNING level. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28318">#28318</a>)</li> <li><code>hermes_plugins</code> included in gateway.log component filter. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28313">#28313</a>)</li> <li>Seed plugin extras before <code>is_connected</code> gate. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/31703">#31703</a>)</li> <li>Dashboard: allowlist plugin assets + denylist subprocess-influencing env vars. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/32277">#32277</a>)</li> </ul> <hr> <h2>📦 Distribution & Install</h2> <ul> <li>Install-method stamping + Docker detection. (@alt-glitch) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/27843">#27843</a>)</li> <li>Nix <code>#messaging</code> and <code>#full</code> package variants. (@alt-glitch) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/33108">#33108</a>)</li> <li>Pre-load messaging gateway deps via <code>--extra messaging</code>. (salvage <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/26394">#26394</a>) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/27558">#27558</a>)</li> <li>Avoid piping installer directly into <code>iex</code> (Windows). (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28347">#28347</a>)</li> <li>Ship bundled skills in wheel. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28421">#28421</a>)</li> <li>Ship dashboard plugin assets in wheel. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28406">#28406</a>)</li> <li>Make Camofox lazy-installed instead of eager. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/27055">#27055</a>)</li> <li>Wire STT lazy-install into transcription_tools.py. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/30256">#30256</a>)</li> </ul> <hr> <h2>🐛 Notable Bug Fixes (highlights only)</h2> <ul> <li>Match bare custom provider by active base URL in <code>hermes model</code>. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28908">#28908</a>)</li> <li>Route <code>auxiliary.vision.provider=openai</code> to api.openai.com, skip text-only main. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/31452">#31452</a>)</li> <li>Lint: skip per-file shell linter when LSP will handle the file. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/29054">#29054</a>)</li> <li>Treat empty credential pool entries as unauthenticated in <code>/model</code> picker. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28312">#28312</a>)</li> <li>Reverted within window: Firecrawl integration tag, send_message @username auto-mentions, Telegram quick-command-only menus, Telegram pin-on-turn.</li> </ul> <hr> <h2>🧪 Testing</h2> <ul> <li>Disarm lazy-install probe so <code>_HAS_FASTER_WHISPER</code> patches work. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/30334">#30334</a>)</li> <li>Cover default board dashboard pin. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28361">#28361</a>)</li> <li>Cover <code>_task_dict</code> <code>task_age</code> fallback. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28365">#28365</a>)</li> <li>Allowlist <code>tmp_path</code> for <code>kanban_notify</code> artifact delivery tests. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/30851">#30851</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/30852">#30852</a>)</li> <li>Cover null output stream terminal events in Codex. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/33137">#33137</a>)</li> </ul> <hr> <h2>📚 Documentation</h2> <ul> <li><strong>30-day docs overhaul</strong> — full correctness audit, every PR in the window covered, Nous Portal weave, sidebar reorg. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/33782">#33782</a>)</li> <li>Dedicated Nous Portal integration page and setup guide. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/31296">#31296</a>)</li> <li>Providers: move Nous Portal first, Google Gemini OAuth last. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/31287">#31287</a>)</li> <li><code>session_search</code> rewrite for single-shape tool. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/27840">#27840</a>)</li> <li>Kanban: document failure_limit, max_retries, inline create shortcuts, goals & kanban settings. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28357">#28357</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28358">#28358</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28359">#28359</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28360">#28360</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28362">#28362</a>)</li> <li>Kanban Codex lane skill. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/28430">#28430</a>)</li> <li>xAI OAuth: note X Premium+ also unlocks Grok OAuth. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/29055">#29055</a>)</li> <li>Docs site: Docker audio bridge notes, "Installing more tools in the container", xurl auth HOME in Docker.</li> <li>Email: clarify gateway vs Himalaya setup. (@helix4u) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/33634">#33634</a>)</li> <li>Auth docs: replace stale <code>hermes login</code> references with <code>hermes auth add</code>. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/32859">#32859</a>)</li> </ul> <hr> <h2>👥 Contributors</h2> <h3>Core</h3> <ul> <li>@teknium1 (lead)</li> </ul> <h3>Notable salvages & cherry-picks</h3> <ul> <li><strong>@benbarclay</strong> — s6-overlay container supervision (29 commits salvaged), Node 22 LTS upgrade, build-essential cleanup, <code>gateway run</code> auto-redirect in s6, tee supervised stdout to docker logs, <code>hermes update</code> Docker guidance, build-time SHA stamping</li> <li><strong>@OutThisLife</strong> — <code>mouse_tracking</code> DEC mode presets</li> <li><strong>@jquesnelle</strong> — Windows installer hardening, <code>--branch</code> flag for <code>hermes update</code>, install.ps1 BOM strip / commit-pin</li> <li><strong>@alt-glitch</strong> — Windows <code>dep_ensure</code> bootstrap, Nix package variants (<code>.#messaging</code>, <code>.#full</code>), install-method stamping, ACP browser bootstrap consolidation</li> <li><strong>@austinpickett</strong> — <code>/update</code> slash command, dashboard checkboxes → <code>@nous-research/ui</code>, mobile dashboard polish, collapsible sidebar</li> <li><strong>@ethernet8023</strong> — CI test slicing across GH Actions jobs, TUI clipboard copy fix</li> <li><strong>@kshitijk4poor</strong> — doctor section banner + fail-and-issue helpers extraction, post-tag salvage cluster (curator-fallout, kanban SQLite hardening, install world-readable uv dirs, xAI bare-code paste)</li> <li><strong>@rewbs</strong> — Nous JWT inference switch + refresh-token replay fix</li> <li><strong>@Codename-11</strong> + <strong>@Schwartz10</strong> — session control API (REST + SSE + multimodal followup)</li> <li><strong>@Niraven</strong> — kanban swarm topology helper</li> <li><strong>@Interstellar-code</strong> — kanban worker visibility endpoints</li> <li><strong>@adybag14-cyber</strong> — termux cold-start optimizations (multiple PRs)</li> <li><strong>@qike-ms</strong> — Telegram in-place status edits design</li> <li><strong>@sprmn24</strong> — ntfy adapter</li> <li><strong>@Jaaneek</strong> — xAI Web Search provider plugin</li> <li><strong>@yannsunn</strong> — xAI upstream adapter for <code>hermes proxy</code></li> <li><strong>@Cybourgeoisie</strong> — OpenRouter sticky routing via session_id</li> <li><strong>@memosr</strong> — Nous Portal base_url allowlist validation</li> <li><strong>@Sunil123135</strong> — Windows Docker Desktop compose file</li> <li><strong>@Dusk1e</strong> — Docker HOME alignment for dashboard + s6 gateway services</li> <li><strong>@beardthelion</strong> — opencode-go anthropic_messages routing</li> <li><strong>@YLChen-007</strong> — Skills Guard multi-word prompt patterns</li> <li><strong>@roadhero</strong> — env_passthrough GHSA-rhgp-j443-p4rf filter</li> <li><strong>@Zyrixtrex</strong> — Google Chat OAuth credential persistence hardening</li> <li><strong>@briandevans</strong>, <strong>@tomqiaozc</strong> — defense-in-depth read-deny on credential stores</li> <li><strong>@PratikRai0101</strong> — control-plane file write protection</li> <li><strong>@helix4u</strong>, <strong>@Bartok9</strong>, <strong>@zccyman</strong> — auxiliary fallback ladder components</li> <li><strong>@ms-alan</strong>, <strong>@ticketclosed-wontfix</strong>, <strong>@donovan-yohan</strong> — TUI session orchestrator + follow-ups</li> <li><strong>@daimon-nous[bot]</strong> — cron per-job profile support</li> <li><strong>@bisko</strong> — re-pad <code>reasoning_content</code> on cross-provider fallback</li> </ul> <h3>All Contributors</h3> <p>@02356abc, @0xchainer, @0xDevNinja, @0xjackyang, @0xsir0000, @0z1-ghb, @8bit64k, @aaronlab, @AceWattGit, @ACR27, @adam91holt, @AdamPlatin123, @Ade5954, @AdityaRajeshGadgil, @adybag14-cyber, @AhmetArif0, @ai-hana-ai, @alaamohanad169-ship-it, @alber70g, @albert748, @alt-glitch, @aqilaziz, @argabor, @asdlem, @austinpickett, @avifenesh, @awizemann, @B0Tch1, @Bartok9, @BaxBit, @Beandon13, @beardthelion, @benbarclay, @bensargotest-sys, @binhnt92, @bird, @bisko, @BlackishGreen33, @booker1207, @bradhallett, @briandevans, @Brixyy, @brndnsvr, @BROCCOLO1D, @btorresgil, @burjorjee, @carltonawong, @Carry00, @chaconne67, @chdlc, @chromalinx, @ChyuWei, @CipherFrame, @cmullins70, @CNSeniorious000, @codeblackhole1024, @Codename-11, @colin-chang, @counterposition, @cresslank, @CryptoByz, @cyb0rgk1tty, @Cybourgeoisie, @daizhonggeng, @darvsum, @davidcampbelldc, @deas, @dgians, @dillweed, @DoGMaTiiC, @donovan-yohan, @draplater, @Drexuxux, @dskwe, @dsr-restyn, @Dusk1e, @dusterbloom, @duyua9, @egilewski, @el-analista, @eliteworkstation94-ai, @eloklam, @EloquentBrush0x, @emonty, @emozilla, @erhnysr, @erikengervall, @Erosika, @ether-btc, @ethernet8023, @EvilHumphrey, @fabiosiqueira, @falasi, @falconexe, @fardoche6, @felix-windsor, @Fewmanism, @ffr31mr, @flamiinngo, @flanny7, @flooryyyy, @fonhal, @francip, @fujinice, @gianfrancopiana, @glennc, @Glucksberg, @godlin-gh, @Grogger, @guillaumemeyer, @Gutslabs, @H-Ali13381, @hanzckernel, @haran2001, @hawknewton, @hayka-pacha, @hehehe0803, @helix4u, @HenkDz, @Hermes, @hermesagent26, @Hinotoi-agent, @hongchen1993, @honor2030, @houenyang-momo, @ht1072, @hueilau, @iamfoz, @ilonagaja509-glitch, @InB4DevOps, @indigokarasu, @Interstellar-code, @iqdoctor, @iRonin, @Jaaneek, @JabberELF, @jacevys, @jackey8616, @jackjin1997, @jdelmerico, @jfuenmayor, @Jiahui-Gu, @JimLiu, @joe102084, @JohnC1009, @jonpol01, @Jpalmer95, @Julientalbot, @justemu, @justincc, @jvinals, @karthikeyann, @kasunvinod, @kchuang1015, @kenyonxu, @khungate, @kiranvk-2011, @kjames2001, @konsisumer, @kpadilha, @kriscolab, @krislidimo, @kronexoi, @kshitijk4poor, @kunci115, @Kylejeong2, @kylekahraman, @LaPhilosophie, @leeseoki0, @lemassykoi, @Lempkey, @LeonJS, @LeonSGP43, @lidge-jun, @LifeJiggy, @liuhao1024, @LizerAIDev, @loicnico96, @loongfay, @m0n3r0, @malaiwah, @matthewlai, @mavrickdeveloper, @maxmilian, @McClean-Edison, @memosr, @Mind-Dragon, @momowind, @MoonJuhan, @MoonRay305, @moortekweb-art, @MorAlekss, @ms-alan, @Nami4D, @nehaaprasaad, @nekwo, @nftpoetrist, @NickLarcombe, @nidhi-singh02, @Niraven, @nnnet, @noctilust, @novax635, @nthrow, @nv-kasikritc, @nycomar, @OCWC22, @oemtalks, @OmX, @ooovenenoso, @orcool, @oseftg, @outsourc-e, @OutThisLife, @Paperclip, @PaTTeeL, @pepelax, @phoenixshen, @Pluviobyte, @pnascimento9596, @pochi-gio, @pr7426, @PratikRai0101, @Prithvi1994, @psionic73, @ptichalouf, @Que0x, @QuenVix, @quocanh261997, @qWaitCrypto, @Qwinty, @r266-tech, @rak135, @rdasilva1016-ui, @rewbs, @roadhero, @rodrigoeqnit, @RonHillDev, @roycepersonalassistant, @rudi193-cmd, @RyanRana, @sadiksaifi, @samahn0601, @samggggflynn, @SamuelZ12, @sanghyuk-seo-nexcube, @Saurav0989, @savanne-kham, @Schrotti77, @Schwartz10, @SerenityTn, @sgtworkman, @sharziki, @shaun0927, @shellybotmoyer, @shunsuke-hikiyama, @SimbaKingjoe, @SimoKiihamaki, @sir-ad, @Slimydog21, @slowtokki0409, @Soju06, @someaka, @soynchux, @sprmn24, @Stark-X, @steezkelly, @stepanov1975, @stephenschoettler, @stevehq26-bot, @steveonjava, @Strontvod, @subtract0, @Sunil123135, @superearn-fisher, @Sylw3ster, @tchanee, @that-ambuj, @thedavidmurray, @TheOnlyMika, @therahul-yo, @thewillhuang, @ticketclosed-wontfix, @Timur00Kh, @tomqiaozc, @Tosko4, @Tranquil-Flow, @tw2818, @uzunkuyruk, @vaddisrinivas, @vanthinh6886, @vgocoder, @victorGPT, @vynxevainglory-ai, @waefrebeorn, @walli, @wangpuv, @wanwan2qq, @wesleysimplicio, @worlldz, @wpengpeng168, @WuKongAI-CMU, @wuli666, @Wysie, @wysie, @xxxigm, @yannsunn, @YanzhongSu, @YarrowQiao, @ygd58, @YLChen-007, @yoniebans, @yu-xin-c, @YuanHanzhong, @zapabob, @zccyman, @ziliangpeng, @zwolniony, @Zyrixtrex</p> <hr> <p><strong>Full Changelog</strong>: <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/compare/v2026.5.16...v2026.5.28">v2026.5.16...v2026.5.28</a></p> </div><div class="link-row" data-astro-cid-l7qxtvnw><span class="lr-label" data-astro-cid-l7qxtvnw>Links</span><a href="https://github.com/NousResearch/hermes-agent/releases/tag/v2026.5.28" data-astro-cid-l7qxtvnw>GitHub release notes ↗</a><a href="https://github.com/NousResearch/hermes-agent/compare/v2026.5.16...v2026.5.28" data-astro-cid-l7qxtvnw>Full diff ↗</a><a href="https://github.com/NousResearch/hermes-agent/releases/tag/v2026.5.28" data-astro-cid-l7qxtvnw>Release notes (v2026.5.28) →</a></div></div></details><details class="rel" data-astro-cid-l7qxtvnw><summary data-astro-cid-l7qxtvnw><span class="r-arrow" data-astro-cid-l7qxtvnw>▶</span><span class="r-ver" data-astro-cid-l7qxtvnw>v0.14.0</span><span class="r-date" data-astro-cid-l7qxtvnw>2026-05-16</span></summary><div class="rel-body" data-astro-cid-l7qxtvnw><p class="r-summary" data-astro-cid-l7qxtvnw>The Foundation Release — Hermes installs and runs anywhere, ships with the things you actually want to use, and stops shipping the things you don't. xAI Grok lands as a SuperGrok OAuth provider with grok-4.3 bumped to a 1M context window. A new OpenAI-compatible local proxy turns any OAuth-authed Hermes provider — Claude Pro, ChatGPT Pro, SuperGrok — into an endpoint that Codex / Aider / Cline / Continue can hit. <code>x_search</code> lands as a first-class X (Twitter) search tool with OAuth-or-API-key auth. The Microsoft Teams stack is wired end-to-end (Graph auth + webhook listener + pipeline runtime + outbound delivery). A debloating wave makes installs dramatically lighter — heavyweight backends now lazy-install on first use, the <code>[all]</code> extras drop everything covered by lazy-deps, and a tiered install falls back when a wheel rejects on your platform. <code>pip install hermes-agent</code> works from PyPI. The cold-start wave shaves ~19 seconds off <code>hermes</code> launch. Browser CDP calls are 180x faster. Two new messaging platforms (LINE + SimpleX Chat) bring the total to 22. Cross-session 1-hour Claude prompt caching, <code>/handoff</code> that actually transfers sessions live, native button UI for <code>clarify</code> on Telegram and Discord, Discord channel history backfill, LSP semantic diagnostics on every write, a unified pluggable <code>video_generate</code>, a <code>computer_use</code> cua-driver backend that finally works with non-Anthropic providers, clickable URLs in any terminal, Zed ACP Registry integration via <code>uvx</code>, native Windows beta, 9 new optional skills, OpenRouter Pareto Code router, huggingface/skills as a trusted default tap. 12 P0 + 50 P1 closures.</p><div class="r-notes" data-astro-cid-l7qxtvnw><blockquote> <p>The Foundation Release — Hermes installs and runs anywhere, ships with the things you actually want to use, and stops shipping the things you don't. xAI Grok lands as a SuperGrok OAuth provider with grok-4.3 bumped to a 1M context window. A new OpenAI-compatible local proxy turns any OAuth-authed Hermes provider — Claude Pro, ChatGPT Pro, SuperGrok — into an endpoint that Codex / Aider / Cline / Continue can hit. <code>x_search</code> lands as a first-class X (Twitter) search tool with OAuth-or-API-key auth. The Microsoft Teams stack is wired end-to-end (Graph auth + webhook listener + pipeline runtime + outbound delivery). A debloating wave makes installs dramatically lighter — heavyweight backends now lazy-install on first use, the <code>[all]</code> extras drop everything covered by lazy-deps, and a tiered install falls back when a wheel rejects on your platform. <code>pip install hermes-agent</code> works from PyPI. The cold-start wave shaves ~19 seconds off <code>hermes</code> launch. Browser CDP calls are 180x faster. Two new messaging platforms (LINE + SimpleX Chat) bring the total to 22. Cross-session 1-hour Claude prompt caching, <code>/handoff</code> that actually transfers sessions live, native button UI for <code>clarify</code> on Telegram and Discord, Discord channel history backfill, LSP semantic diagnostics on every write, a unified pluggable <code>video_generate</code>, a <code>computer_use</code> cua-driver backend that finally works with non-Anthropic providers, clickable URLs in any terminal, Zed ACP Registry integration via <code>uvx</code>, native Windows beta, 9 new optional skills, OpenRouter Pareto Code router, huggingface/skills as a trusted default tap. 12 P0 + 50 P1 closures.</p> </blockquote> <hr> <h2>✨ Highlights</h2> <ul> <li><p><strong>xAI Grok via SuperGrok OAuth — and grok-4.3 jumps to a 1M context window</strong> — If you pay for SuperGrok, you can now use Grok inside Hermes by signing in with your xAI account — no API key, no separate billing. The wire-through also bumps grok-4.3 to a 1M token context window, so you can drop whole codebases or research corpora into a single prompt. Includes proper handling for entitlement errors and an SSH-to-tunnel docs page for when you're SSH'd into a remote box and need to complete the OAuth flow. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/26534">#26534</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/26664">#26664</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/26644">#26644</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/26592">#26592</a>)</p> </li> <li><p><strong>OpenAI-compatible local proxy for OAuth providers</strong> — Run <code>hermes proxy</code> and you get a <code>http://localhost:port</code> endpoint that speaks the OpenAI API but is backed by whichever OAuth provider you're signed into — Claude Pro, ChatGPT Pro, SuperGrok. Now any tool that expects an OpenAI-compatible endpoint (Codex CLI, Aider, Cline, Continue, your custom scripts) just works with your existing subscription, no API key required. One subscription, every tool. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/25969">#25969</a>)</p> </li> <li><p><strong><code>x_search</code> — first-class X (Twitter) search tool</strong> — The agent can now search X directly without installing a skill or wiring up a custom integration. Search the timeline, find threads, surface specific posts — straight from the chat. Auth with either your X OAuth login or an API key, whichever you have. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/26763">#26763</a>)</p> </li> <li><p><strong>Microsoft Teams — end-to-end</strong> — Hermes can now read messages from Teams and post back. The full Microsoft Graph stack lands together: auth + client foundation, a webhook listener that receives Teams events, a pipeline plugin runtime, and outbound delivery. Wire up the bot once, then chat to your agent from any Teams channel, DM, or group. (salvages of #21408–#21411) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21922">#21922</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21969">#21969</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/22007">#22007</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/22024">#22024</a>)</p> </li> <li><p><strong>Debloating wave — lighter installs, less you don't use</strong> — A clean <code>pip install hermes-agent</code> used to pull down everything: every messaging adapter SDK, every image-gen SDK, every voice/TTS provider, whether you used them or not. Now those heavy backends (Slack / Matrix / Feishu / DingTalk adapters, hindsight client, codex app-server, Pixverse / Camofox / image-gen SDKs, voice/TTS providers) install automatically the first time you actually use them. The <code>[all]</code> extras drop everything covered by lazy-deps, the installer falls back through tiers when a wheel doesn't fit your platform, and a supply-chain advisory checker scans every install for unsafe versions. Faster installs, smaller disk footprint, fewer transitive vulnerabilities. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/24220">#24220</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/24515">#24515</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/25014">#25014</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/25038">#25038</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/25766">#25766</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21818">#21818</a>)</p> </li> <li><p><strong><code>pip install hermes-agent && hermes</code></strong> — Hermes Agent is now a real PyPI package. No more cloning the repo or running shell installers — one pip command and you're running. The wheel ships with the Ink TUI bundle and the shell launcher, so the full experience comes out of the box. (salvage of <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/26350">#26350</a>) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/26593">#26593</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/26148">#26148</a>)</p> </li> <li><p><strong>Cross-session 1h Claude prompt cache</strong> — When you use Claude through Anthropic, OpenRouter, or Nous Portal, the prompt prefix (system prompt, skills, memory) now caches for an hour across sessions. Start a <code>/new</code> session and the first response comes back faster and cheaper because the cache is still warm from your last session. Background memory review hits the cache too, so it's not paying full price every turn. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/23828">#23828</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/25434">#25434</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/24778">#24778</a>)</p> </li> <li><p><strong>180x faster <code>browser_console</code> evaluations</strong> — When the agent uses the browser tool to inspect a page or run JavaScript, those calls now share one persistent connection to Chrome instead of spinning up a new DevTools session every time. The difference is huge: things that used to take a couple of seconds per call return in milliseconds. Real-world page interactions feel instant. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/23226">#23226</a>)</p> </li> <li><p><strong>Cold-start performance wave — ~19 seconds off <code>hermes</code> launch</strong> — Running <code>hermes</code> used to make you wait through a chunk of import overhead and network calls before you saw a prompt. Now the launch path is mostly deferred: heavy adapters only load when you use them, model catalogs come from disk cache first, doctor checks run in parallel, and <code>chat -q</code> skips the welcome banner entirely. The <code>hermes tools</code> All-Platforms screen alone dropped from 14 seconds to under 1.5 seconds. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/22138">#22138</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/22120">#22120</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/22681">#22681</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/22790">#22790</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/22808">#22808</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/22831">#22831</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/22859">#22859</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/22904">#22904</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/22766">#22766</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/25341">#25341</a>)</p> </li> <li><p><strong>Two new messaging platforms — LINE + SimpleX Chat</strong> — LINE is huge in Japan, Korea, and Taiwan, and now Hermes runs natively on the LINE Messaging API. SimpleX Chat is the privacy-focused decentralized messenger with no user IDs — also wired up as a first-class platform. That brings Hermes to 22 messaging platforms total, so wherever you and your team chat, the agent can be there. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/23197">#23197</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/26232">#26232</a>)</p> </li> <li><p><strong><code>/handoff</code> actually transfers the session live</strong> — Switching models or personalities mid-conversation used to mean losing context or starting over. Now <code>/handoff</code> moves your active session — every message, every tool call, every piece of context — to the target model, persona, or profile, live, without dropping anything. Mid-debugging hand off from a fast model to a deep-reasoning one, or pass a session between profiles for different parts of a task. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/23395">#23395</a>)</p> </li> <li><p><strong>Native button UI for <code>clarify</code> on Telegram and Discord</strong> — When the agent uses the <code>clarify</code> tool to ask you a multiple-choice question, it now shows real platform-native buttons on Telegram and Discord instead of asking you to type back the option number. Tap the button, the agent gets your answer. Especially nice on mobile. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/24199">#24199</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/25485">#25485</a>)</p> </li> <li><p><strong>Discord channel history backfill (default on)</strong> — When Hermes joins a Discord channel or thread for the first time, it now reads the recent message history so it knows what's been said before it responds. No more "what are we talking about?" — the agent has the context that's already on screen for everyone else. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/25984">#25984</a>)</p> </li> <li><p><strong><code>vision_analyze</code> returns pixels to vision-capable models</strong> — When you point the agent at an image with <code>vision_analyze</code> and the active model can actually see (GPT-5, Claude, Gemini, Grok-vision), Hermes now passes the raw pixels straight to the model instead of converting them to a text description first. You get the model's actual visual reasoning instead of a degraded text-summary round-trip. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/22955">#22955</a>)</p> </li> <li><p><strong>Per-turn file-mutation verifier footer</strong> — After every turn that wrote or edited files, the agent now gets a short footer summarizing exactly what changed on disk — the file paths, the line counts, the actual delta. That means the agent catches its own mistakes when a write didn't land or got silently overwritten, instead of confidently telling you "I added the function" when the file wasn't actually saved. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/24498">#24498</a>)</p> </li> <li><p><strong>LSP semantic diagnostics on every write</strong> — When the agent uses <code>write_file</code> or <code>patch</code>, Hermes now runs a real language server against the edited file and surfaces any new errors back to the agent before the next turn. Type errors, undefined symbols, missing imports — caught immediately. Goes way beyond v0.13.0's basic Python/JSON/YAML/TOML linting because it's actual semantic analysis. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/24168">#24168</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/25978">#25978</a>)</p> </li> <li><p><strong>Unified <code>video_generate</code> with pluggable provider backends</strong> — One tool, any video model. Hermes ships with the obvious backends already, but you can drop in a new video provider as a plugin without touching core. So when a new video model lands next month, it can be a one-file plugin instead of a fork. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/25126">#25126</a>)</p> </li> <li><p><strong><code>computer_use</code> cua-driver backend — works with non-Anthropic models now</strong> — Computer-use (the agent controlling your mouse and keyboard to drive GUI apps) used to be locked to Anthropic's SDK. The new cua-driver backend works with non-Anthropic providers too, has proper focus-safe operations, and refreshes itself on <code>hermes update</code>. Now any vision-capable model can drive your desktop. (re-salvage of #16936) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21967">#21967</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/24063">#24063</a>)</p> </li> <li><p><strong>Clickable URLs in any terminal</strong> — Links in agent output are now real OSC8 hyperlinks with hover-highlight in any terminal that supports them. Click to open in your browser — no more copy-paste-trim of long URLs from the transcript. Just works in iTerm2, Kitty, Ghostty, modern Windows Terminal, etc. (@OutThisLife) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/25071">#25071</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/24013">#24013</a>)</p> </li> <li><p><strong>Zed ACP Registry — <code>uvx</code> install in one click</strong> — Hermes is now listed in Zed's Agent Client Protocol registry, so Zed users can install it with one click. The install path uses <code>uvx</code> so there's no npm dependency. <code>hermes acp --setup-browser</code> bootstraps the browser tools for registry-driven installs. (salvage of <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/25908">#25908</a>) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/26079">#26079</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/26120">#26120</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/26234">#26234</a>)</p> </li> <li><p><strong>OpenRouter Pareto Code router with <code>min_coding_score</code> knob</strong> — OpenRouter's "Pareto" router automatically picks the cheapest model that meets a minimum quality bar. The new <code>min_coding_score</code> config lets you set that bar for coding tasks specifically — Hermes routes to the most affordable model that's at least that good at code. Stop paying for top-tier models when a mid-tier one would do. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/22838">#22838</a>)</p> </li> <li><p><strong>NovitaAI as a new model provider</strong> — NovitaAI joins the provider lineup, giving you another option for open-source model hosting (Llama, Qwen, DeepSeek, etc.) with their pricing and rate limits. (salvage #7219) (@kshitijk4poor) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/25507">#25507</a>)</p> </li> <li><p><strong>Codex app-server runtime for OpenAI/Codex models</strong> — An optional runtime that drives OpenAI's Codex CLI under the hood when you're using OpenAI or Codex paths. You get session reuse, automatic retirement of wedged sessions, and proper OAuth refresh classification — the kind of plumbing that makes long agentic runs not fall over. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/24182">#24182</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/25769">#25769</a>)</p> </li> <li><p><strong><code>huggingface/skills</code> as a trusted default tap</strong> — The community skills index hosted at huggingface.co/skills is now wired into the Skills Hub by default. So when somebody publishes a useful skill there, you can install it from your own <code>hermes skills</code> browser without any extra config. (closes #2549) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/26219">#26219</a>)</p> </li> <li><p><strong>9 new optional skills</strong> — Hyperliquid (perp + spot trading via the SDK and REST API), Yahoo Finance (live market data, fundamentals, historicals), api-testing (REST + GraphQL debug recipes), unified EVM multi-chain (one skill covers Ethereum + L2s + Base), darwinian-evolver (evolutionary prompt/skill tuning), osint-investigation (OSINT recipes for people / domains / orgs), pinggy-tunnel (expose local services to the public internet), watchers (polls RSS / HTTP JSON / GitHub via cron <code>no_agent</code> mode for change detection), and a full Notion overhaul for the May 2026 Developer Platform. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/23582">#23582</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/23583">#23583</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/23590">#23590</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/25299">#25299</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/26760">#26760</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/26729">#26729</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/26765">#26765</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21881">#21881</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/26612">#26612</a>)</p> </li> <li><p><strong>API server exposes run approval events</strong> — If you're driving Hermes programmatically through the HTTP API, long-running runs no longer silently hang when the agent hits an approval-required command. The approval request now surfaces on the API stream so your client can prompt the user and reply — no more silent stalls. (salvage of <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20311">#20311</a>) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21899">#21899</a>)</p> </li> <li><p><strong>Plugins can run any LLM call via <code>ctx.llm</code> + replace built-in tools via <code>tool_override</code></strong> — If you're writing a Hermes plugin, you now get first-class access to make LLM calls through the active provider and credentials — no manual client wiring. The new <code>tool_override</code> flag lets a plugin swap out a built-in tool with its own implementation cleanly. Plugin authors get the same model-routing and auth plumbing the core agent uses. (closes #11049) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/23194">#23194</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/26759">#26759</a>)</p> </li> <li><p><strong>Brave Search (free tier) + DuckDuckGo (DDGS) as web-search providers</strong> — Two new free web-search backends join Tavily, SearXNG, and Exa. Brave Search has a generous free tier; DDGS is the DuckDuckGo scraper that needs no key at all. Pick whichever fits your budget and rate-limit needs. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21337">#21337</a>)</p> </li> <li><p><strong>Sudo brute-force block + 3 dangerous-command bypasses closed + tool-error sanitization</strong> — The approval gate now blocks <code>sudo -S</code> brute-force attempts and classifies stdin-fed or askpass-stripped sudo invocations as DANGEROUS. Three known bypasses of dangerous-command detection are closed (inspired by Claude Code's command-detection work). And tool error strings are now sanitized before being re-injected into the model context, so a malicious file or remote service can't pass instructions to your agent through error output. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/23736">#23736</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/26829">#26829</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/26823">#26823</a>)</p> </li> <li><p><strong><code>/subgoal</code> — user-added criteria appended to an active <code>/goal</code></strong> — When you've got a <code>/goal</code> running (the persistent Ralph-loop goal where the agent keeps going until criteria are met), you can now use <code>/subgoal <text></code> to layer extra success criteria onto it mid-run. The judge factors your new criteria into the done-or-keep-going decision without restarting the loop. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/25449">#25449</a>)</p> </li> <li><p><strong>Provider rename — Alibaba Cloud → Qwen Cloud</strong> — The Alibaba Cloud provider is renamed to Qwen Cloud in the picker and config to match what the rest of the world calls it. Existing config keys still work — no breaking changes — but the UI matches the actual brand now. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/24835">#24835</a>)</p> </li> <li><p><strong>Native Windows support (early beta)</strong> — Hermes now runs natively on <code>cmd.exe</code> and PowerShell without WSL. A full PowerShell installer handles MinGit auto-install, Microsoft Store python stub detection, and the foreground Ctrl+C dance. There's still rough edges (this is the "early beta" stamp) — ~40 follow-up Windows-only fixes already landed in the window — but the basic loop works end-to-end on a clean Windows box. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21561">#21561</a>)</p> </li> </ul> <hr> <h2>🪟 Windows — Native Support (Early Beta)</h2> <h3>Bootstrap & installer</h3> <ul> <li><strong>Native Windows support (early beta)</strong> — first-class native Windows path across CLI / gateway / TUI / tools (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21561">#21561</a>)</li> <li><strong>PyPI wheel packaging — <code>pip install hermes-agent && hermes</code></strong> (salvage of #26350) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/26593">#26593</a>)</li> <li><strong>Recognise Shift+Enter as a newline key</strong> + Windows docs (salvage #21545) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/22130">#22130</a>)</li> <li><strong>Preserve Ctrl+C for Windows foreground runs</strong> (@helix4u) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/22752">#22752</a>)</li> <li><strong>Stop spamming cwd-missing + tirith-spawn warnings on every terminal call</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/26618">#26618</a>)</li> <li><strong>Use <code>--extra all</code> not <code>--all-extras</code>; drop lazy-covered extras from <code>[all]</code></strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/24515">#24515</a>)</li> </ul> <h3>Windows-specific fixes (40+ across cli / tools / gateway / curator / TUI)</h3> <p>A long tail of native-Windows fixes shipped alongside the beta — taskkill-based subprocess management, MinGit auto-install, Microsoft Store python stub detection, npm prefix handling, native PTY paths, signal handling differences, foreground process management, ANSI sequence handling, path normalization, file-locking semantics, and many more. Full list in commit log under <code>fix(windows)</code> / <code>feat(windows)</code> / <code>windows</code>.</p> <hr> <h2>🚀 Performance Wave</h2> <h3>Cold start</h3> <ul> <li><strong>Cut ~19s from <code>hermes</code> cold start</strong> — skills cache + lazy Feishu + no Nous HTTP at startup (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/22138">#22138</a>)</li> <li><strong>Skip eager plugin discovery on known built-in subcommands</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/22120">#22120</a>)</li> <li><strong>Cache Nous auth + .env loads</strong> — <code>hermes tools</code> All Platforms from 14s to <1.5s (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/25341">#25341</a>)</li> <li><strong>Skip welcome banner on <code>chat -q</code> single-query mode</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/22904">#22904</a>)</li> <li><strong>Defer heavy google-cloud imports in google_chat to first adapter use</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/22681">#22681</a>)</li> <li><strong>Defer QQAdapter and YuanbaoAdapter imports via PEP 562</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/22790">#22790</a>)</li> <li><strong>Defer httpx import in teams to first webhook call</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/22831">#22831</a>)</li> <li><strong>Defer fal_client import to first generation request</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/22859">#22859</a>)</li> <li><strong>models.dev cache-first lookup, skip network when disk cache is fresh</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/22808">#22808</a>)</li> <li><strong>Parallelize API connectivity checks in <code>hermes doctor</code> and disable IMDS</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/22766">#22766</a>)</li> </ul> <h3>Runtime</h3> <ul> <li><strong>180x faster <code>browser_console</code> evaluations</strong> — route through supervisor's persistent CDP WebSocket (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/23226">#23226</a>)</li> <li><strong>Tune Telegram cadence + adaptive fast-path for short replies</strong> (salvage of #10388) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/23587">#23587</a>)</li> <li><strong>Accumulate length-continuation prefix via list+join</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/26237">#26237</a>)</li> </ul> <h3>Prompt caching</h3> <ul> <li><strong>Cross-session 1h prefix cache for Claude on Anthropic / OpenRouter / Nous Portal</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/23828">#23828</a>)</li> <li><strong>Hit prefix cache in background review fork</strong> (salvage #17276 + #25427) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/25434">#25434</a>)</li> </ul> <hr> <h2>📦 Installation & Distribution</h2> <h3>PyPI + supply-chain</h3> <ul> <li><strong>PyPI wheel packaging — <code>pip install hermes-agent && hermes</code></strong> (salvage of #26350) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/26593">#26593</a>)</li> <li><strong>Supply-chain advisory checker + lazy-install framework + tiered install fallback</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/24220">#24220</a>)</li> <li><strong>Use <code>--extra all</code> not <code>--all-extras</code>; drop lazy-covered extras from <code>[all]</code></strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/24515">#24515</a>)</li> <li><strong>Skip browser download when system chromium exists</strong> (@helix4u) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/25317">#25317</a>)</li> </ul> <h3>Nix</h3> <ul> <li><strong><code>extraDependencyGroups</code> for sealed venv extras</strong> (@alt-glitch) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21817">#21817</a>)</li> <li><strong>Refresh npm lockfile hashes</strong> — keeps Nix flake builds reproducible</li> </ul> <h3>Docker</h3> <ul> <li><strong>Bootstrap auth.json from env on first boot</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21880">#21880</a>)</li> <li><strong>Drop manual @hermes/ink build, rely on esbuild bundle</strong> — slimmer image</li> </ul> <h3>ACP / Zed</h3> <ul> <li><strong>Zed ACP Registry integration</strong> (salvage of #25908) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/26079">#26079</a>)</li> <li><strong>Switch to uvx distribution, drop npm launcher</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/26120">#26120</a>)</li> <li><strong><code>hermes acp --setup-browser</code> bootstraps browser tools for registry installs</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/26234">#26234</a>)</li> </ul> <hr> <h2>🏗️ Core Agent & Architecture</h2> <h3>Sessions & handoff</h3> <ul> <li><strong><code>/handoff</code> actually transfers the session live</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/23395">#23395</a>)</li> <li><strong>Expose <code>HERMES_SESSION_ID</code> env var to agent tools</strong> (@alt-glitch) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/23847">#23847</a>)</li> </ul> <h3>Goals (Ralph loop)</h3> <ul> <li><strong><code>/subgoal</code> — user-added criteria appended to active <code>/goal</code></strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/25449">#25449</a>)</li> <li><strong><code>/goal</code> checklist + /subgoal user controls</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/23456">#23456</a>) — rolled back in window (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/23813">#23813</a>); /subgoal returned in simpler form via #25449</li> </ul> <h3>Compression</h3> <ul> <li><strong>Make <code>protect_first_n</code> configurable</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/25447">#25447</a>)</li> </ul> <h3>Verification</h3> <ul> <li><strong>Per-turn file-mutation verifier footer</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/24498">#24498</a>)</li> </ul> <h3>Stream retry</h3> <ul> <li><strong>Log inner cause, upstream headers, bytes/elapsed on every drop</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/23005">#23005</a>)</li> </ul> <hr> <h2>🤖 Models & Providers</h2> <h3>New providers</h3> <ul> <li><strong>xAI Grok OAuth (SuperGrok Subscription) provider</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/26534">#26534</a>)</li> <li><strong>NovitaAI provider</strong> (salvage #7219) (@kshitijk4poor) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/25507">#25507</a>)</li> <li><strong>NVIDIA NIM billing origin header</strong> (salvage #25211) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/26585">#26585</a>)</li> </ul> <h3>Provider work</h3> <ul> <li><strong>OpenRouter Pareto Code router with <code>min_coding_score</code> knob</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/22838">#22838</a>)</li> <li><strong>Optional codex app-server runtime for OpenAI/Codex models</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/24182">#24182</a>)</li> <li><strong>Codex-runtime: retire wedged sessions + post-tool watchdog + OAuth refresh classify</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/25769">#25769</a>)</li> <li><strong>Codex-runtime: skip unavailable plugins during migration</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/25437">#25437</a>)</li> <li><strong>Codex-runtime: de-dup <code>[plugins.X]</code> tables and stop leaking HERMES_HOME into config.toml</strong> (#26250) (@kshitijk4poor) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/26260">#26260</a>)</li> <li><strong>Pass <code>reasoning.effort</code> to xAI Responses API</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/22807">#22807</a>)</li> <li><strong>Custom provider: prompt and persist explicit <code>api_mode</code></strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/25068">#25068</a>)</li> <li><strong>Rename Alibaba Cloud → Qwen Cloud, reorder picker</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/24835">#24835</a>)</li> <li><strong>Restore gpt-5.3-codex-spark for ChatGPT Pro</strong> (salvage #18286 + #19530, fixes #16172) (@kshitijk4poor) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/22991">#22991</a>)</li> <li><strong>Inject tool-use enforcement for GLM models</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/24715">#24715</a>)</li> <li><strong>Use Nous Portal as model metadata authority</strong> (@rob-maron) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/24502">#24502</a>)</li> <li><strong>Unified <code>client=hermes-client-v<version></code> tag on every Portal request</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/24779">#24779</a>)</li> <li><strong>Prevent stale Ollama credentials after provider switch</strong> (@kshitijk4poor) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21703">#21703</a>)</li> <li><strong>Auxiliary client: rotate pooled auth after quota failures</strong> (salvage #22779) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/22792">#22792</a>)</li> <li><strong>Auxiliary client: skip providers without credentials immediately</strong> (#25395) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/25487">#25487</a>)</li> <li><strong>Auth: send Nous refresh token via header</strong> (@shannonsands) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21578">#21578</a>)</li> <li><strong>MiniMax: harden OAuth dashboard and runtime</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/24165">#24165</a>)</li> </ul> <h3>OpenAI-compatible proxy</h3> <ul> <li><strong>Local OpenAI-compatible proxy for OAuth providers</strong> — Codex / Aider / Cline can hit Claude Pro, ChatGPT Pro, SuperGrok (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/25969">#25969</a>)</li> </ul> <hr> <h2>📱 Messaging Platforms (Gateway)</h2> <h3>New platforms</h3> <ul> <li><strong>LINE Messaging API platform plugin</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/23197">#23197</a>)</li> <li><strong>SimpleX Chat platform plugin</strong> (salvages #2558) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/26232">#26232</a>)</li> </ul> <h3>Microsoft Graph foundation</h3> <ul> <li><strong>msgraph: add auth and client foundation</strong> (salvage of #21408) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21922">#21922</a>)</li> <li><strong>msgraph: add webhook listener platform</strong> (salvage of #21409) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21969">#21969</a>)</li> <li><strong>teams-pipeline: add plugin runtime and operator cli</strong> (salvage of #21410) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/22007">#22007</a>)</li> <li><strong>teams: add pipeline outbound delivery via existing adapter</strong> (salvage of #21411) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/22024">#22024</a>)</li> </ul> <h3>Cross-platform</h3> <ul> <li><strong>Per-platform admin/user split for slash commands</strong> (salvage of #4443) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/23373">#23373</a>)</li> <li><strong>Forensics on signal handling — non-blocking diag, per-phase timing, stale-unit warning</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/23285">#23285</a>)</li> <li><strong>Keep gateway running when platforms fail; add per-platform circuit breaker + <code>/platform</code></strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/26600">#26600</a>)</li> <li><strong>Wire <code>clarify</code> tool with inline keyboard buttons on Telegram</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/24199">#24199</a>)</li> <li><strong>Add <code>chat_id</code> to <code>hook_ctx</code> for message source tracking</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/24710">#24710</a>)</li> </ul> <h3>Telegram</h3> <ul> <li><strong>Native draft streaming via <code>sendMessageDraft</code> (Bot API 9.5+)</strong> (salvage of #3412) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/23512">#23512</a>)</li> <li><strong>Stream Telegram edits safely</strong> — salvage of #22264 (@kshitijk4poor) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/22518">#22518</a>)</li> <li><strong>Telegram notification mode</strong> (salvage #22772) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/22793">#22793</a>)</li> <li><strong>Telegram guest mention mode</strong> (@kshitijk4poor) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/22759">#22759</a>)</li> <li><strong>Split-and-deliver oversized edits instead of silent truncation</strong> (salvage of #19537) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/23576">#23576</a>)</li> <li><strong>Preserve DM topic routing via reply fallback</strong> (salvage #22053) (@kshitijk4poor) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/22410">#22410</a>)</li> <li><strong>Pass <code>source.thread_id</code> explicitly on auto-reset notice</strong> (carve-out of #7404) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/23440">#23440</a>)</li> </ul> <h3>Discord</h3> <ul> <li><strong>Render clarify choices as buttons</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/25485">#25485</a>)</li> <li><strong>Channel history backfill — default on, broadened scope</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/25984">#25984</a>)</li> <li><strong><code>thread_require_mention</code> for multi-bot threads</strong> (salvage #25313) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/25445">#25445</a>)</li> </ul> <h3>Slack</h3> <ul> <li><strong>Support <code>!cmd</code> as alternate prefix for slash commands in threads</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/25355">#25355</a>)</li> </ul> <h3>WhatsApp</h3> <ul> <li><strong>Surface quoted reply metadata from Baileys</strong> (#25398) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/25489">#25489</a>)</li> </ul> <h3>Feishu / Google Chat / others</h3> <ul> <li><strong>Feishu: native update prompt cards</strong> (@kshitijk4poor) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/22448">#22448</a>)</li> <li><strong>Google Chat: repair setup prompt imports</strong> (@helix4u) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/22038">#22038</a>)</li> <li><strong>Google Chat: honor relay-declared sender_type</strong> (salvage of #22107) (@kshitijk4poor) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/22432">#22432</a>)</li> <li><strong>LINE: use <code>build_source</code> instead of nonexistent <code>create_source</code></strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/24717">#24717</a>)</li> <li><strong>Add <code>weixin, and more</code> to gateway docs</strong> (salvage of #21063 by @wuwuzhijing)</li> </ul> <hr> <h2>🖥️ CLI & TUI</h2> <h3>CLI</h3> <ul> <li><strong>Show YOLO mode warning in banner and status bar</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/26238">#26238</a>)</li> <li><strong>Confirm prompt for destructive slash commands</strong> (#4069) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/22687">#22687</a>)</li> <li><strong><code>docker_extra_args</code> + <code>display.timestamps</code></strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/23599">#23599</a>)</li> <li><strong>Delegate tool: show user's actual concurrency / spawn-depth limits in description</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/22694">#22694</a>)</li> </ul> <h3>TUI</h3> <ul> <li><strong><code>/sessions</code> slash command for browsing and resuming previous sessions</strong> (@austinpickett) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20805">#20805</a>)</li> <li><strong>Segment turns with rule above non-first user msgs; trim ticker dead space</strong> (@OutThisLife) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21846">#21846</a>)</li> <li><strong>Support attaching to an existing gateway</strong> (@OutThisLife) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21978">#21978</a>)</li> <li><strong>Resolve markdown links to readable page titles</strong> (@OutThisLife) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/24013">#24013</a>)</li> <li><strong>Width-aware markdown table rendering with vertical fallback</strong> (@alt-glitch) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/26195">#26195</a>)</li> <li><strong>Keep Ink displayCursor in sync with fast-echo writes so cursor stops drifting</strong> (@OutThisLife) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/26717">#26717</a>)</li> <li><strong>Allow transcript scroll + Esc during approval/clarify/confirm prompts</strong> (@OutThisLife) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/26414">#26414</a>)</li> <li><strong>Preserve session when switching personality</strong> (@austinpickett) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20942">#20942</a>)</li> <li><strong>Skip native safety net on OSC52-capable terminals</strong> (@benbarclay) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20954">#20954</a>)</li> </ul> <h3>Dashboard / GUI</h3> <ul> <li><strong>Route embedded TUI through dashboard gateway</strong> (@OutThisLife) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21979">#21979</a>)</li> <li><strong>Hide token/cost analytics behind config flag (default off)</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/25438">#25438</a>)</li> <li><strong>Fix Langfuse observability — trace I/O, tool outputs, placeholder credentials</strong> (closes #22342, #22763) (@kshitijk4poor) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/26320">#26320</a>)</li> <li><strong>MiniMax 'Login' button launched Claude OAuth</strong> (salvage #22849) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/24058">#24058</a>)</li> <li><strong>Update cron modals</strong> (@austinpickett) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/25985">#25985</a>)</li> <li><strong>Analytics: prevent silent token loss and add Claude 4.5–4.7 pricing</strong> (@austinpickett) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21455">#21455</a>)</li> </ul> <hr> <h2>🔧 Tools & Capabilities</h2> <h3>Vision & video</h3> <ul> <li><strong><code>vision_analyze</code> returns pixels to vision-capable models</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/22955">#22955</a>)</li> <li><strong>Unified <code>video_generate</code> with pluggable provider backends</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/25126">#25126</a>)</li> <li><strong><code>image_gen</code>: actionable setup message when no FAL backend is reachable</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/26222">#26222</a>)</li> </ul> <h3>Computer use</h3> <ul> <li><strong><code>computer_use</code> cua-driver backend + focus-safe ops + non-Anthropic provider fix</strong> (re-salvage #16936) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21967">#21967</a>)</li> <li><strong>Refresh cua-driver on <code>hermes update</code> + add <code>install --upgrade</code></strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/24063">#24063</a>)</li> </ul> <h3>LSP & write-time diagnostics</h3> <ul> <li><strong>Semantic diagnostics from real language servers in <code>write_file</code>/<code>patch</code></strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/24168">#24168</a>)</li> <li><strong>Shift baseline diagnostics into post-edit coordinates</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/25978">#25978</a>)</li> </ul> <h3>Search & web</h3> <ul> <li><strong>Brave Search (free tier) and DDGS search providers</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21337">#21337</a>)</li> <li><strong>Bearer auth header for Tavily <code>/crawl</code> endpoint</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/24658">#24658</a>)</li> </ul> <h3>X (Twitter)</h3> <ul> <li><strong>Gated <code>x_search</code> tool with OAuth-or-API-key auth</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/26763">#26763</a>)</li> </ul> <h3>Browser</h3> <ul> <li><strong>Route <code>browser_console</code> eval through supervisor's persistent CDP WS (180x faster)</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/23226">#23226</a>)</li> <li><strong>Support externally managed Camofox sessions</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/24499">#24499</a>)</li> </ul> <h3>MCP</h3> <ul> <li><strong><code>supports_parallel_tool_calls</code> for MCP servers</strong> (salvage of #9944) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/26825">#26825</a>)</li> <li><strong>Codex preset for Codex CLI MCP server</strong> (salvage #22663) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/22679">#22679</a>)</li> <li><strong>Stop retrying initial MCP auth failures</strong> (#25624) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/25776">#25776</a>)</li> </ul> <h3>Google Workspace</h3> <ul> <li><strong>Drive write ops + Docs/Sheets create/append</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21895">#21895</a>)</li> </ul> <h3>Per-turn verifier</h3> <ul> <li><strong>Per-turn file-mutation verifier footer</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/24498">#24498</a>)</li> </ul> <hr> <h2>🧩 Kanban (Multi-Agent)</h2> <ul> <li><strong><code>specify</code> — auxiliary LLM fleshes out triage tasks</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21435">#21435</a>)</li> <li><strong>Orchestrator board tools — <code>kanban_list</code> + <code>kanban_unblock</code></strong> (carve-out of #20568) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/23012">#23012</a>)</li> <li><strong><code>stranded_in_ready</code> diagnostic for unclaimed tasks</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/23578">#23578</a>)</li> <li><strong>Dashboard batch QOL upgrade</strong> (salvage of #23240) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/23550">#23550</a>)</li> <li><strong>Tooltips and docs link across dashboard</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21541">#21541</a>)</li> <li><strong>Dedupe notifier delivery via atomic claim + rewind on failure</strong> (salvage #22558) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/23401">#23401</a>)</li> <li><strong>Keep notifier subscriptions alive across retry cycles</strong> (salvage #21398) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/23423">#23423</a>)</li> <li><strong>Drop caller-controlled author override in <code>kanban_comment</code></strong> (salvage of #22109) (@kshitijk4poor) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/22435">#22435</a>)</li> <li><strong>Sanitize comment author rendering in <code>build_worker_context</code></strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/22769">#22769</a>)</li> </ul> <hr> <h2>🧠 Plugins & Extension</h2> <h3>Plugin surface</h3> <ul> <li><strong>Run any LLM call from inside a plugin via <code>ctx.llm</code></strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/23194">#23194</a>)</li> <li><strong><code>tool_override</code> flag for replacing built-in tools</strong> (closes #11049) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/26759">#26759</a>)</li> <li><strong><code>standalone_sender_fn</code> for out-of-process cron delivery</strong> (@kshitijk4poor) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/22461">#22461</a>)</li> <li><strong><code>HERMES_PLUGINS_DEBUG=1</code> surfaces plugin discovery logs</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/22684">#22684</a>)</li> <li><strong>Hindsight-client as optional dependency</strong> (@alt-glitch) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21818">#21818</a>)</li> </ul> <h3>Profile & distribution</h3> <ul> <li><strong>Shareable profile distributions via git</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20831">#20831</a>)</li> </ul> <hr> <h2>⏰ Cron</h2> <ul> <li><strong>Routing intent — <code>deliver=all</code> fans out to every connected channel</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21495">#21495</a>)</li> <li><strong>Support name-based lookup for job operations</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/26231">#26231</a>)</li> <li><strong>Blank Cron dashboard tab + partial-record crashes</strong> (salvage #21042 + #22330) (@kshitijk4poor) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/22389">#22389</a>)</li> <li><strong>Do not seed <code>HERMES_SESSION_*</code> contextvars from cron origin</strong> (salvage of #22356) (@kshitijk4poor) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/22382">#22382</a>)</li> <li><strong>Scan assembled prompt including skill content for prompt injection</strong> (#3968)</li> </ul> <hr> <h2>🧩 Skills Ecosystem</h2> <h3>Skills Hub</h3> <ul> <li><strong><code>hermes-skills/huggingface</code> as a trusted default tap</strong> (closes #2549) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/26219">#26219</a>)</li> <li><strong>Show per-skill pages in the left sidebar</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/26646">#26646</a>)</li> <li><strong>Richer info panels on the Skills Hub</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/22905">#22905</a>)</li> <li><strong>Refuse <code>skill_view</code> name collisions instead of guessing</strong> (closes #6136 @polkn)</li> </ul> <h3>Curator</h3> <ul> <li><strong>Show rename map in user-visible summary</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/22910">#22910</a>)</li> <li><strong>Hint at <code>hermes curator pin</code> in the rename block</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/23212">#23212</a>)</li> </ul> <h3>New optional skills</h3> <ul> <li><strong>Hyperliquid</strong> — perp/spot trading via SDK + REST (salvage of #1952) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/23583">#23583</a>)</li> <li><strong>Yahoo Finance</strong> market data (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/23590">#23590</a>)</li> <li><strong>api-testing</strong> (REST/GraphQL debug, salvages #1800) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/23582">#23582</a>)</li> <li><strong>Unified EVM multi-chain skill</strong> (salvages #25291 + #2010 + folds in base/) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/25299">#25299</a>)</li> <li><strong>darwinian-evolver</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/26760">#26760</a>)</li> <li><strong>osint-investigation</strong> (closes #355) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/26729">#26729</a>)</li> <li><strong>pinggy-tunnel</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/26765">#26765</a>)</li> <li><strong>watchers</strong> — RSS / HTTP JSON / GitHub polling via cron no-agent (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21881">#21881</a>)</li> <li><strong>Notion overhaul for the Developer Platform</strong> (May 2026) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/26612">#26612</a>)</li> </ul> <hr> <h2>🔒 Security & Reliability</h2> <h3>Security hardening</h3> <ul> <li><strong>Sudo brute-force block + sudo-stdin/askpass DANGEROUS</strong> (salvage of #22194 + #21128) (@kshitijk4poor) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/23736">#23736</a>)</li> <li><strong>Drop caller-controlled author override in <code>kanban_comment</code></strong> (salvage of #22109) (@kshitijk4poor) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/22435">#22435</a>)</li> <li><strong>Cover remaining SSRF fetch paths in skills-hub</strong> (salvage #22804) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/22843">#22843</a>)</li> <li><strong>Use credential_pool for custom endpoint model listing probes</strong> (salvage #22810) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/22842">#22842</a>)</li> <li><strong>Require dashboard auth for plugin API routes</strong> (salvage #19541) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/23220">#23220</a>)</li> <li><strong>Sanitize env and redact output in quick commands + remove write-only <code>_pending_messages</code></strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/23584">#23584</a>)</li> <li><strong>Reduce unnecessary <code>shell=True</code> in subprocess calls</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/25149">#25149</a>)</li> <li><strong>Sanitize Google Chat sender_type from relay</strong> (salvage of #22107) (@kshitijk4poor) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/22432">#22432</a>)</li> <li><strong>Supply-chain advisory checker</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/24220">#24220</a>)</li> <li><strong>Rewrite security policy around OS-level isolation as the boundary</strong> (@jquesnelle) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20317">#20317</a>)</li> <li><strong>Remove public security advisory page</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/24253">#24253</a>)</li> </ul> <h3>Reliability — notable bug closures</h3> <ul> <li><strong>SQLite: fall back to <code>journal_mode=DELETE</code> on NFS/SMB/FUSE</strong> (fixes <code>/resume</code> on network mounts) (@kshitijk4poor) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/22043">#22043</a>)</li> <li><strong>Codex-runtime: retire wedged sessions + post-tool watchdog + OAuth refresh classify</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/25769">#25769</a>)</li> <li><strong>Codex-runtime: de-dup <code>[plugins.X]</code> tables and stop leaking HERMES_HOME</strong> (#26250) (@kshitijk4poor) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/26260">#26260</a>)</li> <li><strong>Daytona: migrate legacy-sandbox lookup to cursor-based <code>list()</code></strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/24587">#24587</a>)</li> <li><strong>MCP: stop retrying initial MCP auth failures</strong> (#25624) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/25776">#25776</a>)</li> <li><strong>Gateway: enable text-intercept for multi-choice clarify fallback</strong> (#25587) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/25778">#25778</a>)</li> <li><strong>Gateway: keep running when platforms fail; per-platform circuit breaker + <code>/platform</code></strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/26600">#26600</a>)</li> <li><strong>Delegate: salvage #21933 JSON-string batch + diagnostic logging</strong> (@kshitijk4poor) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/22436">#22436</a>)</li> <li><strong>Profiles+banner: exclude infrastructure from <code>--clone-all</code> + fix stale update-check repo resolution</strong> (@kshitijk4poor) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/22475">#22475</a>)</li> <li><strong>ACP: inline file attachment resources</strong> (salvage #21400 + image support) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21407">#21407</a>)</li> <li><strong>CI: unblock shared PR checks</strong> (@stephenschoettler) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21012">#21012</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/25957">#25957</a>)</li> </ul> <h3>Notable reverts in window</h3> <ul> <li><strong><code>/goal</code> checklist + /subgoal feature stack</strong> — rolled back (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/23813">#23813</a>); <code>/subgoal</code> returned in simpler form via <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/25449">#25449</a></li> <li><strong>Scrollback box width clamp</strong> (#25975) rolled back to restore full-width borders (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/26163">#26163</a>)</li> <li><strong><code>fix(cli): tolerate unreadable dirs when building systemd PATH</code></strong> rolled back</li> </ul> <hr> <h2>🌍 i18n</h2> <ul> <li><strong>Localize all gateway commands + web dashboard, add 8 new locales (16 total)</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/22914">#22914</a>)</li> </ul> <hr> <h2>📚 Documentation</h2> <ul> <li><strong>Repair Voice & TTS provider table</strong> (@nightcityblade, fixes #24101) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/24138">#24138</a>)</li> <li><strong>Show per-skill pages in the left sidebar</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/26646">#26646</a>)</li> <li><strong>Mention Weixin in gateway help and docstrings</strong> (salvage of #21063 by @wuwuzhijing)</li> <li><strong>Richer info panels on the Skills Hub</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/22905">#22905</a>)</li> <li>Many more doc updates across providers, platforms, skills, Windows install paths, and dashboard.</li> </ul> <hr> <h2>🧪 Testing & CI</h2> <ul> <li><strong>Unblock shared PR checks</strong> (@stephenschoettler) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21012">#21012</a>)</li> <li><strong>Stabilize shared test state after 21012</strong> (@stephenschoettler) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/25957">#25957</a>)</li> <li>A long tail of test additions for platforms, providers, plugins, and edge cases — 8 explicit <code>test:</code> PRs plus ~250 fix PRs that also added regression coverage.</li> </ul> <hr> <h2>👥 Contributors</h2> <h3>Core</h3> <ul> <li>@teknium1 — release lead, architecture, ~406 PRs merged in window</li> </ul> <h3>Top community contributors</h3> <ul> <li><strong>@kshitijk4poor</strong> — 38 PRs · Telegram cadence/streaming/topic routing, security hardening (sudo, SSRF, kanban_comment, dashboard auth), codex-runtime hygiene, NovitaAI provider, profile/banner fixes, Feishu update cards, gateway QOL across the board</li> <li><strong>@alt-glitch</strong> — 13 PRs · Markdown-table TUI rendering, <code>HERMES_SESSION_ID</code> env var, hindsight-client optional dep, Nix <code>extraDependencyGroups</code></li> <li><strong>@OutThisLife</strong> (Brooklyn Nicholson) — 12 PRs · TUI turn segmentation, attach-to-gateway, markdown link titles, embedded TUI via dashboard gateway, Ink cursor sync, scroll/Esc during prompts</li> <li><strong>@austinpickett</strong> — 8 PRs · <code>/sessions</code> slash command, personality switching preserves session, cron modals, dashboard analytics</li> <li><strong>@helix4u</strong> — 5 PRs · Google Chat setup, browser install skip on system chromium, Windows Ctrl+C preservation</li> <li><strong>@rob-maron</strong> — 4 PRs · Nous Portal as model metadata authority, provider polish</li> <li><strong>@stephenschoettler</strong> — 3 PRs · CI stabilization</li> <li><strong>@ethernet8023</strong> — 3 PRs · platform/gateway work</li> </ul> <h3>All contributors (alphabetical)</h3> <p>@02356abc, @0xbyt4, @0xharryriddle, @1000Delta, @1RB, @29206394, @A-kamal, @aashizpoudel, @Abd0r, @adybag14-cyber, @AgentArcLab, @ahmedbadr3, @AhmetArif0, @alblez, @Alex-yang00, @ALIYILD, @AllynSheep, @alt-glitch, @am423, @amathxbt, @amethystani, @ArecaNon, @Arkmusn, @askclaw-vesper, @AsoTora, @austinpickett, @aydnOktay, @ayushere, @baocin, @Bartok9, @benbarclay, @BennetYrWang, @Bihruze, @binhnt92, @briandevans, @brooklynnicholson, @btorresgil, @buntingszn, @CalmProton, @chrisworksai, @CoinTheHat, @dandacompany, @Dangooy, @DanielLSM, @David-0x221Eight, @ddupont808, @dhruv-saxena, @diablozzc, @dlkakbs, @dmahan93, @dmnkhorvath, @domtriola, @donrhmexe, @Dusk1e, @eloklam, @emozilla, @ephron-ren, @erenkarakus, @EthanGuo-coder, @ethernet8023, @evgyur, @explainanalyze, @fahdad, @fr33d3m0n, @Freeman-Consulting, @freqyfreqy, @Frowtek, @fu576, @github-actions[bot], @gnanirahulnutakki, @GodsBoy, @guglielmofonda, @Gutslabs, @hanzckernel, @heathley, @hekaru-agent, @helix4u, @HenkDz, @HiddenPuppy, @hllqkb, @hrygo, @HuangYuChuh, @Hugo-SEQUIER, @HxT9, @iacker, @InB4DevOps, @isaachuangGMICLOUD, @iuyup, @Jaaneek, @jackey8616, @jackjin1997, @Jaggia, @jak983464779, @jelrod27, @jethac, @JithendraNara, @johnisag, @Julientalbot, @Jwd-gity, @kallidean, @keyuyuan, @kfa-ai, @kidonng, @KiraKatana, @kjames2001, @konsisumer, @Korkyzer, @kshitijk4poor, @KvnGz, @lars-hagen, @leehack, @leepoweii, @LeonSGP43, @li0near, @libo1106, @liquidchen, @littlewwwhite, @liuhao1024, @liyoungc, @luandiasrj, @luoyuctl, @luyao618, @magic524, @mbac, @McClean, @memosr, @Mibayy, @ming1523, @mizgyo, @mrshu, @ms-alan, @MustafaKara7, @nederev, @nicoechaniz, @nidhi-singh02, @nightcityblade, @nik1t7n, @Ninso112, @NivOO5, @novax635, @nv-kasikritc, @oferlaor, @oswaldb22, @outdoorsea, @oxngon, @PaTTeeL, @pearjelly, @pefontana, @perng, @PhilipAD, @phuongvm, @polkn, @Prasanna28Devadiga, @princepal9120, @pty819, @purzbeats, @Quarkex, @quocanh261997, @qWaitCrypto, @Qwinty, @rahimsais, @raymaylee, @ReqX, @rewbs, @RhombusMaximus, @rob-maron, @Ruzzgar, @ryptotalent, @Sanjays2402, @shannonsands, @shaun0927, @SiliconID, @silv-mt-holdings, @simpolism, @smwbev, @soichiyo, @sprmn24, @steezkelly, @stephenschoettler, @Sylw3ster, @szymonclawd, @teyrebaz33, @Tianyu199509, @Tranquil-Flow, @TreyDong, @TurgutKural, @tw2818, @tymrtn, @uzunkuyruk, @v1b3coder, @vanthinh6886, @VinceZcrikl, @vKongv, @vominh1919, @voteblake, @VTRiot, @wali-reheman, @wesleysimplicio, @wilsen0, @WorldWriter, @worlldz, @wuli666, @wuwuzhijing, @Wysie, @XiaoXiao0221, @xieNniu, @xxxigm, @yehuosi, @ygd58, @yifengingit, @yuga-hashimoto, @zccyman, @ZeterMordio, @Zhekinmaksim, @zhengyn0001</p> <p>Also: @Nagatha (Claude Opus 4.7).</p> <hr> <p><strong>Full Changelog</strong>: <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/compare/v2026.5.7...v2026.5.16">v2026.5.7...v2026.5.16</a></p> </div><div class="link-row" data-astro-cid-l7qxtvnw><span class="lr-label" data-astro-cid-l7qxtvnw>Links</span><a href="https://github.com/NousResearch/hermes-agent/releases/tag/v2026.5.16" data-astro-cid-l7qxtvnw>GitHub release notes ↗</a><a href="https://github.com/NousResearch/hermes-agent/compare/v2026.5.7...v2026.5.16" data-astro-cid-l7qxtvnw>Full diff ↗</a><a href="/skills/" data-astro-cid-l7qxtvnw>Skill Library →</a><a href="/providers/" data-astro-cid-l7qxtvnw>Providers Reference →</a></div></div></details><details class="rel" data-astro-cid-l7qxtvnw><summary data-astro-cid-l7qxtvnw><span class="r-arrow" data-astro-cid-l7qxtvnw>▶</span><span class="r-ver" data-astro-cid-l7qxtvnw>v0.13.0</span><span class="r-date" data-astro-cid-l7qxtvnw>2026-05-07</span></summary><div class="rel-body" data-astro-cid-l7qxtvnw><p class="r-summary" data-astro-cid-l7qxtvnw>The Tenacity Release — Hermes Agent now finishes what it starts. Kanban ships as a durable multi-agent board (heartbeat, reclaim, zombie detection, auto-block on incomplete exit, per-task retries, hallucination recovery). <code>/goal</code> keeps the agent locked on a target across turns (Ralph loop). Checkpoints v2 rewrites state persistence with real pruning. Gateway auto-resumes interrupted sessions after restart. Cron grows a <code>no_agent</code> watchdog mode. A security wave closes 8 P0s — redaction is now ON by default, Discord role-allowlists are guild-scoped, WhatsApp rejects strangers by default, and TOCTOU windows close across auth.json and MCP OAuth. Google Chat becomes the 20th platform. Providers become a pluggable surface. Seven i18n locales ship.</p><div class="r-notes" data-astro-cid-l7qxtvnw><blockquote> <p>The Tenacity Release — Hermes Agent now finishes what it starts. Kanban ships as a durable multi-agent board (heartbeat, reclaim, zombie detection, auto-block on incomplete exit, per-task retries, hallucination recovery). <code>/goal</code> keeps the agent locked on a target across turns (Ralph loop). Checkpoints v2 rewrites state persistence with real pruning. Gateway auto-resumes interrupted sessions after restart. Cron grows a <code>no_agent</code> watchdog mode. A security wave closes 8 P0s — redaction is now ON by default, Discord role-allowlists are guild-scoped, WhatsApp rejects strangers by default, and TOCTOU windows close across auth.json and MCP OAuth. Google Chat becomes the 20th platform. Providers become a pluggable surface. Seven i18n locales ship.</p> </blockquote> <hr> <h2>✨ Highlights</h2> <ul> <li><p><strong>Multi-agent Kanban — delegate to an AI team that actually finishes</strong> — Spin up a durable board, drop tasks on it, and let multiple Hermes workers pick them up, hand off, and close them out. Heartbeats, reclaim, zombie detection, retry budgets, and a hallucination gate keep the team honest. One install, many kanbans. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17805">#17805</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/19653">#19653</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20232">#20232</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20332">#20332</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21330">#21330</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21183">#21183</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21214">#21214</a>)</p> </li> <li><p><strong><code>/goal</code> — the agent doesn't forget what you asked it to do</strong> — Lock the agent onto a target and it stays on task across turns. The Ralph loop as a first-class primitive. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/18262">#18262</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/18275">#18275</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21287">#21287</a>)</p> </li> <li><p><strong>Show it a video</strong> — new <code>video_analyze</code> tool for native video understanding on Gemini and compatible multimodal models. (@alt-glitch) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/19301">#19301</a>)</p> </li> <li><p><strong>Clone a voice</strong> — xAI Custom Voices lands as a TTS provider with voice cloning support. (@alt-glitch) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/18776">#18776</a>)</p> </li> <li><p><strong>Hermes speaks your language</strong> — static gateway + CLI messages translate to 7 locales: Chinese, Japanese, German, Spanish, French, Ukrainian, and Turkish. Docs site gains a Chinese (zh-Hans) locale. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20231">#20231</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20329">#20329</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20467">#20467</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20474">#20474</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20430">#20430</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20431">#20431</a>)</p> </li> <li><p><strong>Google Chat — the 20th messaging platform</strong> — plus a generic platform-plugin hooks surface so third-party adapters drop in without touching core (IRC and Teams migrated). (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21306">#21306</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21331">#21331</a>)</p> </li> <li><p><strong>Sessions survive restarts</strong> — gateway bounces mid-agent, <code>/update</code> restarts, source-file reloads — conversations auto-resume when the gateway comes back. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21192">#21192</a>)</p> </li> <li><p><strong>Security wave — 8 P0 closures</strong> — redaction ON by default, Discord role-allowlists guild-scoped (CVSS 8.1 cross-guild DM bypass closed), WhatsApp rejects strangers by default, TOCTOU windows closed across <code>auth.json</code> and MCP OAuth, browser enforces cloud-metadata SSRF floor, cron prompt-injection scans assembled skill content, <code>hermes debug share</code> redacts at upload. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21193">#21193</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21241">#21241</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21291">#21291</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21176">#21176</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21194">#21194</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21228">#21228</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21350">#21350</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/19318">#19318</a>)</p> </li> <li><p><strong>Checkpoints v2</strong> — state persistence rewritten. Real pruning, disk guardrails, no more orphan shadow repos. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20709">#20709</a>)</p> </li> <li><p><strong>The agent lints its own writes</strong> — post-write delta lint on <code>write_file</code> + <code>patch</code>. Python, JSON, YAML, TOML. Syntax errors surface immediately instead of shipping downstream. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20191">#20191</a>)</p> </li> <li><p><strong><code>no_agent</code> cron mode — script-only watchdog</strong> — cron jobs can now skip the agent entirely and just run a script. Empty stdout is silent, non-empty gets delivered verbatim. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/19709">#19709</a>)</p> </li> <li><p><strong>Platform allowlists everywhere</strong> — <code>allowed_channels</code> / <code>allowed_chats</code> / <code>allowed_rooms</code> config across Slack, Telegram, Mattermost, Matrix, and DingTalk. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21251">#21251</a>)</p> </li> <li><p><strong>Providers are now plugins</strong> — <code>ProviderProfile</code> ABC + <code>plugins/model-providers/</code>. Drop in third-party providers without touching core. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20324">#20324</a>)</p> </li> <li><p><strong>API server — long-term memory per session</strong> — <code>X-Hermes-Session-Key</code> header gives memory providers a stable session identifier. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20199">#20199</a>)</p> </li> <li><p><strong>MCP levels up</strong> — SSE transport with OAuth forwarding, stale-pipe retries, image results surface as MEDIA tags instead of getting dropped, keepalive on long-lived lifecycle waits. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21227">#21227</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21323">#21323</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21289">#21289</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21328">#21328</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20209">#20209</a>)</p> </li> <li><p><strong>Curator grows subcommands</strong> — <code>hermes curator archive</code>, <code>prune</code>, <code>list-archived</code>. Manual <code>hermes curator run</code> is synchronous now — you see results without polling. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20200">#20200</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21236">#21236</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21216">#21216</a>)</p> </li> <li><p><strong>ACP — <code>/steer</code> and <code>/queue</code></strong> — direct the in-flight agent or queue follow-ups from Zed, VS Code, or JetBrains. Plus atomic session persistence and reasoning-metadata preservation across restarts. (@HenkDz) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/18114">#18114</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20279">#20279</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20296">#20296</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20433">#20433</a>)</p> </li> <li><p><strong>TUI glow-up</strong> — <code>/model</code> picker matches <code>hermes model</code> with inline auth (@austinpickett), collapsible startup banner sections (@kshitijk4poor), context-compression counter in the status bar. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/18117">#18117</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20625">#20625</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21218">#21218</a>)</p> </li> <li><p><strong>Dashboard grows up</strong> — Plugins page (manage, enable/disable, auth status) (@austinpickett), Profiles management page (@vincez-hms-coder), sortable analytics tables, reverse-proxy support via <code>X-Forwarded-Prefix</code>, new <code>default-large</code> 18px theme. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/18095">#18095</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16419">#16419</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/18192">#18192</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21296">#21296</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20820">#20820</a>)</p> </li> <li><p><strong>SearXNG + split web tools</strong> — SearXNG ships as a native search-only backend; web tools now let you pick different backends per capability (search vs extract vs browse). (@kshitijk4poor) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20823">#20823</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20061">#20061</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20841">#20841</a>)</p> </li> <li><p><strong>OpenRouter response caching</strong> — explicit cache control for models that expose it. (@kshitijk4poor) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/19132">#19132</a>)</p> </li> <li><p><strong><code>[[as_document]]</code> — skill media-routing directive</strong> — skills can force the gateway to deliver output as a document on platforms that support it. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21210">#21210</a>)</p> </li> <li><p><strong><code>transform_llm_output</code> plugin hook</strong> — new lifecycle hook that lets plugins reshape or filter LLM output before it hits the conversation. Useful for context-window reducers and content filters. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21235">#21235</a>)</p> </li> <li><p><strong>Nous OAuth persists across profiles</strong> — shared token store: sign in once, every profile inherits the session. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/19712">#19712</a>)</p> </li> <li><p><strong>QQBot — native approval keyboards</strong> — feature parity with Telegram / Discord approval UX. Chunked upload, quoted attachments. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21342">#21342</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21353">#21353</a>)</p> </li> <li><p><strong>6 new optional skills</strong> — Shopify (Admin + Storefront GraphQL), here.now, shop-app personal shopping assistant, Anthropic financial-services bundle, kanban-video-orchestrator (@SHL0MS), searxng-search (@kshitijk4poor). (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/18116">#18116</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/18170">#18170</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20702">#20702</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21180">#21180</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/19281">#19281</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20841">#20841</a>)</p> </li> <li><p><strong>New models</strong> — <code>deepseek/deepseek-v4-pro</code>, <code>x-ai/grok-4.3</code>, <code>openrouter/owl-alpha</code> (free), <code>tencent/hy3-preview</code> (@Contentment003111), Arcee Trinity Large Thinking temperature + compression overrides. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20495">#20495</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20497">#20497</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/18071">#18071</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21077">#21077</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20473">#20473</a>)</p> </li> <li><p><strong>100 fresh CLI startup tips</strong> — the random tip banner gets 100 new entries covering cron, kanban, curator, plugins, and lesser-known flags. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20168">#20168</a>)</p> </li> </ul> <hr> <h2>🧩 Multi-Agent Kanban (Durable)</h2> <h3>New — durable multi-profile collaboration board</h3> <ul> <li><strong><code>feat(kanban): durable multi-profile collaboration board</code></strong> — post-revert reimplementation, multi-profile by design (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17805">#17805</a>)</li> <li><strong>Multi-project boards</strong> — one install, many kanbans (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/19653">#19653</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/19679">#19679</a>)</li> <li><strong>Share board, workspaces, and worker logs across profiles</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/19378">#19378</a>)</li> <li><strong>Hallucination gate + recovery UX for worker-created-card claims</strong> (closes #20017) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20232">#20232</a>)</li> <li><strong>Generic diagnostics engine for task distress signals</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20332">#20332</a>)</li> <li><strong>Per-task <code>max_retries</code> override</strong> (supersedes #20972) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21330">#21330</a>)</li> <li><strong>Multiline textarea for inline-create title</strong> (salvage of #20970) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21243">#21243</a>)</li> </ul> <h3>Kanban Dashboard</h3> <ul> <li><strong>Workspace kind + path inputs in inline create form</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/19679">#19679</a>)</li> <li><strong>Per-platform home-channel notification toggles</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/19864">#19864</a>)</li> <li><strong>Sharper home-channel toggle contrast + drop → running action</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/19916">#19916</a>)</li> <li>Fix: reject direct status transition to 'running' via dashboard API (salvage of #19554) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/19705">#19705</a>)</li> <li>Fix: dashboard board pin authoritative over server current file (#20879) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21230">#21230</a>)</li> <li>Fix: treat dashboard event-stream cancellation as normal shutdown (#20790) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21222">#21222</a>)</li> <li>Fix: filter dashboard board by selected tenant (#19817) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21349">#21349</a>)</li> <li>Fix: code/pre styling theme-immune across all themes (#21086) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21247">#21247</a>)</li> <li>Fix: reset <code><code></code> background inside dashboard board (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20687">#20687</a>)</li> <li>Fix: preserve dashboard completion summaries + add kanban edit (salvages #20016) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20195">#20195</a>)</li> <li>Fix: avoid fragile failure-column renames (salvage #20848) (@kshitijk4poor) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20855">#20855</a>)</li> </ul> <h3>Worker lifecycle + reliability</h3> <ul> <li><strong>Heartbeat + reclaim + zombie + retry-cap fixes</strong> (#21147, #21141, #21169, #20881) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21183">#21183</a>)</li> <li><strong>Auto-block workers that exit without completing + shutdown race</strong> (#20894) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21214">#21214</a>)</li> <li><strong>Detect darwin zombie workers</strong> (salvages #20023) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20188">#20188</a>)</li> <li><strong>Unify failure counter across spawn/timeout/crash outcomes</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20410">#20410</a>)</li> <li><strong>Enforce worker task-ownership on destructive tool calls</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/19713">#19713</a>)</li> <li><strong>Drop worker identity claim from KANBAN_GUIDANCE</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/19427">#19427</a>)</li> <li>Fix: skip dispatch for tasks assigned to non-profile lanes (salvages #20105, #20134) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20165">#20165</a>)</li> <li>Fix: include default profile in on-disk assignee enumeration (salvages #20123) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20170">#20170</a>)</li> <li>Fix: ignore stale current board pointers (salvages #20063) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20183">#20183</a>)</li> <li>Fix: profile discovery ignores HERMES_HOME in custom-root deployments (@jackey8616) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/19020">#19020</a>)</li> <li>Fix: allow orchestrator profiles to see kanban tools via toolsets config (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/19606">#19606</a>)</li> </ul> <h3>Batch salvages</h3> <ul> <li>Tier-1 batch — metadata test, max_spawn config, run-id lifecycle guard (salvages #19522 #19556 #19829) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20440">#20440</a>)</li> <li>Tier-2 batch — doctor, started_at, parent-guard, latest_summary, selects, linked-children (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20448">#20448</a>)</li> </ul> <h3>Documentation</h3> <ul> <li>Backfill multi-board refs in reference docs (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/19704">#19704</a>)</li> <li>Document <code>/kanban</code> slash command (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/19584">#19584</a>)</li> <li>Document recommended handoff evidence metadata (salvage #19512) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20415">#20415</a>)</li> <li>Fix orchestrator + worker skill setup instructions (@helix4u) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20958">#20958</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20960">#20960</a>)</li> </ul> <hr> <h2>🎯 Persistent Goals, Checkpoints & Session Durability</h2> <h3><code>/goal</code> — persistent cross-turn goals (Ralph loop)</h3> <ul> <li><strong><code>feat: /goal — persistent cross-turn goals</code></strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/18262">#18262</a>)</li> <li><strong>Docs page — Persistent Goals (/goal)</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/18275">#18275</a>)</li> <li>Fix: honor configured goal turn budget (salvage #19423) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21287">#21287</a>)</li> </ul> <h3>Checkpoints v2</h3> <ul> <li><strong>Single-store rewrite with real pruning + disk guardrails</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20709">#20709</a>)</li> </ul> <h3>Session durability</h3> <ul> <li><strong>Auto-resume interrupted sessions after gateway restart</strong> (salvage #20888) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21192">#21192</a>)</li> <li><strong>Preserve pending update prompts across restarts</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20160">#20160</a>)</li> <li><strong>Preserve home-channel thread targets across restart notifications</strong> (salvage #18440) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/19271">#19271</a>)</li> <li><strong>Preserve thread routing from cached live session sources</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21206">#21206</a>)</li> <li><strong>Preserve assistant metadata when branching sessions</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/18222">#18222</a>)</li> <li><strong>Preserve thread routing for /update progress and prompts</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/18193">#18193</a>)</li> <li><strong>Preserve document type when merging queued events</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/18215">#18215</a>)</li> </ul> <hr> <h2>🛡️ Security & Reliability</h2> <h3>Security hardening (8 P0 closures)</h3> <ul> <li><strong>Enable secret redaction by default</strong> (#17691, #20785) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21193">#21193</a>)</li> <li><strong>Discord — scope <code>DISCORD_ALLOWED_ROLES</code> to originating guild</strong> (#12136, CVSS 8.1) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21241">#21241</a>)</li> <li><strong>WhatsApp — reject strangers by default, never respond in self-chat</strong> (#8389) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21291">#21291</a>)</li> <li><strong>MCP OAuth — close TOCTOU window when saving credentials</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21176">#21176</a>)</li> <li><strong><code>hermes_cli/auth.py</code> — close TOCTOU window in credential writers</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21194">#21194</a>)</li> <li><strong>Browser — enforce cloud-metadata SSRF floor in hybrid routing</strong> (#16234) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21228">#21228</a>)</li> <li><strong><code>hermes debug share</code> — redact log content at upload time</strong> (@GodsBoy) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/19318">#19318</a>)</li> <li><strong>Cron — scan assembled prompt including skill content for prompt injection</strong> (#3968) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21350">#21350</a>)</li> <li><strong>Restore .env/auth.json/state.db with 0600 perms</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/19699">#19699</a>)</li> <li><strong>SRI integrity for dashboard plugin scripts</strong> (salvage #19389) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21277">#21277</a>)</li> <li><strong>Bind Meet node server to localhost, restrict token file to owner read</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/19597">#19597</a>)</li> <li><strong>Extend sensitive-write target to cover shell RC and credential files</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/19282">#19282</a>)</li> <li><strong>Harden YOLO mode env parsing against quoted-bool strings</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/18214">#18214</a>)</li> <li><strong>OSV-Scanner CI + Dependabot for github-actions only</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20037">#20037</a>)</li> </ul> <h3>Reliability — critical bug closures</h3> <ul> <li><strong>CLI crash on startup — <code>Invalid key 'c-S-c'</code></strong> (P0, prompt_toolkit doesn't support Shift modifier) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/19895">#19895</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/19919">#19919</a>)</li> <li><strong>CLOSE_WAIT fd leak audit</strong> — httpx keepalive + WhatsApp aiohttp leak + Feishu hygiene (#18451) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/18766">#18766</a>)</li> <li><strong>Gateway creates AIAgent with empty OpenRouter API key when OPENROUTER_API_KEY is missing</strong> (#20982) — fallback providers correctly honored</li> <li><strong>Background review + curator protected from overwriting bundled/hub skills</strong> (#20273) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20194">#20194</a>)</li> <li><strong>TUI compression continuation — ghost sessions with incomplete metadata</strong> (#20001)</li> <li><strong><code>hermes mcp add</code> silently launches chat instead of registering MCP server</strong> (#19785) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21204">#21204</a>)</li> <li><strong>Background review agent runtime propagation</strong> — provider/model/credentials now actually inherit from parent</li> <li><strong>Inbound document host paths translated to container paths for Docker backend</strong> (salvage #19048) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21184">#21184</a>)</li> <li><strong>Matrix gateway race between auto-redaction and message delivery with high-speed models</strong> (#19075)</li> <li><strong><code>/new</code> during active agent session never sends response on Telegram</strong> (#18912)</li> </ul> <hr> <h2>📱 Messaging Platforms (Gateway)</h2> <h3>New platform</h3> <ul> <li><strong>Google Chat — 20th platform</strong> + generic <code>env_enablement_fn</code> / <code>cron_deliver_env_var</code> platform-plugin hooks (IRC + Teams migrated) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21306">#21306</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21331">#21331</a>)</li> </ul> <h3>Cross-platform</h3> <ul> <li><strong><code>allowed_{channels,chats,rooms}</code> whitelist</strong> — Slack (salvage #7401), Telegram, Mattermost, Matrix, DingTalk (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21251">#21251</a>)</li> <li><strong>Per-platform <code>gateway_restart_notification</code> flag</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20892">#20892</a>)</li> <li><strong><code>busy_ack_enabled</code> config — suppress ack messages</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/18194">#18194</a>)</li> <li><strong>Auto-delete slash-command system notices after TTL</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/18266">#18266</a>)</li> <li><strong>Opt-in cleanup of temporary progress bubbles</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21186">#21186</a>)</li> <li><strong><code>[[as_document]]</code> directive — skill media routing</strong> (salvage #19069) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21210">#21210</a>)</li> <li><strong><code>hermes gateway list</code> — cross-profile status</strong> (salvage #19129) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21225">#21225</a>)</li> <li><strong>Auto-resume interrupted sessions after restart</strong> (salvage #20888) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21192">#21192</a>)</li> <li><strong>Atomic restart markers + Windows runtime-lock offset</strong> (#17842) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/18179">#18179</a>)</li> <li>Fix: <code>config.yaml</code> wins over <code>.env</code> for agent/display/timezone settings (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/18764">#18764</a>)</li> <li>Fix: auto-restart when source files change out from under us (#17648) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/18409">#18409</a>)</li> <li>Fix: use git HEAD SHA for stale-code check, not file mtimes (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/19740">#19740</a>)</li> <li>Fix: shutdown + restart hygiene — drain timeout, false-fatal, success log (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/18761">#18761</a>)</li> <li>Fix: preserve max_turns after env reload (salvage #19183) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21240">#21240</a>)</li> <li>Fix: exclude ancestor PIDs from gateway process scan (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/19586">#19586</a>)</li> <li>Fix: move quick-command alias dispatch before built-ins (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/19588">#19588</a>)</li> <li>Fix: show other profiles in 'gateway status' to prevent confusion (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/19582">#19582</a>)</li> <li>Fix: include external_dirs skills in Telegram/Discord slash commands (salvage #8790) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/18741">#18741</a>)</li> <li>Fix: match disabled/optional skills by frontmatter slug, not dir name (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/18753">#18753</a>)</li> <li>Fix: read /status token totals from SessionDB (#17158) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/18206">#18206</a>)</li> <li>Fix: snapshot callback generation after agent binds it, not before (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/18219">#18219</a>)</li> <li>Fix: re-inject topic-bound skill after /new or /reset (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/18205">#18205</a>)</li> <li>Fix: isolate pending native image paths by session (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/18202">#18202</a>)</li> <li>Fix: clear queued reload skills notes on new/resume/branch (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/19431">#19431</a>)</li> <li>Fix: hide required-arg commands from Telegram menu (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/19400">#19400</a>)</li> <li>Fix: bridge top-level <code>require_mention</code> to Telegram config (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/19429">#19429</a>)</li> <li>Fix: suppress duplicate voice transcripts (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/19428">#19428</a>)</li> <li>Fix: show friendly error when service is not installed (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/19707">#19707</a>)</li> <li>Fix: read context_length from custom_providers in session info header (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/19708">#19708</a>)</li> <li>Fix: preserve WSL interop PATH in systemd units (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/19867">#19867</a>)</li> <li>Fix: handle planned service stops (salvage #19876) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/19936">#19936</a>)</li> <li>Fix: keep DoH-confirmed Telegram IPs that match system DNS (salvage #17043) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20175">#20175</a>)</li> <li>Fix: load <code>reply_to_mode</code> from config.yaml for Discord + Telegram (salvage #17117) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20171">#20171</a>)</li> <li>Fix: tolerate malformed HERMES_HUMAN_DELAY_* env vars (salvage #16933) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20217">#20217</a>)</li> <li>Fix: deterministic thread eviction preserves newest entries (salvage #13639) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20285">#20285</a>)</li> <li>Fix: don't dead-end setup wizard when only system-scope unit is installed (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20905">#20905</a>)</li> <li>Fix: wait for systemd restart readiness + harden Discord slash-command sync (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20949">#20949</a>)</li> <li>Fix: avoid duplicated Responses history (salvage #18995) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21185">#21185</a>)</li> <li>Fix: surface bootstrap failures to stderr (salvage #21157) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21278">#21278</a>)</li> <li>Fix: log agent task failures instead of silently losing usage data (salvage #21159) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21274">#21274</a>)</li> <li>Fix: log runtime-status write failures with rate-limiting (salvage #21158) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21285">#21285</a>)</li> <li>Fix: reset-failed before every fallback restart so the gateway can't get stranded (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21371">#21371</a>)</li> <li>Fix: Telegram — preserve <code>thread_id=1</code> for forum General typing indicator (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21390">#21390</a>)</li> <li>Fix: batch critical fixes — session resume, /new race, HA WebSocket scheme (@kshitijk4poor) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/19182">#19182</a>)</li> </ul> <h3>Telegram</h3> <ul> <li><strong>DM user-managed multi-session topics</strong> (salvage of #19185) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/19206">#19206</a>)</li> </ul> <h3>Discord</h3> <ul> <li><strong>Message deletion action</strong> (salvage #19052) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21197">#21197</a>)</li> <li>Fix: allow <code>free_response_channels</code> to override <code>DISCORD_IGNORE_NO_MENTION</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/19629">#19629</a>)</li> </ul> <h3>Slack</h3> <ul> <li>Fix: ephemeral slash-command ack, private notice delivery, format_message fixes (@kshitijk4poor) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/18198">#18198</a>)</li> </ul> <h3>WhatsApp</h3> <ul> <li>Fix: load WhatsApp home channel from env overrides (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/18190">#18190</a>)</li> </ul> <h3>Feishu</h3> <ul> <li><strong>Operator-configurable bot admission and mention policy</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/18208">#18208</a>)</li> <li>Fix: force text mode for markdown tables (salvage of #13723 by @WuTianyi123) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20275">#20275</a>)</li> </ul> <h3>Matrix + Email</h3> <ul> <li>Fix: <code>/sethome</code> on Matrix and Email now persists across restarts (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/18272">#18272</a>)</li> </ul> <h3>Teams</h3> <ul> <li><strong>Docs + feat: sidebar + threading with group-chat fallback</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20042">#20042</a>)</li> </ul> <h3>Weixin</h3> <ul> <li>Fix: deduplicate Weixin messages by content fingerprint (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/19742">#19742</a>)</li> </ul> <h3>QQBot</h3> <ul> <li><strong>Port SDK improvements in-tree — chunked upload, approval keyboards, quoted attachments</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21342">#21342</a>)</li> <li><strong>Wire native tool-approval UX via inline keyboards</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21353">#21353</a>)</li> </ul> <hr> <h2>🏗️ Core Agent & Architecture</h2> <h3>Provider & Model Support</h3> <h4>Pluggable providers</h4> <ul> <li><strong>ProviderProfile ABC + <code>plugins/model-providers/</code></strong> — inference providers are now a pluggable surface (salvage of #14424) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20324">#20324</a>)</li> <li><strong><code>list_picker_providers</code></strong> — credential-filtered picker (salvage #13561) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20298">#20298</a>)</li> <li><strong>Remove <code>/provider</code> alias for <code>/model</code></strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20358">#20358</a>)</li> <li><strong>Shared Hermes dotenv loader across CLI + plugins</strong> (salvage #13660) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20281">#20281</a>)</li> <li><strong>Nous OAuth persisted across profiles via shared token store</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/19712">#19712</a>)</li> </ul> <h4>New models</h4> <ul> <li><code>deepseek/deepseek-v4-pro</code> added to OpenRouter + Nous Portal (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20495">#20495</a>)</li> <li><code>x-ai/grok-4.3</code> added to OpenRouter + Nous Portal (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20497">#20497</a>)</li> <li><code>openrouter/owl-alpha</code> (free tier) added to curated OpenRouter list (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/18071">#18071</a>)</li> <li><code>tencent/hy3-preview</code> paid route on OpenRouter (@Contentment003111) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21077">#21077</a>)</li> <li>Arcee Trinity Large Thinking — temperature + compression overrides (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20473">#20473</a>)</li> <li>Rename <code>x-ai/grok-4.20-beta</code> to <code>x-ai/grok-4.20</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/19640">#19640</a>)</li> <li>Demote Vercel AI Gateway to bottom of provider picker (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/18112">#18112</a>)</li> </ul> <h4>Provider configuration</h4> <ul> <li><strong>OpenRouter — response caching support</strong> (@kshitijk4poor) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/19132">#19132</a>)</li> <li><strong><code>image_gen.model</code> from config.yaml honored</strong> (salvage #19376) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21273">#21273</a>)</li> <li>Fix: honor runtime default model during delegate provider resolution (@johnncenae) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17587">#17587</a>)</li> <li>Fix: avoid Bedrock credential probe in provider picker (@helix4u) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/18998">#18998</a>)</li> <li>Fix: drop stale env-var override of persisted provider for cron (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/19627">#19627</a>)</li> <li>Fix: auxiliary curator api_key/base_url into runtime resolution (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/19421">#19421</a>)</li> </ul> <h3>Agent Loop & Conversation</h3> <ul> <li><strong><code>video_analyze</code> — native video understanding tool</strong> (@alt-glitch) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/19301">#19301</a>)</li> <li><strong>Show context compression count in status bar</strong> (CLI + TUI) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21218">#21218</a>)</li> <li><strong>Isolate <code>get_tool_definitions</code> quiet_mode cache + dedup LCM injection</strong> (#17335) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17889">#17889</a>)</li> <li>Fix: warning-first tool-call loop guardrails (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/18227">#18227</a>)</li> <li>Fix: break permanent empty-response loop from orphan tool-tail (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21385">#21385</a>)</li> <li>Fix: propagate ContextVars to concurrent tool worker threads (salvage #16660) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/18123">#18123</a>)</li> <li>Fix: surface self-improvement review summaries across CLI, TUI, and gateway (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/18073">#18073</a>)</li> <li>Fix: serialize concurrent <code>hermes_tools</code> RPC calls from <code>execute_code</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17894">#17894</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17902">#17902</a>)</li> <li>Fix: include system prompt + tool schemas in token estimates for compression (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/18265">#18265</a>)</li> </ul> <h3>Compression</h3> <ul> <li>Fix: skip non-string tool content in dedup pass to prevent AttributeError (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/19398">#19398</a>)</li> <li>Fix: reset <code>_summary_failure_cooldown_until</code> on session reset (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/19622">#19622</a>)</li> <li>Fix: trigger fallback on timeout errors alongside model-unavailable errors (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/19665">#19665</a>)</li> <li>Fix: <code>_prune_old_tool_results</code> boundary direction (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/19725">#19725</a>)</li> <li>Fix: soften summary prompt for content filters (salvage #19456) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21302">#21302</a>)</li> </ul> <h3>Delegate</h3> <ul> <li>Fix: inherit parent fallback_chain in <code>_build_child_agent</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/19601">#19601</a>)</li> <li>Fix: guard <code>_load_config()</code> against <code>delegation: null</code> in config.yaml (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/19662">#19662</a>)</li> <li>Fix: inherit parent api_key when <code>delegation.base_url</code> set without <code>delegation.api_key</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/19741">#19741</a>)</li> <li>Fix: expand composite toolsets before intersection (salvage #19455) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21300">#21300</a>)</li> <li>Fix: correct ACP docs — Claude Code CLI has no --acp flag (salvage #19058) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21201">#21201</a>)</li> </ul> <h3>Session & Memory</h3> <ul> <li><strong>Hindsight — probe API for <code>update_mode='append'</code> to dedupe across processes</strong> (@nicoloboschi) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20222">#20222</a>)</li> </ul> <h3>Curator</h3> <ul> <li><strong><code>hermes curator archive</code> and <code>prune</code> subcommands</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20200">#20200</a>)</li> <li><strong><code>hermes curator list-archived</code></strong> (#20651) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21236">#21236</a>)</li> <li><strong>Synchronous manual <code>hermes curator run</code></strong> (#20555) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21216">#21216</a>)</li> <li>Fix: preserve <code>last_report_path</code> in state (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/18169">#18169</a>)</li> <li>Fix: rewrite cron job skill refs after consolidation (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/18253">#18253</a>)</li> <li>Fix: defer first run + <code>--dry-run</code> preview (#18373) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/18389">#18389</a>)</li> <li>Fix: authoritative <code>absorbed_into</code> on delete + restore cron skill links on rollback (#18671) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/18731">#18731</a>)</li> <li>Fix: prevent false-positive consolidation from substring matching (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/19573">#19573</a>)</li> <li>Fix: only mark agent-created for background-review sediment (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/19621">#19621</a>)</li> <li>Fix: protect hub skills by frontmatter name (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20194">#20194</a>)</li> </ul> <hr> <h2>🔧 Tool System</h2> <h3>File tools</h3> <ul> <li><strong>Post-write delta lint on <code>write_file</code> + <code>patch</code></strong> — in-proc linters for Python, JSON, YAML, TOML (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20191">#20191</a>)</li> </ul> <h3>Cron</h3> <ul> <li><strong><code>no_agent</code> mode — script-only cron jobs (watchdog pattern)</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/19709">#19709</a>)</li> <li><strong><code>context_from</code> chaining docs</strong> (salvage #15724) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20394">#20394</a>)</li> <li>Fix: treat non-dict origin as missing instead of crashing tick (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/19283">#19283</a>)</li> <li>Fix: bump skill usage when cron jobs load skills (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/19433">#19433</a>)</li> <li>Fix: recover null <code>next_run_at</code> jobs (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/19576">#19576</a>)</li> <li>Fix: skip AI call when prerun script produces no output (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/19628">#19628</a>)</li> <li>Fix: expand config.yaml refs during job execution (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/19872">#19872</a>)</li> <li>Fix: serialize <code>get_due_jobs</code> writes to prevent parallel state corruption (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/19874">#19874</a>)</li> <li>Fix: initialize MCP servers before constructing the cron AIAgent (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21354">#21354</a>)</li> </ul> <h3>MCP</h3> <ul> <li><strong>SSE transport support</strong> (salvage #19135) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21227">#21227</a>)</li> <li><strong>Forward OAuth auth + bump <code>sse_read_timeout</code> on SSE transport</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21323">#21323</a>)</li> <li><strong>Retry stale pipe transport failures as session-expired</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21289">#21289</a>)</li> <li><strong>Surface image tool results as MEDIA tags instead of dropping them</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21328">#21328</a>)</li> <li><strong>Periodic keepalive to <code>_wait_for_lifecycle_event</code></strong> (salvage #17016) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20209">#20209</a>)</li> <li>Fix: reconnect on terminated sessions (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/19380">#19380</a>)</li> <li>Fix: decouple AnyUrl import from mcp dependency (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/19695">#19695</a>)</li> <li>Fix: <code>mcp add --command</code> gets distinct argparse dest (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21204">#21204</a>)</li> <li>Fix: clear stale thread interrupt before MCP discovery (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21276">#21276</a>)</li> <li>Fix: report configured timeout in MCP call errors (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21281">#21281</a>)</li> <li>Fix: include exception type in error messages when str(exc) is empty (salvage #19425) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21292">#21292</a>)</li> <li>Fix: re-raise CancelledError explicitly in <code>MCPServerTask.run</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21318">#21318</a>)</li> <li>Fix: coerce numeric tool args defensively in <code>mcp_serve</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21329">#21329</a>)</li> <li>Fix: gate utility stubs on server-advertised capabilities (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21347">#21347</a>)</li> </ul> <h3>Browser</h3> <ul> <li>Fix: allow explicit CDP override without local agent-browser (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/19670">#19670</a>)</li> <li>Fix: inject <code>--no-sandbox</code> for root + AppArmor userns restrictions (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/19747">#19747</a>)</li> <li>Fix: tighten Lightpanda fallback edge cases (@kshitijk4poor) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20672">#20672</a>)</li> </ul> <h3>Web tools</h3> <ul> <li><strong>Per-capability backend selection — search/extract split</strong> (@kshitijk4poor) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20061">#20061</a>)</li> <li><strong>SearXNG native search-only backend</strong> (@kshitijk4poor) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20823">#20823</a>)</li> </ul> <h3>Approval / Tool gating</h3> <ul> <li>Fix: wake blocked gateway approvals on session cleanup (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/18171">#18171</a>)</li> <li>Fix: harden YOLO mode env parsing against quoted-bool strings (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/18214">#18214</a>)</li> <li>Fix: extend sensitive write target to cover shell RC and credential files (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/19282">#19282</a>)</li> </ul> <hr> <h2>🔌 Plugin System</h2> <ul> <li><strong><code>transform_llm_output</code> plugin hook</strong> (salvage of #20813) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21235">#21235</a>)</li> <li><strong>Document <code>env_enablement_fn</code> + <code>cron_deliver_env_var</code> platform-plugin hooks</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21331">#21331</a>)</li> <li><strong>Pluggable surfaces coverage — model-provider guide, full plugin map, opt-in fix</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20749">#20749</a>)</li> <li><strong>Plugin-authoring gaps — image-gen provider guide + publishing a skill tap</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20800">#20800</a>)</li> </ul> <hr> <h2>🧩 Skills Ecosystem</h2> <h3>New optional skills</h3> <ul> <li><strong>Shopify</strong> — Admin + Storefront GraphQL optional skill (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/18116">#18116</a>)</li> <li><strong>here.now</strong> — optional skill (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/18170">#18170</a>)</li> <li><strong>shop-app</strong> — personal shopping assistant (optional) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20702">#20702</a>)</li> <li><strong>Anthropic financial-services bundle</strong> — ported as optional finance skills (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21180">#21180</a>)</li> <li><strong>kanban-video-orchestrator</strong> — creative optional skill (@SHL0MS) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/19281">#19281</a>)</li> <li><strong>searxng-search</strong> — optional skill + Web Search + Extract docs page (@kshitijk4poor) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20841">#20841</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20844">#20844</a>)</li> </ul> <h3>Skill UX</h3> <ul> <li><strong>Linear skill — add Documents support + Python helper script</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20752">#20752</a>)</li> <li><strong>Modernize Obsidian skill to use file tools</strong> (salvage #19332) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20413">#20413</a>)</li> <li><strong>Default custom tool creation to plugins</strong> (@kshitijk4poor) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/19755">#19755</a>)</li> <li><strong>skill_commands cache — rescan on platform scope changes</strong> (salvage #14570 by @LeonSGP43) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/18739">#18739</a>)</li> <li><strong>Skills — additional rescan paths in skill_commands cache</strong> (salvage #19042) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21181">#21181</a>)</li> <li>Fix: regression tests for non-dict metadata in <code>extract_skill_conditions</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/18213">#18213</a>)</li> <li>Docs: explain restoring bundled skills (salvage #19254) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20404">#20404</a>)</li> <li>Docs: document <code>hermes skills reset</code> subcommand (salvage #11544) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20395">#20395</a>)</li> <li>Docs: himalaya v1.2.0 <code>folder.aliases</code> syntax (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/19882">#19882</a>)</li> <li>Point agent at <code>hermes-agent</code> skill + docs site sync (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20390">#20390</a>)</li> </ul> <hr> <h2>🖥️ CLI & User Experience</h2> <h3>CLI</h3> <ul> <li><strong><code>/new</code> accepts optional session name argument</strong> (salvage of #19555) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/19637">#19637</a>)</li> <li><strong>100 new CLI startup tips</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20168">#20168</a>)</li> <li><strong><code>display.language</code> — static message translation</strong> (zh/ja/de/es) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20231">#20231</a>)</li> <li><strong>French (fr) locale</strong> (@Foolafroos) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20329">#20329</a>)</li> <li><strong>Ukrainian (uk) locale</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20467">#20467</a>)</li> <li><strong>Turkish (tr) locale</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20474">#20474</a>)</li> <li>Fix: recover classic CLI output after resize (@helix4u) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20444">#20444</a>)</li> <li>Fix: complete absolute paths as paths (@helix4u) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/19930">#19930</a>)</li> <li>Fix: resolve lazy session creation regressions (#18370 fallout) (@alt-glitch) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20363">#20363</a>)</li> <li>Fix: local backend CLI always uses launch directory (@alt-glitch) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/19334">#19334</a>)</li> <li>Refactor: drop dead c-S-c key binding (follow-up to #19895) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/19919">#19919</a>)</li> </ul> <h3>TUI (Ink)</h3> <ul> <li><strong><code>/model</code> picker overhaul to match <code>hermes model</code> with inline auth</strong> (@austinpickett) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/18117">#18117</a>)</li> <li><strong>Collapsible sections in startup banner</strong> — skills, system prompt, MCP (@kshitijk4poor) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20625">#20625</a>)</li> <li><strong>Show context compression count in status bar</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21218">#21218</a>)</li> <li>Perf: reduce overlay render churn with focused selectors (@OutThisLife) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20393">#20393</a>)</li> <li>Fix: restore voice push-to-talk parity (salvage of #16189 by @Montbra) (@OutThisLife) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20897">#20897</a>)</li> <li>Fix: kanban button (@austinpickett) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/18358">#18358</a>)</li> </ul> <h3>Dashboard</h3> <ul> <li><strong>Plugins page — manage, enable/disable, auth status</strong> (@austinpickett) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/18095">#18095</a>)</li> <li><strong>Profiles management page</strong> (@vincez-hms-coder) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16419">#16419</a>)</li> <li><strong>Interactive column sorting in analytics tables</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/18192">#18192</a>)</li> <li><strong><code>default-large</code> built-in theme with 18px base size</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20820">#20820</a>)</li> <li><strong>Support serving under URL prefix via <code>X-Forwarded-Prefix</code></strong> (salvage #19450) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21296">#21296</a>)</li> <li><strong>Launch dashboard as side-process via <code>HERMES_DASHBOARD=1</code> in Docker</strong> (@benbarclay) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/19540">#19540</a>)</li> <li>Fix: dashboard theme layout shift (@AllardQuek) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17232">#17232</a>)</li> <li>Fix: gateway model picker current context (@helix4u) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20513">#20513</a>)</li> </ul> <h3>Update + setup</h3> <ul> <li><strong><code>hermes update --yes/-y</code> to skip interactive prompts</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/18261">#18261</a>)</li> <li><strong>Restart manual profile gateways after update</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/18178">#18178</a>)</li> </ul> <h3>Profiles</h3> <ul> <li><strong><code>--no-skills</code> flag for empty profile creation</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20986">#20986</a>)</li> </ul> <hr> <h2>🎵 Voice, Image & Media</h2> <ul> <li><strong>xAI Custom Voices — voice cloning</strong> (@alt-glitch) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/18776">#18776</a>)</li> <li><strong>Achievements — share card render on unlocked badges</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/19657">#19657</a>)</li> <li><strong>Refresh systemd unit on gateway boot (not just start/restart)</strong> (@alt-glitch) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/19684">#19684</a>)</li> </ul> <hr> <h2>🔗 API Server & Remote Access</h2> <ul> <li><strong><code>X-Hermes-Session-Key</code> header for long-term memory scoping</strong> (closes #20060) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20199">#20199</a>)</li> </ul> <hr> <h2>🧰 ACP Adapter (VS Code / Zed / JetBrains)</h2> <ul> <li><strong><code>/steer</code> and <code>/queue</code> slash commands</strong> (@HenkDz) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/18114">#18114</a>)</li> <li>Fix: translate Windows cwd for WSL sessions (salvage #18128) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/18233">#18233</a>)</li> <li>Fix: run <code>/steer</code> as a regular prompt on idle sessions (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/18258">#18258</a>)</li> <li>Fix: route Zed thoughts to reasoning + polish tool/context rendering (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/19139">#19139</a>)</li> <li>Fix: atomic session persistence via <code>replace_messages</code> (salvage #13675) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20279">#20279</a>)</li> <li>Fix: preserve assistant reasoning metadata in session persistence (salvage #13575) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20296">#20296</a>)</li> <li>Docs: update VS Code setup for ACP Client extension (salvage #12495) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20433">#20433</a>)</li> </ul> <hr> <h2>🐳 Docker</h2> <ul> <li><strong>Launch dashboard as side-process via <code>HERMES_DASHBOARD=1</code></strong> (@benbarclay) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/19540">#19540</a>)</li> <li><strong>Refuse root gateway runs in official image</strong> (salvage #19215) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21250">#21250</a>)</li> <li><strong>Chown runtime <code>node_modules</code> trees to hermes user</strong> (salvage #19303) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21267">#21267</a>)</li> <li>Fix: exclude compose/profile runtime state from build context (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/19626">#19626</a>)</li> <li>CI: don't cancel overlapping builds, guard <code>:latest</code> (@ethernet8023) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20890">#20890</a>)</li> <li>Test: align Dockerfile contract tests with simplified TUI flow (salvage #19024) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21174">#21174</a>)</li> <li>Docs: connect to local inference servers (vLLM, Ollama) (salvage #12335) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20407">#20407</a>)</li> <li>Docs: document <code>API_SERVER_*</code> env vars (salvage #11758) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20409">#20409</a>)</li> <li>Docs: clarify Docker terminal backend is a single persistent container (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20003">#20003</a>)</li> </ul> <hr> <h2>🐛 Notable Bug Fixes</h2> <h3>Agent</h3> <ul> <li>Fix: recover lazy session creation regressions (#18370 fallout) (@alt-glitch) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20363">#20363</a>)</li> <li>Fix: propagate ContextVars to concurrent tool worker threads (salvage #16660) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/18123">#18123</a>)</li> <li>Fix: warning-first tool-call loop guardrails (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/18227">#18227</a>)</li> <li>Fix: surface self-improvement review summaries across CLI, TUI, and gateway (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/18073">#18073</a>)</li> </ul> <h3>Gateway streaming</h3> <ul> <li>Fix: harden StreamingConfig bool and numeric coercion (@simbam99) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16463">#16463</a>)</li> </ul> <h3>Model</h3> <ul> <li>Fix: avoid Bedrock credential probe in provider picker (@helix4u) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/18998">#18998</a>)</li> </ul> <h3>Doctor</h3> <ul> <li>Fix: check global agent-browser when local install not found (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/19671">#19671</a>)</li> <li>Test: kimi-coding-cn provider validation regression (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/19734">#19734</a>)</li> </ul> <h3>Update</h3> <ul> <li>Fix: patch <code>isatty</code> on real streams to fix xdist-flaky <code>--yes</code> tests (salvage #19026) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21175">#21175</a>)</li> <li>Fix: teach restart-mocks about the post-update survivor sweep (salvage #19031) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21177">#21177</a>)</li> </ul> <h3>Auth</h3> <ul> <li>Fix: acp preserve assistant reasoning metadata (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20296">#20296</a>)</li> </ul> <h3>Redact</h3> <ul> <li>Fix: add <code>code_file</code> param to skip false-positive ENV/JSON patterns (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/19715">#19715</a>)</li> </ul> <h3>Email</h3> <ul> <li>Fix: quoted-relative file-drop paths + Date header on tool email path (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/19646">#19646</a>)</li> </ul> <hr> <h2>🧪 Testing</h2> <ul> <li><strong>ACP — accept prompt persistence kwargs in MCP E2E mocks</strong> (@stephenschoettler) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/18047">#18047</a>)</li> <li><strong>Toolsets — include kanban in expected post-#17805 toolset assertions</strong> (@briandevans) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/18122">#18122</a>)</li> <li><strong>Agent — cover max-iterations summary message sanitization</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/19580">#19580</a>)</li> <li><strong>run_agent — <code>-inf</code> and <code>nan</code> regression coverage for <code>_coerce_number</code></strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/19703">#19703</a>)</li> </ul> <hr> <h2>📚 Documentation</h2> <h3>Major docs additions</h3> <ul> <li><strong><code>llms.txt</code> + <code>llms-full.txt</code> — agent-friendly ingestion</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/18276">#18276</a>)</li> <li><strong>User Stories and Use Cases collage page</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/18282">#18282</a>)</li> <li><strong>Persistent Goals (/goal) feature page</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/18275">#18275</a>)</li> <li><strong>Windows (WSL2) guide expansion</strong> — filesystem, networking, services, pitfalls (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20748">#20748</a>)</li> <li><strong>Chinese (zh-CN) README translation</strong> (salvage #13508) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20431">#20431</a>)</li> <li><strong>zh-Hans Docusaurus locale</strong> + Tool Gateway / image-gen / WSL quickstart translations (salvage #11728) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20430">#20430</a>)</li> <li><strong>Tool Gateway docs restructure</strong> — lead with what it does, config moved to bottom (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20827">#20827</a>)</li> <li><strong>Quickstart — Onchain AI Garage Hermes tutorials playlist</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20192">#20192</a>)</li> <li><strong>Open WebUI bootstrap script</strong> (salvage #9566) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20427">#20427</a>)</li> <li><strong>Local Ollama setup guide</strong> (salvage #5842) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20426">#20426</a>)</li> <li><strong>Google Gemini guide</strong> (salvage #17450) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20401">#20401</a>)</li> <li><strong>Custom model aliases for /model command</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20475">#20475</a>)</li> <li><strong>Together/Groq/Perplexity cookbook via <code>custom_providers</code></strong> (salvage #15214) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20400">#20400</a>)</li> <li><strong>Doubao speech integration examples</strong> (TTS + STT) (salvage #18065) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20418">#20418</a>)</li> <li><strong>WSL-to-Windows Chrome MCP bridge</strong> (salvage #8313) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20428">#20428</a>)</li> <li><strong>Hermes skills docs sync</strong> — slash commands + durable-systems section (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20390">#20390</a>)</li> <li><strong>AGENTS.md — curator/cron/delegation/toolsets + fix plugin tree</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20226">#20226</a>)</li> <li><strong>Bedrock quickstart entry + fallback comment + deployment link</strong> (salvage #11093) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20397">#20397</a>)</li> </ul> <h3>Docs polish</h3> <ul> <li>Collapse exploding skills tree to a single Skills node (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/18259">#18259</a>)</li> <li>Clarify <code>session_search</code> auxiliary model docs (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/19593">#19593</a>)</li> <li>Open WebUI Quick Setup gap fill (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/19654">#19654</a>)</li> <li>Default custom tool creation to plugins (@kshitijk4poor) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/19755">#19755</a>)</li> <li>Clarify Telegram group chat troubleshooting (salvage #18672) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20416">#20416</a>)</li> <li>Codex OAuth auth prerequisite clarification (salvage #18688) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20417">#20417</a>)</li> <li>Discord Server Members Intent + SSRC-mapping drift + /voice join slash Choice (salvage #11350) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20411">#20411</a>)</li> <li>Document <code>ctx.dispatch_tool()</code> (salvage #10955) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20391">#20391</a>)</li> <li>Document <code>hermes webhook subscribe --deliver-only</code> (salvage #12612) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20392">#20392</a>)</li> <li>Document <code>hermes import</code> reference (salvage #14711) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20396">#20396</a>)</li> <li>Document per-provider TTS <code>max_text_length</code> caps (salvage #13825) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20389">#20389</a>)</li> <li>Clarify supported prompt customization surfaces (salvage #19987) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20383">#20383</a>)</li> <li>Correct <code>web_extract</code> summarizer timeout comment (salvage #20051) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20381">#20381</a>)</li> <li>Fix fallback provider config paths (salvage #20033) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20382">#20382</a>)</li> <li>Fix misleading RL install-extras claim (salvage #19080) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21213">#21213</a>)</li> <li>Clarify API server tool execution locality (salvage #19117) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21223">#21223</a>)</li> <li>Prefer <code>.venv</code> to match AGENTS.md and scripts/run_tests.sh (@xxxigm) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/21334">#21334</a>)</li> <li>Align tool discovery + test runner with AGENTS.md (@xxxigm) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20791">#20791</a>)</li> <li>Align terminal-backend count and naming across docs and code (salvage #19044) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20402">#20402</a>)</li> <li>Refresh stale platform counts (salvage #19053) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20403">#20403</a>)</li> </ul> <hr> <h2>👥 Contributors</h2> <h3>Core</h3> <ul> <li><strong>@teknium1</strong> — salvage, triage, review, feature work, and release management</li> </ul> <h3>Top Community Contributors</h3> <ul> <li><strong>@kshitijk4poor</strong> (21 PRs) — SearXNG native search backend, per-capability backend selection, collapsible TUI startup banner, Slack ephemeral ack + format fixes, Lightpanda fallback hardening, searxng-search optional skill + Web Search + Extract docs, default custom tool creation to plugins, kanban failure-column fix</li> <li><strong>@alt-glitch</strong> (13 PRs) — video_analyze tool, xAI Custom Voices (voice cloning), local-backend CLI launch-directory fix, lazy-session creation regression recovery, systemd unit refresh on gateway boot</li> <li><strong>@OutThisLife</strong> (9 PRs) — TUI perf — overlay render churn reduction, voice push-to-talk parity restoration (salvaging @Montbra)</li> <li><strong>@helix4u</strong> (6 PRs) — Classic CLI output recovery after resize, absolute-path TUI completion, gateway model picker current-context fix, Bedrock credential probe avoidance, kanban docs fixes</li> <li><strong>@ethernet8023</strong> (3 PRs) — Docker CI — don't cancel overlapping builds, :latest guard</li> <li><strong>@benbarclay</strong> (3 PRs) — Docker — launch dashboard as side-process via HERMES_DASHBOARD=1</li> <li><strong>@austinpickett</strong> (3 PRs) — Dashboard Plugins page, TUI /model picker overhaul with inline auth, kanban button fix</li> <li><strong>@sprmn24</strong> (2 PRs) — Contributor (2 PRs)</li> <li><strong>@asheriif</strong> (2 PRs) — Contributor (2 PRs)</li> <li><strong>@xxxigm</strong> (2 PRs) — Contributing docs — .venv preference and test runner alignment with AGENTS.md</li> <li><strong>@stephenschoettler</strong> (1 PR) — ACP — MCP E2E mock kwargs</li> <li><strong>@vincez-hms-coder</strong> (1 PR) — Dashboard — Profiles management page</li> <li><strong>@cdanis</strong> (1 PR) — Contributor</li> <li><strong>@briandevans</strong> (1 PR) — Toolsets test — kanban assertions post-#17805</li> <li><strong>@heyitsaamir</strong> (1 PR) — Contributor</li> </ul> <h3>All Contributors</h3> <p>Thanks to everyone who contributed to v0.13.0 — commits, co-authored work, and salvaged PRs. 295 contributors in one week.</p> <p>@0oAstro, @0xDevNinja, @0xharryriddle, @0xKingBack, @0xsir0000, @0xyg3n, @0z1-ghb, @abhinav11082001-stack, @acc001k, @acesjohnny, @adamludwin, @adybag14-cyber, @agentlinker, @agilejava, @ai-ag2026, @AJV20, @alanxchen85, @albert748, @AllardQuek, @alt-glitch, @altmazza0-star, @ambition0802, @amitgaur, @amroessam, @andrewhosf, @Asce66, @asheriif, @ashermorse, @asimons81, @Aslaaen, @Asunfly, @atongrun, @austinpickett, @banditburai, @barteqpl, @Bartok9, @Beandon13, @beardthelion, @beibi9966, @benbarclay, @binhnt92, @bjianhang, @BlackJulySnow, @bobashopcashier, @bogerman1, @Bongulielmi, @Brecht-H, @briandevans, @brooklynnicholson, @c3115644151, @camaragon, @CashWilliams, @CCClelo, @cdanis, @CES4751, @cg2aigc, @changchun989, @ChanlerDev, @CharlieKerfoot, @chengoak, @chenyunbo411, @chinadbo, @CIRWEL, @cixuuz, @cmcgrabby-hue, @colorcross, @Contentment003111, @CoreyNoDream, @counterposition, @curiouscleo, @DaniuXie, @deep-name, @dengtaoyuan450-a11y, @discodirector, @donramon77, @dpaluy, @ee-blog, @ehz0ah, @el-analista, @elmatadorgh, @EmelyanenkoK, @Emidomenge, @emozilla, @Es1la, @EthanGuo-coder, @etherman-os, @ethernet8023, @EvilDrag0n, @exxmen, @Fearvox, @Feranmi10, @firefly, @flobo3, @fmercurio, @Foolafroos, @formulahendry, @franksong2702, @ggnnggez, @GinWU05, @giwaov, @glesperance, @gnanirahulnutakki, @GodsBoy, @Gosuj, @Grey0202, @guillaumemeyer, @Gutslabs, @h0tp-ftw, @haidao1919, @halmisen, @happy5318, @hedirman, @helix4u, @hendrixfreire, @HenkDz, @hex-clawd, @heyitsaamir, @hharry11, @Hinotoi-agent, @holynn-q, @hrkzogw, @Hypn0sis, @Hypnus-Yuan, @ideathinklab01-source, @IMHaoyan, @Interstellar-code, @ishardo, @jacdevos, @jackey8616, @JanCong, @jasonoutland, @jatingodnani, @JayGwod, @jethac, @JezzaHehn, @JiaDe-Wu, @jjjojoj, @jkausel-ai, @John-tip, @johnncenae, @jrusso1020, @jslizar, @JTroyerOvermatch, @julysir, @Junass1, @JustinUssuri, @Kailigithub, @keepcalmqqf, @kiala9, @konsisumer, @kowenhaoai, @Krionex, @kshitijk4poor, @kyan12, @leavrcn, @leon7609, @LeonSGP43, @leprincep35700, @lhysdl, @likejudy, @lisanhu, @liu-collab, @liuguangyong93, @liuhao1024, @LucianoSP, @luoyuctl, @luyao618, @M3RCUR2Y, @maciekczech, @Magicray1217, @magicray1217, @MaHaoHao-ch, @malaiwah, @manateelazycat, @masonjames, @megastary, @memosr, @MichaelWDanko, @mikeyobrien, @millerc79, @Mind-Dragon, @mioimotoai-lgtm, @misery-hl, @molvikar, @momowind, @Montbra, @MottledShadow, @mrbob-git, @mrcharlesiv, @mrcoferland, @ms-alan, @mwnickerson, @nazirulhafiy, @nftpoetrist, @nicoloboschi, @nightq, @nikolay-bratanov, @NikolayGusev-astra, @nocturnum91, @noOne-list, @nouseman666, @novax635, @npmisantosh, @nudiltoys-cmyk, @olisikh, @oluwadareab12, @Oxidane-bot, @pama0227, @pander, @pasevin, @paul-tian, @pdonizete, @perlowja, @pingchesu, @PratikRai0101, @priveperfumes, @probepark, @QifengKuang, @quocanh261997, @qWaitCrypto, @qxxaa, @r266-tech, @rames-jusso, @revaraver, @Ricardo-M-L, @rob-maron, @Roy-oss1, @rxdxxxx, @SandroHub013, @Sanjays2402, @Sertug17, @shashwatgokhe, @shellybotmoyer, @SHL0MS, @SimbaKingjoe, @simbam99, @simplenamebox-ops, @socrates1024, @sonic-netizen, @sprmn24, @steezkelly, @stephen0110, @stephenschoettler, @stevenchanin, @stevenchouai, @stormhierta, @subtract0, @suncokret12, @swithek, @taeng0204, @TakeshiSawaguchi, @tangyuanjc, @TheEpTic, @thelumiereguy, @Tkander1715, @tmdgusya, @Tranquil-Flow, @TruaShamu, @UgwujaGeorge, @valda, @vincez-hms-coder, @VinVC, @vominh1919, @wabrent, @WadydX, @wanazhar, @WanderWang, @warabe1122, @web-dev0521, @WideLee, @willy-scr, @wmagev, @WuTianyi123, @wxst, @wysie, @Wysie, @xsfX20, @xxxigm, @xyiy001, @YanzhongSu, @ygd58, @Yoimex, @yuehei, @Yukipukii1, @yuqianma, @YX234, @zeejaytan, @zhanggttry, @zhao0112, @zng8418, @zons-zhaozhy, @Zyproth</p> <hr> <p><strong>Full Changelog</strong>: <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/compare/v2026.4.30...v2026.5.7">v2026.4.30...v2026.5.7</a></p> </div><div class="link-row" data-astro-cid-l7qxtvnw><span class="lr-label" data-astro-cid-l7qxtvnw>Links</span><a href="https://github.com/NousResearch/hermes-agent/releases/tag/v2026.5.7" data-astro-cid-l7qxtvnw>GitHub release notes ↗</a><a href="https://github.com/NousResearch/hermes-agent/compare/v2026.4.30...v2026.5.7" data-astro-cid-l7qxtvnw>Full diff ↗</a><a href="/gateway/" data-astro-cid-l7qxtvnw>Gateway Guide →</a><a href="/providers/" data-astro-cid-l7qxtvnw>Providers Reference →</a></div></div></details></div><div data-astro-cid-l7qxtvnw><h3 class="month-h" data-astro-cid-l7qxtvnw>April 2026</h3><details class="rel" data-astro-cid-l7qxtvnw><summary data-astro-cid-l7qxtvnw><span class="r-arrow" data-astro-cid-l7qxtvnw>▶</span><span class="r-ver" data-astro-cid-l7qxtvnw>v0.12.0</span><span class="r-date" data-astro-cid-l7qxtvnw>2026-04-30</span></summary><div class="rel-body" data-astro-cid-l7qxtvnw><p class="r-summary" data-astro-cid-l7qxtvnw>The Curator release — Hermes Agent now maintains itself. An autonomous background Curator grades, prunes, and consolidates your skill library on its own schedule. The self-improvement loop that reviews what to save got a substantial upgrade. Four new inference providers, a 18th messaging platform, a 19th via Teams plugin, native Spotify + Google Meet integrations, ComfyUI and TouchDesigner-MCP moved from optional to bundled-by-default, and a ~57% cut to visible TUI cold start.</p><div class="r-notes" data-astro-cid-l7qxtvnw><blockquote> <p>The Curator release — Hermes Agent now maintains itself. An autonomous background Curator grades, prunes, and consolidates your skill library on its own schedule. The self-improvement loop that reviews what to save got a substantial upgrade. Four new inference providers, a 18th messaging platform, a 19th via Teams plugin, native Spotify + Google Meet integrations, ComfyUI and TouchDesigner-MCP moved from optional to bundled-by-default, and a ~57% cut to visible TUI cold start.</p> </blockquote> <hr> <h2>✨ Highlights</h2> <ul> <li><p><strong>Autonomous Curator</strong> — <code>hermes curator</code> runs as a background agent on the gateway's cron ticker (7-day cycle default). It grades your skill library, consolidates related skills, prunes dead ones, and writes per-run reports to <code>logs/curator/run.json</code> + <code>REPORT.md</code>. Archived skills are classified consolidated-vs-pruned via model + heuristic. Defense-in-depth gates protect bundled/hub skills from mutation. Unified under <code>auxiliary.curator</code> — pick the curator's model in <code>hermes model</code>, manage it from the dashboard. <code>hermes curator status</code> ranks skills by usage (most-used / least-used). (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17277">#17277</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17307">#17307</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17941">#17941</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17868">#17868</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/18033">#18033</a>)</p> </li> <li><p><strong>Self-improvement loop — substantially upgraded</strong> — The background review fork (the core of Hermes' self-improvement: after each turn it decides what memories/skills to save or update) is now class-first (rubric-based rather than free-form), active-update biased (prefers the skill the agent just loaded), handles <code>references/</code>/<code>templates/</code> sub-files, and properly inherits the parent's live runtime (provider, model, credentials actually propagate). Restricted to memory + skills toolsets so it can't sprawl. Memory providers shut down cleanly. Prior-turn tool messages excluded from the summary so the fork sees a clean context. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16026">#16026</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17213">#17213</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16099">#16099</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16569">#16569</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16204">#16204</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/15057">#15057</a>)</p> </li> <li><p><strong>Skill integrations — major expansion</strong> — <strong>ComfyUI v5</strong> with official CLI + REST + hardware-gated local install, moved from optional to <strong>built-in by default</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17610">#17610</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17631">#17631</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17734">#17734</a>). <strong>TouchDesigner-MCP</strong> bundled by default, expanded with GLSL, post-FX, audio, geometry, and 9 new reference docs (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16753">#16753</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16624">#16624</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16768">#16768</a> — @kshitijk4poor + @SHL0MS). <strong>Humanizer</strong> skill ports a text-cleaner that strips AI-isms (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16787">#16787</a>). <strong>claude-design</strong> HTML artifact skill + design-md (Google DESIGN.md spec) + airtable salvage + <code>skill_manage</code> edits in <code>external_dirs</code> + direct-URL skill install + <code>/reload-skills</code> slash command. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16358">#16358</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/14876">#14876</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16291">#16291</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17512">#17512</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16323">#16323</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17744">#17744</a>)</p> </li> <li><p><strong>LM Studio — first-class provider</strong> — upgraded from a custom-endpoint alias to a full-blown native provider: dedicated auth, <code>hermes doctor</code> checks, reasoning transport, live <code>/models</code> listing. (Salvage of @kshitijk4poor's #17061.) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17102">#17102</a>)</p> </li> <li><p><strong>Four more new inference providers</strong> — <strong>GMI Cloud</strong> (first-class, salvage of #11955 — @isaachuangGMICLOUD), <strong>Azure AI Foundry</strong> with auto-detection, <strong>MiniMax OAuth</strong> with PKCE browser flow (salvage #15203), <strong>Tencent Tokenhub</strong> (salvage of #16860). (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16663">#16663</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/15845">#15845</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17524">#17524</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16960">#16960</a>)</p> </li> <li><p><strong>Pluggable gateway platforms + Microsoft Teams</strong> — the gateway is now a plugin host. Drop-in messaging adapters live outside the core, and Microsoft Teams is the first plugin-shipped platform. (Salvage of #17664.) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17751">#17751</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17828">#17828</a>)</p> </li> <li><p><strong>Tencent 元宝 (Yuanbao) — 18th messaging platform</strong> — native gateway adapter with text + media delivery. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16298">#16298</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17424">#17424</a>)</p> </li> <li><p><strong>Spotify — native tools + bundled skill + wizard</strong> — 7 tools (play, search, queue, playlists, devices) behind PKCE OAuth, interactive setup wizard, bundled skill, surfacing in <code>hermes tools</code>, cron usage documented. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/15121">#15121</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/15130">#15130</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/15154">#15154</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/15180">#15180</a>)</p> </li> <li><p><strong>Google Meet plugin</strong> — join calls, transcribe, speak, follow up. Realtime OpenAI transport + Node bot server, full pipeline bundled as a plugin. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16364">#16364</a>)</p> </li> <li><p><strong><code>hermes -z</code> one-shot mode + <code>hermes update --check</code></strong> — non-interactive <code>hermes -z <prompt></code> with <code>--model</code>/<code>--provider</code>/<code>HERMES_INFERENCE_MODEL</code>. <code>hermes update --check</code> preflight. Opt-in pre-update HERMES_HOME backup. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/15702">#15702</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/15704">#15704</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/15841">#15841</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16539">#16539</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16566">#16566</a>)</p> </li> <li><p><strong>Models dashboard tab + in-browser model config</strong> — rich per-model analytics, switch main + auxiliary models from the dashboard. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17745">#17745</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17802">#17802</a>)</p> </li> <li><p><strong>Remote model catalog manifest</strong> — OpenRouter + Nous Portal model catalogs are now pulled from a remote manifest so new models show up without a release. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16033">#16033</a>)</p> </li> <li><p><strong>Native multimodal image routing</strong> — images now route based on the model's actual vision capability rather than provider defaults. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16506">#16506</a>)</p> </li> <li><p><strong>Gateway media parity</strong> — native multi-image sending across Telegram, Discord, Slack, Mattermost, Email, and Signal; centralized audio routing with FLAC support + Telegram document fallback. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17909">#17909</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17833">#17833</a>)</p> </li> <li><p><strong>TUI catches up to (and past) the classic CLI</strong> — LaTeX rendering (@austinpickett), <code>/reload</code> .env hot-reload, pluggable busy-indicator styles (@OutThisLife, #13610), opt-in auto-resume of last session, expanded light-terminal auto-detection, session delete from <code>/resume</code> picker with <code>d</code>, modified mouse-wheel line scroll, and a <code>/mouse</code> toggle that kills ConPTY's phantom mouse injection (@kevin-ho). (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17175">#17175</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17286">#17286</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17150">#17150</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17130">#17130</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17113">#17113</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17668">#17668</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17669">#17669</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/15488">#15488</a>)</p> </li> <li><p><strong>Observability + achievements plugins</strong> — bundled Langfuse observability plugin (salvage #16845) + bundled hermes-achievements plugin that scans full session history. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16917">#16917</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17754">#17754</a>)</p> </li> <li><p><strong>TTS provider registry + Piper local TTS</strong> — pluggable <code>tts.providers.<name></code> registry; Piper ships as a native local TTS provider. (Closes #8508.) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17843">#17843</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17885">#17885</a>)</p> </li> <li><p><strong>Vercel Sandbox backend</strong> — Vercel sandboxes as an execute_code/terminal backend (@kshitijk4poor). (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17445">#17445</a>)</p> </li> <li><p><strong>Secret redaction off by default</strong> — default flipped to off. Prevents the long-standing patch-corruption incidents where fake secret-shaped substrings mangled tool outputs. Opt in via <code>redaction.enabled: true</code> when you need it. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16794">#16794</a>)</p> </li> <li><p><strong>Cold-start performance</strong> — visible TUI cold start cut <strong>~57%</strong> via lazy agent init (@OutThisLife), lazy imports of OpenAI / Anthropic / Firecrawl / account_usage, mtime-cached <code>load_config()</code>, memoized <code>get_tool_definitions()</code> with TTL-cached <code>check_fn</code> results, precompiled dangerous-command patterns. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17190">#17190</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17046">#17046</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17041">#17041</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17098">#17098</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17206">#17206</a>)</p> </li> <li><p><strong>Configurable prompt cache TTL</strong> — <code>prompt_caching.cache_ttl</code> (5m default, 1h opt-in — cost savings for bursty sessions that keep cache warm). Salvage of #12659. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/15065">#15065</a>)</p> </li> </ul> <hr> <h2>🧠 Autonomous Curator & Self-Improvement Loop</h2> <h3>Curator — autonomous skill maintenance</h3> <ul> <li><strong><code>hermes curator</code> as a background agent</strong> — runs on the gateway's cron ticker, 7-day cycle by default, umbrella-first prompt, inherits parent config, unbounded iterations (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17277">#17277</a> — issue #7816)</li> <li><strong>Per-run reports</strong> — <code>logs/curator/run.json</code> + <code>REPORT.md</code> per cycle (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17307">#17307</a>)</li> <li><strong>Consolidated vs pruned classification</strong> — archived skills split with model + heuristic (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17941">#17941</a>)</li> <li><strong><code>hermes curator status</code></strong> — ranks skills by usage, shows most-used and least-used (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/18033">#18033</a>)</li> <li><strong>Unified under <code>auxiliary.curator</code></strong> — pick the model in <code>hermes model</code>, configure from the dashboard (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17868">#17868</a>)</li> <li><strong>Documentation</strong> — dedicated curator feature page on the docs site (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17563">#17563</a>)</li> <li>Fix: seed defaults on update, create <code>logs/curator/</code> directory, defer fire import (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17927">#17927</a>)</li> <li>Fix: scan nested archive subdirs in <code>restore_skill</code> (@0xDevNinja) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17951">#17951</a>)</li> <li>Fix: use actual skill activity in curator status (@y0shua1ee) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17953">#17953</a>)</li> <li>Fix: <code>skill_manage</code> refuses writes on pinned skills; pinning now blocks curator writes (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17562">#17562</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17578">#17578</a>)</li> <li>Fix: <code>bump_use()</code> wired into skill invocation + preload + skill_view (salvage #17782) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17932">#17932</a>)</li> </ul> <h3>Self-improvement loop (background review fork)</h3> <ul> <li><strong>Class-first skill-review prompt</strong> — rubric-based grading rather than free-form "should this update" (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16026">#16026</a>)</li> <li><strong>Active-update bias</strong> — prefers updating skills the agent just loaded, handles <code>references/</code> + <code>templates/</code> sub-files (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17213">#17213</a>)</li> <li><strong>Fork inherits parent's live runtime</strong> — provider, model, credentials actually propagate now (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16099">#16099</a>)</li> <li><strong>Scoped toolsets</strong> — review fork restricted to memory + skills (no shell, no web) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16569">#16569</a>)</li> <li><strong>Clean shutdown</strong> — background review memory providers exit properly (salvage #15289) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16204">#16204</a>)</li> <li><strong>Clean context</strong> — prior-history tool messages excluded from review summary (salvage #14967) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/15057">#15057</a>)</li> </ul> <hr> <h2>🧩 Skills Ecosystem</h2> <h3>Skill integrations — newly bundled or promoted</h3> <ul> <li><strong>ComfyUI v5</strong> — official CLI + REST + hardware-gated local install; <strong>moved from optional to built-in</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17610">#17610</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17631">#17631</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17734">#17734</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17612">#17612</a>)</li> <li><strong>TouchDesigner-MCP</strong> — <strong>bundled by default</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16753">#16753</a> — @kshitijk4poor), expanded with GLSL, post-FX, audio, geometry references (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16624">#16624</a>), 9 new reference docs (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16768">#16768</a> — @SHL0MS)</li> <li><strong>Humanizer</strong> — strips AI-isms from text (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16787">#16787</a>)</li> <li><strong>claude-design</strong> — HTML artifact skill with disambiguation from other design skills (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16358">#16358</a>)</li> <li><strong>design-md</strong> — Google's DESIGN.md spec skill (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/14876">#14876</a>)</li> <li><strong>airtable</strong> — salvaged skill + skill API keys wired into <code>.env</code> (#15838) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16291">#16291</a>)</li> <li><strong>pretext</strong> — creative browser demos with @chenglou/pretext (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17259">#17259</a>)</li> <li><strong>spike</strong> + <strong>sketch</strong> — throwaway experiments + HTML mockups, adapted from gsd-build (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17421">#17421</a>)</li> </ul> <h3>Skills UX</h3> <ul> <li><strong>Install skills from a direct HTTP(S) URL</strong> — <code>hermes skills install <url></code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16323">#16323</a>)</li> <li><strong><code>/reload-skills</code></strong> slash command (salvage #17670) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17744">#17744</a>)</li> <li><strong><code>hermes skills list</code></strong> shows enabled/disabled status (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16129">#16129</a>)</li> <li><strong><code>skill_manage</code> refuses writes on pinned skills</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17562">#17562</a>)</li> <li><strong><code>skill_manage</code> edits external_dirs skills in place</strong> (salvage #9966) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17512">#17512</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17289">#17289</a>)</li> <li>Fix: inline-shell rendering in <code>skill_view</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/15376">#15376</a>)</li> <li>Fix: exclude <code>.archive/</code> from skill index walk (salvage #17639) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17931">#17931</a>)</li> <li>Fix: dedicated docs page per bundled + optional skill (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/14929">#14929</a>)</li> <li>Fix: <code>google-workspace</code> shared HERMES_HOME helper + ship deps as optional extra (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/15405">#15405</a>)</li> <li>Fix: auto-wrap ASCII-art code blocks in generated skill pages (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16497">#16497</a>)</li> <li>Point agent at <code>hermes-agent</code> skill + docs site for Hermes questions (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16535">#16535</a>)</li> </ul> <hr> <h2>🏗️ Core Agent & Architecture</h2> <h3>Provider & Model Support</h3> <h4>New providers</h4> <ul> <li><strong>GMI Cloud</strong> — first-class API-key provider on par with Arcee/Kilocode/Xiaomi (salvage of #11955 — @isaachuangGMICLOUD) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16663">#16663</a>)</li> <li><strong>Azure AI Foundry</strong> — auto-detection, full wiring (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/15845">#15845</a>)</li> <li><strong>LM Studio</strong> — upgraded from custom-endpoint alias to first-class provider: dedicated auth, doctor checks, reasoning transport, live <code>/models</code> (salvage of #17061 — @kshitijk4poor) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17102">#17102</a>)</li> <li><strong>MiniMax OAuth</strong> — PKCE browser flow with full OAuth integration (salvage #15203) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17524">#17524</a>)</li> <li><strong>Tencent Tokenhub</strong> — new provider (salvage of #16860) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16960">#16960</a>)</li> </ul> <h4>Model catalog</h4> <ul> <li><strong>Remote model catalog manifest</strong> — OpenRouter + Nous Portal catalogs pulled from remote manifest so new models show up without a release (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16033">#16033</a>)</li> <li><code>openai/gpt-5.5</code> and <code>gpt-5.5-pro</code> added to OpenRouter + Nous Portal (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/15343">#15343</a>)</li> <li><code>deepseek-v4-pro</code> and <code>deepseek-v4-flash</code> added (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/14934">#14934</a>)</li> <li><code>qwen3.6-plus</code> added to Alibaba-supported models (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16896">#16896</a>)</li> <li>Gemini free-tier keys blocked at setup with 429 guidance surfacing (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/15100">#15100</a>)</li> </ul> <h4>Model configuration</h4> <ul> <li><strong>Configurable <code>prompt_caching.cache_ttl</code></strong> — 5m default, 1h opt-in (salvage #12659) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/15065">#15065</a>)</li> <li><code>/fast</code> whitelist broadened to all OpenAI + Anthropic models (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16883">#16883</a>)</li> <li><code>auxiliary.extra_body.reasoning</code> translates into Codex Responses API (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17004">#17004</a>)</li> <li><code>hermes fallback</code> command for managing fallback providers (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16052">#16052</a>)</li> </ul> <h3>Agent Loop & Conversation</h3> <ul> <li><strong>Native multimodal image routing</strong> — based on model vision capability, not provider defaults (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16506">#16506</a>)</li> <li><strong>Delegate <code>child_timeout_seconds</code> default bumped to 600s</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/14809">#14809</a>)</li> <li><strong>Diagnostic dump when subagent times out with 0 API calls</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/15105">#15105</a>)</li> <li><strong>Gateway busts cached agent on compression/context_length config edits</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17008">#17008</a>)</li> <li><strong>Opt-in runtime-metadata footer on final replies</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17026">#17026</a>)</li> <li><code>/reload-mcp</code> awareness — rebuild cached agents + prompt-cache cost confirmation (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17729">#17729</a>)</li> <li>Fix: repair CamelCase + <code>_tool</code> suffix tool-call emissions (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/15124">#15124</a>)</li> <li>Fix: retry on <code>json.JSONDecodeError</code> instead of treating as local validation error (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/15107">#15107</a>)</li> <li>Fix: handle unescaped control chars in <code>tool_call.arguments</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/15356">#15356</a>)</li> <li>Fix: ordering fix in <code>_copy_reasoning_content_for_api</code> — cross-provider reasoning isolation (@Zjianru) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/15749">#15749</a>)</li> <li>Fix: inject empty <code>reasoning_content</code> for DeepSeek/Kimi <code>tool_calls</code> unconditionally (@Zjianru) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/15762">#15762</a>)</li> <li>Fix: persist streamed <code>reasoning_content</code> on assistant turns (#16844) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16892">#16892</a>)</li> <li>Fix: cancel coroutine on timeout so worker thread exits; full traceback on tool failure (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17428">#17428</a>)</li> <li>Fix: isolate <code>get_tool_definitions</code> quiet_mode cache + dedup LCM injection (#17335) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17889">#17889</a>)</li> <li>Fix: serialize concurrent <code>hermes_tools</code> RPC calls from <code>execute_code</code> (#17770) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17894">#17894</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17902">#17902</a>)</li> <li>Fix: rename <code>[SYSTEM:</code> → <code>[IMPORTANT:</code> in all user-injected markers (dodges Azure content filter) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16114">#16114</a>)</li> </ul> <h3>Compression</h3> <ul> <li><strong>Retry summary on main model for unknown errors before giving up</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16774">#16774</a>)</li> <li><strong>Notify users when configured aux model fails even if main-model fallback recovers</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16775">#16775</a>)</li> <li><code>/compress</code> wrapped in <code>_busy_command</code> to block input during compression (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/15388">#15388</a>)</li> <li>Fix: reserve system + tools headroom when aux binds threshold (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/15631">#15631</a>)</li> <li>Fix: use text-char sum for multimodal token estimation in <code>_find_tail_cut_by_tokens</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16369">#16369</a>)</li> </ul> <h3>Session, Memory & State</h3> <ul> <li><strong>Trigram FTS5 index for CJK search, replace LIKE fallback</strong> (@alt-glitch) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16651">#16651</a>)</li> <li><strong>Index <code>tool_name</code> + <code>tool_calls</code> in FTS5, with repair + migration</strong> (salvages #16866) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16914">#16914</a>)</li> <li><strong>Checkpoints: auto-prune orphan and stale shadow repos at startup</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16303">#16303</a>)</li> <li><strong>Memory providers notified on mid-process session_id rotation</strong> (#6672) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17409">#17409</a>)</li> <li>Fix: quote underscored terms in FTS5 query sanitization (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16915">#16915</a>)</li> <li>Fix: resolve viking_read 500/412 on file URIs + pseudo-summary URIs (salvage #5886) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17869">#17869</a>)</li> <li>Fix: skip external-provider sync on interrupted turns (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/15395">#15395</a>)</li> <li>Fix: close embedded Hindsight async client cleanly (salvage #14605) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16209">#16209</a>)</li> <li>Fix: pass session transcript to <code>shutdown_memory_provider</code> on gateway + CLI (#15165) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16571">#16571</a>)</li> <li>Fix: write-origin metadata seam (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/15346">#15346</a>)</li> <li>Fix: preserve symlinks during atomic file writes (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16980">#16980</a>)</li> <li>Refactor: remove <code>flush_memories</code> entirely (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/15696">#15696</a>)</li> </ul> <h3>Auxiliary models</h3> <ul> <li>Fix: surface auxiliary failures in UI (previously silent) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/15324">#15324</a>)</li> <li>Fix: surface title-gen auxiliary failures instead of silently dropping (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16371">#16371</a>)</li> <li>Fix: generalize unsupported-parameter detector and harden <code>max_tokens</code> retry (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/15633">#15633</a>)</li> </ul> <hr> <h2>📱 Messaging Platforms (Gateway)</h2> <h3>New Platforms</h3> <ul> <li><strong>Microsoft Teams (19th platform)</strong> — as a plugin, + xdist collision guard (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17828">#17828</a>)</li> <li><strong>Yuanbao (Tencent 元宝, 18th platform)</strong> — native adapter with text + media delivery (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16298">#16298</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17424">#17424</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16880">#16880</a>)</li> </ul> <h3>Pluggable Gateway Platforms</h3> <ul> <li><strong>Drop-in messaging adapters</strong> — the gateway is now a plugin host for platforms (salvage of #17664) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17751">#17751</a>)</li> </ul> <h3>Telegram</h3> <ul> <li><strong>Chat allowlists for groups and forums</strong> (@web3blind) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/15027">#15027</a>)</li> <li><strong>Send fresh finals for stale preview streams</strong> (port openclaw#72038) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16261">#16261</a>)</li> <li><strong>Render markdown tables as row-group bullets + prompt hint</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16997">#16997</a>)</li> <li>Document fallback in centralized audio routing (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17833">#17833</a>)</li> <li>Native multi-image sending (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17909">#17909</a>)</li> </ul> <h3>Discord</h3> <ul> <li><strong>Opt-in toolsets + ID injection + tool split + Feishu wiring</strong> (salvage #15457, #15458) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/15610">#15610</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/15613">#15613</a>)</li> <li>Fix: coerce <code>limit</code> parameter to int before <code>min()</code> call (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16319">#16319</a>)</li> </ul> <h3>Slack</h3> <ul> <li><strong>Register every gateway command as a native slash (Discord/Telegram parity)</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16164">#16164</a>)</li> <li><strong><code>strict_mention</code> config</strong> — prevents thread auto-engagement (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16193">#16193</a>)</li> <li><strong><code>channel_skill_bindings</code></strong> — bind specific skills to specific Slack channels (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16283">#16283</a>)</li> </ul> <h3>Signal</h3> <ul> <li><strong>Native formatting</strong> — markdown → bodyRanges, reply quotes, reactions (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17417">#17417</a>)</li> <li>Native multi-image sending (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17909">#17909</a>)</li> </ul> <h3>Feishu / Mattermost / Email / Signal</h3> <ul> <li>All participate in <strong>native multi-image sending</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17909">#17909</a>)</li> </ul> <h3>Gateway Core</h3> <ul> <li><strong>Centralized audio routing + FLAC support + Telegram doc fallback</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17833">#17833</a>)</li> <li><strong>Native multi-image sending</strong> across Telegram, Discord, Slack, Mattermost, Email, Signal (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17909">#17909</a>)</li> <li><strong>Make hygiene hard message limit configurable</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17000">#17000</a>)</li> <li><strong>Opt-in runtime-metadata footer on final replies</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17026">#17026</a>)</li> <li><strong><code>pre_gateway_dispatch</code> hook</strong> — plugins can intercept before dispatch (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/15050">#15050</a>)</li> <li><strong><code>pre_approval_request</code> / <code>post_approval_response</code> hooks</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16776">#16776</a>)</li> <li>Fix: timeouts — guard <code>load_config()</code> call against runtime exceptions (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16318">#16318</a>)</li> <li>Fix: support passing handler tools via registry (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/15613">#15613</a>)</li> </ul> <hr> <h2>🔧 Tool System</h2> <h3>Plugin-first architecture</h3> <ul> <li><strong>Pluggable gateway platforms</strong> — platforms can ship as plugins (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17751">#17751</a>)</li> <li><strong>Microsoft Teams as first plugin-shipped platform</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17828">#17828</a>)</li> <li><strong><code>pre_gateway_dispatch</code> hook</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/15050">#15050</a>)</li> <li><strong><code>pre_approval_request</code> + <code>post_approval_response</code> hooks</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16776">#16776</a>)</li> <li><strong><code>duration_ms</code> on <code>post_tool_call</code></strong> (inspired by Claude Code 2.1.119) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/15429">#15429</a>)</li> <li><strong>Bundled plugins</strong>: Spotify (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/15174">#15174</a>), Google Meet (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16364">#16364</a>), Langfuse observability (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16917">#16917</a>), hermes-achievements (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17754">#17754</a>)</li> <li><strong>Page-scoped plugin slots for built-in dashboard pages</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/15658">#15658</a>)</li> <li><strong>Declarative plugin installation for NixOS module</strong> (@alt-glitch) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/15953">#15953</a>)</li> </ul> <h3>Browser</h3> <ul> <li><strong>CDP supervisor</strong> — dialog detection + response + cross-origin iframe eval (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/14540">#14540</a>)</li> <li><strong>Auto-spawn local Chromium for LAN/localhost URLs</strong> when cloud provider is configured (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16136">#16136</a>)</li> </ul> <h3>Execute code / Terminal</h3> <ul> <li><strong>Vercel Sandbox backend</strong> for <code>execute_code</code> / terminal (@kshitijk4poor) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17445">#17445</a>)</li> <li><strong>Collapse subagent <code>task_id</code>s to shared container</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16177">#16177</a>)</li> <li><strong>Docker: run container as host user</strong> to avoid root-owned bind mounts (@benbarclay) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17305">#17305</a>)</li> <li>Fix: safely quote <code>~/</code> subpaths in wrapped <code>cd</code> commands (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/15394">#15394</a>)</li> <li>Fix: close file descriptor in <code>LocalEnvironment._update_cwd</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17300">#17300</a>)</li> <li>Fix: SSH — prevent tar from overwriting remote home dir permissions (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17898">#17898</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17867">#17867</a>)</li> </ul> <h3>Image generation</h3> <ul> <li>See Provider section for updates; no new image providers this window.</li> </ul> <h3>TTS / Voice</h3> <ul> <li><strong>Pluggable TTS provider registry</strong> under <code>tts.providers.<name></code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17843">#17843</a>)</li> <li><strong>Piper</strong> as native local TTS provider (closes #8508) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17885">#17885</a>)</li> <li><strong>Voice mode CLI parity in the TUI</strong> — VAD loop + TTS + crash forensics (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/14810">#14810</a>)</li> <li>Fix: vision — use HERMES_HOME-based cache dir instead of cwd (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17719">#17719</a>)</li> </ul> <h3>Cron</h3> <ul> <li><strong>Honor <code>hermes tools</code> config for the cron platform</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/14798">#14798</a>)</li> <li><strong>Per-job <code>workdir</code></strong> — project-aware cron runs (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/15110">#15110</a>)</li> <li><strong><code>context_from</code> field</strong> — chain cron job outputs (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/15606">#15606</a>)</li> <li>Fix: promote <code>croniter</code> to a core dependency (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17577">#17577</a>)</li> </ul> <h3>Web search</h3> <ul> <li><strong>Expose <code>limit</code> for <code>web_search</code></strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16934">#16934</a>)</li> </ul> <h3>Maps</h3> <ul> <li>Fix: include seconds in timezone UTC offset output (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16300">#16300</a>)</li> </ul> <h3>Approvals</h3> <ul> <li><strong>Hardline blocklist for unrecoverable commands</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/15878">#15878</a>)</li> <li>Perf: precompile DANGEROUS_PATTERNS and HARDLINE_PATTERNS (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17206">#17206</a>)</li> </ul> <h3>ACP</h3> <ul> <li><strong>Advertise and forward image prompts</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/18030">#18030</a>)</li> </ul> <h3>API Server</h3> <ul> <li><strong>POST <code>/v1/runs/{run_id}/stop</code></strong> (salvage of #15656) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/15842">#15842</a>)</li> <li><strong>Expose run status for external UIs</strong> (#17085) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17458">#17458</a>)</li> </ul> <h3>Nix</h3> <ul> <li><strong>Declarative plugin installation for NixOS module</strong> (@alt-glitch) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/15953">#15953</a>)</li> <li>Fix: use <code>--rebuild</code> in fix-lockfiles to bypass cached FOD store paths (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/15444">#15444</a>)</li> <li>Fix: <code>extraPackages</code> now actually works via per-user profile (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17047">#17047</a>)</li> <li>Fix: refresh web/ npm-deps hash to unblock main builds (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17174">#17174</a>)</li> <li>Fix: replace magic-nix-cache with Cachix (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17928">#17928</a>)</li> </ul> <hr> <h2>🖥️ TUI</h2> <h3>New features</h3> <ul> <li><strong>LaTeX rendering</strong> (@austinpickett) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17175">#17175</a>)</li> <li><strong><code>/reload</code> .env hot-reload</strong> — ported from the classic CLI (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17286">#17286</a>)</li> <li><strong>Pluggable busy-indicator styles</strong> (@OutThisLife, #13610) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17150">#17150</a>)</li> <li><strong>Opt-in auto-resume of the most recent session</strong> (@OutThisLife) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17130">#17130</a>)</li> <li><strong>Expanded light-terminal auto-detection</strong> — <code>HERMES_TUI_THEME</code> + background hex (@OutThisLife) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17113">#17113</a>)</li> <li><strong>Delete sessions from <code>/resume</code> picker with <code>d</code></strong> (@OutThisLife) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17668">#17668</a>)</li> <li><strong>Line-by-line scroll on modified mouse wheel</strong> (@OutThisLife) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17669">#17669</a>)</li> <li><strong>Delete queued message while editing with ctrl-x / cancel with esc</strong> (@OutThisLife) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16707">#16707</a>)</li> <li><strong>Per-section visibility for the details accordion</strong> (@OutThisLife) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/14968">#14968</a>)</li> <li><strong>Voice mode CLI parity</strong> — VAD loop + TTS + crash forensics (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/14810">#14810</a>)</li> <li><strong>Contextual first-touch hints ported to TUI</strong> — <code>/busy</code>, <code>/verbose</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16054">#16054</a>)</li> <li><strong>Mini help menu on <code>?</code> in the input field</strong> (@ethernet8023) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/18043">#18043</a>)</li> </ul> <h3>Fixes</h3> <ul> <li>Fix: proactive mouse disable on ConPTY + <code>/mouse</code> toggle command (@kevin-ho, WSL2 ghost-mouse fix) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/15488">#15488</a>)</li> <li>Fix: restore skills search RPC (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/15870">#15870</a>)</li> <li>Perf: cache text measurements across yoga flex re-passes (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/14818">#14818</a>)</li> <li>Perf: stabilize long-session scrolling (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/15926">#15926</a>)</li> <li>Perf: lazily seed virtual history heights (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16523">#16523</a>)</li> <li>Perf: cut visible cold start ~57% with lazy agent init (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17190">#17190</a>)</li> </ul> <hr> <h2>🖱️ CLI & User Experience</h2> <h3>New commands</h3> <ul> <li><strong><code>hermes -z <prompt></code></strong> — non-interactive one-shot mode (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/15702">#15702</a>)</li> <li><strong><code>hermes -z</code> with <code>--model</code> / <code>--provider</code> / <code>HERMES_INFERENCE_MODEL</code></strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/15704">#15704</a>)</li> <li><strong><code>hermes update --check</code></strong> preflight flag (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/15841">#15841</a>)</li> <li><strong><code>hermes fallback</code></strong> command for managing fallback providers (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16052">#16052</a>)</li> <li><strong><code>/busy</code></strong> slash command for busy input mode (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/15382">#15382</a>)</li> <li><strong><code>/busy</code> input mode 'steer'</strong> as a third option (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16279">#16279</a>)</li> <li><strong><code>/btw</code> as alias for <code>/background</code></strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16053">#16053</a>)</li> <li><strong><code>/reload-skills</code></strong> slash command (salvage #17670) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17744">#17744</a>)</li> <li><strong>Surface <code>/queue</code>, <code>/bg</code>, <code>/steer</code> in agent-running placeholder</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16118">#16118</a>)</li> </ul> <h3>Setup / onboarding</h3> <ul> <li><strong>Auto-reconfigure on existing installs</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/15879">#15879</a>)</li> <li><strong>Contextual first-touch hints for <code>/busy</code> and <code>/verbose</code></strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16046">#16046</a>)</li> <li><strong>Cost-saving tips from the April 30 tip-of-the-day</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17841">#17841</a>)</li> <li><strong>Hyperlink startup banner title to the latest GitHub Release</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/14945">#14945</a>)</li> </ul> <h3>Update / backup</h3> <ul> <li><strong>Snapshot pairing data before <code>git pull</code></strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16383">#16383</a>)</li> <li><strong>Auto-backup HERMES_HOME before <code>hermes update</code></strong> (opt-in, off by default) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16539">#16539</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16566">#16566</a>)</li> <li><strong>Exclude <code>checkpoints/</code> from backups</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16572">#16572</a>)</li> <li><strong>Exclude SQLite WAL/SHM/journal sidecars from backups</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16576">#16576</a>)</li> <li><strong>Installer FHS layout for root installs on Linux</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/15608">#15608</a>)</li> <li>Fix: kill stale dashboards instead of warning (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17832">#17832</a>)</li> <li>Fix: show correct update status on nix-built hermes (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17550">#17550</a>)</li> </ul> <h3>Slash-command housekeeping</h3> <ul> <li>Refactor: drop <code>/provider</code>, <code>/plan</code> handler, and clean up slash registry (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/15047">#15047</a>)</li> <li>Refactor: drop <code>persist_session</code> plumbing + fix broken <code>/btw</code> mid-turn bypass (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16075">#16075</a>)</li> </ul> <h3>OpenClaw migration (for folks coming from OpenClaw)</h3> <ul> <li><strong>Hardened OpenClaw import</strong> — plan-first apply, redaction, pre-migration backup (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16911">#16911</a>)</li> <li>Fix: case-preserving brand rewrite + one-time <code>~/.openclaw</code> residue banner (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16327">#16327</a>)</li> <li>Fix: resolve <code>openclaw</code> workspace files from <code>agents.defaults.workspace</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16879">#16879</a>)</li> <li>Fix: resolve model aliases against real OpenClaw catalog schema (salvage #16778) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16977">#16977</a>)</li> </ul> <hr> <h2>📊 Web Dashboard</h2> <ul> <li><strong>Models tab</strong> — rich per-model analytics (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17745">#17745</a>)</li> <li><strong>Configure main + auxiliary models from the Models page</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17802">#17802</a>)</li> <li><strong>Dashboard Chat tab — xterm.js + JSON-RPC sidecar</strong> (supersedes #12710 + #13379, @OutThisLife) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/14890">#14890</a>)</li> <li><strong>Dashboard layout refresh</strong> (@austinpickett) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/14899">#14899</a>)</li> <li><strong><code>--stop</code> and <code>--status</code> flags</strong> on the dashboard CLI (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17840">#17840</a>)</li> <li><strong>Page-scoped plugin slots for built-in pages</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/15658">#15658</a>)</li> <li>Fix: replace all buttons for design system buttons (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17007">#17007</a>)</li> </ul> <hr> <h2>⚡ Performance</h2> <ul> <li><strong>TUI visible cold start cut ~57%</strong> via lazy agent init (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17190">#17190</a>)</li> <li><strong>Lazy-import OpenAI, Anthropic, Firecrawl, account_usage</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17046">#17046</a>)</li> <li><strong>mtime-cache <code>load_config()</code> and <code>read_raw_config()</code></strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17041">#17041</a>)</li> <li><strong>Memoize <code>get_tool_definitions()</code> + TTL-cache <code>check_fn</code> results</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17098">#17098</a>)</li> <li><strong>Precompile DANGEROUS_PATTERNS and HARDLINE_PATTERNS</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17206">#17206</a>)</li> <li><strong>Cache Ink text measurements across yoga flex re-passes</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/14818">#14818</a>)</li> <li><strong>Stabilize long-session scrolling</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/15926">#15926</a>)</li> <li><strong>Lazily seed virtual history heights</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16523">#16523</a>)</li> </ul> <hr> <h2>🔒 Security & Reliability</h2> <ul> <li><strong>Secret redaction off by default</strong> — stops corrupting patches / API payloads with fake-key substitutions. Opt in via <code>redaction.enabled: true</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16794">#16794</a>)</li> <li><strong><code>[SYSTEM:</code> → <code>[IMPORTANT:</code></strong> in all user-injected markers (Azure content filter dodge) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16114">#16114</a>)</li> <li><strong>Hardline blocklist for unrecoverable commands</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/15878">#15878</a>)</li> <li><strong>Canonical <code>mask_secret</code> helper; fix status.py DIM drift</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17207">#17207</a>)</li> <li><strong>Sweep expired paste.rs uploads on a real timer</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16431">#16431</a>)</li> <li><strong>Preserve symlinks during atomic file writes</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16980">#16980</a>)</li> <li><strong>Probe <code>/dev/tty</code> by opening it, not bare existence</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17024">#17024</a>)</li> </ul> <hr> <h2>🐛 Notable Bug Fixes</h2> <p>This window includes 360 <code>fix:</code> PRs. Selected highlights from across the stack:</p> <ul> <li><strong>Background review fork inherits parent's live runtime</strong> — provider/model/creds now propagate correctly (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16099">#16099</a>)</li> <li><strong>Hindsight configurable <code>HINDSIGHT_TIMEOUT</code> env var</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/15077">#15077</a>)</li> <li><strong>Tools: normalize numeric entries + clear stale <code>no_mcp</code> in <code>_save_platform_tools</code></strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/15607">#15607</a>)</li> <li><strong>MCP: rewrite <code>definitions</code> refs to <code>$defs</code> in input schemas</strong> — closes provider-side 400s</li> <li><strong>Azure content filter compatibility</strong> — renamed <code>[SYSTEM:</code> markers so Azure's content filter stops flagging them (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16114">#16114</a>)</li> <li><strong>Vision cache uses HERMES_HOME instead of cwd</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17719">#17719</a>)</li> <li><strong>FTS5 search</strong> — tool_name + tool_calls indexing with repair + migration (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16914">#16914</a>)</li> <li><strong>Streaming reasoning persists on assistant turns</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16892">#16892</a>)</li> <li><strong>execute_code concurrent RPC serialization</strong> (#17770) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17894">#17894</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17902">#17902</a>)</li> <li><strong>Background reviewer scoped to memory + skills toolsets</strong> — no more accidental web/shell escapes (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16569">#16569</a>)</li> <li><strong>Compression recovery</strong> — retry on main before giving up; notify user when aux fails (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16774">#16774</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16775">#16775</a>)</li> <li><strong><code>croniter</code> promoted to a core dependency</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17577">#17577</a>)</li> <li><strong>Discord tool <code>limit</code> parameter coerced to int</strong> before <code>min()</code> call (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16319">#16319</a>)</li> <li><strong>Yuanbao messaging platform entrance fix</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16880">#16880</a>)</li> <li><strong>ACP advertise and forward image prompts</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/18030">#18030</a>)</li> <li><strong>DeepSeek / Kimi reasoning content isolation</strong> across cross-provider histories (@Zjianru) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/15749">#15749</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/15762">#15762</a>)</li> <li><strong>Preserve reasoning_content replay on DeepSeek v4 + Kimi/Moonshot thinking</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/18045">#18045</a>)</li> </ul> <p>The vast majority of the 360 fixes landed in the streaming/compression/tool-calling paths across all providers — DeepSeek, Kimi, Moonshot, GLM, Qwen, MiniMax, Gemini, Anthropic, OpenAI — alongside TUI polish (resize, scroll, sticky-prompt) and gateway platform-specific edge cases.</p> <hr> <h2>🧪 Testing & CI</h2> <ul> <li>Hermetic test parity (<code>scripts/run_tests.sh</code>) held across this window</li> <li><strong>Microsoft Teams xdist collision guard</strong> — prevents worker collisions when Teams platform tests run in parallel (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17828">#17828</a>)</li> <li>Chore: remove unused imports and dead locals (ruff F401, F841) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17010">#17010</a>)</li> </ul> <hr> <h2>📚 Documentation</h2> <ul> <li><strong>Curator feature page</strong> added to docs site (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17563">#17563</a>)</li> <li><strong>Document pin also blocking <code>skill_manage</code> writes</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17578">#17578</a>)</li> <li><strong>Direct-URL skill install documented</strong> across features, reference, guide, and <code>hermes-agent</code> skill (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16355">#16355</a>)</li> <li><strong>Hooks tutorial — build a BOOT.md startup checklist</strong> (replaces the removed built-in hook) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17202">#17202</a>)</li> <li><strong>ComfyUI docs: ask local vs cloud FIRST before hardware check</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17612">#17612</a>)</li> <li><strong>Obliteratus skill: link YouTube video guide in SKILL.md</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/15808">#15808</a>)</li> <li>Per-skill docs pages generated for bundled + optional skills; ASCII art code blocks auto-wrapped (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/14929">#14929</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16497">#16497</a>)</li> </ul> <hr> <h2>⚖️ Removed / Reverted</h2> <ul> <li><strong>Kanban multi-profile collaboration board</strong> — landed in #16081, reverted in (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16098">#16098</a>) while the design is reworked</li> <li><strong>computer-use cua-driver</strong> — 3 preparatory PRs landed then were reverted in (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/16927">#16927</a>)</li> <li><strong>BOOT.md built-in hook</strong> removed (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17093">#17093</a>); the hooks tutorial (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/17202">#17202</a>) shows how to build the same workflow yourself with a shell hook</li> <li><strong><code>/provider</code> + <code>/plan</code> slash commands dropped</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/15047">#15047</a>)</li> <li><strong><code>flush_memories</code> removed entirely</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/15696">#15696</a>)</li> </ul> <hr> <h2>👥 Contributors</h2> <h3>Core</h3> <ul> <li><strong>@teknium1</strong> (Teknium)</li> </ul> <h3>Top Community Contributors (by merged PR count since v0.11.0)</h3> <ul> <li><strong>@OutThisLife</strong> (Brooklyn) — 52 PRs · TUI — light-terminal detection + pluggable busy styles + auto-resume + session-delete from /resume + mouse-wheel scrolling + xterm.js dashboard Chat tab + cold-start cut + accordion polish</li> <li><strong>@kshitijk4poor</strong> — 12 PRs · LM Studio first-class provider (salvage), Vercel Sandbox backend, GMI Cloud salvage, bundled-by-default touchdesigner-mcp, many tool-call / reasoning fixes</li> <li><strong>@helix4u</strong> — 10 PRs · MCP schema robustness, assorted stability fixes</li> <li><strong>@alt-glitch</strong> — 8 PRs · trigram FTS5 CJK search, declarative Nix plugin install, matrix/feishu hints and fixes</li> <li><strong>@ethernet8023</strong> — 4 PRs</li> <li><strong>@austinpickett</strong> — 4 PRs · LaTeX rendering in TUI, dashboard layout refresh</li> <li><strong>@benbarclay</strong> — 3 PRs · Docker run-as-host-user so bind mounts don't get root-owned</li> <li><strong>@vominh1919</strong> — 2 PRs</li> <li><strong>@stephenschoettler</strong> — 2 PRs</li> <li><strong>@kevin-ho</strong> — ConPTY mouse-injection fix (#15488)</li> <li><strong>@Zjianru</strong> — cross-provider reasoning_content isolation + DeepSeek/Kimi empty-reasoning injection (#15749, #15762)</li> <li><strong>@web3blind</strong> — Telegram chat allowlists for groups and forums (#15027)</li> <li><strong>@SHL0MS</strong> — 9 new TouchDesigner-MCP reference docs (#16768)</li> <li><strong>@0xDevNinja</strong> — curator <code>restore_skill</code> nested-archive fix (#17951)</li> <li><strong>@y0shua1ee</strong> — curator <code>use</code> activity fix (#17953)</li> </ul> <h3>Also contributing</h3> <p>Salvaged or co-authored work from <strong>@isaachuangGMICLOUD</strong> (GMI Cloud), earlier upstream PRs from the original author of each salvage chain, and a long tail of one-shot fixes, documentation nudges, and skill contributions from the community.</p> <h3>All Contributors (alphabetical, excluding @teknium1)</h3> <p>@0xbyt4, @0xharryriddle, @0xDevNinja, @0z1-ghb, @5park1e, @A-FdL-Prog, @aj-nt, @akhater, @alblez, @alexg0bot, @alexzhu0, @AllardQuek, @alt-glitch, @amanning3390, @amanuel2, @AndreKurait, @andrewhosf, @Andy283, @andyylin, @angel12, @AntAISecurityLab, @ash, @austinpickett, @badgerbees, @BadTechBandit, @Bartok9, @beenherebefore, @beesrsj2500, @BeliefanX, @benbarclay, @benjaminsehl, @BlackishGreen33, @bloodcarter, @BlueBirdBack, @briandevans, @brooklynnicholson, @bsgdigital, @buray, @bwjoke, @camaragon, @cdanis, @cgarwood82, @charles-brooks, @chen1749144759, @chengoak, @ching-kaching, @Contentment003111, @crayfish-ai, @CruxExperts, @cyclingwithelephants, @dandaka, @danklynn, @ddupont808, @dhabibi, @difujia, @dimitrovi, @dlkakbs, @dontcallmejames, @EKKOLearnAI, @emozilla, @ericnicolaides, @Erosika, @ethernet8023, @exiao, @Feranmi10, @flobo3, @foxion37, @georgeglessner, @georgex8001, @ghostmfr, @H-Ali13381, @HangGlidersRule, @harryplusplus, @haru398801, @heathley, @hejuntt1014, @hekaru-agent, @helix4u, @Heltman, @HenkDz, @heyitsaamir, @hharry11, @hhhonzik, @hhuang91, @HiddenPuppy, @htsh, @iamagenius00, @in-liberty420, @innocarpe, @irispillars, @iRonin, @isaachuangGMICLOUD, @Ito-69, @j3ffffff, @jackjin1997, @jakubkrcmar, @Jason2031, @JayGwod, @jerome-benoit, @johnncenae, @Kailigithub, @keiravoss94, @kevin-ho, @knockyai, @konsisumer, @kshitijk4poor, @kunlabs, @l0hde, @Leihb, @leoneparise, @LeonSGP43, @liizfq, @liuhao1024, @loongzhao, @lsdsjy, @luyao618, @ma-pony, @Magaav, @MagicRay1217, @math0r-be, @MattMaximo, @maxims-oss, @MaxyMoos, @maymuneth, @mcndjxlefnd, @memosr, @MestreY0d4-Uninter, @mewwts, @Mirac1eSky, @MorAlekss, @mrhwick, @mrunmayee17, @mssteuer, @Nanako0129, @nazirulhafiy, @Nerijusas, @Nicecsh, @nicoloboschi, @nightq, @ningfangbin, @octo-patch, @Octopus, @OutThisLife, @Paperclip, @pein892, @perlowja, @prasadus92, @qike-ms, @qiyin-code, @Readon, @ReginaldasR, @revaraver, @rfilgueiras, @rmoen, @romanornr, @rugvedS07, @rylena, @samrusani, @Sanjays2402, @sasha-id, @Satoshi-agi, @scheidti, @scotttrinh, @season179, @SeeYangZhi, @sgaofen, @shamork, @shannonsands, @SHL0MS, @simbam99, @Societus, @socrates1024, @Sonoyunchu, @sprmn24, @stephenschoettler, @tangyuanjc, @TechPrototyper, @tekgnosis-net, @ThomassJonax, @tmimmanuel, @tochukwuada, @Tosko4, @Tranquil-Flow, @twozle, @txbxxx, @UgwujaGeorge, @Versun, @vlwkaos, @voidborne-d, @vominh1919, @Wang-tianhao, @Wangshengyang2004, @web3blind, @westers, @Wysie, @xandersbell, @xiahu88988, @XieNBi, @xinbenlv, @xnbi, @y0shua1ee, @yatesjalex, @yes999zc, @yeyitech, @Yoimex, @YueLich, @Yukipukii1, @zhiyanliu, @zicochaos, @Zjianru, @zkl2333, @zons-zhaozhy, @ztexydt-cqh.</p> <p>Also: @Siddharth Balyan, @YuShu.</p> <hr> <p><strong>Full Changelog</strong>: <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/compare/v2026.4.23...v2026.4.30">v2026.4.23...v2026.4.30</a></p> </div><div class="link-row" data-astro-cid-l7qxtvnw><span class="lr-label" data-astro-cid-l7qxtvnw>Links</span><a href="https://github.com/NousResearch/hermes-agent/releases/tag/v2026.4.30" data-astro-cid-l7qxtvnw>GitHub release notes ↗</a><a href="https://github.com/NousResearch/hermes-agent/compare/v2026.4.23...v2026.4.30" data-astro-cid-l7qxtvnw>Full diff ↗</a><a href="/tools/" data-astro-cid-l7qxtvnw>Tools Reference →</a><a href="/skills/" data-astro-cid-l7qxtvnw>Skill Library →</a><a href="/gateway/" data-astro-cid-l7qxtvnw>Gateway Guide →</a><a href="/providers/" data-astro-cid-l7qxtvnw>Providers Reference →</a></div></div></details><details class="rel" data-astro-cid-l7qxtvnw><summary data-astro-cid-l7qxtvnw><span class="r-arrow" data-astro-cid-l7qxtvnw>▶</span><span class="r-ver" data-astro-cid-l7qxtvnw>v0.11.0</span><span class="r-date" data-astro-cid-l7qxtvnw>2026-04-23</span></summary><div class="rel-body" data-astro-cid-l7qxtvnw><p class="r-summary" data-astro-cid-l7qxtvnw>The Interface release — a full React/Ink rewrite of the interactive CLI, a pluggable transport architecture underneath every provider, native AWS Bedrock support, five new inference paths, a 17th messaging platform (QQBot), a dramatically expanded plugin surface, and GPT-5.5 via Codex OAuth.</p><div class="r-notes" data-astro-cid-l7qxtvnw><blockquote> <p>The Interface release — a full React/Ink rewrite of the interactive CLI, a pluggable transport architecture underneath every provider, native AWS Bedrock support, five new inference paths, a 17th messaging platform (QQBot), a dramatically expanded plugin surface, and GPT-5.5 via Codex OAuth.</p> </blockquote> <p>This release also folds in all the highlights deferred from v0.10.0 (which shipped only the Nous Tool Gateway) — so it covers roughly two weeks of work across the whole stack.</p> <hr> <h2>✨ Highlights</h2> <ul> <li><p><strong>New Ink-based TUI</strong> — <code>hermes --tui</code> is now a full React/Ink rewrite of the interactive CLI, with a Python JSON-RPC backend (<code>tui_gateway</code>). Sticky composer, live streaming with OSC-52 clipboard support, stable picker keys, status bar with per-turn stopwatch and git branch, <code>/clear</code> confirm, light-theme preset, and a subagent spawn observability overlay. ~310 commits to <code>ui-tui/</code> + <code>tui_gateway/</code>. (@OutThisLife + Teknium)</p> </li> <li><p><strong>Transport ABC + Native AWS Bedrock</strong> — Format conversion and HTTP transport were extracted from <code>run_agent.py</code> into a pluggable <code>agent/transports/</code> layer. <code>AnthropicTransport</code>, <code>ChatCompletionsTransport</code>, <code>ResponsesApiTransport</code>, and <code>BedrockTransport</code> each own their own format conversion and API shape. Native AWS Bedrock support via the Converse API ships on top of the new abstraction. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/10549">#10549</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/13347">#13347</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/13366">#13366</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/13430">#13430</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/13805">#13805</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/13814">#13814</a> — @kshitijk4poor + Teknium)</p> </li> <li><p><strong>Five new inference paths</strong> — Native NVIDIA NIM (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/11774">#11774</a>), Arcee AI (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/9276">#9276</a>), Step Plan (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/13893">#13893</a>), Google Gemini CLI OAuth (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/11270">#11270</a>), and Vercel ai-gateway with pricing + dynamic discovery (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/13223">#13223</a> — @jerilynzheng). Plus Gemini routed through the native AI Studio API for better performance (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/12674">#12674</a>).</p> </li> <li><p><strong>GPT-5.5 over Codex OAuth</strong> — OpenAI's new GPT-5.5 reasoning model is now available through your ChatGPT Codex OAuth, with live model discovery wired into the model picker so new OpenAI releases show up without catalog updates. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/14720">#14720</a>)</p> </li> <li><p><strong>QQBot — 17th supported platform</strong> — Native QQBot adapter via QQ Official API v2, with QR scan-to-configure setup wizard, streaming cursor, emoji reactions, and DM/group policy gating that matches WeCom/Weixin parity. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/9364">#9364</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/11831">#11831</a>)</p> </li> <li><p><strong>Plugin surface expanded</strong> — Plugins can now register slash commands (<code>register_command</code>), dispatch tools directly (<code>dispatch_tool</code>), block tool execution from hooks (<code>pre_tool_call</code> can veto), rewrite tool results (<code>transform_tool_result</code>), transform terminal output (<code>transform_terminal_output</code>), ship image_gen backends, and add custom dashboard tabs. The bundled disk-cleanup plugin is opt-in by default as a reference implementation. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/9377">#9377</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/10626">#10626</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/10763">#10763</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/10951">#10951</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/12929">#12929</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/12944">#12944</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/12972">#12972</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/13799">#13799</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/14175">#14175</a>)</p> </li> <li><p><strong><code>/steer</code> — mid-run agent nudges</strong> — <code>/steer <prompt></code> injects a note that the running agent sees after its next tool call, without interrupting the turn or breaking prompt cache. For when you want to course-correct an agent in-flight. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/12116">#12116</a>)</p> </li> <li><p><strong>Shell hooks</strong> — Wire any shell script as a Hermes lifecycle hook (pre_tool_call, post_tool_call, on_session_start, etc.) without writing a Python plugin. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/13296">#13296</a>)</p> </li> <li><p><strong>Webhook direct-delivery mode</strong> — Webhook subscriptions can now forward payloads straight to a platform chat without going through the agent — zero-LLM push notifications for alerting, uptime checks, and event streams. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/12473">#12473</a>)</p> </li> <li><p><strong>Smarter delegation</strong> — Subagents now have an explicit <code>orchestrator</code> role that can spawn their own workers, with configurable <code>max_spawn_depth</code> (default flat). Concurrent sibling subagents share filesystem state through a file-coordination layer so they don't clobber each other's edits. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/13691">#13691</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/13718">#13718</a>)</p> </li> <li><p><strong>Auxiliary models — configurable UI + main-model-first</strong> — <code>hermes model</code> has a dedicated "Configure auxiliary models" screen for per-task overrides (compression, vision, session_search, title_generation). <code>auto</code> routing now defaults to the main model for side tasks across all users (previously aggregator users were silently routed to a cheap provider-side default). (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/11891">#11891</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/11900">#11900</a>)</p> </li> <li><p><strong>Dashboard plugin system + live theme switching</strong> — The web dashboard is now extensible. Third-party plugins can add custom tabs, widgets, and views without forking. Paired with a live-switching theme system — themes now control colors, fonts, layout, and density — so users can hot-swap the dashboard look without a reload. Same theming discipline the CLI has, now on the web. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/10951">#10951</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/10687">#10687</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/14725">#14725</a>)</p> </li> <li><p><strong>Dashboard polish</strong> — i18n (English + Chinese), react-router sidebar layout, mobile-responsive, Vercel deployment, real per-session API call tracking, and one-click update + gateway restart buttons. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/9228">#9228</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/9370">#9370</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/9453">#9453</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/10686">#10686</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/13526">#13526</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/14004">#14004</a> — @austinpickett + @DeployFaith + Teknium)</p> </li> </ul> <hr> <h2>🏗️ Core Agent & Architecture</h2> <h3>Transport Layer (NEW)</h3> <ul> <li><strong>Transport ABC</strong> abstracts format conversion and HTTP transport from <code>run_agent.py</code> into <code>agent/transports/</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/13347">#13347</a>)</li> <li><strong>AnthropicTransport</strong> — Anthropic Messages API path (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/13366">#13366</a>, @kshitijk4poor)</li> <li><strong>ChatCompletionsTransport</strong> — default path for OpenAI-compatible providers (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/13805">#13805</a>)</li> <li><strong>ResponsesApiTransport</strong> — OpenAI Responses API + Codex build_kwargs wiring (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/13430">#13430</a>, @kshitijk4poor)</li> <li><strong>BedrockTransport</strong> — AWS Bedrock Converse API transport (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/13814">#13814</a>)</li> </ul> <h3>Provider & Model Support</h3> <ul> <li><strong>Native AWS Bedrock provider</strong> via Converse API (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/10549">#10549</a>)</li> <li><strong>NVIDIA NIM native provider</strong> (salvage of #11703) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/11774">#11774</a>)</li> <li><strong>Arcee AI direct provider</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/9276">#9276</a>)</li> <li><strong>Step Plan provider</strong> (salvage #6005) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/13893">#13893</a>, @kshitijk4poor)</li> <li><strong>Google Gemini CLI OAuth</strong> inference provider (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/11270">#11270</a>)</li> <li><strong>Vercel ai-gateway</strong> with pricing, attribution, and dynamic discovery (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/13223">#13223</a>, @jerilynzheng)</li> <li><strong>GPT-5.5 over Codex OAuth</strong> with live model discovery in the picker (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/14720">#14720</a>)</li> <li><strong>Gemini routed through native AI Studio API</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/12674">#12674</a>)</li> <li><strong>xAI Grok upgraded to Responses API</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/10783">#10783</a>)</li> <li><strong>Ollama improvements</strong> — Cloud provider support, GLM continuation, <code>think=false</code> control, surrogate sanitization, <code>/v1</code> hint (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/10782">#10782</a>)</li> <li><strong>Kimi K2.6</strong> across OpenRouter, Nous Portal, native Kimi, and HuggingFace (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/13148">#13148</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/13152">#13152</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/13169">#13169</a>)</li> <li><strong>Kimi K2.5</strong> promoted to first position in all model suggestion lists (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/11745">#11745</a>, @kshitijk4poor)</li> <li><strong>Xiaomi MiMo v2.5-pro + v2.5</strong> on OpenRouter, Nous Portal, and native (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/14184">#14184</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/14635">#14635</a>, @kshitijk4poor)</li> <li><strong>GLM-5V-Turbo</strong> for coding plan (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/9907">#9907</a>)</li> <li><strong>Claude Opus 4.7</strong> in Nous Portal catalog (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/11398">#11398</a>)</li> <li><strong>OpenRouter elephant-alpha</strong> in curated lists (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/9378">#9378</a>)</li> <li><strong>OpenCode-Go</strong> — Kimi K2.6 and Qwen3.5/3.6 Plus in curated catalog (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/13429">#13429</a>)</li> <li><strong>minimax/minimax-m2.5:free</strong> in OpenRouter catalog (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/13836">#13836</a>)</li> <li><strong><code>/model</code> merges models.dev entries</strong> for lesser-loved providers (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/14221">#14221</a>)</li> <li><strong>Per-provider + per-model <code>request_timeout_seconds</code></strong> config (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/12652">#12652</a>)</li> <li><strong>Configurable API retry count</strong> via <code>agent.api_max_retries</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/14730">#14730</a>)</li> <li><strong>ctx_size context length key</strong> for Lemonade server (salvage #8536) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/14215">#14215</a>)</li> <li><strong>Custom provider display name prompt</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/9420">#9420</a>)</li> <li><strong>Recommendation badges</strong> on tool provider selection (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/9929">#9929</a>)</li> <li>Fix: correct GPT-5 family context lengths in fallback defaults (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/9309">#9309</a>)</li> <li>Fix: clamp <code>minimal</code> reasoning effort to <code>low</code> on Responses API (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/9429">#9429</a>)</li> <li>Fix: strip reasoning item IDs from Responses API input when <code>store=False</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/10217">#10217</a>)</li> <li>Fix: OpenViking correct account default + commit session on <code>/new</code> and compress (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/10463">#10463</a>)</li> <li>Fix: Kimi <code>/coding</code> thinking block survival + empty reasoning_content + block ordering (multiple PRs)</li> <li>Fix: don't send Anthropic thinking to api.kimi.com/coding (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/13826">#13826</a>)</li> <li>Fix: send <code>max_tokens</code>, <code>reasoning_effort</code>, and <code>thinking</code> for Kimi/Moonshot</li> <li>Fix: stream reasoning content through OpenAI-compatible providers that emit it</li> </ul> <h3>Agent Loop & Conversation</h3> <ul> <li><strong><code>/steer <prompt></code></strong> — mid-run agent nudges after next tool call (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/12116">#12116</a>)</li> <li><strong>Orchestrator role + configurable spawn depth</strong> for <code>delegate_task</code> (default flat) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/13691">#13691</a>)</li> <li><strong>Cross-agent file state coordination</strong> for concurrent subagents (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/13718">#13718</a>)</li> <li><strong>Compressor smart collapse, dedup, anti-thrashing</strong>, template upgrade, hardening (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/10088">#10088</a>)</li> <li><strong>Compression summaries respect the conversation's language</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/12556">#12556</a>)</li> <li><strong>Compression model falls back to main model</strong> on permanent 503/404 (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/10093">#10093</a>)</li> <li><strong>Auto-continue interrupted agent work</strong> after gateway restart (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/9934">#9934</a>)</li> <li><strong>Activity heartbeats</strong> prevent false gateway inactivity timeouts (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/10501">#10501</a>)</li> <li><strong>Auxiliary models UI</strong> — dedicated screen for per-task overrides (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/11891">#11891</a>)</li> <li><strong>Auxiliary auto routing defaults to main model</strong> for all users (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/11900">#11900</a>)</li> <li><strong>PLATFORM_HINTS for Matrix, Mattermost, Feishu</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/14428">#14428</a>, @alt-glitch)</li> <li>Fix: reset retry counters after compression; stop poisoning conversation history (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/10055">#10055</a>)</li> <li>Fix: break compression-exhaustion infinite loop and auto-reset session (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/10063">#10063</a>)</li> <li>Fix: stale agent timeout, uv venv detection, empty response after tools (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/10065">#10065</a>)</li> <li>Fix: prevent premature loop exit when weak models return empty after substantive tool calls (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/10472">#10472</a>)</li> <li>Fix: preserve pre-start terminal interrupts (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/10504">#10504</a>)</li> <li>Fix: improve interrupt responsiveness during concurrent tool execution (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/10935">#10935</a>)</li> <li>Fix: word-wrap spinner, interruptable agent join, and delegate_task interrupt (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/10940">#10940</a>)</li> <li>Fix: <code>/stop</code> no longer resets the session (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/9224">#9224</a>)</li> <li>Fix: honor interrupts during MCP tool waits (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/9382">#9382</a>, @helix4u)</li> <li>Fix: break stuck session resume loops after repeated restarts (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/9941">#9941</a>)</li> <li>Fix: empty response nudge crash + placeholder leak to cron targets (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/11021">#11021</a>)</li> <li>Fix: streaming cursor sanitization to prevent message truncation (multiple PRs)</li> <li>Fix: resolve <code>context_length</code> for plugin context engines (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/9238">#9238</a>)</li> </ul> <h3>Session & Memory</h3> <ul> <li><strong>Auto-prune old sessions + VACUUM state.db</strong> at startup (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/13861">#13861</a>)</li> <li><strong>Honcho overhaul</strong> — context injection, 5-tool surface, cost safety, session isolation (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/10619">#10619</a>)</li> <li><strong>Hindsight richer session-scoped retain metadata</strong> (salvage of #6290) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/13987">#13987</a>)</li> <li>Fix: deduplicate memory provider tools to prevent 400 on strict providers (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/10511">#10511</a>)</li> <li>Fix: discover user-installed memory providers from <code>$HERMES_HOME/plugins/</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/10529">#10529</a>)</li> <li>Fix: add <code>on_memory_write</code> bridge to sequential tool execution path (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/10507">#10507</a>)</li> <li>Fix: preserve <code>session_id</code> across <code>previous_response_id</code> chains in <code>/v1/responses</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/10059">#10059</a>)</li> </ul> <hr> <h2>🖥️ New Ink-based TUI</h2> <p>A full React/Ink rewrite of the interactive CLI — invoked via <code>hermes --tui</code> or <code>HERMES_TUI=1</code>. Shipped across ~310 commits to <code>ui-tui/</code> and <code>tui_gateway/</code>.</p> <h3>TUI Foundations</h3> <ul> <li>New TUI based on Ink + Python JSON-RPC backend</li> <li>Prettier + ESLint + vitest tooling for <code>ui-tui/</code></li> <li>Entry split between <code>src/entry.tsx</code> (TTY gate) and <code>src/app.tsx</code> (state machine)</li> <li>Persistent <code>_SlashWorker</code> subprocess for slash command dispatch</li> </ul> <h3>UX & Features</h3> <ul> <li><strong>Stable picker keys, /clear confirm, light-theme preset</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/12312">#12312</a>, @OutThisLife)</li> <li><strong>Git branch in status bar</strong> cwd label (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/12305">#12305</a>, @OutThisLife)</li> <li><strong>Per-turn elapsed stopwatch in FaceTicker + done-in sys line</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/13105">#13105</a>, @OutThisLife)</li> <li><strong>Subagent spawn observability overlay</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/14045">#14045</a>, @OutThisLife)</li> <li><strong>Per-prompt elapsed stopwatch in status bar</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/12948">#12948</a>)</li> <li>Sticky composer that freezes during scroll</li> <li>OSC-52 clipboard support for copy across SSH sessions</li> <li>Virtualized history rendering for performance</li> <li>Slash command autocomplete via <code>complete.slash</code> RPC</li> <li>Path autocomplete via <code>complete.path</code> RPC</li> <li>Dozens of resize/ghosting/sticky-prompt fixes landed through the week</li> </ul> <h3>Structural Refactors</h3> <ul> <li>Decomposed <code>app.tsx</code> into <code>app/event-handler</code>, <code>app/slash-handler</code>, <code>app/stores</code>, <code>app/hooks</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/14640">#14640</a> and surrounding)</li> <li>Component split: <code>branding.tsx</code>, <code>markdown.tsx</code>, <code>prompts.tsx</code>, <code>sessionPicker.tsx</code>, <code>messageLine.tsx</code>, <code>thinking.tsx</code>, <code>maskedPrompt.tsx</code></li> <li>Hook split: <code>useCompletion</code>, <code>useInputHistory</code>, <code>useQueue</code>, <code>useVirtualHistory</code></li> </ul> <hr> <h2>📱 Messaging Platforms (Gateway)</h2> <h3>New Platforms</h3> <ul> <li><strong>QQBot (17th platform)</strong> — QQ Official API v2 adapter with QR setup, streaming, package split (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/9364">#9364</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/11831">#11831</a>)</li> </ul> <h3>Telegram</h3> <ul> <li><strong>Dedicated <code>TELEGRAM_PROXY</code> env var + config.yaml proxy support</strong> (closes #9414, #6530, #9074, #7786) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/10681">#10681</a>)</li> <li><strong><code>ignored_threads</code> config</strong> for Telegram groups (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/9530">#9530</a>)</li> <li><strong>Config option to disable link previews</strong> (closes #8728) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/10610">#10610</a>)</li> <li><strong>Auto-wrap markdown tables</strong> in code blocks (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/11794">#11794</a>)</li> <li>Fix: prevent duplicate replies when stream task is cancelled (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/9319">#9319</a>)</li> <li>Fix: prevent streaming cursor (▉) from appearing as standalone messages (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/9538">#9538</a>)</li> <li>Fix: retry transient tool sends + cold-boot budget (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/10947">#10947</a>)</li> <li>Fix: Markdown special char escaping in <code>send_exec_approval</code></li> <li>Fix: parentheses in URLs during MarkdownV2 link conversion</li> <li>Fix: Unicode dash normalization in model switch (closes iOS smart-punctuation issue)</li> <li>Many platform hint / streaming / session-key fixes</li> </ul> <h3>Discord</h3> <ul> <li><strong>Forum channel support</strong> (salvage of #10145 + media + polish) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/11920">#11920</a>)</li> <li><strong><code>DISCORD_ALLOWED_ROLES</code></strong> for role-based access control (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/11608">#11608</a>)</li> <li><strong>Config option to disable slash commands</strong> (salvage #13130) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/14315">#14315</a>)</li> <li><strong>Native <code>send_animation</code></strong> for inline GIF playback (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/10283">#10283</a>)</li> <li><strong><code>send_message</code> Discord media attachments</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/10246">#10246</a>)</li> <li><strong><code>/skill</code> command group</strong> with category subcommands (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/9909">#9909</a>)</li> <li><strong>Extract reply text from message references</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/9781">#9781</a>)</li> </ul> <h3>Feishu</h3> <ul> <li><strong>Intelligent reply on document comments</strong> with 3-tier access control (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/11898">#11898</a>)</li> <li><strong>Show processing state via reactions</strong> on user messages (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/12927">#12927</a>)</li> <li><strong>Preserve @mention context for agent consumption</strong> (salvage #13874) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/14167">#14167</a>)</li> </ul> <h3>DingTalk</h3> <ul> <li><strong><code>require_mention</code> + <code>allowed_users</code> gating</strong> (parity with Slack/Telegram/Discord) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/11564">#11564</a>)</li> <li><strong>QR-code device-flow authorization</strong> for setup wizard (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/11574">#11574</a>)</li> <li><strong>AI Cards streaming, emoji reactions, and media handling</strong> (salvage of #10985) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/11910">#11910</a>)</li> </ul> <h3>WhatsApp</h3> <ul> <li><strong><code>send_voice</code></strong> — native audio message delivery (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/13002">#13002</a>)</li> <li><strong><code>dm_policy</code> and <code>group_policy</code></strong> parity with WeCom/Weixin/QQ adapters (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/13151">#13151</a>)</li> </ul> <h3>WeCom / Weixin</h3> <ul> <li><strong>WeCom QR-scan bot creation + interactive setup wizard</strong> (salvage #13923) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/13961">#13961</a>)</li> </ul> <h3>Signal</h3> <ul> <li><strong>Media delivery support</strong> via <code>send_message</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/13178">#13178</a>)</li> </ul> <h3>Slack</h3> <ul> <li><strong>Per-thread sessions for DMs by default</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/10987">#10987</a>)</li> </ul> <h3>BlueBubbles (iMessage)</h3> <ul> <li>Group chat session separation, webhook registration & auth fixes (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/9806">#9806</a>)</li> </ul> <h3>Gateway Core</h3> <ul> <li><strong>Gateway proxy mode</strong> — forward messages to a remote API server (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/9787">#9787</a>)</li> <li><strong>Per-channel ephemeral prompts</strong> (Discord, Telegram, Slack, Mattermost) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/10564">#10564</a>)</li> <li><strong>Surface plugin slash commands</strong> natively on all platforms + decision-capable command hook (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/14175">#14175</a>)</li> <li><strong>Support document/archive extensions in MEDIA: tag extraction</strong> (salvage #8255) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/14307">#14307</a>)</li> <li><strong>Recognize <code>.pdf</code> in MEDIA: tag extraction</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/13683">#13683</a>)</li> <li><strong><code>--all</code> flag for <code>gateway start</code> and <code>restart</code></strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/10043">#10043</a>)</li> <li><strong>Notify active sessions on gateway shutdown</strong> + update health check (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/9850">#9850</a>)</li> <li><strong>Block agent from self-destructing the gateway</strong> via terminal (closes #6666) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/9895">#9895</a>)</li> <li>Fix: suppress duplicate replies on interrupt and streaming flood control (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/10235">#10235</a>)</li> <li>Fix: close temporary agents after one-off tasks (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/11028">#11028</a>, @kshitijk4poor)</li> <li>Fix: busy-session ack when user messages during active agent run (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/10068">#10068</a>)</li> <li>Fix: route watch-pattern notifications to the originating session (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/10460">#10460</a>)</li> <li>Fix: preserve notify context in executor threads (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/10921">#10921</a>, @kshitijk4poor)</li> <li>Fix: avoid duplicate replies after interrupted long tasks (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/11018">#11018</a>)</li> <li>Fix: unlink stale PID + lock files on cleanup</li> <li>Fix: force-unlink stale PID file after <code>--replace</code> takeover</li> </ul> <hr> <h2>🔧 Tool System</h2> <h3>Plugin Surface (major expansion)</h3> <ul> <li><strong><code>register_command()</code></strong> — plugins can now add slash commands (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/10626">#10626</a>)</li> <li><strong><code>dispatch_tool()</code></strong> — plugins can invoke tools from their code (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/10763">#10763</a>)</li> <li><strong><code>pre_tool_call</code> blocking</strong> — plugins can veto tool execution (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/9377">#9377</a>)</li> <li><strong><code>transform_tool_result</code></strong> — plugins rewrite tool results generically (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/12972">#12972</a>)</li> <li><strong><code>transform_terminal_output</code></strong> — plugins rewrite terminal tool output (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/12929">#12929</a>)</li> <li><strong>Namespaced skill registration</strong> for plugin skill bundles (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/9786">#9786</a>)</li> <li><strong>Opt-in-by-default + bundled disk-cleanup plugin</strong> (salvage #12212) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/12944">#12944</a>)</li> <li><strong>Pluggable <code>image_gen</code> backends + OpenAI provider</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/13799">#13799</a>)</li> <li><strong><code>openai-codex</code> image_gen plugin</strong> (gpt-image-2 via Codex OAuth) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/14317">#14317</a>)</li> <li><strong>Shell hooks</strong> — wire shell scripts as hook callbacks (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/13296">#13296</a>)</li> </ul> <h3>Browser</h3> <ul> <li><strong><code>browser_cdp</code> raw DevTools Protocol passthrough</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/12369">#12369</a>)</li> <li>Camofox hardening + connection stability across the window</li> </ul> <h3>Execute Code</h3> <ul> <li><strong>Project/strict execution modes</strong> (default: project) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/11971">#11971</a>)</li> </ul> <h3>Image Generation</h3> <ul> <li><strong>Multi-model FAL support</strong> with picker in <code>hermes tools</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/11265">#11265</a>)</li> <li><strong>Recraft V3 → V4 Pro, Nano Banana → Pro upgrades</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/11406">#11406</a>)</li> <li><strong>GPT Image 2</strong> in FAL catalog (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/13677">#13677</a>)</li> <li><strong>xAI image generation provider</strong> (grok-imagine-image) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/14765">#14765</a>)</li> </ul> <h3>TTS / STT / Voice</h3> <ul> <li><strong>Google Gemini TTS provider</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/11229">#11229</a>)</li> <li><strong>xAI Grok STT provider</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/14473">#14473</a>)</li> <li><strong>xAI TTS</strong> (shipped with Responses API upgrade) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/10783">#10783</a>)</li> <li><strong>KittenTTS local provider</strong> (salvage of #2109) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/13395">#13395</a>)</li> <li><strong>CLI record beep toggle</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/13247">#13247</a>, @helix4u)</li> </ul> <h3>Webhook / Cron</h3> <ul> <li><strong>Webhook direct-delivery mode</strong> — zero-LLM push notifications (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/12473">#12473</a>)</li> <li><strong>Cron <code>wakeAgent</code> gate</strong> — scripts can skip the agent entirely (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/12373">#12373</a>)</li> <li><strong>Cron per-job <code>enabled_toolsets</code></strong> — cap token overhead + cost per job (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/14767">#14767</a>)</li> </ul> <h3>Delegate</h3> <ul> <li><strong>Orchestrator role</strong> + configurable spawn depth (default flat) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/13691">#13691</a>)</li> <li><strong>Cross-agent file state coordination</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/13718">#13718</a>)</li> </ul> <h3>File / Patch</h3> <ul> <li><strong><code>patch</code> — "did you mean?" feedback</strong> when patch fails to match (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/13435">#13435</a>)</li> </ul> <h3>API Server</h3> <ul> <li><strong>Stream <code>/v1/responses</code> SSE tool events</strong> (salvage #9779) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/10049">#10049</a>)</li> <li><strong>Inline image inputs</strong> on <code>/v1/chat/completions</code> and <code>/v1/responses</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/12969">#12969</a>)</li> </ul> <h3>Docker / Podman</h3> <ul> <li><strong>Entry-level Podman support</strong> — <code>find_docker()</code> + rootless entrypoint (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/10066">#10066</a>)</li> <li><strong>Add docker-cli to Docker image</strong> (salvage #10096) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/14232">#14232</a>)</li> <li><strong>File-sync back to host on teardown</strong> (salvage of #8189 + hardening) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/11291">#11291</a>)</li> </ul> <h3>MCP</h3> <ul> <li>12 MCP improvements across the window (status, timeout handling, tool-call forwarding, etc.)</li> </ul> <hr> <h2>🧩 Skills Ecosystem</h2> <h3>Skill System</h3> <ul> <li><strong>Namespaced skill registration</strong> for plugin bundles (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/9786">#9786</a>)</li> <li><strong><code>hermes skills reset</code></strong> to un-stick bundled skills (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/11468">#11468</a>)</li> <li><strong>Skills guard opt-in</strong> — <code>config.skills.guard_agent_created</code> (default off) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/14557">#14557</a>)</li> <li><strong>Bundled skill scripts runnable out of the box</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/13384">#13384</a>)</li> <li><strong><code>xitter</code> replaced with <code>xurl</code></strong> — the official X API CLI (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/12303">#12303</a>)</li> <li><strong>MiniMax-AI/cli as default skill tap</strong> (salvage #7501) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/14493">#14493</a>)</li> <li><strong>Fuzzy <code>@</code> file completions + mtime sorting</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/9467">#9467</a>)</li> </ul> <h3>New Skills</h3> <ul> <li><strong>concept-diagrams</strong> (salvage of #11045, @v1k22) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/11363">#11363</a>)</li> <li><strong>architecture-diagram</strong> (Cocoon AI port) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/9906">#9906</a>)</li> <li><strong>pixel-art</strong> with hardware palettes and video animation (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/12663">#12663</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/12725">#12725</a>)</li> <li><strong>baoyu-comic</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/13257">#13257</a>, @JimLiu)</li> <li><strong>baoyu-infographic</strong> — 21 layouts × 21 styles (salvage #9901) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/12254">#12254</a>)</li> <li><strong>page-agent</strong> — embed Alibaba's in-page GUI agent in your webapp (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/13976">#13976</a>)</li> <li><strong>fitness-nutrition</strong> optional skill + optional env var support (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/9355">#9355</a>)</li> <li><strong>drug-discovery</strong> — ChEMBL, PubChem, OpenFDA, ADMET (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/9443">#9443</a>)</li> <li><strong>touchdesigner-mcp</strong> (salvage of #10081) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/12298">#12298</a>)</li> <li><strong>adversarial-ux-test</strong> optional skill (salvage of #2494, @omnissiah-comelse) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/13425">#13425</a>)</li> <li><strong>maps</strong> — added <code>guest_house</code>, <code>camp_site</code>, and dual-key bakery lookup (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/13398">#13398</a>)</li> <li><strong>llm-wiki</strong> — port provenance markers, source hashing, and quality signals (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/13700">#13700</a>)</li> </ul> <hr> <h2>📊 Web Dashboard</h2> <ul> <li><strong>i18n (English + Chinese) language switcher</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/9453">#9453</a>)</li> <li><strong>Live-switching theme system</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/10687">#10687</a>)</li> <li><strong>Dashboard plugin system</strong> — extend the web UI with custom tabs (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/10951">#10951</a>)</li> <li><strong>react-router, sidebar layout, sticky header, dropdown component</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/9370">#9370</a>, @austinpickett)</li> <li><strong>Responsive for mobile</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/9228">#9228</a>, @DeployFaith)</li> <li><strong>Vercel deployment</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/10686">#10686</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/11061">#11061</a>, @austinpickett)</li> <li><strong>Context window config support</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/9357">#9357</a>)</li> <li><strong>HTTP health probe for cross-container gateway detection</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/9894">#9894</a>)</li> <li><strong>Update + restart gateway buttons</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/13526">#13526</a>, @austinpickett)</li> <li><strong>Real API call count per session</strong> (salvages #10140) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/14004">#14004</a>)</li> </ul> <hr> <h2>🖱️ CLI & User Experience</h2> <ul> <li><strong>Dynamic shell completion for bash, zsh, and fish</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/9785">#9785</a>)</li> <li><strong>Light-mode skins + skin-aware completion menus</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/9461">#9461</a>)</li> <li><strong>Numbered keyboard shortcuts</strong> on approval and clarify prompts (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/13416">#13416</a>)</li> <li><strong>Markdown stripping, compact multiline previews, external editor</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/12934">#12934</a>)</li> <li><strong><code>--ignore-user-config</code> and <code>--ignore-rules</code> flags</strong> (port codex#18646) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/14277">#14277</a>)</li> <li><strong>Account limits section in <code>/usage</code></strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/13428">#13428</a>)</li> <li><strong>Doctor: Command Installation check</strong> for <code>hermes</code> bin symlink (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/10112">#10112</a>)</li> <li><strong>ESC cancels secret/sudo prompts</strong>, clearer skip messaging (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/9902">#9902</a>)</li> <li>Fix: agent-facing text uses <code>display_hermes_home()</code> instead of hardcoded <code>~/.hermes</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/10285">#10285</a>)</li> <li>Fix: enforce <code>config.yaml</code> as sole CWD source + deprecate <code>.env</code> CWD vars + add <code>hermes memory reset</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/11029">#11029</a>)</li> </ul> <hr> <h2>🔒 Security & Reliability</h2> <ul> <li><strong>Global toggle to allow private/internal URL resolution</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/14166">#14166</a>)</li> <li><strong>Block agent from self-destructing the gateway</strong> via terminal (closes #6666) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/9895">#9895</a>)</li> <li><strong>Telegram callback authorization</strong> on update prompts (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/10536">#10536</a>)</li> <li><strong>SECURITY.md</strong> added (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/10532">#10532</a>, @I3eg1nner)</li> <li><strong>Warn about legacy hermes.service units</strong> during <code>hermes update</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/11918">#11918</a>)</li> <li><strong>Complete ASCII-locale UnicodeEncodeError recovery</strong> for <code>api_messages</code>/<code>reasoning_content</code> (closes #6843) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/10537">#10537</a>)</li> <li><strong>Prevent stale <code>os.environ</code> leak</strong> after <code>clear_session_vars</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/10527">#10527</a>)</li> <li><strong>Prevent agent hang when backgrounding processes</strong> via terminal tool (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/10584">#10584</a>)</li> <li>Many smaller session-resume, interrupt, streaming, and memory-race fixes throughout the window</li> </ul> <hr> <h2>🐛 Notable Bug Fixes</h2> <p>The <code>fix:</code> category in this window covers 482 PRs. Highlights:</p> <ul> <li>Streaming cursor artifacts filtered from Matrix, Telegram, WhatsApp, Discord (multiple PRs)</li> <li><code><think></code> and <code><thought></code> blocks filtered from gateway stream consumers (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/9408">#9408</a>)</li> <li>Gateway display.streaming root-config override regression (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/9799">#9799</a>)</li> <li>Context <code>session_search</code> coerces limit to int (prevents TypeError) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/10522">#10522</a>)</li> <li>Memory tool stays available when <code>fcntl</code> is unavailable (Windows) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/9783">#9783</a>)</li> <li>Trajectory compressor credentials load from <code>HERMES_HOME/.env</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/9632">#9632</a>, @Dusk1e)</li> <li><code>@_context_completions</code> no longer crashes on <code>@</code> mention (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/9683">#9683</a>, @kshitijk4poor)</li> <li>Group session <code>user_id</code> no longer treated as <code>thread_id</code> in shutdown notifications (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/10546">#10546</a>)</li> <li>Telegram <code>platform_hint</code> — markdown is supported (closes #8261) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/10612">#10612</a>)</li> <li>Doctor checks for Kimi China credentials fixed</li> <li>Streaming: don't suppress final response when commentary message is sent (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/10540">#10540</a>)</li> <li>Rapid Telegram follow-ups no longer get cut off</li> </ul> <hr> <h2>🧪 Testing & CI</h2> <ul> <li><strong>Contributor attribution CI check</strong> on PRs (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/9376">#9376</a>)</li> <li>Hermetic test parity (<code>scripts/run_tests.sh</code>) held across this window</li> <li>Test count stabilized post-Transport refactor; CI matrix held green through the transport rollout</li> </ul> <hr> <h2>📚 Documentation</h2> <ul> <li>Atropos + wandb links in user guide</li> <li>ACP / VS Code / Zed / JetBrains integration docs refresh</li> <li>Webhook subscription docs updated for direct-delivery mode</li> <li>Plugin author guide expanded for new hooks (<code>register_command</code>, <code>dispatch_tool</code>, <code>transform_tool_result</code>)</li> <li>Transport layer developer guide added</li> <li>Website removed Discussions link from README</li> </ul> <hr> <h2>👥 Contributors</h2> <h3>Core</h3> <ul> <li><strong>@teknium1</strong> (Teknium)</li> </ul> <h3>Top Community Contributors (by merged PR count)</h3> <ul> <li><strong>@kshitijk4poor</strong> — 49 PRs · Transport refactor (AnthropicTransport, ResponsesApiTransport), Step Plan provider, Xiaomi MiMo v2.5 support, numerous gateway fixes, promoted Kimi K2.5, @ mention crash fix</li> <li><strong>@OutThisLife</strong> (Brooklyn) — 31 PRs · TUI polish, git branch in status bar, per-turn stopwatch, stable picker keys, <code>/clear</code> confirm, light-theme preset, subagent spawn observability overlay</li> <li><strong>@helix4u</strong> — 11 PRs · Voice CLI record beep, MCP tool interrupt handling, assorted stability fixes</li> <li><strong>@austinpickett</strong> — 8 PRs · Dashboard react-router + sidebar + sticky header + dropdown, Vercel deployment, update + restart buttons</li> <li><strong>@alt-glitch</strong> — 8 PRs · PLATFORM_HINTS for Matrix/Mattermost/Feishu, Matrix fixes</li> <li><strong>@ethernet8023</strong> — 3 PRs</li> <li><strong>@benbarclay</strong> — 3 PRs</li> <li><strong>@Aslaaen</strong> — 2 PRs</li> </ul> <h3>Also contributing</h3> <p>@jerilynzheng (ai-gateway pricing), @JimLiu (baoyu-comic skill), @Dusk1e (trajectory compressor credentials), @DeployFaith (mobile-responsive dashboard), @LeonSGP43, @v1k22 (concept-diagrams), @omnissiah-comelse (adversarial-ux-test), @coekfung (Telegram MarkdownV2 expandable blockquotes), @liftaris (TUI provider resolution), @arihantsethia (skill analytics dashboard), @topcheer + @xing8star (QQBot foundation), @kovyrin, @I3eg1nner (SECURITY.md), @PeterBerthelsen, @lengxii, @priveperfumes, @sjz-ks, @cuyua9, @Disaster-Terminator, @leozeli, @LehaoLin, @trevthefoolish, @loongfay, @MrNiceRicee, @WideLee, @bluefishs, @malaiwah, @bobashopcashier, @dsocolobsky, @iamagenius00, @IAvecilla, @aniruddhaadak80, @Es1la, @asheriif, @walli, @jquesnelle (original Tool Gateway work).</p> <h3>All Contributors (alphabetical)</h3> <p>@0xyg3n, @10ishq, @A-afflatus, @Abnertheforeman, @admin28980, @adybag14-cyber, @akhater, @alexzhu0, @AllardQuek, @alt-glitch, @aniruddhaadak80, @anna-oake, @anniesurla, @anthhub, @areu01or00, @arihantsethia, @arthurbr11, @asheriif, @Aslaaen, @Asunfly, @austinpickett, @AviArora02-commits, @AxDSan, @azhengbot, @Bartok9, @benbarclay, @bennytimz, @bernylinville, @bingo906, @binhnt92, @bkadish, @bluefishs, @bobashopcashier, @brantzh6, @BrennerSpear, @brianclemens, @briandevans, @brooklynnicholson, @bugkill3r, @buray, @burtenshaw, @cdanis, @cgarwood82, @ChimingLiu, @chongweiliu, @christopherwoodall, @coekfung, @cola-runner, @corazzione, @counterposition, @cresslank, @cuyua9, @cypres0099, @danieldoderlein, @davetist, @davidvv, @DeployFaith, @Dev-Mriganka, @devorun, @dieutx, @Disaster-Terminator, @dodo-reach, @draix, @DrStrangerUJN, @dsocolobsky, @Dusk1e, @dyxushuai, @elkimek, @elmatadorgh, @emozilla, @entropidelic, @Erosika, @erosika, @Es1la, @etcircle, @etherman-os, @ethernet8023, @fancydirty, @farion1231, @fatinghenji, @Fatty911, @fengtianyu88, @Feranmi10, @flobo3, @francip, @fuleinist, @g-guthrie, @GenKoKo, @gianfrancopiana, @gnanam1990, @GuyCui, @haileymarshall, @haimu0x, @handsdiff, @hansnow, @hedgeho9X, @helix4u, @hengm3467, @HenkDz, @heykb, @hharry11, @HiddenPuppy, @honghua, @houko, @houziershi, @hsy5571616, @huangke19, @hxp-plus, @Hypn0sis, @I3eg1nner, @iacker, @iamagenius00, @IAvecilla, @iborazzi, @Ifkellx, @ifrederico, @imink, @isaachuangGMICLOUD, @ismell0992-afk, @j0sephz, @Jaaneek, @jackjin1997, @JackTheGit, @jaffarkeikei, @jerilynzheng, @JiaDe-Wu, @Jiawen-lee, @JimLiu, @jinzheng8115, @jneeee, @jplew, @jquesnelle, @Julientalbot, @Junass1, @jvcl, @kagura-agent, @keifergu, @kevinskysunny, @keyuyuan, @konsisumer, @kovyrin, @kshitijk4poor, @leeyang1990, @LehaoLin, @lengxii, @LeonSGP43, @leozeli, @li0near, @liftaris, @Lind3ey, @Linux2010, @liujinkun2025, @LLQWQ, @Llugaes, @lmoncany, @longsizhuo, @lrawnsley, @Lubrsy706, @lumenradley, @luyao618, @lvnilesh, @LVT382009, @m0n5t3r, @Magaav, @MagicRay1217, @malaiwah, @manuelschipper, @Marvae, @MassiveMassimo, @mavrickdeveloper, @maxchernin, @memosr, @meng93, @mengjian-github, @MestreY0d4-Uninter, @Mibayy, @MikeFac, @mikewaters, @milkoor, @minorgod, @MrNiceRicee, @ms-alan, @mvanhorn, @n-WN, @N0nb0at, @Nan93, @NIDNASSER-Abdelmajid, @nish3451, @niyoh120, @nocoo, @nosleepcassette, @NousResearch, @ogzerber, @omnissiah-comelse, @Only-Code-A, @opriz, @OwenYWT, @pedh, @pefontana, @PeterBerthelsen, @phpoh, @pinion05, @plgonzalezrx8, @pradeep7127, @priveperfumes, @projectadmin-dev, @PStarH, @rnijhara, @Roy-oss1, @roytian1217, @RucchiZ, @Ruzzgar, @RyanLee-Dev, @Salt-555, @Sanjays2402, @sgaofen, @sharziki, @shenuu, @shin4, @SHL0MS, @shushuzn, @sicnuyudidi, @simon-gtcl, @simon-marcus, @sirEven, @Sisyphus, @sjz-ks, @snreynolds, @Societus, @Somme4096, @sontianye, @sprmn24, @StefanIsMe, @stephenschoettler, @Swift42, @taeng0204, @taeuk178, @tannerfokkens-maker, @TaroballzChen, @ten-ltw, @teyrebaz33, @Tianworld, @topcheer, @Tranquil-Flow, @trevthefoolish, @TroyMitchell911, @UNLINEARITY, @v1k22, @vivganes, @vominh1919, @vrinek, @VTRiot, @WadydX, @walli, @wenhao7, @WhiteWorld, @WideLee, @wujhsu, @WuTianyi123, @Wysie, @xandersbell, @xiaoqiang243, @xiayh0107, @xinpengdr, @Xowiek, @ycbai, @yeyitech, @ygd58, @youngDoo, @yudaiyan, @Yukipukii1, @yule975, @yyq4193, @yzx9, @ZaynJarvis, @zhang9w0v5, @zhanggttry, @zhangxicen, @zhongyueming1121, @zhouxiaoya12, @zons-zhaozhy</p> <p>Also: @maelrx, @Marco Rutsch, @MaxsolcuCrypto, @Mind-Dragon, @Paul Bergeron, @say8hi, @whitehatjr1001.</p> <hr> <p><strong>Full Changelog</strong>: <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/compare/v2026.4.13...v2026.4.23">v2026.4.13...v2026.4.23</a></p> </div><div class="link-row" data-astro-cid-l7qxtvnw><span class="lr-label" data-astro-cid-l7qxtvnw>Links</span><a href="https://github.com/NousResearch/hermes-agent/releases/tag/v2026.4.23" data-astro-cid-l7qxtvnw>GitHub release notes ↗</a><a href="https://github.com/NousResearch/hermes-agent/compare/v2026.4.16...v2026.4.23" data-astro-cid-l7qxtvnw>Full diff ↗</a><a href="/gateway/" data-astro-cid-l7qxtvnw>Gateway Guide →</a></div></div></details><details class="rel" data-astro-cid-l7qxtvnw><summary data-astro-cid-l7qxtvnw><span class="r-arrow" data-astro-cid-l7qxtvnw>▶</span><span class="r-ver" data-astro-cid-l7qxtvnw>v0.10.0</span><span class="r-date" data-astro-cid-l7qxtvnw>2026-04-16</span></summary><div class="rel-body" data-astro-cid-l7qxtvnw><p class="r-summary" data-astro-cid-l7qxtvnw>The Tool Gateway release — paid Nous Portal subscribers can now use web search, image generation, text-to-speech, and browser automation through their existing subscription with zero additional API keys.</p><div class="r-notes" data-astro-cid-l7qxtvnw><blockquote> <p>The Tool Gateway release — paid Nous Portal subscribers can now use web search, image generation, text-to-speech, and browser automation through their existing subscription with zero additional API keys.</p> </blockquote> <hr> <h2>✨ Highlights</h2> <ul> <li><strong>Nous Tool Gateway</strong> — Paid <a rel="noopener" href="https://portal.nousresearch.com">Nous Portal</a> subscribers now get automatic access to <strong>web search</strong> (Firecrawl), <strong>image generation</strong> (FAL / FLUX 2 Pro), <strong>text-to-speech</strong> (OpenAI TTS), and <strong>browser automation</strong> (Browser Use) through their existing subscription. No separate API keys needed — just run <code>hermes model</code>, select Nous Portal, and pick which tools to enable. Per-tool opt-in via <code>use_gateway</code> config, full integration with <code>hermes tools</code> and <code>hermes status</code>, and the runtime correctly prefers the gateway even when direct API keys exist. Replaces the old hidden <code>HERMES_ENABLE_NOUS_MANAGED_TOOLS</code> env var with clean subscription-based detection. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/11206">#11206</a>, based on work by @jquesnelle; docs: <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/11208">#11208</a>)</li> </ul> <hr> <h2>🐛 Bug Fixes & Improvements</h2> <p>This release includes 180+ commits with numerous bug fixes, platform improvements, and reliability enhancements across the agent core, gateway, CLI, and tool system. Full details will be published in the v0.11.0 changelog.</p> <hr> <h2>👥 Contributors</h2> <ul> <li><strong>@jquesnelle</strong> (emozilla) — Original Tool Gateway implementation (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/10799">#10799</a>), salvaged and shipped in this release</li> </ul> <hr> <p><strong>Full Changelog</strong>: <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/compare/v2026.4.13...v2026.4.16">v2026.4.13...v2026.4.16</a></p> </div><div class="link-row" data-astro-cid-l7qxtvnw><span class="lr-label" data-astro-cid-l7qxtvnw>Links</span><a href="https://github.com/NousResearch/hermes-agent/releases/tag/v2026.4.16" data-astro-cid-l7qxtvnw>GitHub release notes ↗</a><a href="https://github.com/NousResearch/hermes-agent/compare/v2026.4.13...v2026.4.16" data-astro-cid-l7qxtvnw>Full diff ↗</a><a href="/gateway/" data-astro-cid-l7qxtvnw>Gateway Guide →</a></div></div></details><details class="rel" data-astro-cid-l7qxtvnw><summary data-astro-cid-l7qxtvnw><span class="r-arrow" data-astro-cid-l7qxtvnw>▶</span><span class="r-ver" data-astro-cid-l7qxtvnw>v0.9.0</span><span class="r-date" data-astro-cid-l7qxtvnw>2026-04-13</span></summary><div class="rel-body" data-astro-cid-l7qxtvnw><p class="r-summary" data-astro-cid-l7qxtvnw>The everywhere release — Hermes goes mobile with Termux/Android, adds iMessage and WeChat, ships Fast Mode for OpenAI and Anthropic, introduces background process monitoring, launches a local web dashboard for managing your agent, and delivers the deepest security hardening pass yet across 16 supported platforms.</p><div class="r-notes" data-astro-cid-l7qxtvnw><blockquote> <p>The everywhere release — Hermes goes mobile with Termux/Android, adds iMessage and WeChat, ships Fast Mode for OpenAI and Anthropic, introduces background process monitoring, launches a local web dashboard for managing your agent, and delivers the deepest security hardening pass yet across 16 supported platforms.</p> </blockquote> <hr> <h2>✨ Highlights</h2> <ul> <li><p><strong>Local Web Dashboard</strong> — A new browser-based dashboard for managing your Hermes Agent locally. Configure settings, monitor sessions, browse skills, and manage your gateway — all from a clean web interface without touching config files or the terminal. The easiest way to get started with Hermes.</p> </li> <li><p><strong>Fast Mode (<code>/fast</code>)</strong> — Priority processing for OpenAI and Anthropic models. Toggle <code>/fast</code> to route through priority queues for significantly lower latency on supported models (GPT-5.4, Codex, Claude). Expands across all OpenAI Priority Processing models and Anthropic's fast tier. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/6875">#6875</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/6960">#6960</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7037">#7037</a>)</p> </li> <li><p><strong>iMessage via BlueBubbles</strong> — Full iMessage integration through BlueBubbles, bringing Hermes to Apple's messaging ecosystem. Auto-webhook registration, setup wizard integration, and crash resilience. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/6437">#6437</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/6460">#6460</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/6494">#6494</a>)</p> </li> <li><p><strong>WeChat (Weixin) & WeCom Callback Mode</strong> — Native WeChat support via iLink Bot API and a new WeCom callback-mode adapter for self-built enterprise apps. Streaming cursor, media uploads, markdown link handling, and atomic state persistence. Hermes now covers the Chinese messaging ecosystem end-to-end. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7166">#7166</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7943">#7943</a>)</p> </li> <li><p><strong>Termux / Android Support</strong> — Run Hermes natively on Android via Termux. Adapted install paths, TUI optimizations for mobile screens, voice backend support, and the <code>/image</code> command work on-device. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/6834">#6834</a>)</p> </li> <li><p><strong>Background Process Monitoring (<code>watch_patterns</code>)</strong> — Set patterns to watch for in background process output and get notified in real-time when they match. Monitor for errors, wait for specific events ("listening on port"), or watch build logs — all without polling. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7635">#7635</a>)</p> </li> <li><p><strong>Native xAI & Xiaomi MiMo Providers</strong> — First-class provider support for xAI (Grok) and Xiaomi MiMo, with direct API access, model catalogs, and setup wizard integration. Plus Qwen OAuth with portal request support. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7372">#7372</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7855">#7855</a>)</p> </li> <li><p><strong>Pluggable Context Engine</strong> — Context management is now a pluggable slot via <code>hermes plugins</code>. Swap in custom context engines that control what the agent sees each turn — filtering, summarization, or domain-specific context injection. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7464">#7464</a>)</p> </li> <li><p><strong>Unified Proxy Support</strong> — SOCKS proxy, <code>DISCORD_PROXY</code>, and system proxy auto-detection across all gateway platforms. Hermes behind corporate firewalls just works. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/6814">#6814</a>)</p> </li> <li><p><strong>Comprehensive Security Hardening</strong> — Path traversal protection in checkpoint manager, shell injection neutralization in sandbox writes, SSRF redirect guards in Slack image uploads, Twilio webhook signature validation (SMS RCE fix), API server auth enforcement, git argument injection prevention, and approval button authorization. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7933">#7933</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7944">#7944</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7940">#7940</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7151">#7151</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7156">#7156</a>)</p> </li> <li><p><strong><code>hermes backup</code> & <code>hermes import</code></strong> — Full backup and restore of your Hermes configuration, sessions, skills, and memory. Migrate between machines or create snapshots before major changes. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7997">#7997</a>)</p> </li> <li><p><strong>16 Supported Platforms</strong> — With BlueBubbles (iMessage) and WeChat joining Telegram, Discord, Slack, WhatsApp, Signal, Matrix, Email, SMS, DingTalk, Feishu, WeCom, Mattermost, Home Assistant, and Webhooks, Hermes now runs on 16 messaging platforms out of the box.</p> </li> <li><p><strong><code>/debug</code> & <code>hermes debug share</code></strong> — New debugging toolkit: <code>/debug</code> slash command across all platforms for quick diagnostics, plus <code>hermes debug share</code> to upload a full debug report to a pastebin for easy sharing when troubleshooting. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/8681">#8681</a>)</p> </li> </ul> <hr> <h2>🏗️ Core Agent & Architecture</h2> <h3>Provider & Model Support</h3> <ul> <li><strong>Native xAI (Grok) provider</strong> with direct API access and model catalog (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7372">#7372</a>)</li> <li><strong>Xiaomi MiMo as first-class provider</strong> — setup wizard, model catalog, empty response recovery (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7855">#7855</a>)</li> <li><strong>Qwen OAuth provider</strong> with portal request support (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/6282">#6282</a>)</li> <li><strong>Fast Mode</strong> — <code>/fast</code> toggle for OpenAI Priority Processing + Anthropic fast tier (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/6875">#6875</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/6960">#6960</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7037">#7037</a>)</li> <li><strong>Structured API error classification</strong> for smart failover decisions (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/6514">#6514</a>)</li> <li><strong>Rate limit header capture</strong> shown in <code>/usage</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/6541">#6541</a>)</li> <li><strong>API server model name</strong> derived from profile name (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/6857">#6857</a>)</li> <li><strong>Custom providers</strong> now included in <code>/model</code> listings and resolution (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7088">#7088</a>)</li> <li><strong>Fallback provider activation</strong> on repeated empty responses with user-visible status (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7505">#7505</a>)</li> <li><strong>OpenRouter variant tags</strong> (<code>:free</code>, <code>:extended</code>, <code>:fast</code>) preserved during model switch (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/6383">#6383</a>)</li> <li><strong>Credential exhaustion TTL</strong> reduced from 24 hours to 1 hour (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/6504">#6504</a>)</li> <li><strong>OAuth credential lifecycle</strong> hardening — stale pool keys, auth.json sync, Codex CLI race fixes (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/6874">#6874</a>)</li> <li>Empty response recovery for reasoning models (MiMo, Qwen, GLM) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/8609">#8609</a>)</li> <li>MiniMax context lengths, thinking guard, endpoint corrections (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/6082">#6082</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7126">#7126</a>)</li> <li>Z.AI endpoint auto-detect via probe and cache (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5763">#5763</a>)</li> </ul> <h3>Agent Loop & Conversation</h3> <ul> <li><strong>Pluggable context engine slot</strong> via <code>hermes plugins</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7464">#7464</a>)</li> <li><strong>Background process monitoring</strong> — <code>watch_patterns</code> for real-time output alerts (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7635">#7635</a>)</li> <li><strong>Improved context compression</strong> — higher limits, tool tracking, degradation warnings, token-budget tail protection (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/6395">#6395</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/6453">#6453</a>)</li> <li><strong><code>/compress <focus></code></strong> — guided compression with a focus topic (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/8017">#8017</a>)</li> <li><strong>Tiered context pressure warnings</strong> with gateway dedup (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/6411">#6411</a>)</li> <li><strong>Staged inactivity warning</strong> before timeout escalation (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/6387">#6387</a>)</li> <li><strong>Prevent agent from stopping mid-task</strong> — compression floor, budget overhaul, activity tracking (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7983">#7983</a>)</li> <li><strong>Propagate child activity to parent</strong> during <code>delegate_task</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7295">#7295</a>)</li> <li><strong>Truncated streaming tool call detection</strong> before execution (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/6847">#6847</a>)</li> <li>Empty response retry (3 attempts with nudge) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/6488">#6488</a>)</li> <li>Adaptive streaming backoff + cursor strip to prevent message truncation (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7683">#7683</a>)</li> <li>Compression uses live session model instead of stale persisted config (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/8258">#8258</a>)</li> <li>Strip <code><thought></code> tags from Gemma 4 responses (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/8562">#8562</a>)</li> <li>Prevent <code><think></code> in prose from suppressing response output (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/6968">#6968</a>)</li> <li>Turn-exit diagnostic logging to agent loop (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/6549">#6549</a>)</li> <li>Scope tool interrupt signal per-thread to prevent cross-session leaks (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7930">#7930</a>)</li> </ul> <h3>Memory & Sessions</h3> <ul> <li><strong>Hindsight memory plugin</strong> — feature parity, setup wizard, config improvements — @nicoloboschi (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/6428">#6428</a>)</li> <li><strong>Honcho</strong> — opt-in <code>initOnSessionStart</code> for tools mode — @Kathie-yu (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/6995">#6995</a>)</li> <li>Orphan children instead of cascade-deleting in prune/delete (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/6513">#6513</a>)</li> <li>Doctor command only checks the active memory provider (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/6285">#6285</a>)</li> </ul> <hr> <h2>📱 Messaging Platforms (Gateway)</h2> <h3>New Platforms</h3> <ul> <li><strong>BlueBubbles (iMessage)</strong> — full adapter with auto-webhook registration, setup wizard, and crash resilience (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/6437">#6437</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/6460">#6460</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/6494">#6494</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7107">#7107</a>)</li> <li><strong>Weixin (WeChat)</strong> — native support via iLink Bot API with streaming, media uploads, markdown links (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7166">#7166</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/8665">#8665</a>)</li> <li><strong>WeCom Callback Mode</strong> — self-built enterprise app adapter with atomic state persistence (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7943">#7943</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7928">#7928</a>)</li> </ul> <h3>Discord</h3> <ul> <li><strong>Allowed channels whitelist</strong> config — @jarvis-phw (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7044">#7044</a>)</li> <li><strong>Forum channel topic inheritance</strong> in thread sessions — @hermes-agent-dhabibi (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/6377">#6377</a>)</li> <li><strong>DISCORD_REPLY_TO_MODE</strong> setting (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/6333">#6333</a>)</li> <li>Accept <code>.log</code> attachments, raise document size limit — @kira-ariaki (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/6467">#6467</a>)</li> <li>Decouple readiness from slash sync (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/8016">#8016</a>)</li> </ul> <h3>Slack</h3> <ul> <li><strong>Consolidated Slack improvements</strong> — 7 community PRs salvaged into one (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/6809">#6809</a>)</li> <li>Handle assistant thread lifecycle events (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/6433">#6433</a>)</li> </ul> <h3>Matrix</h3> <ul> <li><strong>Migrated from matrix-nio to mautrix-python</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7518">#7518</a>)</li> <li>SQLite crypto store replacing pickle (fixes E2EE decryption) — @alt-glitch (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7981">#7981</a>)</li> <li>Cross-signing recovery key verification for E2EE migration (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/8282">#8282</a>)</li> <li>DM mention threads + group chat events for Feishu (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7423">#7423</a>)</li> </ul> <h3>Gateway Core</h3> <ul> <li><strong>Unified proxy support</strong> — SOCKS, DISCORD_PROXY, multi-platform with macOS auto-detection (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/6814">#6814</a>)</li> <li><strong>Inbound text batching</strong> for Discord, Matrix, WeCom + adaptive delay (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/6979">#6979</a>)</li> <li><strong>Surface natural mid-turn assistant messages</strong> in chat platforms (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7978">#7978</a>)</li> <li><strong>WSL-aware gateway</strong> with smart systemd detection (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7510">#7510</a>)</li> <li><strong>All missing platforms added to setup wizard</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7949">#7949</a>)</li> <li><strong>Per-platform <code>tool_progress</code> overrides</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/6348">#6348</a>)</li> <li><strong>Configurable 'still working' notification interval</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/8572">#8572</a>)</li> <li><code>/model</code> switch persists across messages (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7081">#7081</a>)</li> <li><code>/usage</code> shows rate limits, cost, and token details between turns (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7038">#7038</a>)</li> <li>Drain in-flight work before restart (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7503">#7503</a>)</li> <li>Don't evict cached agent on failed runs — prevents MCP restart loop (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7539">#7539</a>)</li> <li>Replace <code>os.environ</code> session state with <code>contextvars</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7454">#7454</a>)</li> <li>Derive channel directory platforms from enum instead of hardcoded list (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7450">#7450</a>)</li> <li>Validate image downloads before caching (cross-platform) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7125">#7125</a>)</li> <li>Cross-platform webhook delivery for all platforms (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7095">#7095</a>)</li> <li>Cron Discord thread_id delivery support (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7106">#7106</a>)</li> <li>Feishu QR-based bot onboarding (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/8570">#8570</a>)</li> <li>Gateway status scoped to active profile (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7951">#7951</a>)</li> <li>Prevent background process notifications from triggering false pairing requests (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/6434">#6434</a>)</li> </ul> <hr> <h2>🖥️ CLI & User Experience</h2> <h3>Interactive CLI</h3> <ul> <li><strong>Termux / Android support</strong> — adapted install paths, TUI, voice, <code>/image</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/6834">#6834</a>)</li> <li><strong>Native <code>/model</code> picker modal</strong> for provider → model selection (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/8003">#8003</a>)</li> <li><strong>Live per-tool elapsed timer</strong> restored in TUI spinner (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7359">#7359</a>)</li> <li><strong>Stacked tool progress scrollback</strong> in TUI (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/8201">#8201</a>)</li> <li><strong>Random tips on new session start</strong> (CLI + gateway, 279 tips) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/8225">#8225</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/8237">#8237</a>)</li> <li><strong><code>hermes dump</code></strong> — copy-pasteable setup summary for debugging (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/6550">#6550</a>)</li> <li><strong><code>hermes backup</code> / <code>hermes import</code></strong> — full config backup and restore (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7997">#7997</a>)</li> <li><strong>WSL environment hint</strong> in system prompt (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/8285">#8285</a>)</li> <li><strong>Profile creation UX</strong> — seed SOUL.md + credential warning (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/8553">#8553</a>)</li> <li>Shell-aware sudo detection, empty password support (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/6517">#6517</a>)</li> <li>Flush stdin after curses/terminal menus to prevent escape sequence leakage (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7167">#7167</a>)</li> <li>Handle broken stdin in prompt_toolkit startup (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/8560">#8560</a>)</li> </ul> <h3>Setup & Configuration</h3> <ul> <li><strong>Per-platform display verbosity</strong> configuration (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/8006">#8006</a>)</li> <li><strong>Component-separated logging</strong> with session context and filtering (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7991">#7991</a>)</li> <li><strong><code>network.force_ipv4</code></strong> config to fix IPv6 timeout issues (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/8196">#8196</a>)</li> <li><strong>Standardize message whitespace and JSON formatting</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7988">#7988</a>)</li> <li><strong>Rebrand OpenClaw → Hermes</strong> during migration (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/8210">#8210</a>)</li> <li>Config.yaml takes priority over env vars for auxiliary settings (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7889">#7889</a>)</li> <li>Harden setup provider flows + live OpenRouter catalog refresh (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7078">#7078</a>)</li> <li>Normalize reasoning effort ordering across all surfaces (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/6804">#6804</a>)</li> <li>Remove dead <code>LLM_MODEL</code> env var + migration to clear stale entries (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/6543">#6543</a>)</li> <li>Remove <code>/prompt</code> slash command — prefix expansion footgun (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/6752">#6752</a>)</li> <li><code>HERMES_HOME_MODE</code> env var to override permissions — @ygd58 (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/6993">#6993</a>)</li> <li>Fall back to default model when model config is empty (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/8303">#8303</a>)</li> <li>Warn when compression model context is too small (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7894">#7894</a>)</li> </ul> <hr> <h2>🔧 Tool System</h2> <h3>Environments & Execution</h3> <ul> <li><strong>Unified spawn-per-call execution layer</strong> for environments (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/6343">#6343</a>)</li> <li><strong>Unified file sync</strong> with mtime tracking, deletion, and transactional state (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7087">#7087</a>)</li> <li><strong>Persistent sandbox envs</strong> survive between turns (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/6412">#6412</a>)</li> <li><strong>Bulk file sync</strong> via tar pipe for SSH/Modal backends — @alt-glitch (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/8014">#8014</a>)</li> <li><strong>Daytona</strong> — bulk upload, config bridge, silent disk cap (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7538">#7538</a>)</li> <li>Foreground timeout cap to prevent session deadlocks (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7082">#7082</a>)</li> <li>Guard invalid command values (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/6417">#6417</a>)</li> </ul> <h3>MCP</h3> <ul> <li><strong><code>hermes mcp add --env</code> and <code>--preset</code></strong> support (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7970">#7970</a>)</li> <li>Combine <code>content</code> and <code>structuredContent</code> when both present (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7118">#7118</a>)</li> <li>MCP tool name deconfliction fixes (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7654">#7654</a>)</li> </ul> <h3>Browser</h3> <ul> <li>Browser hardening — dead code removal, caching, scroll perf, security, thread safety (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7354">#7354</a>)</li> <li><code>/browser connect</code> auto-launch uses dedicated Chrome profile dir (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/6821">#6821</a>)</li> <li>Reap orphaned browser sessions on startup (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7931">#7931</a>)</li> </ul> <h3>Voice & Vision</h3> <ul> <li><strong>Voxtral TTS provider</strong> (Mistral AI) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7653">#7653</a>)</li> <li><strong>TTS speed support</strong> for Edge TTS, OpenAI TTS, MiniMax (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/8666">#8666</a>)</li> <li><strong>Vision auto-resize</strong> for oversized images, raise limit to 20 MB, retry-on-failure (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7883">#7883</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7902">#7902</a>)</li> <li>STT provider-model mismatch fix (whisper-1 vs faster-whisper) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7113">#7113</a>)</li> </ul> <h3>Other Tools</h3> <ul> <li><strong><code>hermes dump</code></strong> command for setup summary (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/6550">#6550</a>)</li> <li>TODO store enforces ID uniqueness during replace operations (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7986">#7986</a>)</li> <li>List all available toolsets in <code>delegate_task</code> schema description (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/8231">#8231</a>)</li> <li>API server: tool progress as custom SSE event to prevent model corruption (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7500">#7500</a>)</li> <li>API server: share one Docker container across all conversations (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7127">#7127</a>)</li> </ul> <hr> <h2>🧩 Skills Ecosystem</h2> <ul> <li><strong>Centralized skills index + tree cache</strong> — eliminates rate-limit failures on install (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/8575">#8575</a>)</li> <li><strong>More aggressive skill loading instructions</strong> in system prompt (v3) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/8209">#8209</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/8286">#8286</a>)</li> <li><strong>Google Workspace skill</strong> migrated to GWS CLI backend (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/6788">#6788</a>)</li> <li><strong>Creative divergence strategies</strong> skill — @SHL0MS (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/6882">#6882</a>)</li> <li><strong>Creative ideation</strong> — constraint-driven project generation — @SHL0MS (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7555">#7555</a>)</li> <li>Parallelize skills browse/search to prevent hanging (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7301">#7301</a>)</li> <li>Read name from SKILL.md frontmatter in skills_sync (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7623">#7623</a>)</li> </ul> <hr> <h2>🔒 Security & Reliability</h2> <h3>Security Hardening</h3> <ul> <li><strong>Twilio webhook signature validation</strong> — SMS RCE fix (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7933">#7933</a>)</li> <li><strong>Shell injection neutralization</strong> in <code>_write_to_sandbox</code> via path quoting (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7940">#7940</a>)</li> <li><strong>Git argument injection</strong> and path traversal prevention in checkpoint manager (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7944">#7944</a>)</li> <li><strong>SSRF redirect bypass</strong> in Slack image uploads + base.py cache helpers (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7151">#7151</a>)</li> <li><strong>Path traversal, credential gate, DANGEROUS_PATTERNS gaps</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7156">#7156</a>)</li> <li><strong>API bind guard</strong> — enforce <code>API_SERVER_KEY</code> for non-loopback binding (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7455">#7455</a>)</li> <li><strong>Approval button authorization</strong> — require auth for session continuation — @Cafexss (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/6930">#6930</a>)</li> <li>Path boundary enforcement in skill manager operations (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7156">#7156</a>)</li> <li>DingTalk/API webhook URL origin validation, header injection rejection (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7455">#7455</a>)</li> </ul> <h3>Reliability</h3> <ul> <li><strong>Contextual error diagnostics</strong> for invalid API responses (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/8565">#8565</a>)</li> <li><strong>Prevent 400 format errors</strong> from triggering compression loop on Codex (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/6751">#6751</a>)</li> <li><strong>Don't halve context_length</strong> on output-cap-too-large errors — @KUSH42 (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/6664">#6664</a>)</li> <li><strong>Recover primary client</strong> on OpenAI transport errors (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7108">#7108</a>)</li> <li><strong>Credential pool rotation</strong> on billing-classified 400s (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7112">#7112</a>)</li> <li><strong>Auto-increase stream read timeout</strong> for local LLM providers (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/6967">#6967</a>)</li> <li><strong>Fall back to default certs</strong> when CA bundle path doesn't exist (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7352">#7352</a>)</li> <li><strong>Disambiguate usage-limit patterns</strong> in error classifier — @sprmn24 (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/6836">#6836</a>)</li> <li>Harden cron script timeout and provider recovery (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7079">#7079</a>)</li> <li>Gateway interrupt detection resilient to monitor task failures (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/8208">#8208</a>)</li> <li>Prevent unwanted session auto-reset after graceful gateway restarts (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/8299">#8299</a>)</li> <li>Prevent duplicate update prompt spam in gateway watcher (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/8343">#8343</a>)</li> <li>Deduplicate reasoning items in Responses API input (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7946">#7946</a>)</li> </ul> <h3>Infrastructure</h3> <ul> <li><strong>Multi-arch Docker image</strong> — amd64 + arm64 (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/6124">#6124</a>)</li> <li><strong>Docker runs as non-root user</strong> with virtualenv — @benbarclay contributing (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/8226">#8226</a>)</li> <li><strong>Use <code>uv</code></strong> for Docker dependency resolution to fix resolution-too-deep (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/6965">#6965</a>)</li> <li><strong>Container-aware Nix CLI</strong> — auto-route into managed container — @alt-glitch (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7543">#7543</a>)</li> <li><strong>Nix shared-state permission model</strong> for interactive CLI users — @alt-glitch (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/6796">#6796</a>)</li> <li><strong>Per-profile subprocess HOME isolation</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7357">#7357</a>)</li> <li>Profile paths fixed in Docker — profiles go to mounted volume (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7170">#7170</a>)</li> <li>Docker container gateway pathway hardened (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/8614">#8614</a>)</li> <li>Enable unbuffered stdout for live Docker logs (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/6749">#6749</a>)</li> <li>Install procps in Docker image — @HiddenPuppy (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7032">#7032</a>)</li> <li>Shallow git clone for faster installation — @sosyz (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/8396">#8396</a>)</li> <li><code>hermes update</code> always reset on stash conflict (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7010">#7010</a>)</li> <li>Write update exit code before gateway restart (cgroup kill race) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/8288">#8288</a>)</li> <li>Nix: <code>setupSecrets</code> optional, tirith runtime dep — @devorun, @ethernet8023 (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/6261">#6261</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/6721">#6721</a>)</li> <li>launchd stop uses <code>bootout</code> so <code>KeepAlive</code> doesn't respawn (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7119">#7119</a>)</li> </ul> <hr> <h2>🐛 Notable Bug Fixes</h2> <ul> <li>Fix: <code>/model</code> switch not persisting across gateway messages (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7081">#7081</a>)</li> <li>Fix: session-scoped gateway model overrides ignored — @Hygaard (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7662">#7662</a>)</li> <li>Fix: compaction model context length ignoring config — 3 related issues (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/8258">#8258</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/8107">#8107</a>)</li> <li>Fix: OpenCode.ai context window resolved to 128K instead of 1M (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/6472">#6472</a>)</li> <li>Fix: Codex fallback auth-store lookup — @cherifya (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/6462">#6462</a>)</li> <li>Fix: duplicate completion notifications when process killed (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7124">#7124</a>)</li> <li>Fix: agent daemon thread prevents orphan CLI processes on tab close (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/8557">#8557</a>)</li> <li>Fix: stale image attachment on text paste and voice input (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7077">#7077</a>)</li> <li>Fix: DM thread session seeding causing cross-thread contamination (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7084">#7084</a>)</li> <li>Fix: OpenClaw migration shows dry-run preview before executing (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/6769">#6769</a>)</li> <li>Fix: auth errors misclassified as retryable — @kuishou68 (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7027">#7027</a>)</li> <li>Fix: Copilot-Integration-Id header missing (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7083">#7083</a>)</li> <li>Fix: ACP session capabilities — @luyao618 (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/6985">#6985</a>)</li> <li>Fix: ACP PromptResponse usage from top-level fields (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7086">#7086</a>)</li> <li>Fix: several failing/flaky tests on main — @dsocolobsky (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/6777">#6777</a>)</li> <li>Fix: backup marker filenames — @sprmn24 (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/8600">#8600</a>)</li> <li>Fix: <code>NoneType</code> in fast_mode check — @0xbyt4 (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7350">#7350</a>)</li> <li>Fix: missing imports in uninstall.py — @JiayuuWang (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7034">#7034</a>)</li> </ul> <hr> <h2>📚 Documentation</h2> <ul> <li>Platform adapter developer guide + WeCom Callback docs (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7969">#7969</a>)</li> <li>Cron troubleshooting guide (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7122">#7122</a>)</li> <li>Streaming timeout auto-detection for local LLMs (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/6990">#6990</a>)</li> <li>Tool-use enforcement documentation expanded (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7984">#7984</a>)</li> <li>BlueBubbles pairing instructions (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/6548">#6548</a>)</li> <li>Telegram proxy support section (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/6348">#6348</a>)</li> <li><code>hermes dump</code> and <code>hermes logs</code> CLI reference (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/6552">#6552</a>)</li> <li><code>tool_progress_overrides</code> configuration reference (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/6364">#6364</a>)</li> <li>Compression model context length warning docs (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/7879">#7879</a>)</li> </ul> <hr> <h2>👥 Contributors</h2> <p><strong>269 merged PRs</strong> from <strong>24 contributors</strong> across <strong>487 commits</strong>.</p> <h3>Community Contributors</h3> <ul> <li><strong>@alt-glitch</strong> (6 PRs) — Nix container-aware CLI, shared-state permissions, Matrix SQLite crypto store, bulk SSH/Modal file sync, Matrix mautrix compat</li> <li><strong>@SHL0MS</strong> (2 PRs) — Creative divergence strategies skill, creative ideation skill</li> <li><strong>@sprmn24</strong> (2 PRs) — Error classifier disambiguation, backup marker fix</li> <li><strong>@nicoloboschi</strong> — Hindsight memory plugin feature parity</li> <li><strong>@Hygaard</strong> — Session-scoped gateway model override fix</li> <li><strong>@jarvis-phw</strong> — Discord allowed_channels whitelist</li> <li><strong>@Kathie-yu</strong> — Honcho initOnSessionStart for tools mode</li> <li><strong>@hermes-agent-dhabibi</strong> — Discord forum channel topic inheritance</li> <li><strong>@kira-ariaki</strong> — Discord .log attachments and size limit</li> <li><strong>@cherifya</strong> — Codex fallback auth-store lookup</li> <li><strong>@Cafexss</strong> — Security: auth for session continuation</li> <li><strong>@KUSH42</strong> — Compaction context_length fix</li> <li><strong>@kuishou68</strong> — Auth error retryable classification fix</li> <li><strong>@luyao618</strong> — ACP session capabilities</li> <li><strong>@ygd58</strong> — HERMES_HOME_MODE env var override</li> <li><strong>@0xbyt4</strong> — Fast mode NoneType fix</li> <li><strong>@JiayuuWang</strong> — CLI uninstall import fix</li> <li><strong>@HiddenPuppy</strong> — Docker procps installation</li> <li><strong>@dsocolobsky</strong> — Test suite fixes</li> <li><strong>@benbarclay</strong> — Docker image tag simplification</li> <li><strong>@sosyz</strong> — Shallow git clone for faster install</li> <li><strong>@devorun</strong> — Nix setupSecrets optional</li> <li><strong>@ethernet8023</strong> — Nix tirith runtime dep</li> </ul> <hr> <p><strong>Full Changelog</strong>: <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/compare/v2026.4.8...v2026.4.13">v2026.4.8...v2026.4.13</a></p> </div><div class="link-row" data-astro-cid-l7qxtvnw><span class="lr-label" data-astro-cid-l7qxtvnw>Links</span><a href="https://github.com/NousResearch/hermes-agent/releases/tag/v2026.4.13" data-astro-cid-l7qxtvnw>GitHub release notes ↗</a><a href="https://github.com/NousResearch/hermes-agent/compare/v2026.4.8...v2026.4.13" data-astro-cid-l7qxtvnw>Full diff ↗</a><a href="/skills/" data-astro-cid-l7qxtvnw>Skill Library →</a><a href="/gateway/" data-astro-cid-l7qxtvnw>Gateway Guide →</a></div></div></details><details class="rel" data-astro-cid-l7qxtvnw><summary data-astro-cid-l7qxtvnw><span class="r-arrow" data-astro-cid-l7qxtvnw>▶</span><span class="r-ver" data-astro-cid-l7qxtvnw>v0.8.0</span><span class="r-date" data-astro-cid-l7qxtvnw>2026-04-08</span></summary><div class="rel-body" data-astro-cid-l7qxtvnw><p class="r-summary" data-astro-cid-l7qxtvnw>The intelligence release — background task auto-notifications, free MiMo v2 Pro on Nous Portal, live model switching across all platforms, self-optimized GPT/Codex guidance, native Google AI Studio, smart inactivity timeouts, approval buttons, MCP OAuth 2.1, and 209 merged PRs with 82 resolved issues.</p><div class="r-notes" data-astro-cid-l7qxtvnw><blockquote> <p>The intelligence release — background task auto-notifications, free MiMo v2 Pro on Nous Portal, live model switching across all platforms, self-optimized GPT/Codex guidance, native Google AI Studio, smart inactivity timeouts, approval buttons, MCP OAuth 2.1, and 209 merged PRs with 82 resolved issues.</p> </blockquote> <hr> <h2>✨ Highlights</h2> <ul> <li><p><strong>Background Process Auto-Notifications (<code>notify_on_complete</code>)</strong> — Background tasks can now automatically notify the agent when they finish. Start a long-running process (AI model training, test suites, deployments, builds) and the agent gets notified on completion — no polling needed. The agent can keep working on other things and pick up results when they land. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5779">#5779</a>)</p> </li> <li><p><strong>Free Xiaomi MiMo v2 Pro on Nous Portal</strong> — Nous Portal now supports the free-tier Xiaomi MiMo v2 Pro model for auxiliary tasks (compression, vision, summarization), with free-tier model gating and pricing display in model selection. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/6018">#6018</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5880">#5880</a>)</p> </li> <li><p><strong>Live Model Switching (<code>/model</code> Command)</strong> — Switch models and providers mid-session from CLI, Telegram, Discord, Slack, or any gateway platform. Aggregator-aware resolution keeps you on OpenRouter/Nous when possible, with automatic cross-provider fallback when needed. Interactive model pickers on Telegram and Discord with inline buttons. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5181">#5181</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5742">#5742</a>)</p> </li> <li><p><strong>Self-Optimized GPT/Codex Tool-Use Guidance</strong> — The agent diagnosed and patched 5 failure modes in GPT and Codex tool calling through automated behavioral benchmarking, dramatically improving reliability on OpenAI models. Includes execution discipline guidance and thinking-only prefill continuation for structured reasoning. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/6120">#6120</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5414">#5414</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5931">#5931</a>)</p> </li> <li><p><strong>Google AI Studio (Gemini) Native Provider</strong> — Direct access to Gemini models through Google's AI Studio API. Includes automatic models.dev registry integration for real-time context length detection across any provider. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5577">#5577</a>)</p> </li> <li><p><strong>Inactivity-Based Agent Timeouts</strong> — Gateway and cron timeouts now track actual tool activity instead of wall-clock time. Long-running tasks that are actively working will never be killed — only truly idle agents time out. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5389">#5389</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5440">#5440</a>)</p> </li> <li><p><strong>Approval Buttons on Slack & Telegram</strong> — Dangerous command approval via native platform buttons instead of typing <code>/approve</code>. Slack gets thread context preservation; Telegram gets emoji reactions for approval status. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5890">#5890</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5975">#5975</a>)</p> </li> <li><p><strong>MCP OAuth 2.1 PKCE + OSV Malware Scanning</strong> — Full standards-compliant OAuth for MCP server authentication, plus automatic malware scanning of MCP extension packages via the OSV vulnerability database. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5420">#5420</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5305">#5305</a>)</p> </li> <li><p><strong>Centralized Logging & Config Validation</strong> — Structured logging to <code>~/.hermes/logs/</code> (agent.log + errors.log) with the <code>hermes logs</code> command for tailing and filtering. Config structure validation catches malformed YAML at startup before it causes cryptic failures. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5430">#5430</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5426">#5426</a>)</p> </li> <li><p><strong>Plugin System Expansion</strong> — Plugins can now register CLI subcommands, receive request-scoped API hooks with correlation IDs, prompt for required env vars during install, and hook into session lifecycle events (finalize/reset). (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5295">#5295</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5427">#5427</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5470">#5470</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/6129">#6129</a>)</p> </li> <li><p><strong>Matrix Tier 1 & Platform Hardening</strong> — Matrix gets reactions, read receipts, rich formatting, and room management. Discord adds channel controls and ignored channels. Signal gets full MEDIA: tag delivery. Mattermost gets file attachments. Comprehensive reliability fixes across all platforms. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5275">#5275</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5975">#5975</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5602">#5602</a>)</p> </li> <li><p><strong>Security Hardening Pass</strong> — Consolidated SSRF protections, timing attack mitigations, tar traversal prevention, credential leakage guards, cron path traversal hardening, and cross-session isolation. Terminal workdir sanitization across all backends. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5944">#5944</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5613">#5613</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5629">#5629</a>)</p> </li> </ul> <hr> <h2>🏗️ Core Agent & Architecture</h2> <h3>Provider & Model Support</h3> <ul> <li><strong>Native Google AI Studio (Gemini) provider</strong> with models.dev integration for automatic context length detection (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5577">#5577</a>)</li> <li><strong><code>/model</code> command — full provider+model system overhaul</strong> — live switching across CLI and all gateway platforms with aggregator-aware resolution (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5181">#5181</a>)</li> <li><strong>Interactive model picker for Telegram and Discord</strong> — inline button-based model selection (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5742">#5742</a>)</li> <li><strong>Nous Portal free-tier model gating</strong> with pricing display in model selection (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5880">#5880</a>)</li> <li><strong>Model pricing display</strong> for OpenRouter and Nous Portal providers (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5416">#5416</a>)</li> <li><strong>xAI (Grok) prompt caching</strong> via <code>x-grok-conv-id</code> header (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5604">#5604</a>)</li> <li><strong>Grok added to tool-use enforcement models</strong> for direct xAI usage (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5595">#5595</a>)</li> <li><strong>MiniMax TTS provider</strong> (speech-2.8) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4963">#4963</a>)</li> <li><strong>Non-agentic model warning</strong> — warns users when loading Hermes LLM models not designed for tool use (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5378">#5378</a>)</li> <li><strong>Ollama Cloud auth, /model switch persistence</strong>, and alias tab completion (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5269">#5269</a>)</li> <li><strong>Preserve dots in OpenCode Go model names</strong> (minimax-m2.7, glm-4.5, kimi-k2.5) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5597">#5597</a>)</li> <li><strong>MiniMax models 404 fix</strong> — strip /v1 from Anthropic base URL for OpenCode Go (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4918">#4918</a>)</li> <li><strong>Provider credential reset windows</strong> honored in pooled failover (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5188">#5188</a>)</li> <li><strong>OAuth token sync</strong> between credential pool and credentials file (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4981">#4981</a>)</li> <li><strong>Stale OAuth credentials</strong> no longer block OpenRouter users on auto-detect (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5746">#5746</a>)</li> <li><strong>Codex OAuth credential pool disconnect</strong> + expired token import fix (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5681">#5681</a>)</li> <li><strong>Codex pool entry sync</strong> from <code>~/.codex/auth.json</code> on exhaustion — @GratefulDave (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5610">#5610</a>)</li> <li><strong>Auxiliary client payment fallback</strong> — retry with next provider on 402 (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5599">#5599</a>)</li> <li><strong>Auxiliary client resolves named custom providers</strong> and 'main' alias (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5978">#5978</a>)</li> <li><strong>Use mimo-v2-pro</strong> for non-vision auxiliary tasks on Nous free tier (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/6018">#6018</a>)</li> <li><strong>Vision auto-detection</strong> tries main provider first (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/6041">#6041</a>)</li> <li><strong>Provider re-ordering and Quick Install</strong> — @austinpickett (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4664">#4664</a>)</li> <li><strong>Nous OAuth access_token</strong> no longer used as inference API key — @SHL0MS (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5564">#5564</a>)</li> <li><strong>HERMES_PORTAL_BASE_URL env var</strong> respected during Nous login — @benbarclay (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5745">#5745</a>)</li> <li><strong>Env var overrides</strong> for Nous portal/inference URLs (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5419">#5419</a>)</li> <li><strong>Z.AI endpoint auto-detect</strong> via probe and cache (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5763">#5763</a>)</li> <li><strong>MiniMax context lengths, model catalog, thinking guard, aux model, and config base_url</strong> corrections (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/6082">#6082</a>)</li> <li><strong>Community provider/model resolution fixes</strong> — salvaged 4 community PRs + MiniMax aux URL (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5983">#5983</a>)</li> </ul> <h3>Agent Loop & Conversation</h3> <ul> <li><strong>Self-optimized GPT/Codex tool-use guidance</strong> via automated behavioral benchmarking — agent self-diagnosed and patched 5 failure modes (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/6120">#6120</a>)</li> <li><strong>GPT/Codex execution discipline guidance</strong> in system prompts (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5414">#5414</a>)</li> <li><strong>Thinking-only prefill continuation</strong> for structured reasoning responses (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5931">#5931</a>)</li> <li><strong>Accept reasoning-only responses</strong> without retries — set content to "(empty)" instead of infinite retry (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5278">#5278</a>)</li> <li><strong>Jittered retry backoff</strong> — exponential backoff with jitter for API retries (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/6048">#6048</a>)</li> <li><strong>Smart thinking block signature management</strong> — preserve and manage Anthropic thinking signatures across turns (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/6112">#6112</a>)</li> <li><strong>Coerce tool call arguments</strong> to match JSON Schema types — fixes models that send strings instead of numbers/booleans (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5265">#5265</a>)</li> <li><strong>Save oversized tool results to file</strong> instead of destructive truncation (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5210">#5210</a>)</li> <li><strong>Sandbox-aware tool result persistence</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/6085">#6085</a>)</li> <li><strong>Streaming fallback</strong> improved after edit failures (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/6110">#6110</a>)</li> <li><strong>Codex empty-output gaps</strong> covered in fallback + normalizer + auxiliary client (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5724">#5724</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5730">#5730</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5734">#5734</a>)</li> <li><strong>Codex stream output backfill</strong> from output_item.done events (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5689">#5689</a>)</li> <li><strong>Stream consumer creates new message</strong> after tool boundaries (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5739">#5739</a>)</li> <li><strong>Codex validation aligned</strong> with normalization for empty stream output (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5940">#5940</a>)</li> <li><strong>Bridge tool-calls</strong> in copilot-acp adapter (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5460">#5460</a>)</li> <li><strong>Filter transcript-only roles</strong> from chat-completions payload (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4880">#4880</a>)</li> <li><strong>Context compaction failures fixed</strong> on temperature-restricted models — @MadKangYu (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5608">#5608</a>)</li> <li><strong>Sanitize tool_calls for all strict APIs</strong> (Fireworks, Mistral, etc.) — @lumethegreat (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5183">#5183</a>)</li> </ul> <h3>Memory & Sessions</h3> <ul> <li><strong>Supermemory memory provider</strong> — new memory plugin with multi-container, search_mode, identity template, and env var override (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5737">#5737</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5933">#5933</a>)</li> <li><strong>Shared thread sessions</strong> by default — multi-user thread support across gateway platforms (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5391">#5391</a>)</li> <li><strong>Subagent sessions linked to parent</strong> and hidden from session list (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5309">#5309</a>)</li> <li><strong>Profile-scoped memory isolation</strong> and clone support (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4845">#4845</a>)</li> <li><strong>Thread gateway user_id to memory plugins</strong> for per-user scoping (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5895">#5895</a>)</li> <li><strong>Honcho plugin drift overhaul</strong> + plugin CLI registration system (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5295">#5295</a>)</li> <li><strong>Honcho holographic prompt and trust score</strong> rendering preserved (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4872">#4872</a>)</li> <li><strong>Honcho doctor fix</strong> — use recall_mode instead of memory_mode — @techguysimon (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5645">#5645</a>)</li> <li><strong>RetainDB</strong> — API routes, write queue, dialectic, agent model, file tools fixes (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5461">#5461</a>)</li> <li><strong>Hindsight memory plugin overhaul</strong> + memory setup wizard fixes (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5094">#5094</a>)</li> <li><strong>mem0 API v2 compat</strong>, prefetch context fencing, secret redaction (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5423">#5423</a>)</li> <li><strong>mem0 env vars merged</strong> with mem0.json instead of either/or (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4939">#4939</a>)</li> <li><strong>Clean user message</strong> used for all memory provider operations (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4940">#4940</a>)</li> <li><strong>Silent memory flush failure</strong> on /new and /resume fixed — @ryanautomated (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5640">#5640</a>)</li> <li><strong>OpenViking atexit safety net</strong> for session commit (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5664">#5664</a>)</li> <li><strong>OpenViking tenant-scoping headers</strong> for multi-tenant servers (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4936">#4936</a>)</li> <li><strong>ByteRover brv query</strong> runs synchronously before LLM call (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4831">#4831</a>)</li> </ul> <hr> <h2>📱 Messaging Platforms (Gateway)</h2> <h3>Gateway Core</h3> <ul> <li><strong>Inactivity-based agent timeout</strong> — replaces wall-clock timeout with smart activity tracking; long-running active tasks never killed (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5389">#5389</a>)</li> <li><strong>Approval buttons for Slack & Telegram</strong> + Slack thread context preservation (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5890">#5890</a>)</li> <li><strong>Live-stream /update output</strong> + forward interactive prompts to user (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5180">#5180</a>)</li> <li><strong>Infinite timeout support</strong> + periodic notifications + actionable error messages (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4959">#4959</a>)</li> <li><strong>Duplicate message prevention</strong> — gateway dedup + partial stream guard (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4878">#4878</a>)</li> <li><strong>Webhook delivery_info persistence</strong> + full session id in /status (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5942">#5942</a>)</li> <li><strong>Tool preview truncation</strong> respects tool_preview_length in all/new progress modes (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5937">#5937</a>)</li> <li><strong>Short preview truncation</strong> restored for all/new tool progress modes (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4935">#4935</a>)</li> <li><strong>Update-pending state</strong> written atomically to prevent corruption (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4923">#4923</a>)</li> <li><strong>Approval session key isolated</strong> per turn (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4884">#4884</a>)</li> <li><strong>Active-session guard bypass</strong> for /approve, /deny, /stop, /new (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4926">#4926</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5765">#5765</a>)</li> <li><strong>Typing indicator paused</strong> during approval waits (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5893">#5893</a>)</li> <li><strong>Caption check</strong> uses exact line-by-line match instead of substring (all platforms) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5939">#5939</a>)</li> <li><strong>MEDIA: tags stripped</strong> from streamed gateway messages (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5152">#5152</a>)</li> <li><strong>MEDIA: tags extracted</strong> from cron delivery before sending (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5598">#5598</a>)</li> <li><strong>Profile-aware service units</strong> + voice transcription cleanup (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5972">#5972</a>)</li> <li><strong>Thread-safe PairingStore</strong> with atomic writes — @CharlieKerfoot (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5656">#5656</a>)</li> <li><strong>Sanitize media URLs</strong> in base platform logs — @WAXLYY (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5631">#5631</a>)</li> <li><strong>Reduce Telegram fallback IP activation log noise</strong> — @MadKangYu (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5615">#5615</a>)</li> <li><strong>Cron static method wrappers</strong> to prevent self-binding (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5299">#5299</a>)</li> <li><strong>Stale 'hermes login' replaced</strong> with 'hermes auth' + credential removal re-seeding fix (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5670">#5670</a>)</li> </ul> <h3>Telegram</h3> <ul> <li><strong>Group topics skill binding</strong> for supergroup forum topics (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4886">#4886</a>)</li> <li><strong>Emoji reactions</strong> for approval status and notifications (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5975">#5975</a>)</li> <li><strong>Duplicate message delivery prevented</strong> on send timeout (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5153">#5153</a>)</li> <li><strong>Command names sanitized</strong> to strip invalid characters (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5596">#5596</a>)</li> <li><strong>Per-platform disabled skills</strong> respected in Telegram menu and gateway dispatch (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4799">#4799</a>)</li> <li><strong>/approve and /deny</strong> routed through running-agent guard (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4798">#4798</a>)</li> </ul> <h3>Discord</h3> <ul> <li><strong>Channel controls</strong> — ignored_channels and no_thread_channels config options (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5975">#5975</a>)</li> <li><strong>Skills registered as native slash commands</strong> via shared gateway logic (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5603">#5603</a>)</li> <li><strong>/approve, /deny, /queue, /background, /btw</strong> registered as native slash commands (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4800">#4800</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5477">#5477</a>)</li> <li><strong>Unnecessary members intent</strong> removed on startup + token lock leak fix (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5302">#5302</a>)</li> </ul> <h3>Slack</h3> <ul> <li><strong>Thread engagement</strong> — auto-respond in bot-started and mentioned threads (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5897">#5897</a>)</li> <li><strong>mrkdwn in edit_message</strong> + thread replies without @mentions (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5733">#5733</a>)</li> </ul> <h3>Matrix</h3> <ul> <li><strong>Tier 1 feature parity</strong> — reactions, read receipts, rich formatting, room management (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5275">#5275</a>)</li> <li><strong>MATRIX_REQUIRE_MENTION and MATRIX_AUTO_THREAD</strong> support (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5106">#5106</a>)</li> <li><strong>Comprehensive reliability</strong> — encrypted media, auth recovery, cron E2EE, Synapse compat (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5271">#5271</a>)</li> <li><strong>CJK input, E2EE, and reconnect</strong> fixes (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5665">#5665</a>)</li> </ul> <h3>Signal</h3> <ul> <li><strong>Full MEDIA: tag delivery</strong> — send_image_file, send_voice, and send_video implemented (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5602">#5602</a>)</li> </ul> <h3>Mattermost</h3> <ul> <li><strong>File attachments</strong> — set message type to DOCUMENT when post has file attachments — @nericervin (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5609">#5609</a>)</li> </ul> <h3>Feishu</h3> <ul> <li><strong>Interactive card approval buttons</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/6043">#6043</a>)</li> <li><strong>Reconnect and ACL</strong> fixes (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5665">#5665</a>)</li> </ul> <h3>Webhooks</h3> <ul> <li><strong><code>{__raw__}</code> template token</strong> and thread_id passthrough for forum topics (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5662">#5662</a>)</li> </ul> <hr> <h2>🖥️ CLI & User Experience</h2> <h3>Interactive CLI</h3> <ul> <li><strong>Defer response content</strong> until reasoning block completes (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5773">#5773</a>)</li> <li><strong>Ghost status-bar lines cleared</strong> on terminal resize (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4960">#4960</a>)</li> <li><strong>Normalise \r\n and \r line endings</strong> in pasted text (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4849">#4849</a>)</li> <li><strong>ChatConsole errors, curses scroll, skin-aware banner, git state</strong> banner fixes (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5974">#5974</a>)</li> <li><strong>Native Windows image paste</strong> support (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5917">#5917</a>)</li> <li><strong>--yolo and other flags</strong> no longer silently dropped when placed before 'chat' subcommand (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5145">#5145</a>)</li> </ul> <h3>Setup & Configuration</h3> <ul> <li><strong>Config structure validation</strong> — detect malformed YAML at startup with actionable error messages (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5426">#5426</a>)</li> <li><strong>Centralized logging</strong> to <code>~/.hermes/logs/</code> — agent.log (INFO+), errors.log (WARNING+) with <code>hermes logs</code> command (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5430">#5430</a>)</li> <li><strong>Docs links added</strong> to setup wizard sections (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5283">#5283</a>)</li> <li><strong>Doctor diagnostics</strong> — sync provider checks, config migration, WAL and mem0 diagnostics (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5077">#5077</a>)</li> <li><strong>Timeout debug logging</strong> and user-facing diagnostics improved (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5370">#5370</a>)</li> <li><strong>Reasoning effort unified</strong> to config.yaml only (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/6118">#6118</a>)</li> <li><strong>Permanent command allowlist</strong> loaded on startup (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5076">#5076</a>)</li> <li><strong><code>hermes auth remove</code></strong> now clears env-seeded credentials permanently (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5285">#5285</a>)</li> <li><strong>Bundled skills synced to all profiles</strong> during update (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5795">#5795</a>)</li> <li><strong><code>hermes update</code> no longer kills</strong> freshly-restarted gateway service (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5448">#5448</a>)</li> <li><strong>Subprocess.run() timeouts</strong> added to all gateway CLI commands (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5424">#5424</a>)</li> <li><strong>Actionable error message</strong> when Codex refresh token is reused — @tymrtn (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5612">#5612</a>)</li> <li><strong>Google-workspace skill scripts</strong> can now run directly — @xinbenlv (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5624">#5624</a>)</li> </ul> <h3>Cron System</h3> <ul> <li><strong>Inactivity-based cron timeout</strong> — replaces wall-clock; active tasks run indefinitely (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5440">#5440</a>)</li> <li><strong>Pre-run script injection</strong> for data collection and change detection (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5082">#5082</a>)</li> <li><strong>Delivery failure tracking</strong> in job status (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/6042">#6042</a>)</li> <li><strong>Delivery guidance</strong> in cron prompts — stops send_message thrashing (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5444">#5444</a>)</li> <li><strong>MEDIA files delivered</strong> as native platform attachments (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5921">#5921</a>)</li> <li><strong>[SILENT] suppression</strong> works anywhere in response — @auspic7 (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5654">#5654</a>)</li> <li><strong>Cron path traversal</strong> hardening (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5147">#5147</a>)</li> </ul> <hr> <h2>🔧 Tool System</h2> <h3>Terminal & Execution</h3> <ul> <li><strong>Execute_code on remote backends</strong> — code execution now works on Docker, SSH, Modal, and other remote terminal backends (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5088">#5088</a>)</li> <li><strong>Exit code context</strong> for common CLI tools in terminal results — helps agent understand what went wrong (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5144">#5144</a>)</li> <li><strong>Progressive subdirectory hint discovery</strong> — agent learns project structure as it navigates (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5291">#5291</a>)</li> <li><strong>notify_on_complete for background processes</strong> — get notified when long-running tasks finish (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5779">#5779</a>)</li> <li><strong>Docker env config</strong> — explicit container environment variables via docker_env config (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4738">#4738</a>)</li> <li><strong>Approval metadata included</strong> in terminal tool results (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5141">#5141</a>)</li> <li><strong>Workdir parameter sanitized</strong> in terminal tool across all backends (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5629">#5629</a>)</li> <li><strong>Detached process crash recovery</strong> state corrected (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/6101">#6101</a>)</li> <li><strong>Agent-browser paths with spaces</strong> preserved — @Vasanthdev2004 (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/6077">#6077</a>)</li> <li><strong>Portable base64 encoding</strong> for image reading on macOS — @CharlieKerfoot (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5657">#5657</a>)</li> </ul> <h3>Browser</h3> <ul> <li><strong>Switch managed browser provider</strong> from Browserbase to Browser Use — @benbarclay (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5750">#5750</a>)</li> <li><strong>Firecrawl cloud browser</strong> provider — @alt-glitch (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5628">#5628</a>)</li> <li><strong>JS evaluation</strong> via browser_console expression parameter (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5303">#5303</a>)</li> <li><strong>Windows browser</strong> fixes (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5665">#5665</a>)</li> </ul> <h3>MCP</h3> <ul> <li><strong>MCP OAuth 2.1 PKCE</strong> — full standards-compliant OAuth client support (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5420">#5420</a>)</li> <li><strong>OSV malware check</strong> for MCP extension packages (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5305">#5305</a>)</li> <li><strong>Prefer structuredContent over text</strong> + no_mcp sentinel (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5979">#5979</a>)</li> <li><strong>Unknown toolsets warning suppressed</strong> for MCP server names (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5279">#5279</a>)</li> </ul> <h3>Web & Files</h3> <ul> <li><strong>.zip document support</strong> + auto-mount cache dirs into remote backends (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4846">#4846</a>)</li> <li><strong>Redact query secrets</strong> in send_message errors — @WAXLYY (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5650">#5650</a>)</li> </ul> <h3>Delegation</h3> <ul> <li><strong>Credential pool sharing</strong> + workspace path hints for subagents (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5748">#5748</a>)</li> </ul> <h3>ACP (VS Code / Zed / JetBrains)</h3> <ul> <li><strong>Aggregate ACP improvements</strong> — auth compat, protocol fixes, command ads, delegation, SSE events (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5292">#5292</a>)</li> </ul> <hr> <h2>🧩 Skills Ecosystem</h2> <h3>Skills System</h3> <ul> <li><strong>Skill config interface</strong> — skills can declare required config.yaml settings, prompted during setup, injected at load time (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5635">#5635</a>)</li> <li><strong>Plugin CLI registration system</strong> — plugins register their own CLI subcommands without touching main.py (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5295">#5295</a>)</li> <li><strong>Request-scoped API hooks</strong> with tool call correlation IDs for plugins (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5427">#5427</a>)</li> <li><strong>Session lifecycle hooks</strong> — on_session_finalize and on_session_reset for CLI + gateway (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/6129">#6129</a>)</li> <li><strong>Prompt for required env vars</strong> during plugin install — @kshitijk4poor (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5470">#5470</a>)</li> <li><strong>Plugin name validation</strong> — reject names that resolve to plugins root (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5368">#5368</a>)</li> <li><strong>pre_llm_call plugin context</strong> moved to user message to preserve prompt cache (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5146">#5146</a>)</li> </ul> <h3>New & Updated Skills</h3> <ul> <li><strong>popular-web-designs</strong> — 54 production website design systems (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5194">#5194</a>)</li> <li><strong>p5js creative coding</strong> — @SHL0MS (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5600">#5600</a>)</li> <li><strong>manim-video</strong> — mathematical and technical animations — @SHL0MS (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4930">#4930</a>)</li> <li><strong>llm-wiki</strong> — Karpathy's LLM Wiki skill (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5635">#5635</a>)</li> <li><strong>gitnexus-explorer</strong> — codebase indexing and knowledge serving (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5208">#5208</a>)</li> <li><strong>research-paper-writing</strong> — AI-Scientist & GPT-Researcher patterns — @SHL0MS (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5421">#5421</a>)</li> <li><strong>blogwatcher</strong> updated to JulienTant's fork (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5759">#5759</a>)</li> <li><strong>claude-code skill</strong> comprehensive rewrite v2.0 + v2.2 (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5155">#5155</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5158">#5158</a>)</li> <li><strong>Code verification skills</strong> consolidated into one (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4854">#4854</a>)</li> <li><strong>Manim CE reference docs</strong> expanded — geometry, animations, LaTeX — @leotrs (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5791">#5791</a>)</li> <li><strong>Manim-video references</strong> — design thinking, updaters, paper explainer, decorations, production quality — @SHL0MS (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5588">#5588</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5408">#5408</a>)</li> </ul> <hr> <h2>🔒 Security & Reliability</h2> <h3>Security Hardening</h3> <ul> <li><strong>Consolidated security</strong> — SSRF protections, timing attack mitigations, tar traversal prevention, credential leakage guards (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5944">#5944</a>)</li> <li><strong>Cross-session isolation</strong> + cron path traversal hardening (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5613">#5613</a>)</li> <li><strong>Workdir parameter sanitized</strong> in terminal tool across all backends (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5629">#5629</a>)</li> <li><strong>Approval 'once' session escalation</strong> prevented + cron delivery platform validation (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5280">#5280</a>)</li> <li><strong>Profile-scoped Google Workspace OAuth tokens</strong> protected (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4910">#4910</a>)</li> </ul> <h3>Reliability</h3> <ul> <li><strong>Aggressive worktree and branch cleanup</strong> to prevent accumulation (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/6134">#6134</a>)</li> <li><strong>O(n²) catastrophic backtracking</strong> in redact regex fixed — 100x improvement on large outputs (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4962">#4962</a>)</li> <li><strong>Runtime stability fixes</strong> across core, web, delegate, and browser tools (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4843">#4843</a>)</li> <li><strong>API server streaming fix</strong> + conversation history support (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5977">#5977</a>)</li> <li><strong>OpenViking API endpoint paths</strong> and response parsing corrected (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5078">#5078</a>)</li> </ul> <hr> <h2>🐛 Notable Bug Fixes</h2> <ul> <li><strong>9 community bugfixes salvaged</strong> — gateway, cron, deps, macOS launchd in one batch (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5288">#5288</a>)</li> <li><strong>Batch core bug fixes</strong> — model config, session reset, alias fallback, launchctl, delegation, atomic writes (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5630">#5630</a>)</li> <li><strong>Batch gateway/platform fixes</strong> — matrix E2EE, CJK input, Windows browser, Feishu reconnect + ACL (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5665">#5665</a>)</li> <li><strong>Stale test skips removed</strong>, regex backtracking, file search bug, and test flakiness (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4969">#4969</a>)</li> <li><strong>Nix flake</strong> — read version, regen uv.lock, add hermes_logging — @alt-glitch (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5651">#5651</a>)</li> <li><strong>Lowercase variable redaction</strong> regression tests (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5185">#5185</a>)</li> </ul> <hr> <h2>🧪 Testing</h2> <ul> <li><strong>57 failing CI tests repaired</strong> across 14 files (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5823">#5823</a>)</li> <li><strong>Test suite re-architecture</strong> + CI failure fixes — @alt-glitch (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5946">#5946</a>)</li> <li><strong>Codebase-wide lint cleanup</strong> — unused imports, dead code, and inefficient patterns (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5821">#5821</a>)</li> <li><strong>browser_close tool removed</strong> — auto-cleanup handles it (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5792">#5792</a>)</li> </ul> <hr> <h2>📚 Documentation</h2> <ul> <li><strong>Comprehensive documentation audit</strong> — fix stale info, expand thin pages, add depth (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5393">#5393</a>)</li> <li><strong>40+ discrepancies fixed</strong> between documentation and codebase (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5818">#5818</a>)</li> <li><strong>13 features documented</strong> from last week's PRs (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5815">#5815</a>)</li> <li><strong>Guides section overhaul</strong> — fix existing + add 3 new tutorials (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5735">#5735</a>)</li> <li><strong>Salvaged 4 docs PRs</strong> — docker setup, post-update validation, local LLM guide, signal-cli install (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5727">#5727</a>)</li> <li><strong>Discord configuration reference</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5386">#5386</a>)</li> <li><strong>Community FAQ entries</strong> for common workflows and troubleshooting (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4797">#4797</a>)</li> <li><strong>WSL2 networking guide</strong> for local model servers (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5616">#5616</a>)</li> <li><strong>Honcho CLI reference</strong> + plugin CLI registration docs (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5308">#5308</a>)</li> <li><strong>Obsidian Headless setup</strong> for servers in llm-wiki (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/5660">#5660</a>)</li> <li><strong>Hermes Mod visual skin editor</strong> added to skins page (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/6095">#6095</a>)</li> </ul> <hr> <h2>👥 Contributors</h2> <h3>Core</h3> <ul> <li><strong>@teknium1</strong> — 179 PRs</li> </ul> <h3>Top Community Contributors</h3> <ul> <li><strong>@SHL0MS</strong> (7 PRs) — p5js creative coding skill, manim-video skill + 5 reference expansions, research-paper-writing, Nous OAuth fix, manim font fix</li> <li><strong>@alt-glitch</strong> (3 PRs) — Firecrawl cloud browser provider, test re-architecture + CI fixes, Nix flake fixes</li> <li><strong>@benbarclay</strong> (2 PRs) — Browser Use managed provider switch, Nous portal base URL fix</li> <li><strong>@CharlieKerfoot</strong> (2 PRs) — macOS portable base64 encoding, thread-safe PairingStore</li> <li><strong>@WAXLYY</strong> (2 PRs) — send_message secret redaction, gateway media URL sanitization</li> <li><strong>@MadKangYu</strong> (2 PRs) — Telegram log noise reduction, context compaction fix for temperature-restricted models</li> </ul> <h3>All Contributors</h3> <p>@alt-glitch, @austinpickett, @auspic7, @benbarclay, @CharlieKerfoot, @GratefulDave, @kshitijk4poor, @leotrs, @lumethegreat, @MadKangYu, @nericervin, @ryanautomated, @SHL0MS, @techguysimon, @tymrtn, @Vasanthdev2004, @WAXLYY, @xinbenlv</p> <hr> <p><strong>Full Changelog</strong>: <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/compare/v2026.4.3...v2026.4.8">v2026.4.3...v2026.4.8</a></p> </div><div class="link-row" data-astro-cid-l7qxtvnw><span class="lr-label" data-astro-cid-l7qxtvnw>Links</span><a href="https://github.com/NousResearch/hermes-agent/releases/tag/v2026.4.8" data-astro-cid-l7qxtvnw>GitHub release notes ↗</a><a href="https://github.com/NousResearch/hermes-agent/compare/v2026.4.3...v2026.4.8" data-astro-cid-l7qxtvnw>Full diff ↗</a><a href="/gateway/" data-astro-cid-l7qxtvnw>Gateway Guide →</a><a href="/providers/" data-astro-cid-l7qxtvnw>Providers Reference →</a></div></div></details><details class="rel" data-astro-cid-l7qxtvnw><summary data-astro-cid-l7qxtvnw><span class="r-arrow" data-astro-cid-l7qxtvnw>▶</span><span class="r-ver" data-astro-cid-l7qxtvnw>v0.7.0</span><span class="r-date" data-astro-cid-l7qxtvnw>2026-04-03</span></summary><div class="rel-body" data-astro-cid-l7qxtvnw><p class="r-summary" data-astro-cid-l7qxtvnw>The resilience release — pluggable memory providers, credential pool rotation, Camofox anti-detection browser, inline diff previews, gateway hardening across race conditions and approval routing, and deep security fixes across 168 PRs and 46 resolved issues.</p><div class="r-notes" data-astro-cid-l7qxtvnw><blockquote> <p>The resilience release — pluggable memory providers, credential pool rotation, Camofox anti-detection browser, inline diff previews, gateway hardening across race conditions and approval routing, and deep security fixes across 168 PRs and 46 resolved issues.</p> </blockquote> <hr> <h2>✨ Highlights</h2> <ul> <li><p><strong>Pluggable Memory Provider Interface</strong> — Memory is now an extensible plugin system. Third-party memory backends (Honcho, vector stores, custom DBs) implement a simple provider ABC and register via the plugin system. Built-in memory is the default provider. Honcho integration restored to full parity as the reference plugin with profile-scoped host/peer resolution. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4623">#4623</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4616">#4616</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4355">#4355</a>)</p> </li> <li><p><strong>Same-Provider Credential Pools</strong> — Configure multiple API keys for the same provider with automatic rotation. Thread-safe <code>least_used</code> strategy distributes load across keys, and 401 failures trigger automatic rotation to the next credential. Set up via the setup wizard or <code>credential_pool</code> config. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4188">#4188</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4300">#4300</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4361">#4361</a>)</p> </li> <li><p><strong>Camofox Anti-Detection Browser Backend</strong> — New local browser backend using Camoufox for stealth browsing. Persistent sessions with VNC URL discovery for visual debugging, configurable SSRF bypass for local backends, auto-install via <code>hermes tools</code>. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4008">#4008</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4419">#4419</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4292">#4292</a>)</p> </li> <li><p><strong>Inline Diff Previews</strong> — File write and patch operations now show inline diffs in the tool activity feed, giving you visual confirmation of what changed before the agent moves on. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4411">#4411</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4423">#4423</a>)</p> </li> <li><p><strong>API Server Session Continuity & Tool Streaming</strong> — The API server (Open WebUI integration) now streams tool progress events in real-time and supports <code>X-Hermes-Session-Id</code> headers for persistent sessions across requests. Sessions persist to the shared SessionDB. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4092">#4092</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4478">#4478</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4802">#4802</a>)</p> </li> <li><p><strong>ACP: Client-Provided MCP Servers</strong> — Editor integrations (VS Code, Zed, JetBrains) can now register their own MCP servers, which Hermes picks up as additional agent tools. Your editor's MCP ecosystem flows directly into the agent. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4705">#4705</a>)</p> </li> <li><p><strong>Gateway Hardening</strong> — Major stability pass across race conditions, photo media delivery, flood control, stuck sessions, approval routing, and compression death spirals. The gateway is substantially more reliable in production. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4727">#4727</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4750">#4750</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4798">#4798</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4557">#4557</a>)</p> </li> <li><p><strong>Security: Secret Exfiltration Blocking</strong> — Browser URLs and LLM responses are now scanned for secret patterns, blocking exfiltration attempts via URL encoding, base64, or prompt injection. Credential directory protections expanded to <code>.docker</code>, <code>.azure</code>, <code>.config/gh</code>. Execute_code sandbox output is redacted. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4483">#4483</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4360">#4360</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4305">#4305</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4327">#4327</a>)</p> </li> </ul> <hr> <h2>🏗️ Core Agent & Architecture</h2> <h3>Provider & Model Support</h3> <ul> <li><strong>Same-provider credential pools</strong> — configure multiple API keys with automatic <code>least_used</code> rotation and 401 failover (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4188">#4188</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4300">#4300</a>)</li> <li><strong>Credential pool preserved through smart routing</strong> — pool state survives fallback provider switches and defers eager fallback on 429 (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4361">#4361</a>)</li> <li><strong>Per-turn primary runtime restoration</strong> — after fallback provider use, the agent automatically restores the primary provider on the next turn with transport recovery (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4624">#4624</a>)</li> <li><strong><code>developer</code> role for GPT-5 and Codex models</strong> — uses OpenAI's recommended system message role for newer models (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4498">#4498</a>)</li> <li><strong>Google model operational guidance</strong> — Gemini and Gemma models get provider-specific prompting guidance (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4641">#4641</a>)</li> <li><strong>Anthropic long-context tier 429 handling</strong> — automatically reduces context to 200k when hitting tier limits (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4747">#4747</a>)</li> <li><strong>URL-based auth for third-party Anthropic endpoints</strong> + CI test fixes (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4148">#4148</a>)</li> <li><strong>Bearer auth for MiniMax Anthropic endpoints</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4028">#4028</a>)</li> <li><strong>Fireworks context length detection</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4158">#4158</a>)</li> <li><strong>Standard DashScope international endpoint</strong> for Alibaba provider (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4133">#4133</a>, closes <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/3912">#3912</a>)</li> <li><strong>Custom providers context_length</strong> honored in hygiene compression (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4085">#4085</a>)</li> <li><strong>Non-sk-ant keys</strong> treated as regular API keys, not OAuth tokens (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4093">#4093</a>)</li> <li><strong>Claude-sonnet-4.6</strong> added to OpenRouter and Nous model lists (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4157">#4157</a>)</li> <li><strong>Qwen 3.6 Plus Preview</strong> added to model lists (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4376">#4376</a>)</li> <li><strong>MiniMax M2.7</strong> added to hermes model picker and OpenCode (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4208">#4208</a>)</li> <li><strong>Auto-detect models from server probe</strong> in custom endpoint setup (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4218">#4218</a>)</li> <li><strong>Config.yaml single source of truth</strong> for endpoint URLs — no more env var vs config.yaml conflicts (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4165">#4165</a>)</li> <li><strong>Setup wizard no longer overwrites</strong> custom endpoint config (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4180">#4180</a>, closes <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/4172">#4172</a>)</li> <li><strong>Unified setup wizard provider selection</strong> with <code>hermes model</code> — single code path for both flows (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4200">#4200</a>)</li> <li><strong>Root-level provider config</strong> no longer overrides <code>model.provider</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4329">#4329</a>)</li> <li><strong>Rate-limit pairing rejection messages</strong> to prevent spam (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4081">#4081</a>)</li> </ul> <h3>Agent Loop & Conversation</h3> <ul> <li><strong>Preserve Anthropic thinking block signatures</strong> across tool-use turns (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4626">#4626</a>)</li> <li><strong>Classify think-only empty responses</strong> before retrying — prevents infinite retry loops on models that produce thinking blocks without content (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4645">#4645</a>)</li> <li><strong>Prevent compression death spiral</strong> from API disconnects — stops the loop where compression triggers, fails, compresses again (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4750">#4750</a>, closes <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/2153">#2153</a>)</li> <li><strong>Persist compressed context</strong> to gateway session after mid-run compression (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4095">#4095</a>)</li> <li><strong>Context-exceeded error messages</strong> now include actionable guidance (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4155">#4155</a>, closes <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/4061">#4061</a>)</li> <li><strong>Strip orphaned think/reasoning tags</strong> from user-facing responses (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4311">#4311</a>, closes <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/4285">#4285</a>)</li> <li><strong>Harden Codex responses preflight</strong> and stream error handling (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4313">#4313</a>)</li> <li><strong>Deterministic call_id fallbacks</strong> instead of random UUIDs for prompt cache consistency (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3991">#3991</a>)</li> <li><strong>Context pressure warning spam</strong> prevented after compression (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4012">#4012</a>)</li> <li><strong>AsyncOpenAI created lazily</strong> in trajectory compressor to avoid closed event loop errors (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4013">#4013</a>)</li> </ul> <h3>Memory & Sessions</h3> <ul> <li><strong>Pluggable memory provider interface</strong> — ABC-based plugin system for custom memory backends with profile isolation (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4623">#4623</a>)</li> <li><strong>Honcho full integration parity</strong> restored as reference memory provider plugin (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4355">#4355</a>) — @erosika</li> <li><strong>Honcho profile-scoped</strong> host and peer resolution (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4616">#4616</a>)</li> <li><strong>Memory flush state persisted</strong> to prevent redundant re-flushes on gateway restart (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4481">#4481</a>)</li> <li><strong>Memory provider tools</strong> routed through sequential execution path (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4803">#4803</a>)</li> <li><strong>Honcho config</strong> written to instance-local path for profile isolation (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4037">#4037</a>)</li> <li><strong>API server sessions</strong> persist to shared SessionDB (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4802">#4802</a>)</li> <li><strong>Token usage persisted</strong> for non-CLI sessions (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4627">#4627</a>)</li> <li><strong>Quote dotted terms in FTS5 queries</strong> — fixes session search for terms containing dots (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4549">#4549</a>)</li> </ul> <hr> <h2>📱 Messaging Platforms (Gateway)</h2> <h3>Gateway Core</h3> <ul> <li><strong>Race condition fixes</strong> — photo media loss, flood control, stuck sessions, and STT config issues resolved in one hardening pass (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4727">#4727</a>)</li> <li><strong>Approval routing through running-agent guard</strong> — <code>/approve</code> and <code>/deny</code> now route correctly when the agent is blocked waiting for approval instead of being swallowed as interrupts (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4798">#4798</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4557">#4557</a>, closes <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/4542">#4542</a>)</li> <li><strong>Resume agent after /approve</strong> — tool result is no longer lost when executing blocked commands (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4418">#4418</a>)</li> <li><strong>DM thread sessions seeded</strong> with parent transcript to preserve context (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4559">#4559</a>)</li> <li><strong>Skill-aware slash commands</strong> — gateway dynamically registers installed skills as slash commands with paginated <code>/commands</code> list and Telegram 100-command cap (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3934">#3934</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4005">#4005</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4006">#4006</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4010">#4010</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4023">#4023</a>)</li> <li><strong>Per-platform disabled skills</strong> respected in Telegram menu and gateway dispatch (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4799">#4799</a>)</li> <li><strong>Remove user-facing compression warnings</strong> — cleaner message flow (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4139">#4139</a>)</li> <li><strong><code>-v/-q</code> flags wired to stderr logging</strong> for gateway service (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4474">#4474</a>)</li> <li><strong>HERMES_HOME remapped</strong> to target user in system service unit (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4456">#4456</a>)</li> <li><strong>Honor default for invalid bool-like config values</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4029">#4029</a>)</li> <li><strong>setsid instead of systemd-run</strong> for <code>/update</code> command to avoid systemd permission issues (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4104">#4104</a>, closes <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/4017">#4017</a>)</li> <li><strong>'Initializing agent...'</strong> shown on first message for better UX (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4086">#4086</a>)</li> <li><strong>Allow running gateway service as root</strong> for LXC/container environments (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4732">#4732</a>)</li> </ul> <h3>Telegram</h3> <ul> <li><strong>32-char limit on command names</strong> with collision avoidance (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4211">#4211</a>)</li> <li><strong>Priority order enforced</strong> in menu — core > plugins > skills (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4023">#4023</a>)</li> <li><strong>Capped at 50 commands</strong> — API rejects above ~60 (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4006">#4006</a>)</li> <li><strong>Skip empty/whitespace text</strong> to prevent 400 errors (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4388">#4388</a>)</li> <li><strong>E2E gateway tests</strong> added (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4497">#4497</a>) — @pefontana</li> </ul> <h3>Discord</h3> <ul> <li><strong>Button-based approval UI</strong> — register <code>/approve</code> and <code>/deny</code> slash commands with interactive button prompts (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4800">#4800</a>)</li> <li><strong>Configurable reactions</strong> — <code>discord.reactions</code> config option to disable message processing reactions (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4199">#4199</a>)</li> <li><strong>Skip reactions and auto-threading</strong> for unauthorized users (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4387">#4387</a>)</li> </ul> <h3>Slack</h3> <ul> <li><strong>Reply in thread</strong> — <code>slack.reply_in_thread</code> config option for threaded responses (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4643">#4643</a>, closes <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/2662">#2662</a>)</li> </ul> <h3>WhatsApp</h3> <ul> <li><strong>Enforce require_mention in group chats</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4730">#4730</a>)</li> </ul> <h3>Webhook</h3> <ul> <li><strong>Platform support fixes</strong> — skip home channel prompt, disable tool progress for webhook adapters (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4660">#4660</a>)</li> </ul> <h3>Matrix</h3> <ul> <li><strong>E2EE decryption hardening</strong> — request missing keys, auto-trust devices, retry buffered events (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4083">#4083</a>)</li> </ul> <hr> <h2>🖥️ CLI & User Experience</h2> <h3>New Slash Commands</h3> <ul> <li><strong><code>/yolo</code></strong> — toggle dangerous command approvals on/off for the session (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3990">#3990</a>)</li> <li><strong><code>/btw</code></strong> — ephemeral side questions that don't affect the main conversation context (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4161">#4161</a>)</li> <li><strong><code>/profile</code></strong> — show active profile info without leaving the chat session (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4027">#4027</a>)</li> </ul> <h3>Interactive CLI</h3> <ul> <li><strong>Inline diff previews</strong> for write and patch operations in the tool activity feed (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4411">#4411</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4423">#4423</a>)</li> <li><strong>TUI pinned to bottom</strong> on startup — no more large blank spaces between response and input (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4412">#4412</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4359">#4359</a>, closes <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/4398">#4398</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/4421">#4421</a>)</li> <li><strong><code>/history</code> and <code>/resume</code></strong> now surface recent sessions directly instead of requiring search (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4728">#4728</a>)</li> <li><strong>Cache tokens shown</strong> in <code>/insights</code> overview so total adds up (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4428">#4428</a>)</li> <li><strong><code>--max-turns</code> CLI flag</strong> for <code>hermes chat</code> to limit agent iterations (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4314">#4314</a>)</li> <li><strong>Detect dragged file paths</strong> instead of treating them as slash commands (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4533">#4533</a>) — @rolme</li> <li><strong>Allow empty strings and falsy values</strong> in <code>config set</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4310">#4310</a>, closes <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/4277">#4277</a>)</li> <li><strong>Voice mode in WSL</strong> when PulseAudio bridge is configured (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4317">#4317</a>)</li> <li><strong>Respect <code>NO_COLOR</code> env var</strong> and <code>TERM=dumb</code> for accessibility (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4079">#4079</a>, closes <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/4066">#4066</a>) — @SHL0MS</li> <li><strong>Correct shell reload instruction</strong> for macOS/zsh users (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4025">#4025</a>)</li> <li><strong>Zero exit code</strong> on successful quiet mode queries (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4613">#4613</a>, closes <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/4601">#4601</a>) — @devorun</li> <li><strong>on_session_end hook fires</strong> on interrupted exits (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4159">#4159</a>)</li> <li><strong>Profile list display</strong> reads <code>model.default</code> key correctly (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4160">#4160</a>)</li> <li><strong>Browser and TTS</strong> shown in reconfigure menu (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4041">#4041</a>)</li> <li><strong>Web backend priority</strong> detection simplified (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4036">#4036</a>)</li> </ul> <h3>Setup & Configuration</h3> <ul> <li><strong>Allowed_users preserved</strong> during setup and quiet unconfigured provider warnings (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4551">#4551</a>) — @kshitijk4poor</li> <li><strong>Save API key to model config</strong> for custom endpoints (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4202">#4202</a>, closes <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/4182">#4182</a>)</li> <li><strong>Claude Code credentials gated</strong> behind explicit Hermes config in wizard trigger (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4210">#4210</a>)</li> <li><strong>Atomic writes in save_config_value</strong> to prevent config loss on interrupt (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4298">#4298</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4320">#4320</a>)</li> <li><strong>Scopes field written</strong> to Claude Code credentials on token refresh (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4126">#4126</a>)</li> </ul> <h3>Update System</h3> <ul> <li><strong>Fork detection and upstream sync</strong> in <code>hermes update</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4744">#4744</a>)</li> <li><strong>Preserve working optional extras</strong> when one extra fails during update (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4550">#4550</a>)</li> <li><strong>Handle conflicted git index</strong> during hermes update (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4735">#4735</a>)</li> <li><strong>Avoid launchd restart race</strong> on macOS (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4736">#4736</a>)</li> <li><strong>Missing subprocess.run() timeouts</strong> added to doctor and status commands (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4009">#4009</a>)</li> </ul> <hr> <h2>🔧 Tool System</h2> <h3>Browser</h3> <ul> <li><strong>Camofox anti-detection browser backend</strong> — local stealth browsing with auto-install via <code>hermes tools</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4008">#4008</a>)</li> <li><strong>Persistent Camofox sessions</strong> with VNC URL discovery for visual debugging (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4419">#4419</a>)</li> <li><strong>Skip SSRF check for local backends</strong> (Camofox, headless Chromium) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4292">#4292</a>)</li> <li><strong>Configurable SSRF check</strong> via <code>browser.allow_private_urls</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4198">#4198</a>) — @nils010485</li> <li><strong>CAMOFOX_PORT=9377</strong> added to Docker commands (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4340">#4340</a>)</li> </ul> <h3>File Operations</h3> <ul> <li><strong>Inline diff previews</strong> on write and patch actions (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4411">#4411</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4423">#4423</a>)</li> <li><strong>Stale file detection</strong> on write and patch — warns when file was modified externally since last read (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4345">#4345</a>)</li> <li><strong>Staleness timestamp refreshed</strong> after writes (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4390">#4390</a>)</li> <li><strong>Size guard, dedup, and device blocking</strong> on read_file (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4315">#4315</a>)</li> </ul> <h3>MCP</h3> <ul> <li><strong>Stability fix pack</strong> — reload timeout, shutdown cleanup, event loop handler, OAuth non-blocking (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4757">#4757</a>, closes <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/4462">#4462</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/2537">#2537</a>)</li> </ul> <h3>ACP (Editor Integration)</h3> <ul> <li><strong>Client-provided MCP servers</strong> registered as agent tools — editors pass their MCP servers to Hermes (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4705">#4705</a>)</li> </ul> <h3>Skills System</h3> <ul> <li><strong>Size limits for agent writes</strong> and <strong>fuzzy matching for skill patch</strong> — prevents oversized skill writes and improves edit reliability (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4414">#4414</a>)</li> <li><strong>Validate hub bundle paths</strong> before install — blocks path traversal in skill bundles (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3986">#3986</a>)</li> <li><strong>Unified hermes-agent and hermes-agent-setup</strong> into single skill (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4332">#4332</a>)</li> <li><strong>Skill metadata type check</strong> in extract_skill_conditions (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4479">#4479</a>)</li> </ul> <h3>New/Updated Skills</h3> <ul> <li><strong>research-paper-writing</strong> — full end-to-end research pipeline (replaced ml-paper-writing) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4654">#4654</a>) — @SHL0MS</li> <li><strong>ascii-video</strong> — text readability techniques and external layout oracle (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4054">#4054</a>) — @SHL0MS</li> <li><strong>youtube-transcript</strong> updated for youtube-transcript-api v1.x (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4455">#4455</a>) — @el-analista</li> <li><strong>Skills browse and search page</strong> added to documentation site (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4500">#4500</a>) — @IAvecilla</li> </ul> <hr> <h2>🔒 Security & Reliability</h2> <h3>Security Hardening</h3> <ul> <li><strong>Block secret exfiltration</strong> via browser URLs and LLM responses — scans for secret patterns in URL encoding, base64, and prompt injection vectors (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4483">#4483</a>)</li> <li><strong>Redact secrets from execute_code sandbox output</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4360">#4360</a>)</li> <li><strong>Protect <code>.docker</code>, <code>.azure</code>, <code>.config/gh</code> credential directories</strong> from read/write via file tools and terminal (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4305">#4305</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4327">#4327</a>) — @memosr</li> <li><strong>GitHub OAuth token patterns</strong> added to redaction + snapshot redact flag (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4295">#4295</a>)</li> <li><strong>Reject private and loopback IPs</strong> in Telegram DoH fallback (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4129">#4129</a>)</li> <li><strong>Reject path traversal</strong> in credential file registration (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4316">#4316</a>)</li> <li><strong>Validate tar archive member paths</strong> on profile import — blocks zip-slip attacks (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4318">#4318</a>)</li> <li><strong>Exclude auth.json and .env</strong> from profile exports (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4475">#4475</a>)</li> </ul> <h3>Reliability</h3> <ul> <li><strong>Prevent compression death spiral</strong> from API disconnects (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4750">#4750</a>, closes <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/2153">#2153</a>)</li> <li><strong>Handle <code>is_closed</code> as method</strong> in OpenAI SDK — prevents false positive client closure detection (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4416">#4416</a>, closes <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/4377">#4377</a>)</li> <li><strong>Exclude matrix from [all] extras</strong> — python-olm is upstream-broken, prevents install failures (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4615">#4615</a>, closes <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/4178">#4178</a>)</li> <li><strong>OpenCode model routing</strong> repaired (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4508">#4508</a>)</li> <li><strong>Docker container image</strong> optimized (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4034">#4034</a>) — @bcross</li> </ul> <h3>Windows & Cross-Platform</h3> <ul> <li><strong>Voice mode in WSL</strong> with PulseAudio bridge (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4317">#4317</a>)</li> <li><strong>Homebrew packaging</strong> preparation (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4099">#4099</a>)</li> <li><strong>CI fork conditionals</strong> to prevent workflow failures on forks (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4107">#4107</a>)</li> </ul> <hr> <h2>🐛 Notable Bug Fixes</h2> <ul> <li><strong>Gateway approval blocked agent thread</strong> — approval now blocks the agent thread like CLI does, preventing tool result loss (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4557">#4557</a>, closes <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/4542">#4542</a>)</li> <li><strong>Compression death spiral</strong> from API disconnects — detected and halted instead of looping (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4750">#4750</a>, closes <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/2153">#2153</a>)</li> <li><strong>Anthropic thinking blocks lost</strong> across tool-use turns (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4626">#4626</a>)</li> <li><strong>Profile model config ignored</strong> with <code>-p</code> flag — model.model now promoted to model.default correctly (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4160">#4160</a>, closes <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/4486">#4486</a>)</li> <li><strong>CLI blank space</strong> between response and input area (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4412">#4412</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4359">#4359</a>, closes <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/4398">#4398</a>)</li> <li><strong>Dragged file paths</strong> treated as slash commands instead of file references (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4533">#4533</a>) — @rolme</li> <li><strong>Orphaned <code></think></code> tags</strong> leaking into user-facing responses (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4311">#4311</a>, closes <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/4285">#4285</a>)</li> <li><strong>OpenAI SDK <code>is_closed</code></strong> is a method not property — false positive client closure (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4416">#4416</a>, closes <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/4377">#4377</a>)</li> <li><strong>MCP OAuth server</strong> could block Hermes startup instead of degrading gracefully (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4757">#4757</a>, closes <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/4462">#4462</a>)</li> <li><strong>MCP event loop closed</strong> on shutdown with HTTP servers (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4757">#4757</a>, closes <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/2537">#2537</a>)</li> <li><strong>Alibaba provider</strong> hardcoded to wrong endpoint (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4133">#4133</a>, closes <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/3912">#3912</a>)</li> <li><strong>Slack reply_in_thread</strong> missing config option (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4643">#4643</a>, closes <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/2662">#2662</a>)</li> <li><strong>Quiet mode exit code</strong> — successful <code>-q</code> queries no longer exit nonzero (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4613">#4613</a>, closes <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/4601">#4601</a>)</li> <li><strong>Mobile sidebar</strong> shows only close button due to backdrop-filter issue in docs site (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4207">#4207</a>) — @xsmyile</li> <li><strong>Config restore reverted</strong> by stale-branch squash merge — <code>_config_version</code> fixed (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4440">#4440</a>)</li> </ul> <hr> <h2>🧪 Testing</h2> <ul> <li><strong>Telegram gateway E2E tests</strong> — full integration test suite for the Telegram adapter (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4497">#4497</a>) — @pefontana</li> <li><strong>11 real test failures fixed</strong> plus sys.modules cascade poisoner resolved (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4570">#4570</a>)</li> <li><strong>7 CI failures resolved</strong> across hooks, plugins, and skill tests (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3936">#3936</a>)</li> <li><strong>Codex 401 refresh tests</strong> updated for CI compatibility (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4166">#4166</a>)</li> <li><strong>Stale OPENAI_BASE_URL test</strong> fixed (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4217">#4217</a>)</li> </ul> <hr> <h2>📚 Documentation</h2> <ul> <li><strong>Comprehensive documentation audit</strong> — 9 HIGH and 20+ MEDIUM gaps fixed across 21 files (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4087">#4087</a>)</li> <li><strong>Site navigation restructured</strong> — features and platforms promoted to top-level (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4116">#4116</a>)</li> <li><strong>Tool progress streaming</strong> documented for API server and Open WebUI (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4138">#4138</a>)</li> <li><strong>Telegram webhook mode</strong> documentation (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4089">#4089</a>)</li> <li><strong>Local LLM provider guides</strong> — comprehensive setup guides with context length warnings (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4294">#4294</a>)</li> <li><strong>WhatsApp allowlist behavior</strong> clarified with <code>WHATSAPP_ALLOW_ALL_USERS</code> documentation (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4293">#4293</a>)</li> <li><strong>Slack configuration options</strong> — new config section in Slack docs (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4644">#4644</a>)</li> <li><strong>Terminal backends section</strong> expanded + docs build fixes (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4016">#4016</a>)</li> <li><strong>Adding-providers guide</strong> updated for unified setup flow (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4201">#4201</a>)</li> <li><strong>ACP Zed config</strong> fixed (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4743">#4743</a>)</li> <li><strong>Community FAQ</strong> entries for common workflows and troubleshooting (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4797">#4797</a>)</li> <li><strong>Skills browse and search page</strong> on docs site (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4500">#4500</a>) — @IAvecilla</li> </ul> <hr> <h2>👥 Contributors</h2> <h3>Core</h3> <ul> <li><strong>@teknium1</strong> — 135 commits across all subsystems</li> </ul> <h3>Top Community Contributors</h3> <ul> <li><strong>@kshitijk4poor</strong> — 13 commits: preserve allowed_users during setup (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4551">#4551</a>), and various fixes</li> <li><strong>@erosika</strong> — 12 commits: Honcho full integration parity restored as memory provider plugin (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4355">#4355</a>)</li> <li><strong>@pefontana</strong> — 9 commits: Telegram gateway E2E test suite (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4497">#4497</a>)</li> <li><strong>@bcross</strong> — 5 commits: Docker container image optimization (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4034">#4034</a>)</li> <li><strong>@SHL0MS</strong> — 4 commits: NO_COLOR/TERM=dumb support (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4079">#4079</a>), ascii-video skill updates (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4054">#4054</a>), research-paper-writing skill (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/4654">#4654</a>)</li> </ul> <h3>All Contributors</h3> <p>@0xbyt4, @arasovic, @Bartok9, @bcross, @binhnt92, @camden-lowrance, @curtitoo, @Dakota, @Dave Tist, @Dean Kerr, @devorun, @dieutx, @Dilee, @el-analista, @erosika, @Gutslabs, @IAvecilla, @Jack, @Johannnnn506, @kshitijk4poor, @Laura Batalha, @Leegenux, @Lume, @MacroAnarchy, @maymuneth, @memosr, @NexVeridian, @Nick, @nils010485, @pefontana, @Penov, @rolme, @SHL0MS, @txchen, @xsmyile</p> <h3>Issues Resolved from Community</h3> <p>@acsezen (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/2537">#2537</a>), @arasovic (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/4285">#4285</a>), @camden-lowrance (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/4462">#4462</a>), @devorun (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/4601">#4601</a>), @eloklam (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/4486">#4486</a>), @HenkDz (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/3719">#3719</a>), @hypotyposis (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/2153">#2153</a>), @kazamak (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/4178">#4178</a>), @lstep (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/4366">#4366</a>), @Mark-Lok (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/4542">#4542</a>), @NoJster (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/4421">#4421</a>), @patp (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/2662">#2662</a>), @pr0n (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/4601">#4601</a>), @saulmc (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/4377">#4377</a>), @SHL0MS (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/4060">#4060</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/4061">#4061</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/4066">#4066</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/4172">#4172</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/4277">#4277</a>), @Z-Mackintosh (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/4398">#4398</a>)</p> <hr> <p><strong>Full Changelog</strong>: <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/compare/v2026.3.30...v2026.4.3">v2026.3.30...v2026.4.3</a></p> </div><div class="link-row" data-astro-cid-l7qxtvnw><span class="lr-label" data-astro-cid-l7qxtvnw>Links</span><a href="https://github.com/NousResearch/hermes-agent/releases/tag/v2026.4.3" data-astro-cid-l7qxtvnw>GitHub release notes ↗</a><a href="https://github.com/NousResearch/hermes-agent/compare/v2026.3.30...v2026.4.3" data-astro-cid-l7qxtvnw>Full diff ↗</a><a href="/providers/" data-astro-cid-l7qxtvnw>Providers Reference →</a></div></div></details></div><div data-astro-cid-l7qxtvnw><h3 class="month-h" data-astro-cid-l7qxtvnw>March 2026</h3><details class="rel" data-astro-cid-l7qxtvnw><summary data-astro-cid-l7qxtvnw><span class="r-arrow" data-astro-cid-l7qxtvnw>▶</span><span class="r-ver" data-astro-cid-l7qxtvnw>v0.6.0</span><span class="r-date" data-astro-cid-l7qxtvnw>2026-03-30</span></summary><div class="rel-body" data-astro-cid-l7qxtvnw><p class="r-summary" data-astro-cid-l7qxtvnw>The multi-instance release — Profiles for running isolated agent instances, MCP server mode, Docker container, fallback provider chains, two new messaging platforms (Feishu/Lark and WeCom), Telegram webhook mode, Slack multi-workspace OAuth, 95 PRs and 16 resolved issues in 2 days.</p><div class="r-notes" data-astro-cid-l7qxtvnw><blockquote> <p>The multi-instance release — Profiles for running isolated agent instances, MCP server mode, Docker container, fallback provider chains, two new messaging platforms (Feishu/Lark and WeCom), Telegram webhook mode, Slack multi-workspace OAuth, 95 PRs and 16 resolved issues in 2 days.</p> </blockquote> <hr> <h2>✨ Highlights</h2> <ul> <li><p><strong>Profiles — Multi-Instance Hermes</strong> — Run multiple isolated Hermes instances from the same installation. Each profile gets its own config, memory, sessions, skills, and gateway service. Create with <code>hermes profile create</code>, switch with <code>hermes -p <name></code>, export/import for sharing. Full token-lock isolation prevents two profiles from using the same bot credential. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3681">#3681</a>)</p> </li> <li><p><strong>MCP Server Mode</strong> — Expose Hermes conversations and sessions to any MCP-compatible client (Claude Desktop, Cursor, VS Code, etc.) via <code>hermes mcp serve</code>. Browse conversations, read messages, search across sessions, and manage attachments — all through the Model Context Protocol. Supports both stdio and Streamable HTTP transports. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3795">#3795</a>)</p> </li> <li><p><strong>Docker Container</strong> — Official Dockerfile for running Hermes Agent in a container. Supports both CLI and gateway modes with volume-mounted config. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3668">#3668</a>, closes <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/850">#850</a>)</p> </li> <li><p><strong>Ordered Fallback Provider Chain</strong> — Configure multiple inference providers with automatic failover. When your primary provider returns errors or is unreachable, Hermes automatically tries the next provider in the chain. Configure via <code>fallback_providers</code> in config.yaml. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3813">#3813</a>, closes <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/1734">#1734</a>)</p> </li> <li><p><strong>Feishu/Lark Platform Support</strong> — Full gateway adapter for Feishu (飞书) and Lark with event subscriptions, message cards, group chat, image/file attachments, and interactive card callbacks. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3799">#3799</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3817">#3817</a>, closes <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/1788">#1788</a>)</p> </li> <li><p><strong>WeCom (Enterprise WeChat) Platform Support</strong> — New gateway adapter for WeCom (企业微信) with text/image/voice messages, group chats, and callback verification. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3847">#3847</a>)</p> </li> <li><p><strong>Slack Multi-Workspace OAuth</strong> — Connect a single Hermes gateway to multiple Slack workspaces via OAuth token file. Each workspace gets its own bot token, resolved dynamically per incoming event. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3903">#3903</a>)</p> </li> <li><p><strong>Telegram Webhook Mode & Group Controls</strong> — Run the Telegram adapter in webhook mode as an alternative to polling — faster response times and better for production deployments behind a reverse proxy. New group mention gating controls when the bot responds: always, only when @mentioned, or via regex triggers. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3880">#3880</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3870">#3870</a>)</p> </li> <li><p><strong>Exa Search Backend</strong> — Add Exa as an alternative web search and content extraction backend alongside Firecrawl and DuckDuckGo. Set <code>EXA_API_KEY</code> and configure as preferred backend. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3648">#3648</a>)</p> </li> <li><p><strong>Skills & Credentials on Remote Backends</strong> — Mount skill directories and credential files into Modal and Docker containers, so remote terminal sessions have access to the same skills and secrets as local execution. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3890">#3890</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3671">#3671</a>, closes <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/3665">#3665</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/3433">#3433</a>)</p> </li> </ul> <hr> <h2>🏗️ Core Agent & Architecture</h2> <h3>Provider & Model Support</h3> <ul> <li><strong>Ordered fallback provider chain</strong> — automatic failover across multiple configured providers (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3813">#3813</a>)</li> <li><strong>Fix api_mode on provider switch</strong> — switching providers via <code>hermes model</code> now correctly clears stale <code>api_mode</code> instead of hardcoding <code>chat_completions</code>, fixing 404s for providers with Anthropic-compatible endpoints (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3726">#3726</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3857">#3857</a>, closes <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/3685">#3685</a>)</li> <li><strong>Stop silent OpenRouter fallback</strong> — when no provider is configured, Hermes now raises a clear error instead of silently routing to OpenRouter (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3807">#3807</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3862">#3862</a>)</li> <li><strong>Gemini 3.1 preview models</strong> — added to OpenRouter and Nous Portal catalogs (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3803">#3803</a>, closes <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/3753">#3753</a>)</li> <li><strong>Gemini direct API context length</strong> — full context length resolution for direct Google AI endpoints (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3876">#3876</a>)</li> <li><strong>gpt-5.4-mini</strong> added to Codex fallback catalog (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3855">#3855</a>)</li> <li><strong>Curated model lists preferred</strong> over live API probe when the probe returns fewer models (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3856">#3856</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3867">#3867</a>)</li> <li><strong>User-friendly 429 rate limit messages</strong> with Retry-After countdown (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3809">#3809</a>)</li> <li><strong>Auxiliary client placeholder key</strong> for local servers without auth requirements (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3842">#3842</a>)</li> <li><strong>INFO-level logging</strong> for auxiliary provider resolution (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3866">#3866</a>)</li> </ul> <h3>Agent Loop & Conversation</h3> <ul> <li><strong>Subagent status reporting</strong> — reports <code>completed</code> status when summary exists instead of generic failure (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3829">#3829</a>)</li> <li><strong>Session log file updated during compression</strong> — prevents stale file references after context compression (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3835">#3835</a>)</li> <li><strong>Omit empty tools param</strong> — sends no <code>tools</code> parameter when empty instead of <code>None</code>, fixing compatibility with strict providers (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3820">#3820</a>)</li> </ul> <h3>Profiles & Multi-Instance</h3> <ul> <li><strong>Profiles system</strong> — <code>hermes profile create/list/switch/delete/export/import/rename</code>. Each profile gets isolated HERMES_HOME, gateway service, CLI wrapper. Token locks prevent credential collisions. Tab completion for profile names. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3681">#3681</a>)</li> <li><strong>Profile-aware display paths</strong> — all user-facing <code>~/.hermes</code> paths replaced with <code>display_hermes_home()</code> to show the correct profile directory (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3623">#3623</a>)</li> <li><strong>Lazy display_hermes_home imports</strong> — prevents <code>ImportError</code> during <code>hermes update</code> when modules cache stale bytecode (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3776">#3776</a>)</li> <li><strong>HERMES_HOME for protected paths</strong> — <code>.env</code> write-deny path now respects HERMES_HOME instead of hardcoded <code>~/.hermes</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3840">#3840</a>)</li> </ul> <hr> <h2>📱 Messaging Platforms (Gateway)</h2> <h3>New Platforms</h3> <ul> <li><strong>Feishu/Lark</strong> — Full adapter with event subscriptions, message cards, group chat, image/file attachments, interactive card callbacks (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3799">#3799</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3817">#3817</a>)</li> <li><strong>WeCom (Enterprise WeChat)</strong> — Text/image/voice messages, group chats, callback verification (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3847">#3847</a>)</li> </ul> <h3>Telegram</h3> <ul> <li><strong>Webhook mode</strong> — run as webhook endpoint instead of polling for production deployments (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3880">#3880</a>)</li> <li><strong>Group mention gating & regex triggers</strong> — configurable bot response behavior in groups: always, @mention-only, or regex-matched (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3870">#3870</a>)</li> <li><strong>Gracefully handle deleted reply targets</strong> — no more crashes when the message being replied to was deleted (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3858">#3858</a>, closes <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/3229">#3229</a>)</li> </ul> <h3>Discord</h3> <ul> <li><strong>Message processing reactions</strong> — adds a reaction emoji while processing and removes it when done, giving visual feedback in channels (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3871">#3871</a>)</li> <li><strong>DISCORD_IGNORE_NO_MENTION</strong> — skip messages that @mention other users/bots but not Hermes (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3640">#3640</a>)</li> <li><strong>Clean up deferred "thinking..."</strong> — properly removes the "thinking..." indicator after slash commands complete (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3674">#3674</a>, closes <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/3595">#3595</a>)</li> </ul> <h3>Slack</h3> <ul> <li><strong>Multi-workspace OAuth</strong> — connect to multiple Slack workspaces from a single gateway via OAuth token file (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3903">#3903</a>)</li> </ul> <h3>WhatsApp</h3> <ul> <li><strong>Persistent aiohttp session</strong> — reuse HTTP sessions across requests instead of creating new ones per message (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3818">#3818</a>)</li> <li><strong>LID↔phone alias resolution</strong> — correctly match Linked ID and phone number formats in allowlists (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3830">#3830</a>)</li> <li><strong>Skip reply prefix in bot mode</strong> — cleaner message formatting when running as a WhatsApp bot (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3931">#3931</a>)</li> </ul> <h3>Matrix</h3> <ul> <li><strong>Native voice messages via MSC3245</strong> — send voice messages as proper Matrix voice events instead of file attachments (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3877">#3877</a>)</li> </ul> <h3>Mattermost</h3> <ul> <li><strong>Configurable mention behavior</strong> — respond to messages without requiring @mention (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3664">#3664</a>)</li> </ul> <h3>Signal</h3> <ul> <li><strong>URL-encode phone numbers</strong> and correct attachment RPC parameter — fixes delivery failures with certain phone number formats (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3670">#3670</a>) — @kshitijk4poor</li> </ul> <h3>Email</h3> <ul> <li><strong>Close SMTP/IMAP connections on failure</strong> — prevents connection leaks during error scenarios (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3804">#3804</a>)</li> </ul> <h3>Gateway Core</h3> <ul> <li><strong>Atomic config writes</strong> — use atomic file writes for config.yaml to prevent data loss during crashes (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3800">#3800</a>)</li> <li><strong>Home channel env overrides</strong> — apply environment variable overrides for home channels consistently (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3796">#3796</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3808">#3808</a>)</li> <li><strong>Replace print() with logger</strong> — BasePlatformAdapter now uses proper logging instead of print statements (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3669">#3669</a>)</li> <li><strong>Cron delivery labels</strong> — resolve human-friendly delivery labels via channel directory (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3860">#3860</a>, closes <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/1945">#1945</a>)</li> <li><strong>Cron [SILENT] tightening</strong> — prevent agents from prefixing reports with [SILENT] to suppress delivery (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3901">#3901</a>)</li> <li><strong>Background task media delivery</strong> and vision download timeout fixes (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3919">#3919</a>)</li> <li><strong>Boot-md hook</strong> — example built-in hook to run a BOOT.md file on gateway startup (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3733">#3733</a>)</li> </ul> <hr> <h2>🖥️ CLI & User Experience</h2> <h3>Interactive CLI</h3> <ul> <li><strong>Configurable tool preview length</strong> — show full file paths by default instead of truncating at 40 chars (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3841">#3841</a>)</li> <li><strong>Tool token context display</strong> — <code>hermes tools</code> checklist now shows estimated token cost per toolset (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3805">#3805</a>)</li> <li><strong>/bg spinner TUI fix</strong> — route background task spinner through the TUI widget to prevent status bar collision (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3643">#3643</a>)</li> <li><strong>Prevent status bar wrapping</strong> into duplicate rows (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3883">#3883</a>) — @kshitijk4poor</li> <li><strong>Handle closed stdout ValueError</strong> in safe print paths — fixes crashes when stdout is closed during gateway thread shutdown (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3843">#3843</a>, closes <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/3534">#3534</a>)</li> <li><strong>Remove input() from /tools disable</strong> — eliminates freeze in terminal when disabling tools (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3918">#3918</a>)</li> <li><strong>TTY guard for interactive CLI commands</strong> — prevent CPU spin when launched without a terminal (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3933">#3933</a>)</li> <li><strong>Argparse entrypoint</strong> — use argparse in the top-level launcher for cleaner error handling (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3874">#3874</a>)</li> <li><strong>Lazy-initialized tools show yellow</strong> in banner instead of red, reducing false alarm about "missing" tools (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3822">#3822</a>)</li> <li><strong>Honcho tools shown in banner</strong> when configured (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3810">#3810</a>)</li> </ul> <h3>Setup & Configuration</h3> <ul> <li><strong>Auto-install matrix-nio</strong> during <code>hermes setup</code> when Matrix is selected (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3802">#3802</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3873">#3873</a>)</li> <li><strong>Session export stdout support</strong> — export sessions to stdout with <code>-</code> for piping (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3641">#3641</a>, closes <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/3609">#3609</a>)</li> <li><strong>Configurable approval timeouts</strong> — set how long dangerous command approval prompts wait before auto-denying (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3886">#3886</a>, closes <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/3765">#3765</a>)</li> <li><strong>Clear <strong>pycache</strong> during update</strong> — prevents stale bytecode ImportError after <code>hermes update</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3819">#3819</a>)</li> </ul> <hr> <h2>🔧 Tool System</h2> <h3>MCP</h3> <ul> <li><strong>MCP Server Mode</strong> — <code>hermes mcp serve</code> exposes conversations, sessions, and attachments to MCP clients via stdio or Streamable HTTP (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3795">#3795</a>)</li> <li><strong>Dynamic tool discovery</strong> — respond to <code>notifications/tools/list_changed</code> events to pick up new tools from MCP servers without reconnecting (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3812">#3812</a>)</li> <li><strong>Non-deprecated HTTP transport</strong> — switched from <code>sse_client</code> to <code>streamable_http_client</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3646">#3646</a>)</li> </ul> <h3>Web Tools</h3> <ul> <li><strong>Exa search backend</strong> — alternative to Firecrawl and DuckDuckGo for web search and extraction (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3648">#3648</a>)</li> </ul> <h3>Browser</h3> <ul> <li><strong>Guard against None LLM responses</strong> in browser snapshot and vision tools (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3642">#3642</a>)</li> </ul> <h3>Terminal & Remote Backends</h3> <ul> <li><strong>Mount skill directories</strong> into Modal and Docker containers (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3890">#3890</a>)</li> <li><strong>Mount credential files</strong> into remote backends with mtime+size caching (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3671">#3671</a>)</li> <li><strong>Preserve partial output</strong> when commands time out instead of losing everything (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3868">#3868</a>)</li> <li><strong>Stop marking persisted env vars as missing</strong> on remote backends (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3650">#3650</a>)</li> </ul> <h3>Audio</h3> <ul> <li><strong>.aac format support</strong> in transcription tool (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3865">#3865</a>, closes <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/1963">#1963</a>)</li> <li><strong>Audio download retry</strong> — retry logic for <code>cache_audio_from_url</code> matching the existing image download pattern (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3401">#3401</a>) — @binhnt92</li> </ul> <h3>Vision</h3> <ul> <li><strong>Reject non-image files</strong> and enforce website-only policy for vision analysis (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3845">#3845</a>)</li> </ul> <h3>Tool Schema</h3> <ul> <li><strong>Ensure name field</strong> always present in tool definitions, fixing <code>KeyError: 'name'</code> crashes (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3811">#3811</a>, closes <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/3729">#3729</a>)</li> </ul> <h3>ACP (Editor Integration)</h3> <ul> <li><strong>Complete session management surface</strong> for VS Code/Zed/JetBrains clients — proper task lifecycle, cancel support, session persistence (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3675">#3675</a>)</li> </ul> <hr> <h2>🧩 Skills & Plugins</h2> <h3>Skills System</h3> <ul> <li><strong>External skill directories</strong> — configure additional skill directories via <code>skills.external_dirs</code> in config.yaml (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3678">#3678</a>)</li> <li><strong>Category path traversal blocked</strong> — prevents <code>../</code> attacks in skill category names (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3844">#3844</a>)</li> <li><strong>parallel-cli moved to optional-skills</strong> — reduces default skill footprint (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3673">#3673</a>) — @kshitijk4poor</li> </ul> <h3>New Skills</h3> <ul> <li><strong>memento-flashcards</strong> — spaced repetition flashcard system (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3827">#3827</a>)</li> <li><strong>songwriting-and-ai-music</strong> — songwriting craft and AI music generation prompts (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3834">#3834</a>)</li> <li><strong>SiYuan Note</strong> — integration with SiYuan note-taking app (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3742">#3742</a>)</li> <li><strong>Scrapling</strong> — web scraping skill using Scrapling library (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3742">#3742</a>)</li> <li><strong>one-three-one-rule</strong> — communication framework skill (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3797">#3797</a>)</li> </ul> <h3>Plugin System</h3> <ul> <li><strong>Plugin enable/disable commands</strong> — <code>hermes plugins enable/disable <name></code> for managing plugin state without removing them (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3747">#3747</a>)</li> <li><strong>Plugin message injection</strong> — plugins can now inject messages into the conversation stream on behalf of the user via <code>ctx.inject_message()</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3778">#3778</a>) — @winglian</li> <li><strong>Honcho self-hosted support</strong> — allow local Honcho instances without requiring an API key (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3644">#3644</a>)</li> </ul> <hr> <h2>🔒 Security & Reliability</h2> <h3>Security Hardening</h3> <ul> <li><strong>Hardened dangerous command detection</strong> — expanded pattern matching for risky shell commands and added file tool path guards for sensitive locations (<code>/etc/</code>, <code>/boot/</code>, docker.sock) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3872">#3872</a>)</li> <li><strong>Sensitive path write checks</strong> in approval system — catch writes to system config files through file tools, not just terminal (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3859">#3859</a>)</li> <li><strong>Secret redaction expansion</strong> — now covers ElevenLabs, Tavily, and Exa API keys (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3920">#3920</a>)</li> <li><strong>Vision file rejection</strong> — reject non-image files passed to vision analysis to prevent information disclosure (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3845">#3845</a>)</li> <li><strong>Category path traversal blocking</strong> — prevent directory traversal in skill category names (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3844">#3844</a>)</li> </ul> <h3>Reliability</h3> <ul> <li><strong>Atomic config.yaml writes</strong> — prevent data loss during gateway crashes (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3800">#3800</a>)</li> <li><strong>Clear <strong>pycache</strong> on update</strong> — prevent stale bytecode from causing ImportError after updates (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3819">#3819</a>)</li> <li><strong>Lazy imports for update safety</strong> — prevent ImportError chains during <code>hermes update</code> when modules reference new functions (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3776">#3776</a>)</li> <li><strong>Restore terminalbench2 from patch corruption</strong> — recovered file damaged by patch tool's secret redaction (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3801">#3801</a>)</li> <li><strong>Terminal timeout preserves partial output</strong> — no more lost command output on timeout (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3868">#3868</a>)</li> </ul> <hr> <h2>🐛 Notable Bug Fixes</h2> <ul> <li><strong>OpenClaw migration model config overwrite</strong> — migration no longer overwrites model config dict with a string (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3924">#3924</a>) — @0xbyt4</li> <li><strong>OpenClaw migration expanded</strong> — covers full data footprint including sessions, cron, memory (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3869">#3869</a>)</li> <li><strong>Telegram deleted reply targets</strong> — gracefully handle replies to deleted messages instead of crashing (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3858">#3858</a>)</li> <li><strong>Discord "thinking..." persistence</strong> — properly cleans up deferred response indicators (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3674">#3674</a>)</li> <li><strong>WhatsApp LID↔phone aliases</strong> — fixes allowlist matching failures with Linked ID format (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3830">#3830</a>)</li> <li><strong>Signal URL-encoded phone numbers</strong> — fixes delivery failures with certain formats (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3670">#3670</a>)</li> <li><strong>Email connection leaks</strong> — properly close SMTP/IMAP connections on error (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3804">#3804</a>)</li> <li><strong>_safe_print ValueError</strong> — no more gateway thread crashes on closed stdout (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3843">#3843</a>)</li> <li><strong>Tool schema KeyError 'name'</strong> — ensure name field always present in tool definitions (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3811">#3811</a>)</li> <li><strong>api_mode stale on provider switch</strong> — correctly clear when switching providers via <code>hermes model</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3857">#3857</a>)</li> </ul> <hr> <h2>🧪 Testing</h2> <ul> <li>Resolved 10+ CI failures across hooks, tiktoken, plugins, and skill tests (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3848">#3848</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3721">#3721</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3936">#3936</a>)</li> </ul> <hr> <h2>📚 Documentation</h2> <ul> <li><strong>Comprehensive OpenClaw migration guide</strong> — step-by-step guide for migrating from OpenClaw/Claw3D to Hermes Agent (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3864">#3864</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3900">#3900</a>)</li> <li><strong>Credential file passthrough docs</strong> — document how to forward credential files and env vars to remote backends (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3677">#3677</a>)</li> <li><strong>DuckDuckGo requirements clarified</strong> — note runtime dependency on duckduckgo-search package (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3680">#3680</a>)</li> <li><strong>Skills catalog updated</strong> — added red-teaming category and optional skills listing (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3745">#3745</a>)</li> <li><strong>Feishu docs MDX fix</strong> — escape angle-bracket URLs that break Docusaurus build (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3902">#3902</a>)</li> </ul> <hr> <h2>👥 Contributors</h2> <h3>Core</h3> <ul> <li><strong>@teknium1</strong> — 90 PRs across all subsystems</li> </ul> <h3>Community Contributors</h3> <ul> <li><strong>@kshitijk4poor</strong> — 3 PRs: Signal phone number fix (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3670">#3670</a>), parallel-cli to optional-skills (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3673">#3673</a>), status bar wrapping fix (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3883">#3883</a>)</li> <li><strong>@winglian</strong> — 1 PR: Plugin message injection interface (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3778">#3778</a>)</li> <li><strong>@binhnt92</strong> — 1 PR: Audio download retry logic (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3401">#3401</a>)</li> <li><strong>@0xbyt4</strong> — 1 PR: OpenClaw migration model config fix (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3924">#3924</a>)</li> </ul> <h3>Issues Resolved from Community</h3> <p>@Material-Scientist (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/850">#850</a>), @hanxu98121 (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/1734">#1734</a>), @penwyp (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/1788">#1788</a>), @dan-and (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/1945">#1945</a>), @AdrianScott (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/1963">#1963</a>), @clawdbot47 (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/3229">#3229</a>), @alanfwilliams (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/3404">#3404</a>), @kentimsit (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/3433">#3433</a>), @hayka-pacha (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/3534">#3534</a>), @primmer (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/3595">#3595</a>), @dagelf (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/3609">#3609</a>), @HenkDz (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/3685">#3685</a>), @tmdgusya (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/3729">#3729</a>), @TypQxQ (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/3753">#3753</a>), @acsezen (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/3765">#3765</a>)</p> <hr> <p><strong>Full Changelog</strong>: <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/compare/v2026.3.28...v2026.3.30">v2026.3.28...v2026.3.30</a></p> </div><div class="link-row" data-astro-cid-l7qxtvnw><span class="lr-label" data-astro-cid-l7qxtvnw>Links</span><a href="https://github.com/NousResearch/hermes-agent/releases/tag/v2026.3.30" data-astro-cid-l7qxtvnw>GitHub release notes ↗</a><a href="https://github.com/NousResearch/hermes-agent/compare/v2026.3.28...v2026.3.30" data-astro-cid-l7qxtvnw>Full diff ↗</a><a href="/tools/" data-astro-cid-l7qxtvnw>Tools Reference →</a><a href="/skills/" data-astro-cid-l7qxtvnw>Skill Library →</a><a href="/gateway/" data-astro-cid-l7qxtvnw>Gateway Guide →</a><a href="/providers/" data-astro-cid-l7qxtvnw>Providers Reference →</a></div></div></details><details class="rel" data-astro-cid-l7qxtvnw><summary data-astro-cid-l7qxtvnw><span class="r-arrow" data-astro-cid-l7qxtvnw>▶</span><span class="r-ver" data-astro-cid-l7qxtvnw>v0.5.0</span><span class="r-date" data-astro-cid-l7qxtvnw>2026-03-28</span></summary><div class="rel-body" data-astro-cid-l7qxtvnw><p class="r-summary" data-astro-cid-l7qxtvnw>The hardening release — Hugging Face provider, /model command overhaul, Telegram Private Chat Topics, native Modal SDK, plugin lifecycle hooks, tool-use enforcement for GPT models, Nix flake, 50+ security and reliability fixes, and a comprehensive supply chain audit.</p><div class="r-notes" data-astro-cid-l7qxtvnw><blockquote> <p>The hardening release — Hugging Face provider, /model command overhaul, Telegram Private Chat Topics, native Modal SDK, plugin lifecycle hooks, tool-use enforcement for GPT models, Nix flake, 50+ security and reliability fixes, and a comprehensive supply chain audit.</p> </blockquote> <hr> <h2>✨ Highlights</h2> <ul> <li><p><strong>Nous Portal now supports 400+ models</strong> — The Nous Research inference portal has expanded dramatically, giving Hermes Agent users access to over 400 models through a single provider endpoint</p> </li> <li><p><strong>Hugging Face as a first-class inference provider</strong> — Full integration with HF Inference API including curated agentic model picker that maps to OpenRouter analogues, live <code>/models</code> endpoint probe, and setup wizard flow (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3419">#3419</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3440">#3440</a>)</p> </li> <li><p><strong>Telegram Private Chat Topics</strong> — Project-based conversations with functional skill binding per topic, enabling isolated workflows within a single Telegram chat (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3163">#3163</a>)</p> </li> <li><p><strong>Native Modal SDK backend</strong> — Replaced swe-rex dependency with native Modal SDK (<code>Sandbox.create.aio</code> + <code>exec.aio</code>), eliminating tunnels and simplifying the Modal terminal backend (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3538">#3538</a>)</p> </li> <li><p><strong>Plugin lifecycle hooks activated</strong> — <code>pre_llm_call</code>, <code>post_llm_call</code>, <code>on_session_start</code>, and <code>on_session_end</code> hooks now fire in the agent loop and CLI/gateway, completing the plugin hook system (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3542">#3542</a>)</p> </li> <li><p><strong>Improved OpenAI Model Reliability</strong> — Added <code>GPT_TOOL_USE_GUIDANCE</code> to prevent GPT models from describing intended actions instead of making tool calls, plus automatic stripping of stale budget warnings from conversation history that caused models to avoid tools across turns (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3528">#3528</a>)</p> </li> <li><p><strong>Nix flake</strong> — Full uv2nix build, NixOS module with persistent container mode, auto-generated config keys from Python source, and suffix PATHs for agent-friendliness (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20">#20</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3274">#3274</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3061">#3061</a>) by @alt-glitch</p> </li> <li><p><strong>Supply chain hardening</strong> — Removed compromised <code>litellm</code> dependency, pinned all dependency version ranges, regenerated <code>uv.lock</code> with hashes, added CI workflow scanning PRs for supply chain attack patterns, and bumped deps to fix CVEs (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2796">#2796</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2810">#2810</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2812">#2812</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2816">#2816</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3073">#3073</a>)</p> </li> <li><p><strong>Anthropic output limits fix</strong> — Replaced hardcoded 16K <code>max_tokens</code> with per-model native output limits (128K for Opus 4.6, 64K for Sonnet 4.6), fixing "Response truncated" and thinking-budget exhaustion on direct Anthropic API (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3426">#3426</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3444">#3444</a>)</p> </li> </ul> <hr> <h2>🏗️ Core Agent & Architecture</h2> <h3>New Provider: Hugging Face</h3> <ul> <li>First-class Hugging Face Inference API integration with auth, setup wizard, and model picker (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3419">#3419</a>)</li> <li>Curated model list mapping OpenRouter agentic defaults to HF equivalents — providers with 8+ curated models skip live <code>/models</code> probe for speed (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3440">#3440</a>)</li> <li>Added glm-5-turbo to Z.AI provider model list (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3095">#3095</a>)</li> </ul> <h3>Provider & Model Improvements</h3> <ul> <li><code>/model</code> command overhaul — extracted shared <code>switch_model()</code> pipeline for CLI and gateway, custom endpoint support, provider-aware routing (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2795">#2795</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2799">#2799</a>)</li> <li>Removed <code>/model</code> slash command from CLI and gateway in favor of <code>hermes model</code> subcommand (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3080">#3080</a>)</li> <li>Preserve <code>custom</code> provider instead of silently remapping to <code>openrouter</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2792">#2792</a>)</li> <li>Read root-level <code>provider</code> and <code>base_url</code> from config.yaml into model config (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3112">#3112</a>)</li> <li>Align Nous Portal model slugs with OpenRouter naming (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3253">#3253</a>)</li> <li>Fix Alibaba provider default endpoint and model list (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3484">#3484</a>)</li> <li>Allow MiniMax users to override <code>/v1</code> → <code>/anthropic</code> auto-correction (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3553">#3553</a>)</li> <li>Migrate OAuth token refresh to <code>platform.claude.com</code> with fallback (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3246">#3246</a>)</li> </ul> <h3>Agent Loop & Conversation</h3> <ul> <li><strong>Improved OpenAI model reliability</strong> — <code>GPT_TOOL_USE_GUIDANCE</code> prevents GPT models from describing actions instead of calling tools + automatic budget warning stripping from history (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3528">#3528</a>)</li> <li><strong>Surface lifecycle events</strong> — All retry, fallback, and compression events now surface to the user as formatted messages (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3153">#3153</a>)</li> <li><strong>Anthropic output limits</strong> — Per-model native output limits instead of hardcoded 16K <code>max_tokens</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3426">#3426</a>)</li> <li><strong>Thinking-budget exhaustion detection</strong> — Skip useless continuation retries when model uses all output tokens on reasoning (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3444">#3444</a>)</li> <li>Always prefer streaming for API calls to prevent hung subagents (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3120">#3120</a>)</li> <li>Restore safe non-streaming fallback after stream failures (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3020">#3020</a>)</li> <li>Give subagents independent iteration budgets (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3004">#3004</a>)</li> <li>Update <code>api_key</code> in <code>_try_activate_fallback</code> for subagent auth (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3103">#3103</a>)</li> <li>Graceful return on max retries instead of crashing thread (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent">untagged commit</a>)</li> <li>Count compression restarts toward retry limit (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3070">#3070</a>)</li> <li>Include tool tokens in preflight estimate, guard context probe persistence (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3164">#3164</a>)</li> <li>Update context compressor limits after fallback activation (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3305">#3305</a>)</li> <li>Validate empty user messages to prevent Anthropic API 400 errors (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3322">#3322</a>)</li> <li>GLM reasoning-only and max-length handling (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3010">#3010</a>)</li> <li>Increase API timeout default from 900s to 1800s for slow-thinking models (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3431">#3431</a>)</li> <li>Send <code>max_tokens</code> for Claude/OpenRouter + retry SSE connection errors (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3497">#3497</a>)</li> <li>Prevent AsyncOpenAI/httpx cross-loop deadlock in gateway mode (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2701">#2701</a>) by @ctlst</li> </ul> <h3>Streaming & Reasoning</h3> <ul> <li><strong>Persist reasoning across gateway session turns</strong> with new schema v6 columns (<code>reasoning</code>, <code>reasoning_details</code>, <code>codex_reasoning_items</code>) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2974">#2974</a>)</li> <li>Detect and kill stale SSE connections (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent">untagged commit</a>)</li> <li>Fix stale stream detector race causing spurious <code>RemoteProtocolError</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent">untagged commit</a>)</li> <li>Skip duplicate callback for <code><think></code>-extracted reasoning during streaming (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3116">#3116</a>)</li> <li>Preserve reasoning fields in <code>rewrite_transcript</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3311">#3311</a>)</li> <li>Preserve Gemini thought signatures in streamed tool calls (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2997">#2997</a>)</li> <li>Ensure first delta is fired during reasoning updates (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent">untagged commit</a>)</li> </ul> <h3>Session & Memory</h3> <ul> <li><strong>Session search recent sessions mode</strong> — Omit query to browse recent sessions with titles, previews, and timestamps (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2533">#2533</a>)</li> <li><strong>Session config surfacing</strong> on <code>/new</code>, <code>/reset</code>, and auto-reset (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3321">#3321</a>)</li> <li><strong>Third-party session isolation</strong> — <code>--source</code> flag for isolating sessions by origin (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3255">#3255</a>)</li> <li>Add <code>/resume</code> CLI handler, session log truncation guard, <code>reopen_session</code> API (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3315">#3315</a>)</li> <li>Clear compressor summary and turn counter on <code>/clear</code> and <code>/new</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3102">#3102</a>)</li> <li>Surface silent SessionDB failures that cause session data loss (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2999">#2999</a>)</li> <li>Session search fallback preview on summarization failure (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3478">#3478</a>)</li> <li>Prevent stale memory overwrites by flush agent (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2687">#2687</a>)</li> </ul> <h3>Context Compression</h3> <ul> <li>Replace dead <code>summary_target_tokens</code> with ratio-based scaling (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2554">#2554</a>)</li> <li>Expose <code>compression.target_ratio</code>, <code>protect_last_n</code>, and <code>threshold</code> in <code>DEFAULT_CONFIG</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent">untagged commit</a>)</li> <li>Restore sane defaults and cap summary at 12K tokens (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent">untagged commit</a>)</li> <li>Preserve transcript on <code>/compress</code> and hygiene compression (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3556">#3556</a>)</li> <li>Update context pressure warnings and token estimates after compaction (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent">untagged commit</a>)</li> </ul> <h3>Architecture & Dependencies</h3> <ul> <li><strong>Remove mini-swe-agent dependency</strong> — Inline Docker and Modal backends directly (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2804">#2804</a>)</li> <li><strong>Replace swe-rex with native Modal SDK</strong> for Modal backend (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3538">#3538</a>)</li> <li><strong>Plugin lifecycle hooks</strong> — <code>pre_llm_call</code>, <code>post_llm_call</code>, <code>on_session_start</code>, <code>on_session_end</code> now fire in the agent loop (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3542">#3542</a>)</li> <li>Fix plugin toolsets invisible in <code>hermes tools</code> and standalone processes (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3457">#3457</a>)</li> <li>Consolidate <code>get_hermes_home()</code> and <code>parse_reasoning_effort()</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3062">#3062</a>)</li> <li>Remove unused Hermes-native PKCE OAuth flow (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3107">#3107</a>)</li> <li>Remove ~100 unused imports across 55 files (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3016">#3016</a>)</li> <li>Fix 154 f-strings, simplify getattr/URL patterns, remove dead code (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3119">#3119</a>)</li> </ul> <hr> <h2>📱 Messaging Platforms (Gateway)</h2> <h3>Telegram</h3> <ul> <li><strong>Private Chat Topics</strong> — Project-based conversations with functional skill binding per topic, enabling isolated workflows within a single Telegram chat (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3163">#3163</a>)</li> <li><strong>Auto-discover fallback IPs via DNS-over-HTTPS</strong> when <code>api.telegram.org</code> is unreachable (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3376">#3376</a>)</li> <li><strong>Configurable reply threading mode</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2907">#2907</a>)</li> <li>Fall back to no <code>thread_id</code> on "Message thread not found" BadRequest (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3390">#3390</a>)</li> <li>Self-reschedule reconnect when <code>start_polling</code> fails after 502 (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3268">#3268</a>)</li> </ul> <h3>Discord</h3> <ul> <li>Stop phantom typing indicator after agent turn completes (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3003">#3003</a>)</li> </ul> <h3>Slack</h3> <ul> <li>Send tool call progress messages to correct Slack thread (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3063">#3063</a>)</li> <li>Scope progress thread fallback to Slack only (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3488">#3488</a>)</li> </ul> <h3>WhatsApp</h3> <ul> <li>Download documents, audio, and video media from messages (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2978">#2978</a>)</li> </ul> <h3>Matrix</h3> <ul> <li>Add missing Matrix entry in <code>PLATFORMS</code> dict (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3473">#3473</a>)</li> <li>Harden e2ee access-token handling (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3562">#3562</a>)</li> <li>Add backoff for <code>SyncError</code> in sync loop (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3280">#3280</a>)</li> </ul> <h3>Signal</h3> <ul> <li>Track SSE keepalive comments as connection activity (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3316">#3316</a>)</li> </ul> <h3>Email</h3> <ul> <li>Prevent unbounded growth of <code>_seen_uids</code> in EmailAdapter (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3490">#3490</a>)</li> </ul> <h3>Gateway Core</h3> <ul> <li><strong>Config-gated <code>/verbose</code> command</strong> for messaging platforms — toggle tool output verbosity from chat (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3262">#3262</a>)</li> <li><strong>Background review notifications</strong> delivered to user chat (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3293">#3293</a>)</li> <li><strong>Retry transient send failures</strong> and notify user on exhaustion (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3288">#3288</a>)</li> <li>Recover from hung agents — <code>/stop</code> hard-kills session lock (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3104">#3104</a>)</li> <li>Thread-safe <code>SessionStore</code> — protect <code>_entries</code> with <code>threading.Lock</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3052">#3052</a>)</li> <li>Fix gateway token double-counting with cached agents — use absolute set instead of increment (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3306">#3306</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3317">#3317</a>)</li> <li>Fingerprint full auth token in agent cache signature (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3247">#3247</a>)</li> <li>Silence background agent terminal output (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3297">#3297</a>)</li> <li>Include per-platform <code>ALLOW_ALL</code> and <code>SIGNAL_GROUP</code> in startup allowlist check (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3313">#3313</a>)</li> <li>Include user-local bin paths in systemd unit PATH (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3527">#3527</a>)</li> <li>Track background task references in <code>GatewayRunner</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3254">#3254</a>)</li> <li>Add request timeouts to HA, Email, Mattermost, SMS adapters (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3258">#3258</a>)</li> <li>Add media download retry to Mattermost, Slack, and base cache (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3323">#3323</a>)</li> <li>Detect virtualenv path instead of hardcoding <code>venv/</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2797">#2797</a>)</li> <li>Use <code>TERMINAL_CWD</code> for context file discovery, not process cwd (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent">untagged commit</a>)</li> <li>Stop loading hermes repo AGENTS.md into gateway sessions (~10k wasted tokens) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2891">#2891</a>)</li> </ul> <hr> <h2>🖥️ CLI & User Experience</h2> <h3>Interactive CLI</h3> <ul> <li><strong>Configurable busy input mode</strong> + fix <code>/queue</code> always working (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3298">#3298</a>)</li> <li><strong>Preserve user input on multiline paste</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3065">#3065</a>)</li> <li><strong>Tool generation callback</strong> — streaming "preparing terminal…" updates during tool argument generation (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent">untagged commit</a>)</li> <li>Show tool progress for substantive tools, not just "preparing" (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent">untagged commit</a>)</li> <li>Buffer reasoning preview chunks and fix duplicate display (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3013">#3013</a>)</li> <li>Prevent reasoning box from rendering 3x during tool-calling loops (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3405">#3405</a>)</li> <li>Eliminate "Event loop is closed" / "Press ENTER to continue" during idle — three-layer fix with <code>neuter_async_httpx_del()</code>, custom exception handler, and stale client cleanup (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3398">#3398</a>)</li> <li>Fix status bar shows 26K instead of 260K for token counts with trailing zeros (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3024">#3024</a>)</li> <li>Fix status bar duplicates and degrades during long sessions (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3291">#3291</a>)</li> <li>Refresh TUI before background task output to prevent status bar overlap (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3048">#3048</a>)</li> <li>Suppress KawaiiSpinner animation under <code>patch_stdout</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2994">#2994</a>)</li> <li>Skip KawaiiSpinner when TUI handles tool progress (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2973">#2973</a>)</li> <li>Guard <code>isatty()</code> against closed streams via <code>_is_tty</code> property (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3056">#3056</a>)</li> <li>Ensure single closure of streaming boxes during tool generation (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent">untagged commit</a>)</li> <li>Cap context pressure percentage at 100% in display (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3480">#3480</a>)</li> <li>Clean up HTML error messages in CLI display (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3069">#3069</a>)</li> <li>Show HTTP status code and 400 body in API error output (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3096">#3096</a>)</li> <li>Extract useful info from HTML error pages, dump debug on max retries (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent">untagged commit</a>)</li> <li>Prevent TypeError on startup when <code>base_url</code> is None (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3068">#3068</a>)</li> <li>Prevent update crash in non-TTY environments (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3094">#3094</a>)</li> <li>Handle EOFError in sessions delete/prune confirmation prompts (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3101">#3101</a>)</li> <li>Catch KeyboardInterrupt during <code>flush_memories</code> on exit and in exit cleanup handlers (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3025">#3025</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3257">#3257</a>)</li> <li>Guard <code>.strip()</code> against None values from YAML config (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3552">#3552</a>)</li> <li>Guard <code>config.get()</code> against YAML null values to prevent AttributeError (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3377">#3377</a>)</li> <li>Store asyncio task references to prevent GC mid-execution (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3267">#3267</a>)</li> </ul> <h3>Setup & Configuration</h3> <ul> <li>Use explicit key mapping for returning-user menu dispatch instead of positional index (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3083">#3083</a>)</li> <li>Use <code>sys.executable</code> for pip in update commands to fix PEP 668 (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3099">#3099</a>)</li> <li>Harden <code>hermes update</code> against diverged history, non-main branches, and gateway edge cases (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3492">#3492</a>)</li> <li>OpenClaw migration overwrites defaults and setup wizard skips imported sections — fixed (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3282">#3282</a>)</li> <li>Stop recursive AGENTS.md walk, load top-level only (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3110">#3110</a>)</li> <li>Add macOS Homebrew paths to browser and terminal PATH resolution (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2713">#2713</a>)</li> <li>YAML boolean handling for <code>tool_progress</code> config (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3300">#3300</a>)</li> <li>Reset default SOUL.md to baseline identity text (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3159">#3159</a>)</li> <li>Reject relative cwd paths for container terminal backends (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent">untagged commit</a>)</li> <li>Add explicit <code>hermes-api-server</code> toolset for API server platform (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3304">#3304</a>)</li> <li>Reorder setup wizard providers — OpenRouter first (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent">untagged commit</a>)</li> </ul> <hr> <h2>🔧 Tool System</h2> <h3>API Server</h3> <ul> <li><strong>Idempotency-Key support</strong>, body size limit, and OpenAI error envelope (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2903">#2903</a>)</li> <li>Allow Idempotency-Key in CORS headers (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3530">#3530</a>)</li> <li>Cancel orphaned agent + true interrupt on SSE disconnect (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3427">#3427</a>)</li> <li>Fix streaming breaks when agent makes tool calls (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2985">#2985</a>)</li> </ul> <h3>Terminal & File Operations</h3> <ul> <li>Handle addition-only hunks in V4A patch parser (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3325">#3325</a>)</li> <li>Exponential backoff for persistent shell polling (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2996">#2996</a>)</li> <li>Add timeout to subprocess calls in <code>context_references</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3469">#3469</a>)</li> </ul> <h3>Browser & Vision</h3> <ul> <li>Handle 402 insufficient credits error in vision tool (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2802">#2802</a>)</li> <li>Fix <code>browser_vision</code> ignores <code>auxiliary.vision.timeout</code> config (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2901">#2901</a>)</li> <li>Make browser command timeout configurable via config.yaml (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2801">#2801</a>)</li> </ul> <h3>MCP</h3> <ul> <li>MCP toolset resolution for runtime and config (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3252">#3252</a>)</li> <li>Add MCP tool name collision protection (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3077">#3077</a>)</li> </ul> <h3>Auxiliary LLM</h3> <ul> <li>Guard aux LLM calls against None content + reasoning fallback + retry (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3449">#3449</a>)</li> <li>Catch ImportError from <code>build_anthropic_client</code> in vision auto-detection (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3312">#3312</a>)</li> </ul> <h3>Other Tools</h3> <ul> <li>Add request timeouts to <code>send_message_tool</code> HTTP calls (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3162">#3162</a>) by @memosr</li> <li>Auto-repair <code>jobs.json</code> with invalid control characters (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3537">#3537</a>)</li> <li>Enable fine-grained tool streaming for Claude/OpenRouter (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3497">#3497</a>)</li> </ul> <hr> <h2>🧩 Skills Ecosystem</h2> <h3>Skills System</h3> <ul> <li><strong>Env var passthrough</strong> for skills and user config — skills can declare environment variables to pass through (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2807">#2807</a>)</li> <li>Cache skills prompt with shared <code>skill_utils</code> module for faster TTFT (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3421">#3421</a>)</li> <li>Avoid redundant file re-read for skill conditions (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2992">#2992</a>)</li> <li>Use Git Trees API to prevent silent subdirectory loss during install (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2995">#2995</a>)</li> <li>Fix skills-sh install for deeply nested repo structures (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2980">#2980</a>)</li> <li>Handle null metadata in skill frontmatter (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent">untagged commit</a>)</li> <li>Preserve trust for skills-sh identifiers + reduce resolution churn (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3251">#3251</a>)</li> <li>Agent-created skills were incorrectly treated as untrusted community content — fixed (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent">untagged commit</a>)</li> </ul> <h3>New Skills</h3> <ul> <li><strong>G0DM0D3 godmode jailbreaking skill</strong> + docs (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3157">#3157</a>)</li> <li><strong>Docker management skill</strong> added to optional-skills (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3060">#3060</a>)</li> <li><strong>OpenClaw migration v2</strong> — 17 new modules, terminal recap for migrating from OpenClaw to Hermes (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2906">#2906</a>)</li> </ul> <hr> <h2>🔒 Security & Reliability</h2> <h3>Security Hardening</h3> <ul> <li><strong>SSRF protection</strong> added to <code>browser_navigate</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3058">#3058</a>)</li> <li><strong>SSRF protection</strong> added to <code>vision_tools</code> and <code>web_tools</code> (hardened) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2679">#2679</a>)</li> <li><strong>Restrict subagent toolsets</strong> to parent's enabled set (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3269">#3269</a>)</li> <li><strong>Prevent zip-slip path traversal</strong> in self-update (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3250">#3250</a>)</li> <li><strong>Prevent shell injection</strong> in <code>_expand_path</code> via <code>~user</code> path suffix (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2685">#2685</a>)</li> <li><strong>Normalize input</strong> before dangerous command detection (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3260">#3260</a>)</li> <li>Make tirith block verdicts approvable instead of hard-blocking (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3428">#3428</a>)</li> <li>Remove compromised <code>litellm</code>/<code>typer</code>/<code>platformdirs</code> from deps (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2796">#2796</a>)</li> <li>Pin all dependency version ranges (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2810">#2810</a>)</li> <li>Regenerate <code>uv.lock</code> with hashes, use lockfile in setup (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2812">#2812</a>)</li> <li>Bump dependencies to fix CVEs + regenerate <code>uv.lock</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3073">#3073</a>)</li> <li>Supply chain audit CI workflow for PR scanning (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2816">#2816</a>)</li> </ul> <h3>Reliability</h3> <ul> <li><strong>SQLite WAL write-lock contention</strong> causing 15-20s TUI freeze — fixed (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3385">#3385</a>)</li> <li><strong>SQLite concurrency hardening</strong> + session transcript integrity (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3249">#3249</a>)</li> <li>Prevent recurring cron job re-fire on gateway crash/restart loop (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3396">#3396</a>)</li> <li>Mark cron session as ended after job completes (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2998">#2998</a>)</li> </ul> <hr> <h2>⚡ Performance</h2> <ul> <li><strong>TTFT startup optimizations</strong> — salvaged easy-win startup improvements (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3395">#3395</a>)</li> <li>Cache skills prompt with shared <code>skill_utils</code> module (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3421">#3421</a>)</li> <li>Avoid redundant file re-read for skill conditions in prompt builder (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2992">#2992</a>)</li> </ul> <hr> <h2>🐛 Notable Bug Fixes</h2> <ul> <li>Fix gateway token double-counting with cached agents (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3306">#3306</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3317">#3317</a>)</li> <li>Fix "Event loop is closed" / "Press ENTER to continue" during idle sessions (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3398">#3398</a>)</li> <li>Fix reasoning box rendering 3x during tool-calling loops (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3405">#3405</a>)</li> <li>Fix status bar shows 26K instead of 260K for token counts (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3024">#3024</a>)</li> <li>Fix <code>/queue</code> always working regardless of config (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3298">#3298</a>)</li> <li>Fix phantom Discord typing indicator after agent turn (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3003">#3003</a>)</li> <li>Fix Slack progress messages appearing in wrong thread (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3063">#3063</a>)</li> <li>Fix WhatsApp media downloads (documents, audio, video) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2978">#2978</a>)</li> <li>Fix Telegram "Message thread not found" killing progress messages (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3390">#3390</a>)</li> <li>Fix OpenClaw migration overwriting defaults (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3282">#3282</a>)</li> <li>Fix returning-user setup menu dispatching wrong section (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3083">#3083</a>)</li> <li>Fix <code>hermes update</code> PEP 668 "externally-managed-environment" error (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3099">#3099</a>)</li> <li>Fix subagents hitting <code>max_iterations</code> prematurely via shared budget (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3004">#3004</a>)</li> <li>Fix YAML boolean handling for <code>tool_progress</code> config (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3300">#3300</a>)</li> <li>Fix <code>config.get()</code> crashes on YAML null values (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3377">#3377</a>)</li> <li>Fix <code>.strip()</code> crash on None values from YAML config (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3552">#3552</a>)</li> <li>Fix hung agents on gateway — <code>/stop</code> now hard-kills session lock (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3104">#3104</a>)</li> <li>Fix <code>_custom</code> provider silently remapped to <code>openrouter</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2792">#2792</a>)</li> <li>Fix Matrix missing from <code>PLATFORMS</code> dict (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3473">#3473</a>)</li> <li>Fix Email adapter unbounded <code>_seen_uids</code> growth (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3490">#3490</a>)</li> </ul> <hr> <h2>🧪 Testing</h2> <ul> <li>Pin <code>agent-client-protocol</code> < 0.9 to handle breaking upstream release (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3320">#3320</a>)</li> <li>Catch anthropic ImportError in vision auto-detection tests (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3312">#3312</a>)</li> <li>Update retry-exhaust test for new graceful return behavior (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3320">#3320</a>)</li> <li>Add regression tests for null metadata frontmatter (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent">untagged commit</a>)</li> </ul> <hr> <h2>📚 Documentation</h2> <ul> <li>Update all docs for <code>/model</code> command overhaul and custom provider support (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2800">#2800</a>)</li> <li>Fix stale and incorrect documentation across 18 files (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2805">#2805</a>)</li> <li>Document 9 previously undocumented features (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2814">#2814</a>)</li> <li>Add missing skills, CLI commands, and messaging env vars to docs (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2809">#2809</a>)</li> <li>Fix api-server response storage documentation — SQLite, not in-memory (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2819">#2819</a>)</li> <li>Quote pip install extras to fix zsh glob errors (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2815">#2815</a>)</li> <li>Unify hooks documentation — add plugin hooks to hooks page, add <code>session:end</code> event (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent">untagged commit</a>)</li> <li>Clarify two-mode behavior in <code>session_search</code> schema description (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent">untagged commit</a>)</li> <li>Fix Discord Public Bot setting for Discord-provided invite link (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3519">#3519</a>) by @mehmoodosman</li> <li>Revise v0.4.0 changelog — fix feature attribution, reorder sections (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent">untagged commit</a>)</li> </ul> <hr> <h2>👥 Contributors</h2> <h3>Core</h3> <ul> <li><strong>@teknium1</strong> — 157 PRs covering the full scope of this release</li> </ul> <h3>Community Contributors</h3> <ul> <li><strong>@alt-glitch</strong> (Siddharth Balyan) — 2 PRs: Nix flake with uv2nix build, NixOS module, and persistent container mode (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/20">#20</a>); auto-generated config keys and suffix PATHs for Nix builds (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3061">#3061</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3274">#3274</a>)</li> <li><strong>@ctlst</strong> — 1 PR: Prevent AsyncOpenAI/httpx cross-loop deadlock in gateway mode (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2701">#2701</a>)</li> <li><strong>@memosr</strong> (memosr.eth) — 1 PR: Add request timeouts to <code>send_message_tool</code> HTTP calls (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3162">#3162</a>)</li> <li><strong>@mehmoodosman</strong> (Osman Mehmood) — 1 PR: Fix Discord docs for Public Bot setting (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/3519">#3519</a>)</li> </ul> <h3>All Contributors</h3> <p>@alt-glitch, @ctlst, @mehmoodosman, @memosr, @teknium1</p> <hr> <p><strong>Full Changelog</strong>: <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/compare/v2026.3.23...v2026.3.28">v2026.3.23...v2026.3.28</a></p> </div><div class="link-row" data-astro-cid-l7qxtvnw><span class="lr-label" data-astro-cid-l7qxtvnw>Links</span><a href="https://github.com/NousResearch/hermes-agent/releases/tag/v2026.3.28" data-astro-cid-l7qxtvnw>GitHub release notes ↗</a><a href="https://github.com/NousResearch/hermes-agent/compare/v2026.3.23...v2026.3.28" data-astro-cid-l7qxtvnw>Full diff ↗</a><a href="/skills/" data-astro-cid-l7qxtvnw>Skill Library →</a><a href="/gateway/" data-astro-cid-l7qxtvnw>Gateway Guide →</a><a href="/providers/" data-astro-cid-l7qxtvnw>Providers Reference →</a></div></div></details><details class="rel" data-astro-cid-l7qxtvnw><summary data-astro-cid-l7qxtvnw><span class="r-arrow" data-astro-cid-l7qxtvnw>▶</span><span class="r-ver" data-astro-cid-l7qxtvnw>v0.4.0</span><span class="r-date" data-astro-cid-l7qxtvnw>2026-03-24</span></summary><div class="rel-body" data-astro-cid-l7qxtvnw><p class="r-summary" data-astro-cid-l7qxtvnw>The platform expansion release — OpenAI-compatible API server, 6 new messaging adapters, 4 new inference providers, MCP server management with OAuth 2.1, @ context references, gateway prompt caching, streaming enabled by default, and a sweeping reliability pass with 200+ bug fixes.</p><div class="r-notes" data-astro-cid-l7qxtvnw><blockquote> <p>The platform expansion release — OpenAI-compatible API server, 6 new messaging adapters, 4 new inference providers, MCP server management with OAuth 2.1, @ context references, gateway prompt caching, streaming enabled by default, and a sweeping reliability pass with 200+ bug fixes.</p> </blockquote> <hr> <h2>✨ Highlights</h2> <ul> <li><p><strong>OpenAI-compatible API server</strong> — Expose Hermes as an <code>/v1/chat/completions</code> endpoint with a new <code>/api/jobs</code> REST API for cron job management, hardened with input limits, field whitelists, SQLite-backed response persistence, and CORS origin protection (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1756">#1756</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2450">#2450</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2456">#2456</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2451">#2451</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2472">#2472</a>)</p> </li> <li><p><strong>6 new messaging platform adapters</strong> — Signal, DingTalk, SMS (Twilio), Mattermost, Matrix, and Webhook adapters join Telegram, Discord, and WhatsApp. Gateway auto-reconnects failed platforms with exponential backoff (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2206">#2206</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1685">#1685</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1688">#1688</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1683">#1683</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2166">#2166</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2584">#2584</a>)</p> </li> <li><p><strong>@ context references</strong> — Claude Code-style <code>@file</code> and <code>@url</code> context injection with tab completions in the CLI (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2343">#2343</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2482">#2482</a>)</p> </li> <li><p><strong>4 new inference providers</strong> — GitHub Copilot (OAuth + token validation), Alibaba Cloud / DashScope, Kilo Code, and OpenCode Zen/Go (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1924">#1924</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1879">#1879</a> by @mchzimm, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1673">#1673</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1666">#1666</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1650">#1650</a>)</p> </li> <li><p><strong>MCP server management CLI</strong> — <code>hermes mcp</code> commands for installing, configuring, and authenticating MCP servers with full OAuth 2.1 PKCE flow (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2465">#2465</a>)</p> </li> <li><p><strong>Gateway prompt caching</strong> — Cache AIAgent instances per session, preserving Anthropic prompt cache across turns for dramatic cost reduction on long conversations (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2282">#2282</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2284">#2284</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2361">#2361</a>)</p> </li> <li><p><strong>Context compression overhaul</strong> — Structured summaries with iterative updates, token-budget tail protection, configurable summary endpoint, and fallback model support (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2323">#2323</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1727">#1727</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2224">#2224</a>)</p> </li> <li><p><strong>Streaming enabled by default</strong> — CLI streaming on by default with proper spinner/tool progress display during streaming mode, plus extensive linebreak and concatenation fixes (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2340">#2340</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2161">#2161</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2258">#2258</a>)</p> </li> </ul> <hr> <h2>🖥️ CLI & User Experience</h2> <h3>New Commands & Interactions</h3> <ul> <li><strong>@ context completions</strong> — Tab-completable <code>@file</code>/<code>@url</code> references that inject file content or web pages into the conversation (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2482">#2482</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2343">#2343</a>)</li> <li><strong><code>/statusbar</code></strong> — Toggle a persistent config bar showing model + provider info in the prompt (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2240">#2240</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1917">#1917</a>)</li> <li><strong><code>/queue</code></strong> — Queue prompts for the agent without interrupting the current run (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2191">#2191</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2469">#2469</a>)</li> <li><strong><code>/permission</code></strong> — Switch approval mode dynamically during a session (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2207">#2207</a>)</li> <li><strong><code>/browser</code></strong> — Interactive browser sessions from the CLI (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2273">#2273</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1814">#1814</a>)</li> <li><strong><code>/cost</code></strong> — Live pricing and usage tracking in gateway mode (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2180">#2180</a>)</li> <li><strong><code>/approve</code> and <code>/deny</code></strong> — Replaced bare text approval in gateway with explicit commands (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2002">#2002</a>)</li> </ul> <h3>Streaming & Display</h3> <ul> <li>Streaming enabled by default in CLI (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2340">#2340</a>)</li> <li>Show spinners and tool progress during streaming mode (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2161">#2161</a>)</li> <li>Show reasoning/thinking blocks when <code>show_reasoning</code> enabled (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2118">#2118</a>)</li> <li>Context pressure warnings for CLI and gateway (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2159">#2159</a>)</li> <li>Fix: streaming chunks concatenated without whitespace (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2258">#2258</a>)</li> <li>Fix: iteration boundary linebreak prevents stream concatenation (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2413">#2413</a>)</li> <li>Fix: defer streaming linebreak to prevent blank line stacking (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2473">#2473</a>)</li> <li>Fix: suppress spinner animation in non-TTY environments (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2216">#2216</a>)</li> <li>Fix: display provider and endpoint in API error messages (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2266">#2266</a>)</li> <li>Fix: resolve garbled ANSI escape codes in status printouts (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2448">#2448</a>)</li> <li>Fix: update gold ANSI color to true-color format (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2246">#2246</a>)</li> <li>Fix: normalize toolset labels and use skin colors in banner (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1912">#1912</a>)</li> </ul> <h3>CLI Polish</h3> <ul> <li>Fix: prevent 'Press ENTER to continue...' on exit (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2555">#2555</a>)</li> <li>Fix: flush stdout during agent loop to prevent macOS display freeze (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1654">#1654</a>)</li> <li>Fix: show human-readable error when <code>hermes setup</code> hits permissions error (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2196">#2196</a>)</li> <li>Fix: <code>/stop</code> command crash + UnboundLocalError in streaming media delivery (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2463">#2463</a>)</li> <li>Fix: allow custom/local endpoints without API key (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2556">#2556</a>)</li> <li>Fix: Kitty keyboard protocol Shift+Enter for Ghostty/WezTerm (attempted + reverted due to prompt_toolkit crash) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2345">#2345</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2349">#2349</a>)</li> </ul> <h3>Configuration</h3> <ul> <li><strong><code>${ENV_VAR}</code> substitution</strong> in config.yaml (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2684">#2684</a>)</li> <li><strong>Real-time config reload</strong> — config.yaml changes apply without restart (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2210">#2210</a>)</li> <li><strong><code>custom_models.yaml</code></strong> for user-managed model additions (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2214">#2214</a>)</li> <li><strong>Priority-based context file selection</strong> + CLAUDE.md support (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2301">#2301</a>)</li> <li><strong>Merge nested YAML sections</strong> instead of replacing on config update (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2213">#2213</a>)</li> <li>Fix: config.yaml provider key overrides env var silently (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2272">#2272</a>)</li> <li>Fix: log warning instead of silently swallowing config.yaml errors (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2683">#2683</a>)</li> <li>Fix: disabled toolsets re-enable themselves after <code>hermes tools</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2268">#2268</a>)</li> <li>Fix: platform default toolsets silently override tool deselection (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2624">#2624</a>)</li> <li>Fix: honor bare YAML <code>approvals.mode: off</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2620">#2620</a>)</li> <li>Fix: <code>hermes update</code> use <code>.[all]</code> extras with fallback (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1728">#1728</a>)</li> <li>Fix: <code>hermes update</code> prompt before resetting working tree on stash conflicts (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2390">#2390</a>)</li> <li>Fix: use git pull --rebase in update/install to avoid divergent branch error (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2274">#2274</a>)</li> <li>Fix: add zprofile fallback and create zshrc on fresh macOS installs (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2320">#2320</a>)</li> <li>Fix: remove <code>ANTHROPIC_BASE_URL</code> env var to avoid collisions (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1675">#1675</a>)</li> <li>Fix: don't ask IMAP password if already in keyring or env (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2212">#2212</a>)</li> <li>Fix: OpenCode Zen/Go show OpenRouter models instead of their own (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2277">#2277</a>)</li> </ul> <hr> <h2>🏗️ Core Agent & Architecture</h2> <h3>New Providers</h3> <ul> <li><strong>GitHub Copilot</strong> — Full OAuth auth, API routing, token validation, and 400k context. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1924">#1924</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1896">#1896</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1879">#1879</a> by @mchzimm, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2507">#2507</a>)</li> <li><strong>Alibaba Cloud / DashScope</strong> — Full integration with DashScope v1 runtime, model dot preservation, and 401 auth fixes (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1673">#1673</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2332">#2332</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2459">#2459</a>)</li> <li><strong>Kilo Code</strong> — First-class inference provider (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1666">#1666</a>)</li> <li><strong>OpenCode Zen and OpenCode Go</strong> — New provider backends (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1650">#1650</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2393">#2393</a> by @0xbyt4)</li> <li><strong>NeuTTS</strong> — Local TTS provider backend with built-in setup flow, replacing the old optional skill (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1657">#1657</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1664">#1664</a>)</li> </ul> <h3>Provider Improvements</h3> <ul> <li><strong>Eager fallback</strong> to backup model on rate-limit errors (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1730">#1730</a>)</li> <li><strong>Endpoint metadata</strong> for custom model context and pricing; query local servers for actual context window size (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1906">#1906</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2091">#2091</a> by @dusterbloom)</li> <li><strong>Context length detection overhaul</strong> — models.dev integration, provider-aware resolution, fuzzy matching for custom endpoints, <code>/v1/props</code> for llama.cpp (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2158">#2158</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2051">#2051</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2403">#2403</a>)</li> <li><strong>Model catalog updates</strong> — gpt-5.4-mini, gpt-5.4-nano, healer-alpha, haiku-4.5, minimax-m2.7, claude 4.6 at 1M context (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1913">#1913</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1915">#1915</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1900">#1900</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2155">#2155</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2474">#2474</a>)</li> <li><strong>Custom endpoint improvements</strong> — <code>model.base_url</code> in config.yaml, <code>api_mode</code> override for responses API, allow endpoints without API key, fail fast on missing keys (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2330">#2330</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1651">#1651</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2556">#2556</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2445">#2445</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1994">#1994</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1998">#1998</a>)</li> <li>Inject model and provider into system prompt (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1929">#1929</a>)</li> <li>Tie <code>api_mode</code> to provider config instead of env var (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1656">#1656</a>)</li> <li>Fix: prevent Anthropic token leaking to third-party <code>anthropic_messages</code> providers (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2389">#2389</a>)</li> <li>Fix: prevent Anthropic fallback from inheriting non-Anthropic <code>base_url</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2388">#2388</a>)</li> <li>Fix: <code>auxiliary_is_nous</code> flag never resets — leaked Nous tags to other providers (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1713">#1713</a>)</li> <li>Fix: Anthropic <code>tool_choice 'none'</code> still allowed tool calls (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1714">#1714</a>)</li> <li>Fix: Mistral parser nested JSON fallback extraction (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2335">#2335</a>)</li> <li>Fix: MiniMax 401 auth resolved by defaulting to <code>anthropic_messages</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2103">#2103</a>)</li> <li>Fix: case-insensitive model family matching (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2350">#2350</a>)</li> <li>Fix: ignore placeholder provider keys in activation checks (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2358">#2358</a>)</li> <li>Fix: Preserve Ollama model:tag colons in context length detection (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2149">#2149</a>)</li> <li>Fix: recognize Claude Code OAuth credentials in startup gate (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1663">#1663</a>)</li> <li>Fix: detect Claude Code version dynamically for OAuth user-agent (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1670">#1670</a>)</li> <li>Fix: OAuth flag stale after refresh/fallback (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1890">#1890</a>)</li> <li>Fix: auxiliary client skips expired Codex JWT (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2397">#2397</a>)</li> </ul> <h3>Agent Loop</h3> <ul> <li><strong>Gateway prompt caching</strong> — Cache AIAgent per session, keep assistant turns, fix session restore (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2282">#2282</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2284">#2284</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2361">#2361</a>)</li> <li><strong>Context compression overhaul</strong> — Structured summaries, iterative updates, token-budget tail protection, configurable <code>summary_base_url</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2323">#2323</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1727">#1727</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2224">#2224</a>)</li> <li><strong>Pre-call sanitization and post-call tool guardrails</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1732">#1732</a>)</li> <li><strong>Auto-recover</strong> from provider-rejected <code>tool_choice</code> by retrying without (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2174">#2174</a>)</li> <li><strong>Background memory/skill review</strong> replaces inline nudges (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2235">#2235</a>)</li> <li><strong>SOUL.md as primary agent identity</strong> instead of hardcoded default (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1922">#1922</a>)</li> <li>Fix: prevent silent tool result loss during context compression (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1993">#1993</a>)</li> <li>Fix: handle empty/null function arguments in tool call recovery (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2163">#2163</a>)</li> <li>Fix: handle API refusal responses gracefully instead of crashing (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2156">#2156</a>)</li> <li>Fix: prevent stuck agent loop on malformed tool calls (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2114">#2114</a>)</li> <li>Fix: return JSON parse error to model instead of dispatching with empty args (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2342">#2342</a>)</li> <li>Fix: consecutive assistant message merge drops content on mixed types (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1703">#1703</a>)</li> <li>Fix: message role alternation violations in JSON recovery and error handler (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1722">#1722</a>)</li> <li>Fix: <code>compression_attempts</code> resets each iteration — allowed unlimited compressions (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1723">#1723</a>)</li> <li>Fix: <code>length_continue_retries</code> never resets — later truncations got fewer retries (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1717">#1717</a>)</li> <li>Fix: compressor summary role violated consecutive-role constraint (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1720">#1720</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1743">#1743</a>)</li> <li>Fix: remove hardcoded <code>gemini-3-flash-preview</code> as default summary model (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2464">#2464</a>)</li> <li>Fix: correctly handle empty tool results (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2201">#2201</a>)</li> <li>Fix: crash on None entry in <code>tool_calls</code> list (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2209">#2209</a> by @0xbyt4, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2316">#2316</a>)</li> <li>Fix: per-thread persistent event loops in worker threads (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2214">#2214</a> by @jquesnelle)</li> <li>Fix: prevent 'event loop already running' when async tools run in parallel (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2207">#2207</a>)</li> <li>Fix: strip ANSI at the source — clean terminal output before it reaches the model (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2115">#2115</a>)</li> <li>Fix: skip top-level <code>cache_control</code> on role:tool for OpenRouter (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2391">#2391</a>)</li> <li>Fix: delegate tool — save parent tool names before child construction mutates global (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2083">#2083</a> by @ygd58, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1894">#1894</a>)</li> <li>Fix: only strip last assistant message if empty string (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2326">#2326</a>)</li> </ul> <h3>Session & Memory</h3> <ul> <li><strong>Session search</strong> and management slash commands (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2198">#2198</a>)</li> <li><strong>Auto session titles</strong> and <code>.hermes.md</code> project config (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1712">#1712</a>)</li> <li>Fix: concurrent memory writes silently drop entries — added file locking (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1726">#1726</a>)</li> <li>Fix: search all sources by default in <code>session_search</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1892">#1892</a>)</li> <li>Fix: handle hyphenated FTS5 queries and preserve quoted literals (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1776">#1776</a>)</li> <li>Fix: skip corrupt lines in <code>load_transcript</code> instead of crashing (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1744">#1744</a>)</li> <li>Fix: normalize session keys to prevent case-sensitive duplicates (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2157">#2157</a>)</li> <li>Fix: prevent <code>session_search</code> crash when no sessions exist (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2194">#2194</a>)</li> <li>Fix: reset token counters on new session for accurate usage display (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2101">#2101</a> by @InB4DevOps)</li> <li>Fix: prevent stale memory overwrites by flush agent (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2687">#2687</a>)</li> <li>Fix: remove synthetic error message injection, fix session resume after repeated failures (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2303">#2303</a>)</li> <li>Fix: quiet mode with <code>--resume</code> now passes conversation_history (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2357">#2357</a>)</li> <li>Fix: unify resume logic in batch mode (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2331">#2331</a>)</li> </ul> <h3>Honcho Memory</h3> <ul> <li>Honcho config fixes and @ context reference integration (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2343">#2343</a>)</li> <li>Self-hosted / Docker configuration documentation (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2475">#2475</a>)</li> </ul> <hr> <h2>📱 Messaging Platforms (Gateway)</h2> <h3>New Platform Adapters</h3> <ul> <li><strong>Signal Messenger</strong> — Full adapter with attachment handling, group message filtering, and Note to Self echo-back protection (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2206">#2206</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2400">#2400</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2297">#2297</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2156">#2156</a>)</li> <li><strong>DingTalk</strong> — Adapter with gateway wiring and setup docs (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1685">#1685</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1690">#1690</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1692">#1692</a>)</li> <li><strong>SMS (Twilio)</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1688">#1688</a>)</li> <li><strong>Mattermost</strong> — With @-mention-only channel filter (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1683">#1683</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2443">#2443</a>)</li> <li><strong>Matrix</strong> — With vision support and image caching (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1683">#1683</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2520">#2520</a>)</li> <li><strong>Webhook</strong> — Platform adapter for external event triggers (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2166">#2166</a>)</li> <li><strong>OpenAI-compatible API server</strong> — <code>/v1/chat/completions</code> endpoint with <code>/api/jobs</code> cron management (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1756">#1756</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2450">#2450</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2456">#2456</a>)</li> </ul> <h3>Telegram Improvements</h3> <ul> <li>MarkdownV2 support — strikethrough, spoiler, blockquotes, escape parentheses/braces/backslashes/backticks (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2199">#2199</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2200">#2200</a> by @llbn, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2386">#2386</a>)</li> <li>Auto-detect HTML tags and use <code>parse_mode=HTML</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1709">#1709</a>)</li> <li>Telegram group vision support + thread-based sessions (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2153">#2153</a>)</li> <li>Auto-reconnect polling after network interruption (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2517">#2517</a>)</li> <li>Aggregate split text messages before dispatching (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1674">#1674</a>)</li> <li>Fix: streaming config bridge, not-modified, flood control (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1782">#1782</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1783">#1783</a>)</li> <li>Fix: edited_message event crashes (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2074">#2074</a>)</li> <li>Fix: retry 409 polling conflicts before giving up (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2312">#2312</a>)</li> <li>Fix: topic delivery via <code>platform:chat_id:thread_id</code> format (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2455">#2455</a>)</li> </ul> <h3>Discord Improvements</h3> <ul> <li>Document caching and text-file injection (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2503">#2503</a>)</li> <li>Persistent typing indicator for DMs (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2468">#2468</a>)</li> <li>Discord DM vision — inline images + attachment analysis (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2186">#2186</a>)</li> <li>Persist thread participation across gateway restarts (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1661">#1661</a>)</li> <li>Fix: gateway crash on non-ASCII guild names (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2302">#2302</a>)</li> <li>Fix: thread permission errors (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2073">#2073</a>)</li> <li>Fix: slash event routing in threads (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2460">#2460</a>)</li> <li>Fix: remove bugged followup messages + <code>/ask</code> command (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1836">#1836</a>)</li> <li>Fix: graceful WebSocket reconnection (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2127">#2127</a>)</li> <li>Fix: voice channel TTS when streaming enabled (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2322">#2322</a>)</li> </ul> <h3>WhatsApp & Other Adapters</h3> <ul> <li>WhatsApp: outbound <code>send_message</code> routing (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1769">#1769</a> by @sai-samarth), LID format self-chat (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1667">#1667</a>), <code>reply_prefix</code> config fix (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1923">#1923</a>), restart on bridge child exit (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2334">#2334</a>), image/bridge improvements (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2181">#2181</a>)</li> <li>Matrix: correct <code>reply_to_message_id</code> parameter (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1895">#1895</a>), bare media types fix (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1736">#1736</a>)</li> <li>Mattermost: MIME types for media attachments (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2329">#2329</a>)</li> </ul> <h3>Gateway Core</h3> <ul> <li><strong>Auto-reconnect</strong> failed platforms with exponential backoff (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2584">#2584</a>)</li> <li><strong>Notify users when session auto-resets</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2519">#2519</a>)</li> <li><strong>Reply-to message context</strong> for out-of-session replies (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1662">#1662</a>)</li> <li><strong>Ignore unauthorized DMs</strong> config option (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1919">#1919</a>)</li> <li>Fix: <code>/reset</code> in thread-mode resets global session instead of thread (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2254">#2254</a>)</li> <li>Fix: deliver MEDIA: files after streaming responses (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2382">#2382</a>)</li> <li>Fix: cap interrupt recursion depth to prevent resource exhaustion (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1659">#1659</a>)</li> <li>Fix: detect stopped processes and release stale locks on <code>--replace</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2406">#2406</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1908">#1908</a>)</li> <li>Fix: PID-based wait with force-kill for gateway restart (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1902">#1902</a>)</li> <li>Fix: prevent <code>--replace</code> mode from killing the caller process (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2185">#2185</a>)</li> <li>Fix: <code>/model</code> shows active fallback model instead of config default (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1660">#1660</a>)</li> <li>Fix: <code>/title</code> command fails when session doesn't exist in SQLite yet (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2379">#2379</a> by @ten-jampa)</li> <li>Fix: process <code>/queue</code>'d messages after agent completion (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2469">#2469</a>)</li> <li>Fix: strip orphaned <code>tool_results</code> + let <code>/reset</code> bypass running agent (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2180">#2180</a>)</li> <li>Fix: prevent agents from starting gateway outside systemd management (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2617">#2617</a>)</li> <li>Fix: prevent systemd restart storm on gateway connection failure (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2327">#2327</a>)</li> <li>Fix: include resolved node path in systemd unit (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1767">#1767</a> by @sai-samarth)</li> <li>Fix: send error details to user in gateway outer exception handler (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1966">#1966</a>)</li> <li>Fix: improve error handling for 429 usage limits and 500 context overflow (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1839">#1839</a>)</li> <li>Fix: add all missing platform allowlist env vars to startup warning check (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2628">#2628</a>)</li> <li>Fix: media delivery fails for file paths containing spaces (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2621">#2621</a>)</li> <li>Fix: duplicate session-key collision in multi-platform gateway (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2171">#2171</a>)</li> <li>Fix: Matrix and Mattermost never report as connected (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1711">#1711</a>)</li> <li>Fix: PII redaction config never read — missing yaml import (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1701">#1701</a>)</li> <li>Fix: NameError on skill slash commands (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1697">#1697</a>)</li> <li>Fix: persist watcher metadata in checkpoint for crash recovery (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1706">#1706</a>)</li> <li>Fix: pass <code>message_thread_id</code> in send_image_file, send_document, send_video (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2339">#2339</a>)</li> <li>Fix: media-group aggregation on rapid successive photo messages (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2160">#2160</a>)</li> </ul> <hr> <h2>🔧 Tool System</h2> <h3>MCP Enhancements</h3> <ul> <li><strong>MCP server management CLI</strong> + OAuth 2.1 PKCE auth (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2465">#2465</a>)</li> <li><strong>Expose MCP servers as standalone toolsets</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1907">#1907</a>)</li> <li><strong>Interactive MCP tool configuration</strong> in <code>hermes tools</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1694">#1694</a>)</li> <li>Fix: MCP-OAuth port mismatch, path traversal, and shared handler state (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2552">#2552</a>)</li> <li>Fix: preserve MCP tool registrations across session resets (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2124">#2124</a>)</li> <li>Fix: concurrent file access crash + duplicate MCP registration (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2154">#2154</a>)</li> <li>Fix: normalise MCP schemas + expand session list columns (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2102">#2102</a>)</li> <li>Fix: <code>tool_choice</code> <code>mcp_</code> prefix handling (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1775">#1775</a>)</li> </ul> <h3>Web Tool Backends</h3> <ul> <li><strong>Tavily</strong> as web search/extract/crawl backend (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1731">#1731</a>)</li> <li><strong>Parallel</strong> as alternative web search/extract backend (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1696">#1696</a>)</li> <li><strong>Configurable web backend</strong> — Firecrawl/BeautifulSoup/Playwright selection (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2256">#2256</a>)</li> <li>Fix: whitespace-only env vars bypass web backend detection (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2341">#2341</a>)</li> </ul> <h3>New Tools</h3> <ul> <li><strong>IMAP email</strong> reading and sending (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2173">#2173</a>)</li> <li><strong>STT (speech-to-text)</strong> tool using Whisper API (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2072">#2072</a>)</li> <li><strong>Route-aware pricing estimates</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1695">#1695</a>)</li> </ul> <h3>Tool Improvements</h3> <ul> <li>TTS: <code>base_url</code> support for OpenAI TTS provider (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2064">#2064</a> by @hanai)</li> <li>Vision: configurable timeout, tilde expansion in file paths, DM vision with multi-image and base64 fallback (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2480">#2480</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2585">#2585</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2211">#2211</a>)</li> <li>Browser: race condition fix in session creation (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1721">#1721</a>), TypeError on unexpected LLM params (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1735">#1735</a>)</li> <li>File tools: strip ANSI escape codes from write_file and patch content (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2532">#2532</a>), include pagination args in repeated search key (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1824">#1824</a> by @cutepawss), improve fuzzy matching accuracy + position calculation refactor (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2096">#2096</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1681">#1681</a>)</li> <li>Code execution: resource leak and double socket close fix (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2381">#2381</a>)</li> <li>Delegate: thread safety for concurrent subagent delegation (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1672">#1672</a>), preserve parent agent's tool list after delegation (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1778">#1778</a>)</li> <li>Fix: make concurrent tool batching path-aware for file mutations (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1914">#1914</a>)</li> <li>Fix: chunk long messages in <code>send_message_tool</code> before platform dispatch (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1646">#1646</a>)</li> <li>Fix: add missing 'messaging' toolset (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1718">#1718</a>)</li> <li>Fix: prevent unavailable tool names from leaking into model schemas (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2072">#2072</a>)</li> <li>Fix: pass visited set by reference to prevent diamond dependency duplication (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2311">#2311</a>)</li> <li>Fix: Daytona sandbox lookup migrated from <code>find_one</code> to <code>get/list</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2063">#2063</a> by @rovle)</li> </ul> <hr> <h2>🧩 Skills Ecosystem</h2> <h3>Skills System Improvements</h3> <ul> <li><strong>Agent-created skills</strong> — Caution-level findings allowed, dangerous skills ask instead of block (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1840">#1840</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2446">#2446</a>)</li> <li><strong><code>--yes</code> flag</strong> to bypass confirmation in <code>/skills install</code> and uninstall (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1647">#1647</a>)</li> <li><strong>Disabled skills respected</strong> across banner, system prompt, and slash commands (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1897">#1897</a>)</li> <li>Fix: skills custom_tools import crash + sandbox file_tools integration (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2239">#2239</a>)</li> <li>Fix: agent-created skills with pip requirements crash on install (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2145">#2145</a>)</li> <li>Fix: race condition in <code>Skills.__init__</code> when <code>hub.yaml</code> missing (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2242">#2242</a>)</li> <li>Fix: validate skill metadata before install and block duplicates (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2241">#2241</a>)</li> <li>Fix: skills hub inspect/resolve — 4 bugs in inspect, redirects, discovery, tap list (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2447">#2447</a>)</li> <li>Fix: agent-created skills keep working after session reset (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2121">#2121</a>)</li> </ul> <h3>New Skills</h3> <ul> <li><strong>OCR-and-documents</strong> — PDF/DOCX/XLS/PPTX/image OCR with optional GPU (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2236">#2236</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2461">#2461</a>)</li> <li><strong>Huggingface-hub</strong> bundled skill (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1921">#1921</a>)</li> <li><strong>Sherlock OSINT</strong> username search (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1671">#1671</a>)</li> <li><strong>Meme-generation</strong> — Image generator with Pillow (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2344">#2344</a>)</li> <li><strong>Bioinformatics</strong> gateway skill — index to 400+ bio skills (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2387">#2387</a>)</li> <li><strong>Inference.sh</strong> skill (terminal-based) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1686">#1686</a>)</li> <li><strong>Base blockchain</strong> optional skill (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1643">#1643</a>)</li> <li><strong>3D-model-viewer</strong> optional skill (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2226">#2226</a>)</li> <li><strong>FastMCP</strong> optional skill (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2113">#2113</a>)</li> <li><strong>Hermes-agent-setup</strong> skill (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1905">#1905</a>)</li> </ul> <hr> <h2>🔌 Plugin System Enhancements</h2> <ul> <li><strong>TUI extension hooks</strong> — Build custom CLIs on top of Hermes (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2333">#2333</a>)</li> <li><strong><code>hermes plugins install/remove/list</code></strong> commands (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2337">#2337</a>)</li> <li><strong>Slash command registration</strong> for plugins (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2359">#2359</a>)</li> <li><strong><code>session:end</code> lifecycle event</strong> hook (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1725">#1725</a>)</li> <li>Fix: require opt-in for project plugin discovery (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2215">#2215</a>)</li> </ul> <hr> <h2>🔒 Security & Reliability</h2> <h3>Security</h3> <ul> <li><strong>SSRF protection</strong> for vision_tools and web_tools (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2679">#2679</a>)</li> <li><strong>Shell injection prevention</strong> in <code>_expand_path</code> via <code>~user</code> path suffix (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2685">#2685</a>)</li> <li><strong>Block untrusted browser-origin</strong> API server access (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2451">#2451</a>)</li> <li><strong>Block sandbox backend creds</strong> from subprocess env (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1658">#1658</a>)</li> <li><strong>Block @ references</strong> from reading secrets outside workspace (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2601">#2601</a> by @Gutslabs)</li> <li><strong>Malicious code pattern pre-exec scanner</strong> for terminal_tool (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2245">#2245</a>)</li> <li><strong>Harden terminal safety</strong> and sandbox file writes (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1653">#1653</a>)</li> <li><strong>PKCE verifier leak</strong> fix + OAuth refresh Content-Type (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1775">#1775</a>)</li> <li><strong>Eliminate SQL string formatting</strong> in <code>execute()</code> calls (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2061">#2061</a> by @dusterbloom)</li> <li><strong>Harden jobs API</strong> — input limits, field whitelist, startup check (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2456">#2456</a>)</li> </ul> <h3>Reliability</h3> <ul> <li>Thread locks on 4 SessionDB methods (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1704">#1704</a>)</li> <li>File locking for concurrent memory writes (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1726">#1726</a>)</li> <li>Handle OpenRouter errors gracefully (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2112">#2112</a>)</li> <li>Guard print() calls against OSError (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1668">#1668</a>)</li> <li>Safely handle non-string inputs in redacting formatter (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2392">#2392</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1700">#1700</a>)</li> <li>ACP: preserve session provider on model switch, persist sessions to disk (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2380">#2380</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2071">#2071</a>)</li> <li>API server: persist ResponseStore to SQLite across restarts (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2472">#2472</a>)</li> <li>Fix: <code>fetch_nous_models</code> always TypeError from positional args (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1699">#1699</a>)</li> <li>Fix: resolve merge conflict markers in cli.py breaking startup (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2347">#2347</a>)</li> <li>Fix: <code>minisweagent_path.py</code> missing from wheel (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2098">#2098</a> by @JiwaniZakir)</li> </ul> <h3>Cron System</h3> <ul> <li><strong><code>[SILENT]</code> response</strong> — cron agents can suppress delivery (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1833">#1833</a>)</li> <li><strong>Scale missed-job grace window</strong> with schedule frequency (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2449">#2449</a>)</li> <li><strong>Recover recent one-shot jobs</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1918">#1918</a>)</li> <li>Fix: normalize <code>repeat<=0</code> to None — jobs deleted after first run when LLM passes -1 (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2612">#2612</a> by @Mibayy)</li> <li>Fix: Matrix added to scheduler delivery platform_map (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2167">#2167</a> by @buntingszn)</li> <li>Fix: naive ISO timestamps without timezone — jobs fire at wrong time (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1729">#1729</a>)</li> <li>Fix: <code>get_due_jobs</code> reads <code>jobs.json</code> twice — race condition (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1716">#1716</a>)</li> <li>Fix: silent jobs return empty response for delivery skip (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2442">#2442</a>)</li> <li>Fix: stop injecting cron outputs into gateway session history (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2313">#2313</a>)</li> <li>Fix: close abandoned coroutine when <code>asyncio.run()</code> raises RuntimeError (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2317">#2317</a>)</li> </ul> <hr> <h2>🧪 Testing</h2> <ul> <li>Resolve all consistently failing tests (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2488">#2488</a>)</li> <li>Replace <code>FakePath</code> with <code>monkeypatch</code> for Python 3.12 compat (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2444">#2444</a>)</li> <li>Align Hermes setup and full-suite expectations (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1710">#1710</a>)</li> </ul> <hr> <h2>📚 Documentation</h2> <ul> <li>Comprehensive docs update for recent features (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1693">#1693</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2183">#2183</a>)</li> <li>Alibaba Cloud and DingTalk setup guides (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1687">#1687</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1692">#1692</a>)</li> <li>Detailed skills documentation (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2244">#2244</a>)</li> <li>Honcho self-hosted / Docker configuration (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2475">#2475</a>)</li> <li>Context length detection FAQ and quickstart references (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2179">#2179</a>)</li> <li>Fix docs inconsistencies across reference and user guides (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1995">#1995</a>)</li> <li>Fix MCP install commands — use uv, not bare pip (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1909">#1909</a>)</li> <li>Replace ASCII diagrams with Mermaid/lists (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2402">#2402</a>)</li> <li>Gemini OAuth provider implementation plan (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2467">#2467</a>)</li> <li>Discord Server Members Intent marked as required (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2330">#2330</a>)</li> <li>Fix MDX build error in api-server.md (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1787">#1787</a>)</li> <li>Align venv path to match installer (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2114">#2114</a>)</li> <li>New skills added to hub index (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2281">#2281</a>)</li> </ul> <hr> <h2>👥 Contributors</h2> <h3>Core</h3> <ul> <li><strong>@teknium1</strong> (Teknium) — 280 PRs</li> </ul> <h3>Community Contributors</h3> <ul> <li><strong>@mchzimm</strong> (to_the_max) — GitHub Copilot provider integration (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1879">#1879</a>)</li> <li><strong>@jquesnelle</strong> (Jeffrey Quesnelle) — Per-thread persistent event loops fix (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2214">#2214</a>)</li> <li><strong>@llbn</strong> (lbn) — Telegram MarkdownV2 strikethrough, spoiler, blockquotes, and escape fixes (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2199">#2199</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2200">#2200</a>)</li> <li><strong>@dusterbloom</strong> — SQL injection prevention + local server context window querying (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2061">#2061</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2091">#2091</a>)</li> <li><strong>@0xbyt4</strong> — Anthropic tool_calls None guard + OpenCode-Go provider config fix (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2209">#2209</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2393">#2393</a>)</li> <li><strong>@sai-samarth</strong> (Saisamarth) — WhatsApp send_message routing + systemd node path (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1769">#1769</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1767">#1767</a>)</li> <li><strong>@Gutslabs</strong> (Guts) — Block @ references from reading secrets (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2601">#2601</a>)</li> <li><strong>@Mibayy</strong> (Mibay) — Cron job repeat normalization (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2612">#2612</a>)</li> <li><strong>@ten-jampa</strong> (Tenzin Jampa) — Gateway /title command fix (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2379">#2379</a>)</li> <li><strong>@cutepawss</strong> (lila) — File tools search pagination fix (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1824">#1824</a>)</li> <li><strong>@hanai</strong> (Hanai) — OpenAI TTS base_url support (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2064">#2064</a>)</li> <li><strong>@rovle</strong> (Lovre Pešut) — Daytona sandbox API migration (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2063">#2063</a>)</li> <li><strong>@buntingszn</strong> (bunting szn) — Matrix cron delivery support (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2167">#2167</a>)</li> <li><strong>@InB4DevOps</strong> — Token counter reset on new session (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2101">#2101</a>)</li> <li><strong>@JiwaniZakir</strong> (Zakir Jiwani) — Missing file in wheel fix (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2098">#2098</a>)</li> <li><strong>@ygd58</strong> (buray) — Delegate tool parent tool names fix (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/2083">#2083</a>)</li> </ul> <hr> <p><strong>Full Changelog</strong>: <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/compare/v2026.3.17...v2026.3.23">v2026.3.17...v2026.3.23</a></p> </div><div class="link-row" data-astro-cid-l7qxtvnw><span class="lr-label" data-astro-cid-l7qxtvnw>Links</span><a href="https://github.com/NousResearch/hermes-agent/releases/tag/v2026.3.23" data-astro-cid-l7qxtvnw>GitHub release notes ↗</a><a href="https://github.com/NousResearch/hermes-agent/compare/v2026.3.17...v2026.3.23" data-astro-cid-l7qxtvnw>Full diff ↗</a><a href="/tools/" data-astro-cid-l7qxtvnw>Tools Reference →</a><a href="/gateway/" data-astro-cid-l7qxtvnw>Gateway Guide →</a><a href="/providers/" data-astro-cid-l7qxtvnw>Providers Reference →</a><a href="/blog/cron-job-patterns-2026/" data-astro-cid-l7qxtvnw>Cron patterns guide →</a></div></div></details><details class="rel" data-astro-cid-l7qxtvnw><summary data-astro-cid-l7qxtvnw><span class="r-arrow" data-astro-cid-l7qxtvnw>▶</span><span class="r-ver" data-astro-cid-l7qxtvnw>v0.3.0</span><span class="r-date" data-astro-cid-l7qxtvnw>2026-03-17</span></summary><div class="rel-body" data-astro-cid-l7qxtvnw><p class="r-summary" data-astro-cid-l7qxtvnw>The streaming, plugins, and provider release — unified real-time token delivery, first-class plugin architecture, rebuilt provider system with Vercel AI Gateway, native Anthropic provider, smart approvals, live Chrome CDP browser connect, ACP IDE integration, Honcho memory, voice mode, persistent shell, and 50+ bug fixes across every platform.</p><div class="r-notes" data-astro-cid-l7qxtvnw><blockquote> <p>The streaming, plugins, and provider release — unified real-time token delivery, first-class plugin architecture, rebuilt provider system with Vercel AI Gateway, native Anthropic provider, smart approvals, live Chrome CDP browser connect, ACP IDE integration, Honcho memory, voice mode, persistent shell, and 50+ bug fixes across every platform.</p> </blockquote> <hr> <h2>✨ Highlights</h2> <ul> <li><p><strong>Unified Streaming Infrastructure</strong> — Real-time token-by-token delivery in CLI and all gateway platforms. Responses stream as they're generated instead of arriving as a block. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1538">#1538</a>)</p> </li> <li><p><strong>First-Class Plugin Architecture</strong> — Drop Python files into <code>~/.hermes/plugins/</code> to extend Hermes with custom tools, commands, and hooks. No forking required. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1544">#1544</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1555">#1555</a>)</p> </li> <li><p><strong>Native Anthropic Provider</strong> — Direct Anthropic API calls with Claude Code credential auto-discovery, OAuth PKCE flows, and native prompt caching. No OpenRouter middleman needed. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1097">#1097</a>)</p> </li> <li><p><strong>Smart Approvals + /stop Command</strong> — Codex-inspired approval system that learns which commands are safe and remembers your preferences. <code>/stop</code> kills the current agent run immediately. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1543">#1543</a>)</p> </li> <li><p><strong>Honcho Memory Integration</strong> — Async memory writes, configurable recall modes, session title integration, and multi-user isolation in gateway mode. By @erosika. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/736">#736</a>)</p> </li> <li><p><strong>Voice Mode</strong> — Push-to-talk in CLI, voice notes in Telegram/Discord, Discord voice channel support, and local Whisper transcription via faster-whisper. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1299">#1299</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1185">#1185</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1429">#1429</a>)</p> </li> <li><p><strong>Concurrent Tool Execution</strong> — Multiple independent tool calls now run in parallel via ThreadPoolExecutor, significantly reducing latency for multi-tool turns. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1152">#1152</a>)</p> </li> <li><p><strong>PII Redaction</strong> — When <code>privacy.redact_pii</code> is enabled, personally identifiable information is automatically scrubbed before sending context to LLM providers. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1542">#1542</a>)</p> </li> <li><p><strong><code>/browser connect</code> via CDP</strong> — Attach browser tools to a live Chrome instance through Chrome DevTools Protocol. Debug, inspect, and interact with pages you already have open. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1549">#1549</a>)</p> </li> <li><p><strong>Vercel AI Gateway Provider</strong> — Route Hermes through Vercel's AI Gateway for access to their model catalog and infrastructure. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1628">#1628</a>)</p> </li> <li><p><strong>Centralized Provider Router</strong> — Rebuilt provider system with <code>call_llm</code> API, unified <code>/model</code> command, auto-detect provider on model switch, and direct endpoint overrides for auxiliary/delegation clients. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1003">#1003</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1506">#1506</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1375">#1375</a>)</p> </li> <li><p><strong>ACP Server (IDE Integration)</strong> — VS Code, Zed, and JetBrains can now connect to Hermes as an agent backend, with full slash command support. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1254">#1254</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1532">#1532</a>)</p> </li> <li><p><strong>Persistent Shell Mode</strong> — Local and SSH terminal backends can maintain shell state across tool calls — cd, env vars, and aliases persist. By @alt-glitch. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1067">#1067</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1483">#1483</a>)</p> </li> <li><p><strong>Agentic On-Policy Distillation (OPD)</strong> — New RL training environment for distilling agent policies, expanding the Atropos training ecosystem. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1149">#1149</a>)</p> </li> </ul> <hr> <h2>🏗️ Core Agent & Architecture</h2> <h3>Provider & Model Support</h3> <ul> <li><strong>Centralized provider router</strong> with <code>call_llm</code> API and unified <code>/model</code> command — switch models and providers seamlessly (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1003">#1003</a>)</li> <li><strong>Vercel AI Gateway</strong> provider support (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1628">#1628</a>)</li> <li><strong>Auto-detect provider</strong> when switching models via <code>/model</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1506">#1506</a>)</li> <li><strong>Direct endpoint overrides</strong> for auxiliary and delegation clients — point vision/subagent calls at specific endpoints (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1375">#1375</a>)</li> <li><strong>Native Anthropic auxiliary vision</strong> — use Claude's native vision API instead of routing through OpenAI-compatible endpoints (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1377">#1377</a>)</li> <li>Anthropic OAuth flow improvements — auto-run <code>claude setup-token</code>, reauthentication, PKCE state persistence, identity fingerprinting (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1132">#1132</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1360">#1360</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1396">#1396</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1597">#1597</a>)</li> <li>Fix adaptive thinking without <code>budget_tokens</code> for Claude 4.6 models — by @ASRagab (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1128">#1128</a>)</li> <li>Fix Anthropic cache markers through adapter — by @brandtcormorant (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1216">#1216</a>)</li> <li>Retry Anthropic 429/529 errors and surface details to users — by @0xbyt4 (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1585">#1585</a>)</li> <li>Fix Anthropic adapter max_tokens, fallback crash, proxy base_url — by @0xbyt4 (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1121">#1121</a>)</li> <li>Fix DeepSeek V3 parser dropping multiple parallel tool calls — by @mr-emmett-one (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1365">#1365</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1300">#1300</a>)</li> <li>Accept unlisted models with warning instead of rejecting (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1047">#1047</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1102">#1102</a>)</li> <li>Skip reasoning params for unsupported OpenRouter models (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1485">#1485</a>)</li> <li>MiniMax Anthropic API compatibility fix (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1623">#1623</a>)</li> <li>Custom endpoint <code>/models</code> verification and <code>/v1</code> base URL suggestion (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1480">#1480</a>)</li> <li>Resolve delegation providers from <code>custom_providers</code> config (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1328">#1328</a>)</li> <li>Kimi model additions and User-Agent fix (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1039">#1039</a>)</li> <li>Strip <code>call_id</code>/<code>response_item_id</code> for Mistral compatibility (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1058">#1058</a>)</li> </ul> <h3>Agent Loop & Conversation</h3> <ul> <li><strong>Anthropic Context Editing API</strong> support (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1147">#1147</a>)</li> <li>Improved context compaction handoff summaries — compressor now preserves more actionable state (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1273">#1273</a>)</li> <li>Sync session_id after mid-run context compression (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1160">#1160</a>)</li> <li>Session hygiene threshold tuned to 50% for more proactive compression (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1096">#1096</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1161">#1161</a>)</li> <li>Include session ID in system prompt via <code>--pass-session-id</code> flag (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1040">#1040</a>)</li> <li>Prevent closed OpenAI client reuse across retries (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1391">#1391</a>)</li> <li>Sanitize chat payloads and provider precedence (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1253">#1253</a>)</li> <li>Handle dict tool call arguments from Codex and local backends (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1393">#1393</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1440">#1440</a>)</li> </ul> <h3>Memory & Sessions</h3> <ul> <li><strong>Improve memory prioritization</strong> — user preferences and corrections weighted above procedural knowledge (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1548">#1548</a>)</li> <li>Tighter memory and session recall guidance in system prompts (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1329">#1329</a>)</li> <li>Persist CLI token counts to session DB for <code>/insights</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1498">#1498</a>)</li> <li>Keep Honcho recall out of the cached system prefix (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1201">#1201</a>)</li> <li>Correct <code>seed_ai_identity</code> to use <code>session.add_messages()</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1475">#1475</a>)</li> <li>Isolate Honcho session routing for multi-user gateway (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1500">#1500</a>)</li> </ul> <hr> <h2>📱 Messaging Platforms (Gateway)</h2> <h3>Gateway Core</h3> <ul> <li><strong>System gateway service mode</strong> — run as a system-level systemd service, not just user-level (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1371">#1371</a>)</li> <li><strong>Gateway install scope prompts</strong> — choose user vs system scope during setup (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1374">#1374</a>)</li> <li><strong>Reasoning hot reload</strong> — change reasoning settings without restarting the gateway (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1275">#1275</a>)</li> <li>Default group sessions to per-user isolation — no more shared state across users in group chats (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1495">#1495</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1417">#1417</a>)</li> <li>Harden gateway restart recovery (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1310">#1310</a>)</li> <li>Cancel active runs during shutdown (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1427">#1427</a>)</li> <li>SSL certificate auto-detection for NixOS and non-standard systems (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1494">#1494</a>)</li> <li>Auto-detect D-Bus session bus for <code>systemctl --user</code> on headless servers (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1601">#1601</a>)</li> <li>Auto-enable systemd linger during gateway install on headless servers (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1334">#1334</a>)</li> <li>Fall back to module entrypoint when <code>hermes</code> is not on PATH (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1355">#1355</a>)</li> <li>Fix dual gateways on macOS launchd after <code>hermes update</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1567">#1567</a>)</li> <li>Remove recursive ExecStop from systemd units (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1530">#1530</a>)</li> <li>Prevent logging handler accumulation in gateway mode (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1251">#1251</a>)</li> <li>Restart on retryable startup failures — by @jplew (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1517">#1517</a>)</li> <li>Backfill model on gateway sessions after agent runs (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1306">#1306</a>)</li> <li>PID-based gateway kill and deferred config write (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1499">#1499</a>)</li> </ul> <h3>Telegram</h3> <ul> <li>Buffer media groups to prevent self-interruption from photo bursts (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1341">#1341</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1422">#1422</a>)</li> <li>Retry on transient TLS failures during connect and send (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1535">#1535</a>)</li> <li>Harden polling conflict handling (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1339">#1339</a>)</li> <li>Escape chunk indicators and inline code in MarkdownV2 (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1478">#1478</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1626">#1626</a>)</li> <li>Check updater/app state before disconnect (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1389">#1389</a>)</li> </ul> <h3>Discord</h3> <ul> <li><code>/thread</code> command with <code>auto_thread</code> config and media metadata fixes (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1178">#1178</a>)</li> <li>Auto-thread on @mention, skip mention text in bot threads (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1438">#1438</a>)</li> <li>Retry without reply reference for system messages (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1385">#1385</a>)</li> <li>Preserve native document and video attachment support (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1392">#1392</a>)</li> <li>Defer discord adapter annotations to avoid optional import crashes (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1314">#1314</a>)</li> </ul> <h3>Slack</h3> <ul> <li>Thread handling overhaul — progress messages, responses, and session isolation all respect threads (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1103">#1103</a>)</li> <li>Formatting, reactions, user resolution, and command improvements (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1106">#1106</a>)</li> <li>Fix MAX_MESSAGE_LENGTH 3900 → 39000 (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1117">#1117</a>)</li> <li>File upload fallback preserves thread context — by @0xbyt4 (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1122">#1122</a>)</li> <li>Improve setup guidance (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1387">#1387</a>)</li> </ul> <h3>Email</h3> <ul> <li>Fix IMAP UID tracking and SMTP TLS verification (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1305">#1305</a>)</li> <li>Add <code>skip_attachments</code> option via config.yaml (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1536">#1536</a>)</li> </ul> <h3>Home Assistant</h3> <ul> <li>Event filtering closed by default (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1169">#1169</a>)</li> </ul> <hr> <h2>🖥️ CLI & User Experience</h2> <h3>Interactive CLI</h3> <ul> <li><strong>Persistent CLI status bar</strong> — always-visible model, provider, and token counts (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1522">#1522</a>)</li> <li><strong>File path autocomplete</strong> in the input prompt (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1545">#1545</a>)</li> <li><strong><code>/plan</code> command</strong> — generate implementation plans from specs (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1372">#1372</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1381">#1381</a>)</li> <li><strong>Major <code>/rollback</code> improvements</strong> — richer checkpoint history, clearer UX (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1505">#1505</a>)</li> <li><strong>Preload CLI skills on launch</strong> — skills are ready before the first prompt (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1359">#1359</a>)</li> <li><strong>Centralized slash command registry</strong> — all commands defined once, consumed everywhere (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1603">#1603</a>)</li> <li><code>/bg</code> alias for <code>/background</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1590">#1590</a>)</li> <li>Prefix matching for slash commands — <code>/mod</code> resolves to <code>/model</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1320">#1320</a>)</li> <li><code>/new</code>, <code>/reset</code>, <code>/clear</code> now start genuinely fresh sessions (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1237">#1237</a>)</li> <li>Accept session ID prefixes for session actions (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1425">#1425</a>)</li> <li>TUI prompt and accent output now respect active skin (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1282">#1282</a>)</li> <li>Centralize tool emoji metadata in registry + skin integration (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1484">#1484</a>)</li> <li>"View full command" option added to dangerous command approval — by @teknium1 based on design by community (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/887">#887</a>)</li> <li>Non-blocking startup update check and banner deduplication (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1386">#1386</a>)</li> <li><code>/reasoning</code> command output ordering and inline think extraction fixes (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1031">#1031</a>)</li> <li>Verbose mode shows full untruncated output (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1472">#1472</a>)</li> <li>Fix <code>/status</code> to report live state and tokens (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1476">#1476</a>)</li> <li>Seed a default global SOUL.md (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1311">#1311</a>)</li> </ul> <h3>Setup & Configuration</h3> <ul> <li><strong>OpenClaw migration</strong> during first-time setup — by @kshitijk4poor (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/981">#981</a>)</li> <li><code>hermes claw migrate</code> command + migration docs (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1059">#1059</a>)</li> <li>Smart vision setup that respects the user's chosen provider (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1323">#1323</a>)</li> <li>Handle headless setup flows end-to-end (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1274">#1274</a>)</li> <li>Prefer curses over <code>simple_term_menu</code> in setup.py (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1487">#1487</a>)</li> <li>Show effective model and provider in <code>/status</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1284">#1284</a>)</li> <li>Config set examples use placeholder syntax (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1322">#1322</a>)</li> <li>Reload .env over stale shell overrides (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1434">#1434</a>)</li> <li>Fix is_coding_plan NameError crash — by @0xbyt4 (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1123">#1123</a>)</li> <li>Add missing packages to setuptools config — by @alt-glitch (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/912">#912</a>)</li> <li>Installer: clarify why sudo is needed at every prompt (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1602">#1602</a>)</li> </ul> <hr> <h2>🔧 Tool System</h2> <h3>Terminal & Execution</h3> <ul> <li><strong>Persistent shell mode</strong> for local and SSH backends — maintain shell state across tool calls — by @alt-glitch (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1067">#1067</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1483">#1483</a>)</li> <li><strong>Tirith pre-exec command scanning</strong> — security layer that analyzes commands before execution (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1256">#1256</a>)</li> <li>Strip Hermes provider env vars from all subprocess environments (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1157">#1157</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1172">#1172</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1399">#1399</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1419">#1419</a>) — initial fix by @eren-karakus0</li> <li>SSH preflight check (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1486">#1486</a>)</li> <li>Docker backend: make cwd workspace mount explicit opt-in (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1534">#1534</a>)</li> <li>Add project root to PYTHONPATH in execute_code sandbox (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1383">#1383</a>)</li> <li>Eliminate execute_code progress spam on gateway platforms (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1098">#1098</a>)</li> <li>Clearer docker backend preflight errors (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1276">#1276</a>)</li> </ul> <h3>Browser</h3> <ul> <li><strong><code>/browser connect</code></strong> — attach browser tools to a live Chrome instance via CDP (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1549">#1549</a>)</li> <li>Improve browser cleanup, local browser PATH setup, and screenshot recovery (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1333">#1333</a>)</li> </ul> <h3>MCP</h3> <ul> <li><strong>Selective tool loading</strong> with utility policies — filter which MCP tools are available (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1302">#1302</a>)</li> <li>Auto-reload MCP tools when <code>mcp_servers</code> config changes without restart (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1474">#1474</a>)</li> <li>Resolve npx stdio connection failures (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1291">#1291</a>)</li> <li>Preserve MCP toolsets when saving platform tool config (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1421">#1421</a>)</li> </ul> <h3>Vision</h3> <ul> <li>Unify vision backend gating (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1367">#1367</a>)</li> <li>Surface actual error reason instead of generic message (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1338">#1338</a>)</li> <li>Make Claude image handling work end-to-end (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1408">#1408</a>)</li> </ul> <h3>Cron</h3> <ul> <li><strong>Compress cron management into one tool</strong> — single <code>cronjob</code> tool replaces multiple commands (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1343">#1343</a>)</li> <li>Suppress duplicate cron sends to auto-delivery targets (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1357">#1357</a>)</li> <li>Persist cron sessions to SQLite (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1255">#1255</a>)</li> <li>Per-job runtime overrides (provider, model, base_url) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1398">#1398</a>)</li> <li>Atomic write in <code>save_job_output</code> to prevent data loss on crash (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1173">#1173</a>)</li> <li>Preserve thread context for <code>deliver=origin</code> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1437">#1437</a>)</li> </ul> <h3>Patch Tool</h3> <ul> <li>Avoid corrupting pipe chars in V4A patch apply (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1286">#1286</a>)</li> <li>Permissive <code>block_anchor</code> thresholds and unicode normalization (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1539">#1539</a>)</li> </ul> <h3>Delegation</h3> <ul> <li>Add observability metadata to subagent results (model, tokens, duration, tool trace) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1175">#1175</a>)</li> </ul> <hr> <h2>🧩 Skills Ecosystem</h2> <h3>Skills System</h3> <ul> <li><strong>Integrate skills.sh</strong> as a hub source alongside ClawHub (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1303">#1303</a>)</li> <li>Secure skill env setup on load (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1153">#1153</a>)</li> <li>Honor policy table for dangerous verdicts (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1330">#1330</a>)</li> <li>Harden ClawHub skill search exact matches (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1400">#1400</a>)</li> <li>Fix ClawHub skill install — use <code>/download</code> ZIP endpoint (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1060">#1060</a>)</li> <li>Avoid mislabeling local skills as builtin — by @arceus77-7 (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/862">#862</a>)</li> </ul> <h3>New Skills</h3> <ul> <li><strong>Linear</strong> project management (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1230">#1230</a>)</li> <li><strong>X/Twitter</strong> via x-cli (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1285">#1285</a>)</li> <li><strong>Telephony</strong> — Twilio, SMS, and AI calls (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1289">#1289</a>)</li> <li><strong>1Password</strong> — by @arceus77-7 (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/883">#883</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1179">#1179</a>)</li> <li><strong>NeuroSkill BCI</strong> integration (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1135">#1135</a>)</li> <li><strong>Blender MCP</strong> for 3D modeling (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1531">#1531</a>)</li> <li><strong>OSS Security Forensics</strong> (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1482">#1482</a>)</li> <li><strong>Parallel CLI</strong> research skill (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1301">#1301</a>)</li> <li><strong>OpenCode</strong> CLI skill (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1174">#1174</a>)</li> <li><strong>ASCII Video</strong> skill refactored — by @SHL0MS (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1213">#1213</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1598">#1598</a>)</li> </ul> <hr> <h2>🎙️ Voice Mode</h2> <ul> <li>Voice mode foundation — push-to-talk CLI, Telegram/Discord voice notes (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1299">#1299</a>)</li> <li>Free local Whisper transcription via faster-whisper (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1185">#1185</a>)</li> <li>Discord voice channel reliability fixes (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1429">#1429</a>)</li> <li>Restore local STT fallback for gateway voice notes (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1490">#1490</a>)</li> <li>Honor <code>stt.enabled: false</code> across gateway transcription (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1394">#1394</a>)</li> <li>Fix bogus incapability message on Telegram voice notes (Issue <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/1033">#1033</a>)</li> </ul> <hr> <h2>🔌 ACP (IDE Integration)</h2> <ul> <li>Restore ACP server implementation (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1254">#1254</a>)</li> <li>Support slash commands in ACP adapter (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1532">#1532</a>)</li> </ul> <hr> <h2>🧪 RL Training</h2> <ul> <li><strong>Agentic On-Policy Distillation (OPD)</strong> environment — new RL training environment for agent policy distillation (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1149">#1149</a>)</li> <li>Make tinker-atropos RL training fully optional (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1062">#1062</a>)</li> </ul> <hr> <h2>🔒 Security & Reliability</h2> <h3>Security Hardening</h3> <ul> <li><strong>Tirith pre-exec command scanning</strong> — static analysis of terminal commands before execution (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1256">#1256</a>)</li> <li><strong>PII redaction</strong> when <code>privacy.redact_pii</code> is enabled (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1542">#1542</a>)</li> <li>Strip Hermes provider/gateway/tool env vars from all subprocess environments (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1157">#1157</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1172">#1172</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1399">#1399</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1419">#1419</a>)</li> <li>Docker cwd workspace mount now explicit opt-in — never auto-mount host directories (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1534">#1534</a>)</li> <li>Escape parens and braces in fork bomb regex pattern (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1397">#1397</a>)</li> <li>Harden <code>.worktreeinclude</code> path containment (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1388">#1388</a>)</li> <li>Use description as <code>pattern_key</code> to prevent approval collisions (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1395">#1395</a>)</li> </ul> <h3>Reliability</h3> <ul> <li>Guard init-time stdio writes (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1271">#1271</a>)</li> <li>Session log writes reuse shared atomic JSON helper (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1280">#1280</a>)</li> <li>Atomic temp cleanup protected on interrupts (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1401">#1401</a>)</li> </ul> <hr> <h2>🐛 Notable Bug Fixes</h2> <ul> <li><strong><code>/status</code> always showing 0 tokens</strong> — now reports live state (Issue <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/1465">#1465</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1476">#1476</a>)</li> <li><strong>Custom model endpoints not working</strong> — restored config-saved endpoint resolution (Issue <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/1460">#1460</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1373">#1373</a>)</li> <li><strong>MCP tools not visible until restart</strong> — auto-reload on config change (Issue <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/1036">#1036</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1474">#1474</a>)</li> <li><strong><code>hermes tools</code> removing MCP tools</strong> — preserve MCP toolsets when saving (Issue <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/1247">#1247</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1421">#1421</a>)</li> <li><strong>Terminal subprocesses inheriting <code>OPENAI_BASE_URL</code></strong> breaking external tools (Issue <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/1002">#1002</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1399">#1399</a>)</li> <li><strong>Background process lost on gateway restart</strong> — improved recovery (Issue <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/1144">#1144</a>)</li> <li><strong>Cron jobs not persisting state</strong> — now stored in SQLite (Issue <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/1416">#1416</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1255">#1255</a>)</li> <li><strong>Cronjob <code>deliver: origin</code> not preserving thread context</strong> (Issue <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/1219">#1219</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1437">#1437</a>)</li> <li><strong>Gateway systemd service failing to auto-restart</strong> when browser processes orphaned (Issue <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/1617">#1617</a>)</li> <li><strong><code>/background</code> completion report cut off in Telegram</strong> (Issue <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/1443">#1443</a>)</li> <li><strong>Model switching not taking effect</strong> (Issue <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/1244">#1244</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1183">#1183</a>)</li> <li><strong><code>hermes doctor</code> reporting cronjob as unavailable</strong> (Issue <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/878">#878</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1180">#1180</a>)</li> <li><strong>WhatsApp bridge messages not received</strong> from mobile (Issue <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/1142">#1142</a>)</li> <li><strong>Setup wizard hanging on headless SSH</strong> (Issue <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/905">#905</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1274">#1274</a>)</li> <li><strong>Log handler accumulation</strong> degrading gateway performance (Issue <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/990">#990</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1251">#1251</a>)</li> <li><strong>Gateway NULL model in DB</strong> (Issue <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/987">#987</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1306">#1306</a>)</li> <li><strong>Strict endpoints rejecting replayed tool_calls</strong> (Issue <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/893">#893</a>)</li> <li><strong>Remaining hardcoded <code>~/.hermes</code> paths</strong> — all now respect <code>HERMES_HOME</code> (Issue <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/892">#892</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1233">#1233</a>)</li> <li><strong>Delegate tool not working with custom inference providers</strong> (Issue <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/1011">#1011</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1328">#1328</a>)</li> <li><strong>Skills Guard blocking official skills</strong> (Issue <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/1006">#1006</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1330">#1330</a>)</li> <li><strong>Setup writing provider before model selection</strong> (Issue <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/1182">#1182</a>)</li> <li><strong><code>GatewayConfig.get()</code> AttributeError</strong> crashing all message handling (Issue <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/1158">#1158</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1287">#1287</a>)</li> <li><strong><code>/update</code> hard-failing with "command not found"</strong> (Issue <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/1049">#1049</a>)</li> <li><strong>Image analysis failing silently</strong> (Issue <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/1034">#1034</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1338">#1338</a>)</li> <li><strong>API <code>BadRequestError</code> from <code>'dict'</code> object has no attribute <code>'strip'</code></strong> (Issue <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/1071">#1071</a>)</li> <li><strong>Slash commands requiring exact full name</strong> — now uses prefix matching (Issue <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/928">#928</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1320">#1320</a>)</li> <li><strong>Gateway stops responding when terminal is closed on headless</strong> (Issue <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/1005">#1005</a>)</li> </ul> <hr> <h2>🧪 Testing</h2> <ul> <li>Cover empty cached Anthropic tool-call turns (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1222">#1222</a>)</li> <li>Fix stale CI assumptions in parser and quick-command coverage (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1236">#1236</a>)</li> <li>Fix gateway async tests without implicit event loop (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1278">#1278</a>)</li> <li>Make gateway async tests xdist-safe (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1281">#1281</a>)</li> <li>Cross-timezone naive timestamp regression for cron (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1319">#1319</a>)</li> <li>Isolate codex provider tests from local env (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1335">#1335</a>)</li> <li>Lock retry replacement semantics (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1379">#1379</a>)</li> <li>Improve error logging in session search tool — by @aydnOktay (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1533">#1533</a>)</li> </ul> <hr> <h2>📚 Documentation</h2> <ul> <li>Comprehensive SOUL.md guide (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1315">#1315</a>)</li> <li>Voice mode documentation (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1316">#1316</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1362">#1362</a>)</li> <li>Provider contribution guide (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1361">#1361</a>)</li> <li>ACP and internal systems implementation guides (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1259">#1259</a>)</li> <li>Expand Docusaurus coverage across CLI, tools, skills, and skins (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1232">#1232</a>)</li> <li>Terminal backend and Windows troubleshooting (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1297">#1297</a>)</li> <li>Skills hub reference section (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1317">#1317</a>)</li> <li>Checkpoint, /rollback, and git worktrees guide (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1493">#1493</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1524">#1524</a>)</li> <li>CLI status bar and /usage reference (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1523">#1523</a>)</li> <li>Fallback providers + /background command docs (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1430">#1430</a>)</li> <li>Gateway service scopes docs (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1378">#1378</a>)</li> <li>Slack thread reply behavior docs (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1407">#1407</a>)</li> <li>Redesigned landing page with Nous blue palette — by @austinpickett (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/974">#974</a>)</li> <li>Fix several documentation typos — by @JackTheGit (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/953">#953</a>)</li> <li>Stabilize website diagrams (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1405">#1405</a>)</li> <li>CLI vs messaging quick reference in README (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1491">#1491</a>)</li> <li>Add search to Docusaurus (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1053">#1053</a>)</li> <li>Home Assistant integration docs (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1170">#1170</a>)</li> </ul> <hr> <h2>👥 Contributors</h2> <h3>Core</h3> <ul> <li><strong>@teknium1</strong> — 220+ PRs spanning every area of the codebase</li> </ul> <h3>Top Community Contributors</h3> <ul> <li><strong>@0xbyt4</strong> (4 PRs) — Anthropic adapter fixes (max_tokens, fallback crash, 429/529 retry), Slack file upload thread context, setup NameError fix</li> <li><strong>@erosika</strong> (1 PR) — Honcho memory integration: async writes, memory modes, session title integration</li> <li><strong>@SHL0MS</strong> (2 PRs) — ASCII video skill design patterns and refactoring</li> <li><strong>@alt-glitch</strong> (2 PRs) — Persistent shell mode for local/SSH backends, setuptools packaging fix</li> <li><strong>@arceus77-7</strong> (2 PRs) — 1Password skill, fix skills list mislabeling</li> <li><strong>@kshitijk4poor</strong> (1 PR) — OpenClaw migration during setup wizard</li> <li><strong>@ASRagab</strong> (1 PR) — Fix adaptive thinking for Claude 4.6 models</li> <li><strong>@eren-karakus0</strong> (1 PR) — Strip Hermes provider env vars from subprocess environment</li> <li><strong>@mr-emmett-one</strong> (1 PR) — Fix DeepSeek V3 parser multi-tool call support</li> <li><strong>@jplew</strong> (1 PR) — Gateway restart on retryable startup failures</li> <li><strong>@brandtcormorant</strong> (1 PR) — Fix Anthropic cache control for empty text blocks</li> <li><strong>@aydnOktay</strong> (1 PR) — Improve error logging in session search tool</li> <li><strong>@austinpickett</strong> (1 PR) — Landing page redesign with Nous blue palette</li> <li><strong>@JackTheGit</strong> (1 PR) — Documentation typo fixes</li> </ul> <h3>All Contributors</h3> <p>@0xbyt4, @alt-glitch, @arceus77-7, @ASRagab, @austinpickett, @aydnOktay, @brandtcormorant, @eren-karakus0, @erosika, @JackTheGit, @jplew, @kshitijk4poor, @mr-emmett-one, @SHL0MS, @teknium1</p> <hr> <p><strong>Full Changelog</strong>: <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/compare/v2026.3.12...v2026.3.17">v2026.3.12...v2026.3.17</a></p> </div><div class="link-row" data-astro-cid-l7qxtvnw><span class="lr-label" data-astro-cid-l7qxtvnw>Links</span><a href="https://github.com/NousResearch/hermes-agent/releases/tag/v2026.3.17" data-astro-cid-l7qxtvnw>GitHub release notes ↗</a><a href="https://github.com/NousResearch/hermes-agent/compare/v2026.3.12...v2026.3.17" data-astro-cid-l7qxtvnw>Full diff ↗</a><a href="/gateway/" data-astro-cid-l7qxtvnw>Gateway Guide →</a><a href="/providers/" data-astro-cid-l7qxtvnw>Providers Reference →</a></div></div></details><details class="rel" data-astro-cid-l7qxtvnw><summary data-astro-cid-l7qxtvnw><span class="r-arrow" data-astro-cid-l7qxtvnw>▶</span><span class="r-ver" data-astro-cid-l7qxtvnw>v0.2.0</span><span class="r-date" data-astro-cid-l7qxtvnw>2026-03-12</span></summary><div class="rel-body" data-astro-cid-l7qxtvnw><p class="r-summary" data-astro-cid-l7qxtvnw>First tagged release since v0.1.0 (the initial pre-public foundation). In just over two weeks, Hermes Agent went from a small internal project to a full-featured AI agent platform — thanks to an explosion of community contributions. This release covers <strong>216 merged pull requests</strong> from <strong>63 contributors</strong>, resolving <strong>119 issues</strong>.</p><div class="r-notes" data-astro-cid-l7qxtvnw><blockquote> <p>First tagged release since v0.1.0 (the initial pre-public foundation). In just over two weeks, Hermes Agent went from a small internal project to a full-featured AI agent platform — thanks to an explosion of community contributions. This release covers <strong>216 merged pull requests</strong> from <strong>63 contributors</strong>, resolving <strong>119 issues</strong>.</p> </blockquote> <hr> <h2>✨ Highlights</h2> <ul> <li><p><strong>Multi-Platform Messaging Gateway</strong> — Telegram, Discord, Slack, WhatsApp, Signal, Email (IMAP/SMTP), and Home Assistant platforms with unified session management, media attachments, and per-platform tool configuration.</p> </li> <li><p><strong>MCP (Model Context Protocol) Client</strong> — Native MCP support with stdio and HTTP transports, reconnection, resource/prompt discovery, and sampling (server-initiated LLM requests). (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/291">#291</a> — @0xbyt4, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/301">#301</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/753">#753</a>)</p> </li> <li><p><strong>Skills Ecosystem</strong> — 70+ bundled and optional skills across 15+ categories with a Skills Hub for community discovery, per-platform enable/disable, conditional activation based on tool availability, and prerequisite validation. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/743">#743</a> — @teyrebaz33, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/785">#785</a> — @teyrebaz33)</p> </li> <li><p><strong>Centralized Provider Router</strong> — Unified <code>call_llm()</code>/<code>async_call_llm()</code> API replaces scattered provider logic across vision, summarization, compression, and trajectory saving. All auxiliary consumers route through a single code path with automatic credential resolution. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1003">#1003</a>)</p> </li> <li><p><strong>ACP Server</strong> — VS Code, Zed, and JetBrains editor integration via the Agent Communication Protocol standard. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/949">#949</a>)</p> </li> <li><p><strong>CLI Skin/Theme Engine</strong> — Data-driven visual customization: banners, spinners, colors, branding. 7 built-in skins + custom YAML skins.</p> </li> <li><p><strong>Git Worktree Isolation</strong> — <code>hermes -w</code> launches isolated agent sessions in git worktrees for safe parallel work on the same repo. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/654">#654</a>)</p> </li> <li><p><strong>Filesystem Checkpoints & Rollback</strong> — Automatic snapshots before destructive operations with <code>/rollback</code> to restore. (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/824">#824</a>)</p> </li> <li><p><strong>3,289 Tests</strong> — From near-zero test coverage to a comprehensive test suite covering agent, gateway, tools, cron, and CLI.</p> </li> </ul> <hr> <h2>🏗️ Core Agent & Architecture</h2> <h3>Provider & Model Support</h3> <ul> <li>Centralized provider router with <code>resolve_provider_client()</code> + <code>call_llm()</code> API (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/1003">#1003</a>)</li> <li>Nous Portal as first-class provider in setup (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/644">#644</a>)</li> <li>OpenAI Codex (Responses API) with ChatGPT subscription support (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/43">#43</a>) — @grp06</li> <li>Codex OAuth vision support + multimodal content adapter</li> <li>Validate <code>/model</code> against live API instead of hardcoded lists</li> <li>Self-hosted Firecrawl support (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/460">#460</a>) — @caentzminger</li> <li>Kimi Code API support (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/635">#635</a>) — @christomitov</li> <li>MiniMax model ID update (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/473">#473</a>) — @tars90percent</li> <li>OpenRouter provider routing configuration (provider_preferences)</li> <li>Nous credential refresh on 401 errors (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/571">#571</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/269">#269</a>) — @rewbs</li> <li>z.ai/GLM, Kimi/Moonshot, MiniMax, Azure OpenAI as first-class providers</li> <li>Unified <code>/model</code> and <code>/provider</code> into single view</li> </ul> <h3>Agent Loop & Conversation</h3> <ul> <li>Simple fallback model for provider resilience (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/740">#740</a>)</li> <li>Shared iteration budget across parent + subagent delegation</li> <li>Iteration budget pressure via tool result injection</li> <li>Configurable subagent provider/model with full credential resolution</li> <li>Handle 413 payload-too-large via compression instead of aborting (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/153">#153</a>) — @tekelala</li> <li>Retry with rebuilt payload after compression (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/616">#616</a>) — @tripledoublev</li> <li>Auto-compress pathologically large gateway sessions (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/628">#628</a>)</li> <li>Tool call repair middleware — auto-lowercase and invalid tool handler</li> <li>Reasoning effort configuration and <code>/reasoning</code> command (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/921">#921</a>)</li> <li>Detect and block file re-read/search loops after context compression (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/705">#705</a>) — @0xbyt4</li> </ul> <h3>Session & Memory</h3> <ul> <li>Session naming with unique titles, auto-lineage, rich listing, and resume by name (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/720">#720</a>)</li> <li>Interactive session browser with search filtering (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/733">#733</a>)</li> <li>Display previous messages when resuming a session (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/734">#734</a>)</li> <li>Honcho AI-native cross-session user modeling (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/38">#38</a>) — @erosika</li> <li>Proactive async memory flush on session expiry</li> <li>Smart context length probing with persistent caching + banner display</li> <li><code>/resume</code> command for switching to named sessions in gateway</li> <li>Session reset policy for messaging platforms</li> </ul> <hr> <h2>📱 Messaging Platforms (Gateway)</h2> <h3>Telegram</h3> <ul> <li>Native file attachments: send_document + send_video</li> <li>Document file processing for PDF, text, and Office files — @tekelala</li> <li>Forum topic session isolation (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/766">#766</a>) — @spanishflu-est1918</li> <li>Browser screenshot sharing via MEDIA: protocol (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/657">#657</a>)</li> <li>Location support for find-nearby skill</li> <li>TTS voice message accumulation fix (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/176">#176</a>) — @Bartok9</li> <li>Improved error handling and logging (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/763">#763</a>) — @aydnOktay</li> <li>Italic regex newline fix + 43 format tests (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/204">#204</a>) — @0xbyt4</li> </ul> <h3>Discord</h3> <ul> <li>Channel topic included in session context (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/248">#248</a>) — @Bartok9</li> <li>DISCORD_ALLOW_BOTS config for bot message filtering (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/758">#758</a>)</li> <li>Document and video support (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/784">#784</a>)</li> <li>Improved error handling and logging (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/761">#761</a>) — @aydnOktay</li> </ul> <h3>Slack</h3> <ul> <li>App_mention 404 fix + document/video support (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/784">#784</a>)</li> <li>Structured logging replacing print statements — @aydnOktay</li> </ul> <h3>WhatsApp</h3> <ul> <li>Native media sending — images, videos, documents (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/292">#292</a>) — @satelerd</li> <li>Multi-user session isolation (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/75">#75</a>) — @satelerd</li> <li>Cross-platform port cleanup replacing Linux-only fuser (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/433">#433</a>) — @Farukest</li> <li>DM interrupt key mismatch fix (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/350">#350</a>) — @Farukest</li> </ul> <h3>Signal</h3> <ul> <li>Full Signal messenger gateway via signal-cli-rest-api (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/405">#405</a>)</li> <li>Media URL support in message events (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/871">#871</a>)</li> </ul> <h3>Email (IMAP/SMTP)</h3> <ul> <li>New email gateway platform — @0xbyt4</li> </ul> <h3>Home Assistant</h3> <ul> <li>REST tools + WebSocket gateway integration (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/184">#184</a>) — @0xbyt4</li> <li>Service discovery and enhanced setup</li> <li>Toolset mapping fix (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/538">#538</a>) — @Himess</li> </ul> <h3>Gateway Core</h3> <ul> <li>Expose subagent tool calls and thinking to users (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/186">#186</a>) — @cutepawss</li> <li>Configurable background process watcher notifications (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/840">#840</a>)</li> <li><code>edit_message()</code> for Telegram/Discord/Slack with fallback</li> <li><code>/compress</code>, <code>/usage</code>, <code>/update</code> slash commands</li> <li>Eliminated 3x SQLite message duplication in gateway sessions (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/873">#873</a>)</li> <li>Stabilize system prompt across gateway turns for cache hits (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/754">#754</a>)</li> <li>MCP server shutdown on gateway exit (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/796">#796</a>) — @0xbyt4</li> <li>Pass session_db to AIAgent, fixing session_search error (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/108">#108</a>) — @Bartok9</li> <li>Persist transcript changes in /retry, /undo; fix /reset attribute (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/217">#217</a>) — @Farukest</li> <li>UTF-8 encoding fix preventing Windows crashes (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/369">#369</a>) — @ch3ronsa</li> </ul> <hr> <h2>🖥️ CLI & User Experience</h2> <h3>Interactive CLI</h3> <ul> <li>Data-driven skin/theme engine — 7 built-in skins (default, ares, mono, slate, poseidon, sisyphus, charizard) + custom YAML skins</li> <li><code>/personality</code> command with custom personality + disable support (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/773">#773</a>) — @teyrebaz33</li> <li>User-defined quick commands that bypass the agent loop (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/746">#746</a>) — @teyrebaz33</li> <li><code>/reasoning</code> command for effort level and display toggle (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/921">#921</a>)</li> <li><code>/verbose</code> slash command to toggle debug at runtime (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/94">#94</a>) — @cesareth</li> <li><code>/insights</code> command — usage analytics, cost estimation & activity patterns (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/552">#552</a>)</li> <li><code>/background</code> command for managing background processes</li> <li><code>/help</code> formatting with command categories</li> <li>Bell-on-complete — terminal bell when agent finishes (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/738">#738</a>)</li> <li>Up/down arrow history navigation</li> <li>Clipboard image paste (Alt+V / Ctrl+V)</li> <li>Loading indicators for slow slash commands (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/882">#882</a>)</li> <li>Spinner flickering fix under patch_stdout (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/91">#91</a>) — @0xbyt4</li> <li><code>--quiet/-Q</code> flag for programmatic single-query mode</li> <li><code>--fuck-it-ship-it</code> flag to bypass all approval prompts (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/724">#724</a>) — @dmahan93</li> <li>Tools summary flag (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/767">#767</a>) — @luisv-1</li> <li>Terminal blinking fix on SSH (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/284">#284</a>) — @ygd58</li> <li>Multi-line paste detection fix (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/84">#84</a>) — @0xbyt4</li> </ul> <h3>Setup & Configuration</h3> <ul> <li>Modular setup wizard with section subcommands and tool-first UX</li> <li>Container resource configuration prompts</li> <li>Backend validation for required binaries</li> <li>Config migration system (currently v7)</li> <li>API keys properly routed to .env instead of config.yaml (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/469">#469</a>) — @ygd58</li> <li>Atomic write for .env to prevent API key loss on crash (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/954">#954</a>)</li> <li><code>hermes tools</code> — per-platform tool enable/disable with curses UI</li> <li><code>hermes doctor</code> for health checks across all configured providers</li> <li><code>hermes update</code> with auto-restart for gateway service</li> <li>Show update-available notice in CLI banner</li> <li>Multiple named custom providers</li> <li>Shell config detection improvement for PATH setup (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/317">#317</a>) — @mehmetkr-31</li> <li>Consistent HERMES_HOME and .env path resolution (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/51">#51</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/48">#48</a>) — @deankerr</li> <li>Docker backend fix on macOS + subagent auth for Nous Portal (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/46">#46</a>) — @rsavitt</li> </ul> <hr> <h2>🔧 Tool System</h2> <h3>MCP (Model Context Protocol)</h3> <ul> <li>Native MCP client with stdio + HTTP transports (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/291">#291</a> — @0xbyt4, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/301">#301</a>)</li> <li>Sampling support — server-initiated LLM requests (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/753">#753</a>)</li> <li>Resource and prompt discovery</li> <li>Automatic reconnection and security hardening</li> <li>Banner integration, <code>/reload-mcp</code> command</li> <li><code>hermes tools</code> UI integration</li> </ul> <h3>Browser</h3> <ul> <li>Local browser backend — zero-cost headless Chromium (no Browserbase needed)</li> <li>Console/errors tool, annotated screenshots, auto-recording, dogfood QA skill (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/745">#745</a>)</li> <li>Screenshot sharing via MEDIA: on all messaging platforms (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/657">#657</a>)</li> </ul> <h3>Terminal & Execution</h3> <ul> <li><code>execute_code</code> sandbox with json_parse, shell_quote, retry helpers</li> <li>Docker: custom volume mounts (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/158">#158</a>) — @Indelwin</li> <li>Daytona cloud sandbox backend (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/451">#451</a>) — @rovle</li> <li>SSH backend fix (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/59">#59</a>) — @deankerr</li> <li>Shell noise filtering and login shell execution for environment consistency</li> <li>Head+tail truncation for execute_code stdout overflow</li> <li>Configurable background process notification modes</li> </ul> <h3>File Operations</h3> <ul> <li>Filesystem checkpoints and <code>/rollback</code> command (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/824">#824</a>)</li> <li>Structured tool result hints (next-action guidance) for patch and search_files (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/722">#722</a>)</li> <li>Docker volumes passed to sandbox container config (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/687">#687</a>) — @manuelschipper</li> </ul> <hr> <h2>🧩 Skills Ecosystem</h2> <h3>Skills System</h3> <ul> <li>Per-platform skill enable/disable (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/743">#743</a>) — @teyrebaz33</li> <li>Conditional skill activation based on tool availability (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/785">#785</a>) — @teyrebaz33</li> <li>Skill prerequisites — hide skills with unmet dependencies (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/659">#659</a>) — @kshitijk4poor</li> <li>Optional skills — shipped but not activated by default</li> <li><code>hermes skills browse</code> — paginated hub browsing</li> <li>Skills sub-category organization</li> <li>Platform-conditional skill loading</li> <li>Atomic skill file writes (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/551">#551</a>) — @aydnOktay</li> <li>Skills sync data loss prevention (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/563">#563</a>) — @0xbyt4</li> <li>Dynamic skill slash commands for CLI and gateway</li> </ul> <h3>New Skills (selected)</h3> <ul> <li><strong>ASCII Art</strong> — pyfiglet (571 fonts), cowsay, image-to-ascii (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/209">#209</a>) — @0xbyt4</li> <li><strong>ASCII Video</strong> — Full production pipeline (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/854">#854</a>) — @SHL0MS</li> <li><strong>DuckDuckGo Search</strong> — Firecrawl fallback (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/267">#267</a>) — @gamedevCloudy; DDGS API expansion (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/598">#598</a>) — @areu01or00</li> <li><strong>Solana Blockchain</strong> — Wallet balances, USD pricing, token names (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/212">#212</a>) — @gizdusum</li> <li><strong>AgentMail</strong> — Agent-owned email inboxes (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/330">#330</a>) — @teyrebaz33</li> <li><strong>Polymarket</strong> — Prediction market data (read-only) (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/629">#629</a>)</li> <li><strong>OpenClaw Migration</strong> — Official migration tool (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/570">#570</a>) — @unmodeled-tyler</li> <li><strong>Domain Intelligence</strong> — Passive recon: subdomains, SSL, WHOIS, DNS (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/136">#136</a>) — @FurkanL0</li> <li><strong>Superpowers</strong> — Software development skills (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/137">#137</a>) — @kaos35</li> <li><strong>Hermes-Atropos</strong> — RL environment development skill (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/815">#815</a>)</li> <li>Plus: arXiv search, OCR/documents, Excalidraw diagrams, YouTube transcripts, GIF search, Pokémon player, Minecraft modpack server, OpenHue (Philips Hue), Google Workspace, Notion, PowerPoint, Obsidian, find-nearby, and 40+ MLOps skills</li> </ul> <hr> <h2>🔒 Security & Reliability</h2> <h3>Security Hardening</h3> <ul> <li>Path traversal fix in skill_view — prevented reading arbitrary files (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/220">#220</a>) — @Farukest</li> <li>Shell injection prevention in sudo password piping (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/65">#65</a>) — @leonsgithub</li> <li>Dangerous command detection: multiline bypass fix (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/233">#233</a>) — @Farukest; tee/process substitution patterns (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/280">#280</a>) — @dogiladeveloper</li> <li>Symlink boundary check fix in skills_guard (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/386">#386</a>) — @Farukest</li> <li>Symlink bypass fix in write deny list on macOS (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/61">#61</a>) — @0xbyt4</li> <li>Multi-word prompt injection bypass prevention (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/192">#192</a>) — @0xbyt4</li> <li>Cron prompt injection scanner bypass fix (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/63">#63</a>) — @0xbyt4</li> <li>Enforce 0600/0700 file permissions on sensitive files (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/757">#757</a>)</li> <li>.env file permissions restricted to owner-only (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/529">#529</a>) — @Himess</li> <li><code>--force</code> flag properly blocked from overriding dangerous verdicts (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/388">#388</a>) — @Farukest</li> <li>FTS5 query sanitization + DB connection leak fix (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/565">#565</a>) — @0xbyt4</li> <li>Expand secret redaction patterns + config toggle to disable</li> <li>In-memory permanent allowlist to prevent data leak (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/600">#600</a>) — @alireza78a</li> </ul> <h3>Atomic Writes (data loss prevention)</h3> <ul> <li>sessions.json (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/611">#611</a>) — @alireza78a</li> <li>Cron jobs (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/146">#146</a>) — @alireza78a</li> <li>.env config (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/954">#954</a>)</li> <li>Process checkpoints (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/298">#298</a>) — @aydnOktay</li> <li>Batch runner (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/297">#297</a>) — @aydnOktay</li> <li>Skill files (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/551">#551</a>) — @aydnOktay</li> </ul> <h3>Reliability</h3> <ul> <li>Guard all print() against OSError for systemd/headless environments (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/963">#963</a>)</li> <li>Reset all retry counters at start of run_conversation (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/607">#607</a>) — @0xbyt4</li> <li>Return deny on approval callback timeout instead of None (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/603">#603</a>) — @0xbyt4</li> <li>Fix None message content crashes across codebase (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/277">#277</a>)</li> <li>Fix context overrun crash with local LLM backends (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/403">#403</a>) — @ch3ronsa</li> <li>Prevent <code>_flush_sentinel</code> from leaking to external APIs (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/227">#227</a>) — @Farukest</li> <li>Prevent conversation_history mutation in callers (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/229">#229</a>) — @Farukest</li> <li>Fix systemd restart loop (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/614">#614</a>) — @voidborne-d</li> <li>Close file handles and sockets to prevent fd leaks (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/568">#568</a> — @alireza78a, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/296">#296</a> — @alireza78a, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/709">#709</a> — @memosr)</li> <li>Prevent data loss in clipboard PNG conversion (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/602">#602</a>) — @0xbyt4</li> <li>Eliminate shell noise from terminal output (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/293">#293</a>) — @0xbyt4</li> <li>Timezone-aware now() for prompt, cron, and execute_code (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/309">#309</a>) — @areu01or00</li> </ul> <h3>Windows Compatibility</h3> <ul> <li>Guard POSIX-only process functions (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/219">#219</a>) — @Farukest</li> <li>Windows native support via Git Bash + ZIP-based update fallback</li> <li>pywinpty for PTY support (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/457">#457</a>) — @shitcoinsherpa</li> <li>Explicit UTF-8 encoding on all config/data file I/O (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/458">#458</a>) — @shitcoinsherpa</li> <li>Windows-compatible path handling (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/354">#354</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/390">#390</a>) — @Farukest</li> <li>Regex-based search output parsing for drive-letter paths (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/533">#533</a>) — @Himess</li> <li>Auth store file lock for Windows (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/455">#455</a>) — @shitcoinsherpa</li> </ul> <hr> <h2>🐛 Notable Bug Fixes</h2> <ul> <li>Fix DeepSeek V3 tool call parser silently dropping multi-line JSON arguments (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/444">#444</a>) — @PercyDikec</li> <li>Fix gateway transcript losing 1 message per turn due to offset mismatch (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/395">#395</a>) — @PercyDikec</li> <li>Fix /retry command silently discarding the agent's final response (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/441">#441</a>) — @PercyDikec</li> <li>Fix max-iterations retry returning empty string after think-block stripping (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/438">#438</a>) — @PercyDikec</li> <li>Fix max-iterations retry using hardcoded max_tokens (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/436">#436</a>) — @Farukest</li> <li>Fix Codex status dict key mismatch (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/448">#448</a>) and visibility filter (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/446">#446</a>) — @PercyDikec</li> <li>Strip <think> blocks from final user-facing responses (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/174">#174</a>) — @Bartok9</li> <li>Fix <think> block regex stripping visible content when model discusses tags literally (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/786">#786</a>)</li> <li>Fix Mistral 422 errors from leftover finish_reason in assistant messages (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/253">#253</a>) — @Sertug17</li> <li>Fix OPENROUTER_API_KEY resolution order across all code paths (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/295">#295</a>) — @0xbyt4</li> <li>Fix OPENAI_BASE_URL API key priority (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/420">#420</a>) — @manuelschipper</li> <li>Fix Anthropic "prompt is too long" 400 error not detected as context length error (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/813">#813</a>)</li> <li>Fix SQLite session transcript accumulating duplicate messages — 3-4x token inflation (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/860">#860</a>)</li> <li>Fix setup wizard skipping API key prompts on first install (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/748">#748</a>)</li> <li>Fix setup wizard showing OpenRouter model list for Nous Portal (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/575">#575</a>) — @PercyDikec</li> <li>Fix provider selection not persisting when switching via hermes model (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/881">#881</a>)</li> <li>Fix Docker backend failing when docker not in PATH on macOS (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/889">#889</a>)</li> <li>Fix ClawHub Skills Hub adapter for API endpoint changes (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/286">#286</a>) — @BP602</li> <li>Fix Honcho auto-enable when API key is present (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/243">#243</a>) — @Bartok9</li> <li>Fix duplicate 'skills' subparser crash on Python 3.11+ (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/issues/898">#898</a>)</li> <li>Fix memory tool entry parsing when content contains section sign (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/162">#162</a>) — @aydnOktay</li> <li>Fix piped install silently aborting when interactive prompts fail (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/72">#72</a>) — @cutepawss</li> <li>Fix false positives in recursive delete detection (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/68">#68</a>) — @cutepawss</li> <li>Fix Ruff lint warnings across codebase (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/608">#608</a>) — @JackTheGit</li> <li>Fix Anthropic native base URL fail-fast (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/173">#173</a>) — @adavyas</li> <li>Fix install.sh creating ~/.hermes before moving Node.js directory (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/53">#53</a>) — @JoshuaMart</li> <li>Fix SystemExit traceback during atexit cleanup on Ctrl+C (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/55">#55</a>) — @bierlingm</li> <li>Restore missing MIT license file (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/620">#620</a>) — @stablegenius49</li> </ul> <hr> <h2>🧪 Testing</h2> <ul> <li><strong>3,289 tests</strong> across agent, gateway, tools, cron, and CLI</li> <li>Parallelized test suite with pytest-xdist (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/802">#802</a>) — @OutThisLife</li> <li>Unit tests batch 1: 8 core modules (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/60">#60</a>) — @0xbyt4</li> <li>Unit tests batch 2: 8 more modules (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/62">#62</a>) — @0xbyt4</li> <li>Unit tests batch 3: 8 untested modules (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/191">#191</a>) — @0xbyt4</li> <li>Unit tests batch 4: 5 security/logic-critical modules (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/193">#193</a>) — @0xbyt4</li> <li>AIAgent (run_agent.py) unit tests (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/67">#67</a>) — @0xbyt4</li> <li>Trajectory compressor tests (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/203">#203</a>) — @0xbyt4</li> <li>Clarify tool tests (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/121">#121</a>) — @Bartok9</li> <li>Telegram format tests — 43 tests for italic/bold/code rendering (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/204">#204</a>) — @0xbyt4</li> <li>Vision tools type hints + 42 tests (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/792">#792</a>)</li> <li>Compressor tool-call boundary regression tests (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/648">#648</a>) — @intertwine</li> <li>Test structure reorganization (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/34">#34</a>) — @0xbyt4</li> <li>Shell noise elimination + fix 36 test failures (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/293">#293</a>) — @0xbyt4</li> </ul> <hr> <h2>🔬 RL & Evaluation Environments</h2> <ul> <li>WebResearchEnv — Multi-step web research RL environment (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/434">#434</a>) — @jackx707</li> <li>Modal sandbox concurrency limits to avoid deadlocks (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/621">#621</a>) — @voteblake</li> <li>Hermes-atropos-environments bundled skill (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/815">#815</a>)</li> <li>Local vLLM instance support for evaluation — @dmahan93</li> <li>YC-Bench long-horizon agent benchmark environment</li> <li>OpenThoughts-TBLite evaluation environment and scripts</li> </ul> <hr> <h2>📚 Documentation</h2> <ul> <li>Full documentation website (Docusaurus) with 37+ pages</li> <li>Comprehensive platform setup guides for Telegram, Discord, Slack, WhatsApp, Signal, Email</li> <li>AGENTS.md — development guide for AI coding assistants</li> <li>CONTRIBUTING.md (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/117">#117</a>) — @Bartok9</li> <li>Slash commands reference (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/142">#142</a>) — @Bartok9</li> <li>Comprehensive AGENTS.md accuracy audit (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/732">#732</a>)</li> <li>Skin/theme system documentation</li> <li>MCP documentation and examples</li> <li>Docs accuracy audit — 35+ corrections</li> <li>Documentation typo fixes (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/825">#825</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/439">#439</a>) — @JackTheGit</li> <li>CLI config precedence and terminology standardization (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/166">#166</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/167">#167</a>, <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/168">#168</a>) — @Jr-kenny</li> <li>Telegram token regex documentation (<a rel="noopener" href="https://github.com/NousResearch/hermes-agent/pull/713">#713</a>) — @VolodymyrBg</li> </ul> <hr> <h2>👥 Contributors</h2> <p>Thank you to the 63 contributors who made this release possible! In just over two weeks, the Hermes Agent community came together to ship an extraordinary amount of work.</p> <h3>Core</h3> <ul> <li><strong>@teknium1</strong> — 43 PRs: Project lead, core architecture, provider router, sessions, skills, CLI, documentation</li> </ul> <h3>Top Community Contributors</h3> <ul> <li><strong>@0xbyt4</strong> — 40 PRs: MCP client, Home Assistant, security fixes (symlink, prompt injection, cron), extensive test coverage (6 batches), ascii-art skill, shell noise elimination, skills sync, Telegram formatting, and dozens more</li> <li><strong>@Farukest</strong> — 16 PRs: Security hardening (path traversal, dangerous command detection, symlink boundary), Windows compatibility (POSIX guards, path handling), WhatsApp fixes, max-iterations retry, gateway fixes</li> <li><strong>@aydnOktay</strong> — 11 PRs: Atomic writes (process checkpoints, batch runner, skill files), error handling improvements across Telegram, Discord, code execution, transcription, TTS, and skills</li> <li><strong>@Bartok9</strong> — 9 PRs: CONTRIBUTING.md, slash commands reference, Discord channel topics, think-block stripping, TTS fix, Honcho fix, session count fix, clarify tests</li> <li><strong>@PercyDikec</strong> — 7 PRs: DeepSeek V3 parser fix, /retry response discard, gateway transcript offset, Codex status/visibility, max-iterations retry, setup wizard fix</li> <li><strong>@teyrebaz33</strong> — 5 PRs: Skills enable/disable system, quick commands, personality customization, conditional skill activation</li> <li><strong>@alireza78a</strong> — 5 PRs: Atomic writes (cron, sessions), fd leak prevention, security allowlist, code execution socket cleanup</li> <li><strong>@shitcoinsherpa</strong> — 3 PRs: Windows support (pywinpty, UTF-8 encoding, auth store lock)</li> <li><strong>@Himess</strong> — 3 PRs: Cron/HomeAssistant/Daytona fix, Windows drive-letter parsing, .env permissions</li> <li><strong>@satelerd</strong> — 2 PRs: WhatsApp native media, multi-user session isolation</li> <li><strong>@rovle</strong> — 1 PR: Daytona cloud sandbox backend (4 commits)</li> <li><strong>@erosika</strong> — 1 PR: Honcho AI-native memory integration</li> <li><strong>@dmahan93</strong> — 1 PR: --fuck-it-ship-it flag + RL environment work</li> <li><strong>@SHL0MS</strong> — 1 PR: ASCII video skill</li> </ul> <h3>All Contributors</h3> <p>@0xbyt4, @BP602, @Bartok9, @Farukest, @FurkanL0, @Himess, @Indelwin, @JackTheGit, @JoshuaMart, @Jr-kenny, @OutThisLife, @PercyDikec, @SHL0MS, @Sertug17, @VencentSoliman, @VolodymyrBg, @adavyas, @alireza78a, @areu01or00, @aydnOktay, @batuhankocyigit, @bierlingm, @caentzminger, @cesareth, @ch3ronsa, @christomitov, @cutepawss, @deankerr, @dmahan93, @dogiladeveloper, @dragonkhoi, @erosika, @gamedevCloudy, @gizdusum, @grp06, @intertwine, @jackx707, @jdblackstar, @johnh4098, @kaos35, @kshitijk4poor, @leonsgithub, @luisv-1, @manuelschipper, @mehmetkr-31, @memosr, @PeterFile, @rewbs, @rovle, @rsavitt, @satelerd, @spanishflu-est1918, @stablegenius49, @tars90percent, @tekelala, @teknium1, @teyrebaz33, @tripledoublev, @unmodeled-tyler, @voidborne-d, @voteblake, @ygd58</p> <hr> <p><strong>Full Changelog</strong>: <a rel="noopener" href="https://github.com/NousResearch/hermes-agent/compare/v0.1.0...v2026.3.12">v0.1.0...v2026.3.12</a></p> </div><div class="link-row" data-astro-cid-l7qxtvnw><span class="lr-label" data-astro-cid-l7qxtvnw>Links</span><a href="https://github.com/NousResearch/hermes-agent/releases/tag/v2026.3.12" data-astro-cid-l7qxtvnw>GitHub release notes ↗</a><a href="/tools/" data-astro-cid-l7qxtvnw>Tools Reference →</a><a href="/skills/" data-astro-cid-l7qxtvnw>Skill Library →</a><a href="/gateway/" data-astro-cid-l7qxtvnw>Gateway Guide →</a><a href="/providers/" data-astro-cid-l7qxtvnw>Providers Reference →</a></div></div></details></div></div></main><footer data-astro-cid-jo6i4kqk><div class="footer-inner" data-astro-cid-jo6i4kqk><div class="footer-col footer-brand" data-astro-cid-jo6i4kqk><span class="footer-title" data-astro-cid-jo6i4kqk>Hermes Agent Tutorials</span><p class="footer-desc" data-astro-cid-jo6i4kqk>Hands-on Hermes Agent guides by Nous Research — written by the agent itself.</p></div><div class="footer-col" data-astro-cid-jo6i4kqk><span class="footer-heading" data-astro-cid-jo6i4kqk>Explore</span><div class="footer-links-row" data-astro-cid-jo6i4kqk><a href="/blog" data-astro-cid-jo6i4kqk>Tutorials</a><a href="/changelog" data-astro-cid-jo6i4kqk>Changelog</a><a href="/plugins" data-astro-cid-jo6i4kqk>Plugins</a><a href="/arena" data-astro-cid-jo6i4kqk>Arena</a><a href="/about" data-astro-cid-jo6i4kqk>About</a></div><span class="footer-heading" data-astro-cid-jo6i4kqk>Resources</span><div class="footer-links-row" data-astro-cid-jo6i4kqk><a href="https://github.com/NousResearch/hermes-agent" target="_blank" data-astro-cid-jo6i4kqk>GitHub</a><a href="https://hermes-agent.nousresearch.com/docs" target="_blank" data-astro-cid-jo6i4kqk>Docs</a><a href="/rss.xml" data-astro-cid-jo6i4kqk>RSS</a></div></div><div class="footer-col network-col" data-astro-cid-jo6i4kqk><span class="footer-heading" data-astro-cid-jo6i4kqk>The Network</span><div class="network-badges" data-astro-cid-jo6i4kqk><a href="https://aigamingdev.com" target="_blank" rel="noopener" data-astro-cid-jo6i4kqk>AIGamingDev</a><a href="https://codeintel.xyz" target="_blank" rel="noopener" data-astro-cid-jo6i4kqk>CodeIntel</a><a href="https://cybersec-ai.xyz" target="_blank" rel="noopener" data-astro-cid-jo6i4kqk>CyberSec AI</a><a href="https://design-agent.dev" target="_blank" rel="noopener" data-astro-cid-jo6i4kqk>Design Agent</a><a href="https://hermes-tutorials.dev" target="_blank" rel="noopener" data-astro-cid-jo6i4kqk>Hermes Tutorials</a><a href="https://niteagent.com" target="_blank" rel="noopener" data-astro-cid-jo6i4kqk>NiteAgent</a><a href="https://nocodeinsider.com" target="_blank" rel="noopener" data-astro-cid-jo6i4kqk>NoCode Insider</a><a href="https://quantbrainai.net" target="_blank" rel="noopener" data-astro-cid-jo6i4kqk>QuantBrainAI</a><a href="https://smarthomefieldguide.com" target="_blank" rel="noopener" data-astro-cid-jo6i4kqk>SmartHome FG</a><a href="https://stacksfree.com" target="_blank" rel="noopener" data-astro-cid-jo6i4kqk>StacksFree</a><a href="https://toolbrain.net" target="_blank" rel="noopener" data-astro-cid-jo6i4kqk>ToolBrain</a></div></div></div><div class="footer-bottom" data-astro-cid-jo6i4kqk><p data-astro-cid-jo6i4kqk>© 2026 Hermes Agent Tutorials · Powered by <a href="https://astro.build" data-astro-cid-jo6i4kqk>Astro</a></p></div></footer></body></html>