Hermes Agent v0.19.0 — The Quicksilver Release
Overview
v0.19.0 — The Quicksilver Release. Released July 20, 2026. ~2,245 commits · ~1,065 merged PRs · ~2,465 files changed · ~300,000 insertions · ~36,000 deletions · ~3,300 issues closed · 450+ community contributors.
Hermes is the messenger god, and this window we made him move like it. The Quicksilver Release is built around a single conviction: an autonomous agent that feels sluggish is an agent you won’t use. First-turn time-to-first-token dropped ~80% on every platform — cold start from ~4.3s to ~0.9s. Reasoning models stream their thinking live by default. The desktop app got 20+ targeted performance PRs (14× faster streaming markdown, virtualized diffs, snappy session switching). The TUI renders markdown incrementally.
Around that speed spine lies a release dense with capability: terminal billing (/subscription and /topup), password manager integration (Bitwarden & 1Password), smart approvals (LLM-reviewed commands by default), live subagent watch windows, a durable delivery ledger that survives gateway crashes, and profile-based message routing for multi-tenant deployments. New providers (Fireworks AI, DeepInfra) and the newest frontier models (GPT-5.6, grok-4.5, kimi-k3, Claude Sonnet 5) round out the catalog.
This release also rolls up everything from the v0.18.1 and v0.18.2 infrastructure patch tags — those windows are fully documented here.
Highlights
1. Hermes Got Dramatically Faster — First Token in a Fraction of the Time
The cold-start “Initializing agent…” phase 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.
What changed under the hood:
- Discord capability detection moved off the critical path with a token-keyed 24-hour disk cache plus background refresh
- Ollama probe skipped for known non-Ollama providers
- Agent-init blocking work removed from the cold path
- Prompt-build caching and mtime-cached timezone resolution
Perceived-latency round 2 attacked what you see while waiting:
display.show_reasoningis now ON by default — reasoning models stream their thinking live instead of showing a spinner for 30+ seconds- Response box paints per token instead of per line, with width-aware force-flush
- Mixed tool batches are now segmented to recover lost concurrency
- Per-call base64 re-serialization dropped from request-size estimates
If Hermes ever felt like it took a deep breath before answering, that breath is gone.
2. Desktop App Speed Wave — 20+ Targeted Performance PRs
@OutThisLife led a focused performance overhaul that makes the desktop app feel native under load, even with massive transcripts and busy agents.
| Area | Improvement |
|---|---|
| Streaming markdown | 14× less CPU via incremental block lexing |
| Diff rendering | Virtualized review-pane diffs — no more full-Shiki freeze on giant files |
| Session switching | Instant switching even with huge conversations, layout-thrash cascade eliminated |
| Startup | Serialization cut + per-turn REST amplification removed; profile backends pre-warm on hover intent |
| Boot-hidden panes | Mount at idle instead of on the cold-start critical path |
| Per-token re-renders | Sidebar and tool rows no longer re-render during streaming; eager JSON.stringify of tool args/results eliminated |
| Profiling | Systematized perf benchmark harness replacing 12 one-off scripts |
The net effect: the fastest, smoothest Hermes desktop experience ever.
3. Manage Your Nous Plan from the Terminal — /subscription and /topup
Changing your subscription used to mean a trip to the billing website. Now it lives right in the terminal:
# Open the full subscription flow in TUI or classic CLI
/subscription
# What you see:
# - Current plan and remaining allowance
# - Upgrade preview: "Pay $46.30 & upgrade now"
# - Downgrade effective date: "Downgrade takes effect on Aug 1"
# - Scheduled-change banners with undo option
# Top up your account
/topup
The desktop app got a matching billing settings tab. Your wallet never has to leave the keyboard.
4. Smart Approvals — LLM-Reviewed Commands by Default
When Hermes wants to run a flagged command, an LLM reviewer now assesses it independently instead of asking you to approve every single one. Each verdict covers only that exact command — a later command matching the same pattern gets its own fresh review.
The decision flow:
- Safe → auto-approved, no interruption
- Dangerous → auto-denied, with reason logged
- Uncertain → escalated to the user for manual decision
Combined with user-defined deny rules (which block commands even under yolo mode) and /deny <reason> (which tells the agent why you refused so it course-corrects), day-to-day approval fatigue drops sharply without giving up control.
# Deny with a reason — the agent learns from your rejection
/deny that would delete the production database
# Define deny rules in config that block even under yolo
deny_rules:
- pattern: "rm -rf /"
reason: "Never delete root"
- pattern: "DROP (DATABASE|TABLE)"
reason: "Database operations require manual review"
5. Password Manager Integration — Bitwarden & 1Password Secret Sources
API keys no longer have to live in a plaintext .env file. A new pluggable SecretSource interface lets Hermes fetch secrets from Bitwarden and 1Password (op:// references) at load time.
# hermes.config.yaml
secret_sources:
- provider: bitwarden
vault: "dev-creds"
priority: 1
- provider: onepassword
vault: "Production"
priority: 2
# op:// references resolved at load time:
# op://Production/OpenAI/credential → OPENAI_API_KEY
Key design decisions:
- Multiple vaults enabled simultaneously with deterministic precedence
- Conflict warnings when two sources provide the same variable
- Per-variable provenance tracking — you always know where a secret came from
- Consolidated eleven competing community PRs into one orchestrated interface
- Future vault providers (HashiCorp Vault, AWS Secrets Manager, etc.) drop in as plugins
6. Watch Your Subagents Work — Live Transcripts + Durable Background Delegation
Delegated subagents are no longer invisible workers disappearing behind a spinner.
# delegate_task now returns live transcript files
/delegate_task "Research competitors A, B, C in parallel"
# Watch any subagent live from another terminal
tail -f /tmp/hermes-delegate-abc123.log
# Every tool call, result, and streamed reply — one human-readable log per child
Durable background delegation means 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.
7. Delivery-Obligation Ledger — Crash-Proof Responses
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. No more.
Final responses are now recorded in a durable ledger in state.db around the platform send and redelivered on the next boot. This closes a P1 silent-loss window for Telegram, Discord, Slack, and every other messaging channel. A finished answer can no longer be lost.
8. One Gateway, Many Profiles — Profile-Based Message Routing
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 'work' profile
# and your hobby server at 'personal' — from one bot
gateway:
multiplex_profiles:
- profile: work
discord:
guilds: ["123456789"]
channels: ["987654321"]
- profile: personal
discord:
guilds: ["111111111"]
A second multiplex hardening wave means one misconfigured profile can no longer take down the whole gateway.
9. New Providers & Frontier Models
| Addition | Details |
|---|---|
| Fireworks AI | First-class provider with cost estimation, promoted to #2 in provider pickers |
| DeepInfra | Hardened integration with full catalog wiring |
| Upstage Solar | New provider via community salvage |
| GPT-5.6 | Sol/Terra/Luna + Pro variants, wired end-to-end across every route |
| grok-4.5 | GA catalog entry with reasoning allowlist |
| kimi-k3 | Full rollout across Nous Portal, OpenRouter, and Kimi Coding endpoints; kimi-k2.x retired |
| Claude Sonnet 5 | Curated catalog, intro pricing, metadata across every route |
| Claude Fable 5 | Curated alongside Sonnet 5 |
| LM Studio | JIT model loading for local setups |
| Bedrock catalog wave | Real context-window probing from live endpoint; 1M-context rows for current-gen Claude + Fable |
You can now hide providers you don’t use with enabled: false per-provider or excluded_providers to scrub unwanted entries from /model pickers.
10. Reasoning Effort — max and ultra Tiers
Reasoning is now a dial, not a global switch:
# CLI: session-scoped reasoning control
/reasoning # interactive picker: off → low → medium → high → max → ultra
# Per-model overrides in config
reasoning:
models:
"gpt-5.6-sol": ultra
"claude-sonnet-5": max
# Per-slot effort in MoA presets — advisors think hard, synthesizer stays fast
moa:
presets:
deep-council:
references:
- model: gpt-5.6-sol
reasoning_effort: max
- model: claude-sonnet-5
reasoning_effort: max
aggregator:
model: gpt-5.6-luna
reasoning_effort: medium
GPT-5.6 and Codex’s top tiers are fully supported with sane clamping on providers with smaller scales. Per-model, per-task, and per-slot MoA effort control throughout.
Performance — The Speed Spine
First-Turn Latency (All Platforms)
- ~80% TTFT cut: cold submit→dispatch ~4.3s → ~0.9s across CLI, gateway, TUI, desktop, and cron
- Reasoning streaming ON by default: watch the model think instead of staring at a spinner
- Per-token response painting with width-aware force-flush
- Prompt-build caching and mtime-cached timezone resolution
- Mixed tool batches segmented to recover lost concurrency
Desktop Speed Wave
- 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, layout-thrash cascade killed
- Startup optimization: serialization cuts, per-turn REST amplification removed
- Profile backends pre-warm on hover intent; idle-mount boot-hidden panes
- Per-token render elimination: sidebar + tool-row re-renders stopped during streaming
- Systematized perf benchmark harness
Everywhere Else
- TUI renders streamed markdown incrementally per block
- Skill discovery cached by scan signature; snapshot manifest builds ~5× faster
- Copy-on-write message prep instead of full deepcopy
- Model-metadata probe-cache cluster for faster model switching
- Gateway: byte-stable system prompts keep the prompt cache alive across turns
hermes updateskips npm install when Node manifests are unchanged
Major Features
Gateway, Fleet & Relay
Durable delivery-obligation ledger — final responses recorded in state.db and redelivered on next boot if the gateway crashes before platform confirmation.
Profile-based routing — one bot token, multiple profiles. Route specific Discord guilds/channels, Telegram chats, or Slack workspaces to different profiles with isolated config, skills, memory, and secrets.
Per-session turn lease — prevents duplicate processing of the same message. Conversation-scope funnel and unified session reset boundaries.
Relay maturity — generic OIDC client-credentials provisioning (NAS-free), routed profiles carried from connector wire source, channel context consumed from connector, Nous auth forensics with nous_session_valid on /api/status for hosted self-healing.
Messaging Platforms
| Platform | Key Updates |
|---|---|
| Telegram, Discord, Matrix | Inline choice pickers for /reasoning and /fast — one-tap native buttons |
| Native Baileys polls (clarify renders as a poll), locations, rich inbound metadata, dashboard pairing flow | |
| Discord | Recover messages missed during reconnect; auto-created threads renamed to session titles; configurable interactive view timeout; opt-in owner mentions on exec-approval prompts |
| Slack | Live per-tool status line during agent execution |
| Telegram | Per-topic free-response allowlist |
| Google Chat | Clarify prompts rendered as cards |
| Voice | stt.echo_transcripts toggle; MEDIA captions on standalone sends |
Desktop App
- Contribution-driven shell architecture on a layout-tree model — panes, zones, and layouts as data
- Capabilities page: Skills/Tools/MCP + Hub in one place with responsive overlay nav
- Hermes Cloud connection mode with soft gateway switch and gateway-settings polish
- Keybind hint tooltips + keybinds settings tab + unified worktree dialog
- Session + project color system — inherit from project, per-session override, shared across sidebar/tabs
- Declarative memory-provider panel + full-config modal
- Config-defined TTS/STT providers with xAI TTS params
- UI scale setting, Ctrl/Cmd+wheel zoom, chat backdrop toggle
- Full TypeScript conversion of the desktop tree
CLI & TUI
/model --once— one-turn model override that reverts automatically- Stacked slash-skill invocations —
/skill-a /skill-b do XYZloads both skills in order --safe-modetroubleshooting flag; uninstall dry-run; TLS failures fail fast with fix hints/compactalias + preview flags- Hermes Console REPL with perf follow-ups
- TUI: model picker refresh support; custom skill bundles dispatched as agent turns
Tool System, Skills & MCP
- MCP:
mcp__server__toolnaming convention; server log notifications in agent.log; hosted OAuth completed across Dashboard + Desktop; configurableredirect_uri/redirect_hostfor proxied/WAF setups - Skills:
security/unbroker(autonomous data-broker removal);blender-mcpreworked around catalog entry;unreal-mcpcompanion skill; humanizer pattern expansion - Browser: full snapshots stored on truncation; eval denylist opt-in
- Kanban: modal create-task dialog + editable board project directory; grab-to-pan board scrolling; attachment toolset + CLI with SSRF-guarded URL fetch
- Cron: durable execution audit history; one-shot stale-removal race fixed; run-claim TTL derived from
HERMES_CRON_TIMEOUT
Sessions & Data Export
# Export sessions in multiple formats
hermes sessions export --format markdown
hermes sessions export --format html
hermes sessions export --format quarto
hermes sessions export --format prompt-only
hermes sessions export --format hf-trace # Hugging Face-ready
# With secret redaction
hermes sessions export --redact
# Filter by age, workspace, platform
hermes sessions export --older-than 30d --workspace my-project
Your conversation history is a real dataset now, not a black box.
Secrets & Config
- Pluggable
SecretSourceinterface with Bitwarden & 1Password providers hermes config get/unsetcommands for configuration management- Unknown root config key warnings + doctor deprecated-key reporting
- Auxiliary model usage recorded per task in session accounting
- Conversation-scoped Nous Portal usage tags across aux/MoA/delegate calls
MoA Improvements
reference_max_tokensto cap advisor output and cut latency- Per-preset fanout cadence —
user_turnruns 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
Security & Reliability
Credential Surface Hardening
- Vertex credentials scoped away from subprocess env and through profile secret scopes
- Six P1 hardening PRs salvaged in one pass — browser guards, MEDIA anchoring, .env lockdown, delegate ACP transport
- Media/vision/image-gen local-file reads routed through one shared credential-read guard
- Webhook body-cap sweep across every aiohttp server
- Bot-token redaction in Telegram transport errors
- Fireworks token prefixes added to the redactor
- CI hardened against untrusted-ref interpolation
Redaction & Safe Defaults
- Env-lookup false positives fixed for
KEY=valueand JSON/YAML config fields - Bot tokens scrubbed from Telegram connect/send errors
computer_usesubprocess env sanitized across all five cua-driver spawn sites
Gateway & Agent Reliability
tool_call_iddeduplicated across pre-API sanitizers- Background review inherits parent reasoning_config for Anthropic cache parity
- Anthropic request-local clients so the stale/interrupt watchdog never corrupts SQLite
- OAuth login 429 fixed — UA must not be
claude-code/
Dashboard Security
- Managed-files credential guard widened past
.env+ dir-tree gap closed - OAuth token TOCTOU closed with atomic
0o600writes - Stale dashboards can’t recreate deleted profiles
Reverted in This Window
- iron-proxy credential-injection egress firewall — reverted, not shipping
- dynamic-workflow orchestration skill — landed, then reverted
- memory provider-actions extension point — landed, then reverted
- Note: the plugin
pre_tool_callapprove escalation was reverted mid-window but re-landed and ships in this release
Upgrade
hermes update
For new installations:
# macOS / Linux / WSL2
curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash
# Windows (PowerShell)
iex (irm https://hermes-agent.nousresearch.com/install.ps1)
← Hermes Agent Changelog