Hermes delegation earns an 8 out of 10 from me: the best-documented subagent system I've read, held back by durability and a few docs that contradict each other.

That score is my editorial call from the official docs, the advanced-delegation plugin README and the v0.22.6 release notes, rated criterion by criterion below.

No benchmarks here, just what the documentation says the feature does and where it falls short.

If you'd like my team to judge whether it suits your setup, book a free SEO strategy session and we'll go through it live.

The Hermes Delegation Scorecard

CriterionRatingWhy
Context isolation9/10Each child gets a fresh conversation and only its summary returns to the parent.
Parallel batches8/10One call runs a whole batch behind a single handle, with a configurable cap.
Model routing9/10One global worker model by default, or named routes and profiles through the official plugin.
Failure handling9/10Missing backends and bad routes fail loudly with the fix named, never a silent switch.
Monitoring and steering9/10Live roster, steer and stop controls, and a readable log per task.
Structured output8/10output_schema validates answers and keeps the raw text when validation fails.
Durability5/10A restart doesn't resume a running child; durable work needs cron.
Docs consistency6/10Two pages disagree on concurrency, depth and one blocked tool.
Mode switching (v0.22.6)9/10/delegation choices are now saved and apply cleanly from the next session.

The overall 8 is the plain average of those nine ratings: 72 points across nine criteria.

Context Isolation: 9/10

The delegation docs describe delegate_task as spawning child agents with isolated context, the parent's toolsets and their own terminal sessions.

The parent only ever receives the final summary, which keeps long investigations out of the main context window.

The docs also bake in a useful exception: children inherit the workspace's project context files, from .hermes.md through AGENTS.md and CLAUDE.md to .cursorrules.

That means a child in a repo follows the repo's conventions without being told.

It loses a point because isolation cuts both ways: the child knows nothing you didn't write into goal and context, and a lazy brief wastes the run.

Parallel Batches: 8/10

A tasks array runs the children in parallel and, by default, returns one consolidated message when they've all finished.

Results come back sorted by task index, whatever order they finished in.

Opting into delegation.independent_completions: true makes each task or group report as it completes.

The docs explain why that's off by default: a 15-task call can become up to 15 wake-ups for the parent.

I like that a batch over the cap returns a tool error instead of quietly dropping tasks.

The missing points go to the confusing default, which I cover under docs consistency.

Model Routing: 9/10

The built-in default backend uses delegation.model and delegation.provider for every child, or the parent's model when those are empty.

The docs' advice is sound: plan on a frontier model, execute on an inexpensive one, because the children burn most of a run's tokens.

The weakness of default is that it's global, so every child in a batch runs on the same model.

The official advanced-delegation plugin fixes that with two strategies, model_map for named options like fast and deep, and profile_routes for running a child as one of your profiles.

It also adds hermes delegation config and the /delegation slash command.

The model sees only the names and descriptions you wrote, so it can't invent a route or read a key.

For a full walk through the plugin itself, see my Hermes advanced delegation rating.

๐Ÿ”ฅ Want a tested delegation setup instead of building one from the docs?

Inside the AI Profit Boardroom you get step-by-step video trainings, the installable Agent OS with Hermes ready to go, four coaching calls a week and 3,400+ members who've already tuned their worker models.

โ†’ Join the AI Profit Boardroom

Failure Handling: 9/10

This is the strongest part of the design.

If the selected backend is missing or can't run, no subagent is spawned at all, and the error spells out which backend broke and how to repair it.

Inside a batch, one unroutable task is refused alone with status: "error" and route.refused: true while the others carry on.

A failed child is reported in a single readable line, โš ๏ธ Subagent failed, in the CLI tree and as a chat notice on gateway platforms even with tool progress off.

The parent's result entry carries status: "failed" and the error text, so the model can retry or re-route.

Routed results also include a route object, so you can confirm which option or profile handled a task and which model served it, and fallback_activated: true flags any fallback.

Monitoring And Steering: 9/10

The classic CLI opens a live roster with Ctrl+T or F6; the TUI has /agents; Desktop has a Subagents panel with Steer and Stop.

The parent agent can steer its own children through delegate_task itself, with list, steer and stop actions.

Steering is honest about delivery: queued isn't delivered, and a steer that missed the finish shows up as missed_steer.

Each task also gets an append-only log under cache/delegation/live/, kept for 7 days.

Messaging chats get a thoughtful touch too: delegation.gateway_mode defaults to auto, which joins children inside the turn on chats with interim messages off, so the user gets one finished answer instead of a "working on it" line followed by a second message.

Set it to inline or background if you want one behaviour everywhere.

Structured Output: 8/10

output_schema turns a child's answer into JSON that's validated against your schema.

A failure triggers exactly one correction turn, and a second failure still keeps the work, with schema_valid: false, the errors and the raw text.

That design respects long tasks: the docs point out you don't want to re-run a job that may have taken an hour.

It drops a point only because you have to keep schemas forgiving to avoid tripping the retry.

Visual tasks are covered as well: a task can forward up to 8 images, and a vision-capable child sees them as real pixels on its first turn.

If anything in that image plumbing fails, the docs say the spawn falls back to the plain text goal rather than breaking.

Durability: The Weak Spot At 5/10

