Hermes Agent Lab

Hermes Agent Blog — Practical Guides & Insights

Latest articles and insights.

hermes peer: Let Your Agents DM Each Other Across Profiles and Machines

Your research agent found the answer — now you copy-paste it into your coding agent's window by hand. hermes peer (shipped in v0.21.0) lets any Hermes agent message any other agent by handle, across profiles and gateways: register a peer gateway, then hermes peer dm spark "disk status?" delivers into the remote agent's canonical Bot Chat and prints the reply. Long tasks run asynchronously with hermes peer run + idempotency keys, and exit codes stay script-friendly.

Read more

hermes approvals test: Ask the Approval System Before You Run That Command

Ever wondered whether a command will trip Hermes' approval gate — without actually running it? hermes approvals test (v0.21.0) dry-runs any command against the real guards: hardline blocklist, your approvals.deny rules, dangerous-pattern detection, allowlist, and yolo/off bypass. It prints the verdict, the matching rule, and the normalized command trace, and exits 0 (allow), 2 (ask), or 3 (deny). Bonus: hermes approvals suggest mines your approval history into allowlist proposals.

Read more

Cron Jobs That Remember: Memory and Continuity for Your Scheduled Agents

Your 9am briefing job has told you the same three items for a week, because every run starts from zero — scheduled jobs were goldfish. v0.21.0 changes that: cron agents now load and update persistent memory like any other agent, the --continuity flag injects the previous run's output into the next (so a monitor can dedupe and continue where it left off), every job gets a durable notepad via hermes cron notepad, and monitor-mode jobs skip the LLM entirely when nothing changed.

Read more

skills.create_dir: Make New Skills Land Where Your Config Says — Not Where the Prompt Gets Ignored

