Inside the new Hermes plugin, the Hermes Claude CLI connection is the entire transport: Hermes talks to the official claude executable over stream-json, the CLI does the talking to Anthropic on your Claude subscription, and a local admission relay guarantees that each Hermes turn becomes exactly one upstream request. That single sentence is the whole architecture. Everything else on this page is the engineering that makes it true, and it comes straight from the plugin's pinned README (v0.3.0, published 22 September 2026) plus my walkthrough video from the same day.
📺 Watch: New Hermes + Claude Plugin Update is AWESOME!
🔥 Get the Agent OS as a free bonus: AI Profit Boardroom members get the full Agent OS zip, prompt libraries, daily tutorials and weekly live coaching calls. → Get inside
Quick scope note before we go deep. This page is the transport deep-dive. The big-picture overview lives in my Hermes plus Claude overview, and the click-by-click install steps live in the setup guide. Here we stay on one question: what does the claude CLI actually do once Hermes starts driving it, and how does the plugin keep it honest?
Hermes Claude CLI: The Pipeline in One Picture
In my video I describe the flow in one line: Hermes goes to the plugin, and the plugin goes to the Claude CLI. That is genuinely the shape of it. Hermes runs its own agent loop with its own tools, approvals and compaction. When that loop needs a model completion, it hands the request to the plugin. The plugin launches the official Claude Code executable — completely unmodified, the same binary everyone gets from npm install -g @anthropic-ai/claude-code — and speaks to it over stream-json, the CLI's native streaming format. The CLI authenticates against your subscription and makes the real call to Anthropic. Tokens stream back down the same pipe, and Hermes carries on with its loop.
One naming wrinkle worth clearing up: the provider is called DirectSDK, but the implementation speaks native stream-json directly and does not require the Python Agent SDK package at all. The README is explicit about that. The claude executable is treated as a request-scoped model client — it exists to carry one request, and then it is gone.
If you are building agent workflows on plumbing like this, that is exactly what we do inside AI Profit Lab — 3,000+ members running Hermes, Claude Code and full agent stacks together, at $69/mo locked in (it normally sits at $110).
The CLI Checks at Every Seam
The plugin assumes nothing about your machine. It checks for the claude executable at four separate seams, and each seam fails in a deliberately different way, per the README's own table:
| Seam | If the CLI is missing |
|---|---|
| Plugin load | One warning, and the provider stays registered so setup can still explain what to install |
| Running hermes model | The flow stops with an install hint and writes nothing to your config |
| Desktop and TUI pickers | The pinned model catalog is still listed so you can see what would be available |
| Request time | An immediate failure with the install hint — never a traceback |
The fix at any seam is the same one-liner: npm install -g @anthropic-ai/claude-code. If your claude binary lives outside PATH — a custom build, a locked-down server — point CLAUDE_SUBSCRIPTION_DIRECTSDK_COMMAND at it and the plugin uses that instead.
📺 Watch: ChatGPT Codex Super App + Paperclip + Hermes + Claude Design
A Fresh Claude Process for Every Request
Here is the part most wrappers get wrong and this plugin gets right: process hygiene. Every request starts a brand-new claude process in a private temporary directory. Nothing persists between turns — no session buildup, no leaked state, no stale files on disk.
Each process also runs in its own process group, and that boring-sounding detail is what makes cancellation clean. Because the whole tree lives in one group, cancelling a request kills everything at once — including the node child that the npm shim spawns underneath the claude command. The README calls this out directly: the node child never outlives a cancelled request. Both POSIX and Windows are covered, with CI running on Linux, macOS and Windows to keep it that way.
There is a read-idle timeout too: 180 seconds by default, resetting every time output arrives. A long, healthy stream never trips it, while a genuinely hung process gets reaped instead of wedging your Hermes session.
The One-Request Guarantee, Explained Plainly
This is the clever part, so take it slowly. Native Claude Code is an agent in its own right, and left alone it can attempt extra generations on its own initiative — follow-up calls you never asked for. If one Hermes turn is going to cost exactly one request on your subscription, something has to physically stop those extras.
That something is a request-scoped loopback relay. For every request, the plugin binds an ephemeral loopback port with a random per-request route and points the CLI's API traffic at it. The relay forwards only the first Messages request upstream. Any later attempt from that same CLI process is rejected locally and never leaves your machine. Hermes then receives the first completed upstream response with its actual usage numbers and its native stop reason intact.
Two security details from the README are worth repeating:
- The relay route is random per request, so nothing else on your machine can stumble into it.
- Authorization headers pass through memory only — never logged, never persisted.
The result is a guarantee you can actually reason about: one Hermes turn, one upstream request, zero invisible extras on your quota.
📺 Watch: Paperclip + Hermes + OpenClaw + Claude is INSANE!
What Stays Hermes-Owned
Because Hermes already has an agent loop, the plugin strips the CLI down to a pure model client. Native tools, skills and setting sources are disabled. MCP is used only to advertise Hermes' current tool inventory with inert callbacks — the model can see the tools and plan with them, but the CLI can never execute one, because every real call and every approval happens back inside Hermes. Native autocompaction is off as well, because Hermes owns compaction, and two compactors fighting over one conversation helps nobody.
The most interesting disable is the native token-budget reminder. That little nudge quietly changes the prompt between turns, which breaks prompt caching. Switching it off took follow-up cache reads from a 3.66% worst case to about 98% on the plugin's qualification runs — the README's numbers, not mine. On a subscription, that one fix is the difference between a transport that burns your allowance and one that respects it. If you like seeing agent loops measured on exactly this kind of efficiency, Goldie Bench is where I run those comparisons, and my Gauntlet loop breakdown shows where a loop like Hermes' genuinely earns its keep.
History Replay in Plain English
A fresh process per request raises the obvious question: if the claude process dies after every turn, how does the model remember your conversation? Replay. Each turn, Hermes replays the canonical conversation into the fresh process. Historical frames are marked don't-query and receive zero-turn acknowledgments — the CLI ingests them without touching the API — and only the final frame actually queries the model. A versioned envelope carries it all, preserving ordered assistant messages and signed thinking, so nothing about the conversation's integrity is lost between processes. From the model's perspective, the chat never ended. From your machine's perspective, every turn starts clean.
Models and Metering Through the CLI
Model routing rides the same pipe. The short names sonnet, haiku, opus and fable resolve to pinned routes, and the big models — Sonnet 5, Opus 5, Opus 4.8 and Fable 5.1 — get the native 1M-context selection automatically, while Haiku 4.5 stays at 200K. That headroom is real: in the README's probe, the 1M Sonnet route accepted 902,783 actual input tokens in a single request.
Metering is the question everyone asks, and the README answers it with a measurement rather than a promise: per their September 9 testing, subscription metering through the plugin matches claude -p exactly. In practice that worked out to roughly 60% of the interactive TUI's throughput per 5-hour window — partially offset because Hermes sent about 0.6x the tokens on identical tasks. A leaner loop simply says less.
I run this daily. My profile is named Claude Opus, it drops straight into my Agent OS and existing workflows — the same stack from my Agent OS guide — and the whole setup took me about three minutes. If you want an agent stack like this mapped onto your own business, book a free strategy session and we will plan it together.
The Short Caveat
Be sensible about this bit. The plugin carries an Experimental label, and Nous discloses the billing model plainly: usage draws on the Agent SDK allowance and inherits whatever account the CLI is signed into with claude auth login. Community members have also asked how Anthropic's Terms treat subscription access through third-party agents. My advice from the video: read Anthropic's current Terms yourself before you connect anything. The full picture — accounts, allowances, the terms discussion — lives on my Hermes Claude auth page.
Hermes Claude CLI FAQ
Do I need the Agent SDK installed?
No. Despite the DirectSDK name, the plugin speaks the CLI's native stream-json format directly and does not require the Python Agent SDK package. The only runtime dependency is the official claude executable itself — installed globally through npm, or pointed to with CLAUDE_SUBSCRIPTION_DIRECTSDK_COMMAND when it lives outside PATH.
Why does Hermes spawn a new claude process each turn?
Hygiene and predictability. A fresh process in a private temporary directory means no state leaks between requests. A process group per request means cancellation kills the whole tree instantly. History replay then restores the full conversation each turn, so you get the reliability of a stateless transport with the continuity of a stateful one — tested in CI on Linux, macOS and Windows, per the README.
Does the CLI run its own tools?
No. Native tools, skills and setting sources are all disabled, and MCP shows the model only Hermes' current tool inventory through inert callbacks. The model can plan tool calls, but execution and approval always happen inside Hermes. In this pipeline the claude process is a model client, nothing more.
Where This Goes Next
The transport is solved: one turn, one process, one request, honest metering. What you build on top of it is the part that pays. That is what we work on every week inside AI Profit Lab with 3,000+ builders, and if you would rather shortcut straight to a plan for your business, grab a free strategy session. Bring a real workflow, and we will wire Hermes and the Claude CLI into it properly.











