<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;600;700&display=swap">

rafal@arasz:~$cat blog/hermes-agent-review.md

Hermes Agent: A Developer-First AI Agent with Deep Integration Hooks

Updated

Correction, 2026-08-15. The comparison table below carries this article's argument, and its Claude Code column no longer holds. It was accurate on 2026-07-15, when this published. Claude Code has since gained an on-demand Skill system: a large catalog reaches the model as one-line descriptions, and a skill's body loads through a tool call only when a task matches it. That is the same progressive-disclosure shape the article credits to Hermes alone. It has also gained a full lifecycle hook surface, so "Limited" is no longer a fair reading. Two downstream claims fall with those cells. The "~60% context reduction" figure and the chart under it measure on-demand loading against a CLAUDE.md that loads every session, and Claude Code does not work that way now. The Tip calling the skill system "the biggest paradigm shift" coming from Claude Code no longer describes the move either. The rest of the article holds. delegate_task and subagent composition are still accurate, and the multi-provider argument is untouched by any of this. Hermes did not get worse. Claude Code caught up.

How it compares to Claude Code

I have been running Hermes Agent (by Nous Research) alongside Claude Code for several months. Here is what I learned about its strengths, trade-offs, and why it became my primary agent for project work.

Claude Code is excellent at raw coding — fast completions, solid reasoning, tight Anthropic model integration. Hermes is built differently: it is designed as a customizable agent platform rather than a coding-first tool.

AspectClaude CodeHermes Agent
FocusRaw coding speedCustomizable agent workflows
ModelsAnthropic onlyAny OpenAI-compatible provider
Hook systemLimitedFull lifecycle hooks
Skill systemCLAUDE.md (every session)YAML frontmatter (on-demand)
Context efficiencyLoads everything each sessionLoads only relevant skills
IDE integrationTight (VS Code, Cursor)CLI-first

The hook system in detail

This is where Hermes pulls ahead. Claude Code has limited hook points for customizing agent behavior. Hermes exposes hooks at every stage of the agent lifecycle:

  • Update prompts dynamically: A user_prompt_hook can inject project-specific context before each user message.
  • Run scripts on events: session_start_hook, stop_hook, drift_notice_hook — each fires at a specific lifecycle point.
  • Compose agent workflows: The delegate_task tool lets you spawn subagents with isolated context, each inheriting your hooks and skills.
yaml
# Inject project context before each user message
user_prompt_hook:
  script: inject-project-context.sh

# Auto-setup on session start
session_start_hook:
  script: setup-dev-env.sh

Token-friendly skill design

Hermes skills follow a specific structure optimized for token efficiency:

  • YAML frontmatter with name, description, and trigger conditions — the agent reads this to decide if the skill is relevant before loading the full body.
  • Markdown body with numbered steps, exact commands, pitfalls, and verification steps — no verbose prose, no padding.
  • Linked files (references, templates, scripts) load on demand, not upfront.
markdown
---
name: tdd-workflow
description: Enforce test-driven development cycle
triggers:
  - "implement a feature"
  - "fix a bug"
---

# TDD Workflow

## RED — Write a failing test
1. Write the smallest failing test
2. Run: `npm test` — confirm it fails

## GREEN — Make it pass
3. Write the minimum code to make it pass
4. Run: `npm test` — confirm it passes

## REFACTOR
5. Clean up without changing behavior
6. Run: `npm test` — confirm it still passes

Hermes Agent Documentation — the skill authoring guide is worth reading.

Integration with ai-badger

ai-badger and Hermes were developed in tandem. The .ai-badger/config.json structure maps directly to Hermes concepts: persona routing becomes skill dispatch, invariants become always-loaded context, and task orchestration uses delegate_task for parallel subagents.

The result: you write project knowledge once in ai-badger format, and Hermes executes it natively. No translation layer, no config duplication.

When to use which

ScenarioBest fitWhy
Fast one-shot codingClaude CodeAnthropic model quality, tight IDE integration
Customizable workflowsHermesHook system, skill composition
Multi-provider flexibilityHermesAny OpenAI-compatible provider
Project knowledge managementHermesSkills, invariants, persona routing
Architecture decisionsClaude CodeOpus/Fable for complex reasoning
Cost optimizationHermesRoute cheap models for implementation

I use both — but Hermes handles the complex, multi-step project work where context management and agent customization matter more than raw completion speed.

Pitfalls

  • No IDE integration equivalent to Claude Code VS Code extension
  • Terminal rendering bugs in some environments
  • Requires more initial setup than Claude Code — the payoff comes at scale
  • Anthropic model lock-in is a feature if you want the best models

Hermes loads only relevant skills, reducing context overhead by ~60%.

# loading chart…

Hermes Agent Documentation