Telling your agent 'create skills in /opt/brain/skills' in a prompt is a suggestion; the skill_manage tool writes to ~/.hermes/skills/ and no system prompt can out-argue a file path. The new skills.create_dir config key (PR #100377, merged Sep 1) routes agent-created skills to any directory — and every instruction string, tool schema, and doc that names the creation path dynamically renders your configured directory, so config, tool, and prompt finally agree.

Read more

Your Cron Jobs Died Silently? One Command Gives the Whole Fleet a Checkup

Your scheduled jobs may have been quietly dead for days without you knowing — cron list and cron status both look "normal". The new hermes cron doctor command checks every job in one pass: failed runs, failed deliveries, overdue next_run_at, missing scripts, and dead workdirs, exiting 1 when anything needs action. Merged August 31 (PR #99479), currently on main only.

Read more

Multi-Profile Cron Finally Stops Cross-Talking: Every Profile Delivers via Its Own Bot

If you run Hermes with multiple profiles, you may have seen it: profile B's cron result arrives from profile A's bot — or fails with "Bot not in chat" entirely. A fix merged August 31 (PR #99375) makes delivery identity follow the job's owning profile: each profile sends via its own bot, its own credentials, and its own home chat, and hermes -p X cron status stops lying.

Read more

Status Bar Upgrade: Cache-Hit Rate, Latency, and Tokens/sec at a Glance

Hermes' CLI status bar gained three new metrics: prompt-cache hit rate (◎), rolling average latency (◷), and output tokens per second (↑) — and every field can be toggled via display.status_bar.fields. The cache-hit rate is a direct line to your API bill: more hits, much lower cost. Merged August 30 (PR #98250), currently on main only.

Read more

"Session Not Found"? state.db Now Detects, Quarantines, and Heals Itself

Hermes stores all session history in state.db. In the past, when the database got corrupted you only saw a baffling "session not found" — and the system kept writing into the broken database, making the damage worse. A batch of fixes merged August 30-31 (PR #99513 and siblings) teaches Hermes to handle corruption properly: detect it, quarantine the bad file, heal what can be healed, and fail loudly instead of pretending everything is fine.

Read more

Search Every Hermes Command and Skill in Telegram: The @botname Inline Picker Bypasses the 60-Slot Menu Cap

Telegram hard-caps the / command menu (100 per scope, ~4KB payload; Hermes defaults to 60 slots), so skill commands fall off once you install enough of them. A feature merged August 30 bypasses the cap entirely: type @yourbotname + a keyword in any chat and get a live, searchable picker over every command and installed skill — computed per keystroke, paginated 50 at a time, one tap sends the command into the chat.

Read more

No More 5-Minute Approval Stalls for Unattended Hermes: The New approvals.unattended_mode Key

Webhook, msgraph_webhook, and api_server sessions used to block for the full 60-300s approval timeout when they hit a dangerous command — because no human exists to answer /approve on those surfaces. A fix merged August 30 adds approvals.unattended_mode (default deny) so those sessions fail instantly with a clear reason instead of stalling, plus single_query_mode for hermes chat -q one-shot sessions.

Read more

Long-Lived Sessions Finally Catch Up: Compaction Now Always Rebuilds the System Prompt

Hermes used to restore a long-lived session's system prompt byte-for-byte from its snapshot at every compaction — so guidance improvements, new prompt blocks, and tool renames never reached a session that ran for months. A change merged August 30 (PR #98426) makes the compaction commit always run the live prompt builder: byte-equal output keeps the original object (prefix caches intact), a drifted output wins and logs the diff.

Read more

Context Compression Gets 5x Faster: One Auxiliary Request Instead of 19

Old lean compaction called the auxiliary model once per history chunk to build digests — up to 28 sequential calls on a big session, turning compaction into 7-11 minute stalls on slow auxiliary routes. A change merged August 30 (PR #98628) deletes the digest loop: one auxiliary request per compaction attempt. Measured on a real 500K-token transcript: 196.5s to 39.6s, and ~11K fewer tokens after compaction.

Read more

Give Hermes a time machine: search the web as it was with BackSearch

Imagine asking an LLM to predict next month’s news and realizing it peeked at today’s headlines. BackSearch by General Reasoning freezes the news archive so searches only return documents crawled on or before a date you choose. An official standalone Hermes plugin (NousResearch/hermes-plugin-backsearch, v1.0.0, announced Aug 29) adds two tools — backsearch and backfetch — gated on OPENREWARD_API_KEY, with zero tool footprint when the key is absent. This post covers the concept, install steps, tool reference, and use cases for leak-free forecasting backtests.

Read more

Three new model providers: Ramp Router, Nebius Token Factory, and Tencent TokenPlan

On August 29 Hermes merged three new model providers: Ramp Router (router.com) — one OpenAI Responses-compatible endpoint that routes to many upstreams with server-side fallbacks and spend controls; Nebius Token Factory — Nebius pay-as-you-go inference; and Tencent TokenPlan — the Tencent Cloud Hunyuan token-plan subscription on an Anthropic-compatible endpoint, which also brings the hy4-preview model into the official catalog. PRs #97915/#97916/#97917 are on main, not yet in a release.

Read more

Three new official optional skills: questionnaires, setup wizards, and a plan interrogation

On August 29 Hermes landed three new optional skills at once: decision-questionnaire turns a decision only one person can make into an async questionnaire, setup-wizard-generator produces interactive bash wizards for human-only setup steps, and grill-me v2.0.0 upgrades to frontier-rounds interviewing that interrogates every unexamined assumption in your plan. All three are Hermes-native ports from the 240k-star mattpocock/skills repo, installable with a single hermes skills install.

Read more

Task lists can nest now: Hermes todo grows subtasks

When you hand Hermes a complex job, it keeps a todo list in the session to track its own progress. That list used to be flat — "package the release" and "make sure tests pass" could only sit side by side. PR #97921 (merged Aug 29) adds a parent field to todo items: tasks can nest into trees, surfaces render the indentation automatically, and the whole feature costs only ~45 tokens on the cached tool schema.

Read more