Background delegation isn't durable execution, and the docs say so in a warning box.

Completed results are stored in the profile's state.db and restored after a restart, which is good.

But a child that's still running when the process dies isn't resumed; its attempt is marked unknown.

Ctrl+C, Esc and the Stop button don't cancel a background batch, while /stop or closing the session does.

For anything that must survive, the docs send you to a cron job or a background terminal process with notify_on_complete.

My Hermes cron job review covers that side.

Docs Consistency: Where The Pages Disagree At 6/10

Three conflicts stood out across the official pages.

Concurrency: the delegation page says up to 10 children by default, while the configuration reference shows max_concurrent_children: 3.

Depth: the delegation page says max_spawn_depth has no upper ceiling, while the configuration reference says it's clamped to 1-3.

Tools: the delegation page says both roles keep execute_code, while the patterns guide lists it among the tools leaf children can't call.

None of these will break a setup if you set the values explicitly.

Set delegation.max_concurrent_children and delegation.max_spawn_depth in your own config and test execute_code in a child before relying on it.

Mode Switching After v0.22.6: 9/10

The v0.22.6 release on 2 November 2026 includes "/delegation choices saved for the next session".

According to the commit, the old switch was session-only and changed routing without changing the cached tool schema.

Now /delegation default saves delegation.backend to config.yaml and takes effect from /new.

/delegation <backend> --now also rebuilds the running chat's tools at its next turn, for one prompt-cache miss.

A task sending a parameter the current backend doesn't accept is refused with the backend, the parameter and the fix named.

That's a careful trade between cost and predictability, and it removes a real source of confusion.

Strengths

  • Only summaries return, so the parent's context stays lean.
  • Loud, specific failures instead of silent fallbacks.
  • Per-task routing through the official plugin, with the real route reported on every result.
  • Opt-in worktree isolation gives each coding child its own git branch, pruned when empty.
  • No wall-clock timeout by default, with a heartbeat monitor catching children stuck for 450 seconds idle or 1,200 seconds inside a tool.

Limits

  • Children can't ask the user anything, write memory, send messages or schedule cron jobs.
  • Nesting is off by default; it needs role="orchestrator" and a raised max_spawn_depth.
  • A one-shot run can spawn only 2 children in total by default.
  • Profile routes share that profile's credentials and terminal policy, so list them carefully.
  • The Desktop app from the installer doesn't get v0.22.6 until the next bundled release.

Who Should Use It, And Who Shouldn't

Use it if you run research fan-outs, code reviews or multi-file refactors that split into independent pieces.

Use it if you care about cost, because the planner-and-cheap-worker split is easy to set.

Skip it for single tool calls and mechanical pipelines; the docs say execute_code is the better fit there.

Skip it for work that must survive a restart, unless you pair it with cron.

And skip profile routes if your profiles hold keys you wouldn't share.

Teams with deep multi-stage work should budget carefully before raising depth: the docs warn that three levels of three children multiply out to 27 leaf agents running together.

๐Ÿ“ž Want my team to judge where agents fit your workflow? Book a free SEO strategy session and we'll look at your process and show you where AI agents and SEO make a difference. โ†’ Book your free strategy session

Final Verdict

Hermes delegation is a mature, honest subagent system: it tells you exactly what ran, what failed and why.

The v0.22.6 change to /delegation makes mode switching predictable, and the official plugin gives real per-task routing.

Durability and a few inconsistent defaults are the reasons it isn't a 9.

Set your limits explicitly, keep durable work in cron, and it's an easy recommendation.

Want the trainings and the Agent OS that runs it? Join the AI Profit Boardroom.

Also On Our Network

FAQ: Hermes Delegation Verdict

What's the biggest weakness of Hermes delegation?

Durability. A child still running when Hermes restarts isn't resumed and is marked unknown, so long work that must finish belongs in a cron job.

Is the default concurrency 3 or 10?

The official pages disagree: the delegation page says 10 and the configuration reference shows 3. Set delegation.max_concurrent_children yourself.

Can the model pick any model it wants for a child?

No. With the advanced-delegation plugin it can only choose from the option or profile names you configured, and it never sees the provider, model or key fields.

What did v0.22.6 change for delegation?

/delegation choices are now saved to config.yaml and apply from the next session. Adding --now rebuilds the current chat's tools at its next turn.

๐Ÿ“บ Video notes + links to the tools ๐Ÿ‘‰

๐ŸŽฅ Learn how I make these videos ๐Ÿ‘‰

๐Ÿ†“ Get a FREE AI Course + Community + 1,000 AI Agents ๐Ÿ‘‰

About Julian

I'm Julian Goldie, an SEO entrepreneur, author and founder of the AI Profit Boardroom, which has 3,400+ members.

I help business owners scale with AI agents, automation and SEO.

  • I've built a 7-figure SEO and link building agency, Goldie Agency, with a team of 70+ SEO experts.
  • I've grown a YouTube channel to 400,000+ subscribers.
  • I wrote "Link Building Mastery".
  • My Udemy courses have taught over 29,000 students.

โ†’ Get my best AI training inside the AI Profit Boardroom

Run hermes update, set your concurrency and depth by hand, and if you want a second opinion on your setup, book a free strategy session to talk through Hermes delegation with my team.