v0.18.0

Hermes Agent v0.18.0 — The Judgment Release


Overview

v0.18.0 — The Judgment Release. Released July 1, 2026. ~1,720 commits · 998 merged PRs · 2,215 files changed · ~251,000 insertions · ~41,000 deletions · 949 issues closed · 370+ community contributors.

The Judgment Release is about one fundamental shift: Hermes Agent learned to prove its work with evidence instead of claiming success by vibes. Mixture-of-Agents graduated from a toggle mode to a first-class model system where each reference model’s reasoning is visible and the aggregator streams live. /goal gained completion contracts, /learn and /journey made self-improvement visible and steerable. Under the hood, the Gateway achieved scale-to-zero with drain coordination for production deployments, and the desktop app grew a real coding cockpit with first-class Projects.

And then there’s the clean sweep: the team resolved every P0 and P1 issue across the entire repo in twelve days. Zero open P0s. Zero open P1s. This is the new baseline.


The P0/P1 Clean Sweep

Priority Issues closed PRs merged
P0 (critical) 3 8
P1 (high) 493 188
Total 496 196

That’s ~692 highest-priority items resolved. The final P0 to fall: the interrupt-protected-compression sibling-fork bug (#56391, fixed by #56416), closed on an all-nighter right before the release cut.

Special shoutout to @kshitijk4poor, who drove the cron reliability wave, the compression-fork fix, credential-exfil hardening, and a huge share of the P1 closures.

We will keep P0/P1 at zero from here forward.


Major Features

1. Mixture-of-Agents (MoA) — First-Class Model Picker

MoA graduated from a mode toggle to a first-class part of the model system. Every named MoA preset now appears as a selectable model under the moa provider — right alongside Claude, GPT, and Grok in every model picker (CLI, TUI, desktop, gateway).

Select an ensemble like any other model:

# In CLI, switch to an MoA preset through the model picker
/hermes model:moa/my-council

# /moa is now a one-shot shortcut — runs through default preset, restores previous model
/moa Review this architecture decision

Each reference model’s reasoning visible as labelled blocks. In CLI, TUI, and desktop, each reference model’s full output renders in its own block before the aggregator synthesizes the final answer. You can read what GPT-5 thought, what Claude thought, and what Grok thought — then watch the committee deliberate.

Aggregator response streams live. No more long silence followed by a wall of text. The final answer streams token-by-token in all three surfaces.

Configuration:

# hermes.config.yaml
moa:
  presets:
    my-council:
      references:
        - provider: anthropic
          model: claude-sonnet-4-20250514
          role: reference
        - provider: openai
          model: gpt-5
          role: reference
        - provider: xai
          model: grok-3
          role: reference
      aggregator:
        provider: openai
        model: gpt-5
  save_traces: true  # persist full turn traces to JSONL for debugging/eval

How it works under the hood:

  • References see full tool state and fire on every user/tool response, not just the initial prompt
  • Advisory references end on a user turn and receive a reference-role system prompt
  • Reference and aggregator models called through their provider’s real route — no shortcuts
  • Context window resolved from the aggregator, not the 256K default
  • Auxiliary tasks resolve to the aggregator automatically
  • Virtual provider blocked as a reference/aggregator slot — no recursive ensembles
  • Tolerant of hand-edited preset config — won’t crash on minor formatting issues
  • MoA slot provider-identity unified on the single call_llm chokepoint
  • HermesBench results documented for reference

2. Verification — The Agent Proves Its Work

Hermes now records verification evidence for coding work and decides completion by actually running your project’s checks — not by asserting success.

/goal Completion Contracts:

# Set a goal with a completion contract
/goal "Fix the race condition in auth handler"
# Hermes prompts you to define "done":
# "done = unit tests pass + no lint errors + concurrent suite passes 10x without failure"

# The standing-goal loop judges against evidence, not the model's say-so.
# It won't stop until the contract is satisfied.
# Park the goal loop on a background process instead of re-poking the agent
/goal wait 12345

Verification Evidence Ledger:

# hermes.config.yaml
coding_context:
  verify_on_stop: auto     # auto-detect project type, run appropriate checks
  pre_verify:              # custom verification hooks run before claiming done
    - command: "npm run test -- --coverage"
    - command: "npm run lint"
    - command: "npm run typecheck"

Implementation details:

  • Profile-scoped evidence ledger auto-detected by agent.coding_context
  • Gateway exposes verification status at GET /api/verification/status
  • pre_verify hook accepts arbitrary scripts as verification gates
  • Verification stop loop with ad-hoc script support
  • verify-on-stop defaults to OFF with a one-time v32 migration — skips doc-only edits, gated off for messaging surfaces
  • Surface-aware “auto” default restored (interactive vs. non-interactive)

3. /learn — Turn Anything Into a Reusable Skill

Run /learn <anything> and Hermes distills a reusable skill from what you point it at. It writes to CONTRIBUTING.md standards automatically.

# Learn from a directory — package.json, scripts, README, all analyzed
/learn ./my-deployment-scripts

# Learn from a URL — documentation, API reference, blog post
/learn https://docs.example.com/api-reference

# Learn from the workflow you just walked through — Hermes watches the last N turns
/learn workflow  # auto-detects the last workflow pattern

What happens under the hood:

  • Analyzes structure (directory contents, URL content, or conversation history)
  • Identifies reusable patterns and domain-specific procedures
  • Generates a skill file following your project’s CONTRIBUTING.md standards
  • Honors mixed requirements — if CONTRIBUTING.md specifies a particular format, that format is used
  • The next time you need that workflow, it’s already in the skill library

Additional skill tools in this release:

  • cloudflare-temporary-deploy — optional skill for quick Cloudflare deployments
  • creative-ideation v2.1.0 method library

4. /journey — A Playable Timeline of Everything Hermes Knows

The CLI and TUI gained /journey — a learning timeline of accumulated memories and skills, with in-place edit/delete. Pair it with the desktop’s new memory graph (a top-down, playable radial timeline of memories and skills over time), and for the first time you can actually see what your agent knows, watch it grow, and prune what’s wrong.

/journey
# Displays a scrollable timeline of all memories and skills
# Arrow keys: navigate
# Enter: expand details
# e: edit in-place
# d: delete

Desktop memory graph: A radial timeline visualization (top-down view, interactive nodes) showing memories and skills clustered by time period. Playable — scrub through the timeline, zoom into specific periods, tap a node to see the full memory content.

5. Background Fan-Out — Parallel Subagent Delegation

delegate_task can now fan out multiple subagents that all run in the background — your chat is never blocked, and when all finish, results come back as a single consolidated turn.

# Parallel research delegation
/delegate_task "Research competitors A, B, C in parallel — list their pricing, features, and recent funding"

# What happens:
# 1. Three background subagents spawn simultaneously
# 2. CLI/TUI status bar shows active background count
# 3. Your main chat stays responsive — keep working on something else
# 4. When all three finish, one consolidated summary arrives

Infrastructure:

  • CLI + TUI status bar tracks background subagents in real-time
  • Calm “will resume” affordance when background work is in progress
  • One consolidated return — no babysitting individual agents

6. Desktop App — First-Class Coding Projects

The desktop app gained real, per-profile Projects backed by a project → repo → lane model. Your coding work is organized into projects the agent understands and can act on.

Project anatomy:

Project "auth-service"
  ├── Repo: github.com/myorg/auth-service
  │     ├── Lane: main (current working branch)
  │     ├── Lane: feat/oauth-refactor (worktree)
  │     └── Lane: fix/race-condition (worktree)
  └── Tools: agent-facing project tools (lint, test, build)

Coding cockpit features:

  • Sidebar: per-profile project list with coding rail
  • Review pane: git status, diff view, worktree management
  • Remote-gateway-aware folder picker: works with hosted gateways
  • Git cockpit: inline status, PR-style diff review, worktree create/switch/delete

Multi-terminal panel:

  • Read-only agent terminals — watch what the agent is doing
  • Terminal tabs and scrollback persist and restore across relaunches

PR-style file diffs in chat:

  • File changes rendered as side-by-side or unified diffs
  • In-app spot editor for the file preview pane
  • Inline rich embeds, diagrams, and alerts in assistant markdown

UX enhancements:

  • Conversation timeline rail for navigating long threads
  • Context-usage breakdown popover — see exactly what’s consuming your context window
  • Spectator transcript for subagent watch windows (read-only)
  • Draggable floating composer — pop the input box into its own window
  • Auto-TTS composer toggle — read replies aloud
  • Window state persistence — size, position, maximized remembered across launches
  • Redesigned clarify prompt
  • Shared overlay Panel primitive for cron/profiles/agents management

Desktop Pets:

  • Opt-in roaming pet with calmer, more realistic roam behavior
  • Alt+wheel scaling — never crops the pet
  • Frame-perfect hatch flow with CPU-safe chroma rendering
  • Pop-out overlay with notifications

Refactor wave:

  • Composer decomposed into isolated engine hooks
  • Branch/esc/url/placeholder/popout engines extracted as separate modules
  • God files split: thread.tsx, sidebar/index.tsx, onboarding overlay, use-prompt-actions all broken into focused modules
  • Shared WebSocket layer decoupling desktop from dashboard (hermes serve)
  • Performance: bounded tool-result rendering prevents large /learn runs from freezing; fast session switching under load

7. Gateway — Scale-to-Zero & Drain Coordination

The gateway can now go dormant when idle and quiesce cleanly before restart, migration, or auto-update — without dropping in-flight conversations.

Scale-to-zero workflow:

# Start gateway with scale-to-zero enabled
hermes serve --scale-to-zero --drain-timeout 30s

# What happens:
# 1. Gateway monitors active connections
# 2. After idle period (configurable), transitions to dormant
# 3. On new connection, wakes up transparently
# 4. Costs zero compute while idle

Drain coordination (safe shutdown):

# Graceful drain before maintenance/restart
hermes serve --drain

# In-flight conversations complete naturally
# New connections are rejected with a retry-after signal
# Transcripts persisted on drain timeout
# Busy/idle readout for lifecycle orchestration

Production hardening:

  • Default restart_drain_timeout set to 0 to kill systemd crash loops
  • Self-heal from stranded draining/degraded state
  • Suppress home-channel shutdown broadcast on flagged drains
  • Harden dormancy arm-gate against disabled placeholder platforms

8. Relay (Phase 5 / 6)

The relay infrastructure matured significantly for multi-platform, multi-agent deployments:

  • Wake primitive (gateway side) — remote relay can wake a dormant gateway
  • Going-idle / buffered-flip primitive — clean handoff during state transitions
  • passthrough_forward over WebSocket — lightweight proxy for relayed messages
  • Multi-platform-per-agent identity — one agent, multiple messaging platforms, unified identity
  • Per-frame egress — fine-grained control over which messages leave through which channel
  • Stable instance id forwarded at self-provision for reliable tracking
  • Relevance policy declared to the connector — filter noise at the relay layer
  • Delivery-based authorization for relayed events (authorize by delivery, not source.platform)
  • scope_id wire key adoption — purge platform-specific scope terminology

9. Google Vertex AI — First-Class Provider

Vertex AI is now a first-class provider for Gemini models over Vertex’s OpenAI-compatible endpoint. The key breakthrough: Hermes auto-mints and refreshes short-lived OAuth2 access tokens from your service-account JSON or Application Default Credentials — no static API key required.

# hermes.config.yaml
providers:
  - name: vertex-gemini
    provider: vertex
    credentials: /path/to/service-account.json
    model: gemini-2.5-pro
    region: us-central1

  # Or use Application Default Credentials (ADC) — no file path needed
  - name: vertex-gemini-adc
    provider: vertex
    model: gemini-2.5-flash
    region: europe-west4

Why this matters: Regular custom-provider setups with Vertex always died mid-session because tokens expire in ~1 hour. Hermes now handles the full OAuth2 lifecycle — mint, refresh, and retry — transparently. Point it at your service account and it just works.

Salvages & modernizes the original PR #8427 by @slawt.

10. Messaging Platforms — Major Updates

Cron continuations:

  • Cron jobs now support thread-preferred continuation with DM-mirror fallback
  • Flat in-channel continuable cron delivery for Slack
  • Gateway-running check warns on cron create/list if gateway is not active

Platform-specific updates:

Platform Feature
Telegram Configurable command menu + raised default cap so skills stay visible; gate rich draft previews separately; drain general send pool on timeout before retry
Slack Opt-in Block Kit rendering for agent messages; --no-assistant flag for manifest generation
Discord Render reasoning as subtext via -# prefix; configurable display.reasoning_style
WhatsApp Native media delivery (send_video/send_voice/send_document) via Baileys bridge
Teams Native send_video/send_voice/send_document support
Signal AAC voice-note remux + shared markdown formatting
iMessage Photon sidecar upgraded to spectrum-ts v8 with tapback correlation
Raft Gateway setup wizard for new deployments

Adapter migration: Slack, DingTalk, WhatsApp, Matrix, Feishu, Telegram, WeCom, Email, and SMS adapters all migrated to bundled format for faster loading and better versioning.


New Built-in Tools & Commands

Tool / Command Description Usage
web_extract Truncate-and-store web content (replaces LLM summarization, cheaper and faster) web_extract https://example.com
/reasoning full Uncapped thinking tokens — removes the reasoning budget ceiling for deep analysis /reasoning full then your query
llm.oneshot One-shot LLM call via Gateway RPC — fire and forget hermes rpc llm.oneshot '{"prompt": "..."}'
project.facts Expose coding-context project facts via Gateway RPC hermes rpc project.facts
/timestamps Toggle message timestamps in chat history /timestamps
/history Composable history view with search and filters /history keyword
/prompt Compose in $EDITOR — write full markdown prompt, save, and queue /prompt
/journey Interactive memory/skill timeline with in-place edit/delete /journey
/learn Distill reusable skills from directory, URL, or workflow /learn ./path
/moa One-shot MoA prompt through default preset /moa <query>
/goal wait <pid> Park goal loop on a background process /goal wait 12345
ctx.profile_name Session-agnostic profile access in plugins ctx.profile_name
Blank Slate Minimal agent setup mode — opt into everything Config: setup: blank_slate
cloudflare-temporary-deploy Optional skill for quick Cloudflare deployments Skill install
creative-ideation v2.1.0 Expanded creative method library Skill install

Improvements

Core Agent & Tools

  • Concurrent @-reference expansion: multiple @file and @url references now resolve in parallel instead of serially — significantly faster for multi-reference prompts
  • Human-friendly tool labels: all built-in tools now have readable English descriptions, lowering the learning curve
  • HERMES_WRITE_SAFE_ROOT: support for multiple allowed write directories — restrict agent file writes to approved paths
  • Opt-in HTTP/WS body capture: log request/response bodies to an isolated gui_bodies.log (share-excluded, opt-in only)
  • Per-reasoning-model stale-timeout floor: separate timeout detection for streaming vs. non-streaming LLM calls, preventing false positives
  • SIGTERM→SIGKILL escalation: on host-pid termination after grace period, escalate to ensure cleanup

Compression & Sessions

  • In-place compaction: compact a single session without creating a new id; default flipped to true with guard fix
  • Backup expansion: pre-update snapshots now include projects.db and kanban boards for complete state preservation

Providers & Models

  • Krea available via managed Nous Subscription gateway
  • Z.AI endpoint picker (Global/China/Coding Plan) for region-aware routing
  • Ollama-cloud reasoning_effort wiring
  • Removed google-gemini-cli and google-antigravity OAuth providers (consolidation)
  • Honor NOUS_INFERENCE_BASE_URL env override for Nous OAuth
  • Keep Nous auth fresh for idle dashboard/gateway agents (prevents session expiry during inactivity)

Kanban

  • Task lifecycle plugin hooks: claimed, completed, blocked events
  • Typed block reasons with unblock-loop breaker — prevents infinite block/unblock cycles
  • Handoff freshness stamping — tracks when task ownership was last transferred

LSP

  • PowerShellEditorServices language server added — PowerShell diagnostics now available
  • mem0 v3 API + OSS mode + update/delete tools for memory management

Web Dashboard

  • Auto-initiate SSO redirect on unauthenticated load
  • Interactive auth setup guidance on no-provider non-loopback bind
  • Confidential-client OIDC (client_secret) for self-hosted identity providers
  • API key catalogue: all memory-provider keys listed in OPTIONAL_ENV_VARS
  • Custom .env keys: list and add arbitrary environment variables from the Keys page
  • Cron execution fields exposed for monitoring
  • Backup management: import/create/download from the Web UI
  • PTY offload: spawn/close operations moved off the event loop to prevent blocking

Performance

  • Cold start optimization: gateway platform adapters now lazy-loaded; config and plugin manifests parsed with CSafeLoader (libyaml) instead of pure-Python YAML
  • FTS5 write-lock contention: segments merged and indexed to reduce database lock contention during concurrent writes
  • Profile listing: single-pass alias map + skill-count cache + event-loop offload for list_profiles — significantly faster on systems with many profiles
  • Gateway API server: configurable concurrent-run cap prevents DoS scenarios under load

Security & Reliability

Attack Surface Hardening

  • MCP-config persistence attack surface locked down — prevents malicious skill persistence across sessions
  • Cron base_url credential exfiltration blocked — cron jobs can no longer override provider base URLs to intercept credentials
  • Non-reusable sentinel for prefix secrets in file reads — specific patterns that could leak secrets are caught and rejected
  • Slack xapp- token redaction — app-level tokens automatically redacted from logs and diagnostics
  • Browser cloud-metadata floor enforced on all CDP backends (even non-local)
  • Private-network guard re-check after navigation — prevents bypass via redirects
  • /resume and /sessions scoped to caller origin — prevents Insecure Direct Object Reference (IDOR) attacks
  • aiohttp CVE floor set to 3.14.1 across all lazy messaging paths with pin-drift guard

Cron Reliability Wave

  • Fail closed when an unpinned job’s provider drifts — no silent fallbacks
  • Missed-grace jobs run once instead of deferring forever — prevents infinite catch-up loops
  • Ticker survival on BaseException + heartbeat-aware status — cron doesn’t silently die
  • MCP servers layered onto per-job toolsets — each cron job gets the right tools
  • Model-tool path guard + auto-resume loop breaker — prevents runaway tool chains

Windows Reliability

  • Suppress console flashes during gateway operations
  • Harden gateway restarts against edge cases
  • Prefer cmd npm shim on PATH fallback
  • Respawn gateway windowless after GUI update
  • Prefer managed node for WhatsApp/desktop integrations

Reverts (in-window)

  • Cron job storage returned to per-profile (reverts centralized storage from #32117 + #50993)
  • auth.json cloning disabled — duplicating OAuth grants causes sibling revocation
  • Windows terminal-popup PRs rolled back for stability re-evaluation
  • prompt_caching.enabled toggle backed out pending re-evaluation

Breaking Changes

  • verify-on-stop defaults to OFF: one-time v32 migration; skips doc-only edits; disabled for messaging surfaces. To enable:
coding_context:
  verify_on_stop: auto
  • Removed google-gemini-cli and google-antigravity OAuth providers — migrate to Vertex AI provider
  • Adapter migration: messaging platform adapters now bundled — custom adapter paths may need updates

Upgrade

hermes update

For new installations, visit the install guide.


Full changelog on GitHub

← Release Notes