Du zahlst schon für Claude Pro/Max — jetzt kann Hermes es nutzen

Du hast ein Claude Max-Abo und benutzt claude jeden Tag im Terminal. Natürlich willst du Hermes auf demselben Plan: den Agent, der sich über Sessions hinweg Dinge merkt, auf dem Kontingent, für das du schon zahlst. Dann fragt der Setup-Wizard nach einem API-Key, du kaufst metered Credit, um überhaupt durch die Tür zu kommen, und am Monatsende zahlst du für beides — mit zwei getrennten Töpfen an Allowance. Diese unbequeme Lücke hat jetzt eine offizielle Antwort: Richte Hermes auf die offizielle claude-Executable selbst.
Was das Plugin tatsächlich tut
Das Plugin heißt Claude Subscription DirectSDK (Experimental) und ist als claude-subscription-directsdk-experimental installierbar. Es treibt die unveränderte offizielle Claude Code-Executable als request-scoped Modell-Client, sodass die Arbeit auf deinem Claude Pro/Max-Abo läuft — während Hermes seinen eigenen Agent-Loop behält: Tools, Approval-Policy, Compaction, Memory und Skills bleiben alle auf der Hermes-Seite.
Der Name ist etwas irreführend. Trotz „DirectSDK“ spricht die Implementierung direkt das native stream-json-Protokoll und benötigt das Python Agent SDK-Paket nicht. Das Plugin deklariert seine Abhängigkeit von der claude-Binary in plugin.yaml unter external_dependencies, hält aber keine eigenen Credentials — die Authentifizierung gehört zur offiziellen CLI, und das Plugin öffnet, kopiert, refresht oder druckt deren Credential-Dateien nie. Es gibt keinen stillen Fallback auf HTTP plus API-Key.
Was es braucht:
- Hermes Agent 0.21.4 oder neuer (oder
mainab/bei118984d7a02f, die Core-Hälfte in PR #117451). Auf einem älteren Hermes schlägt das Laden des Plugins mit einer klarenFailed to load user provider plugin-Warnung fehl, statt halb zu funktionieren. - Python 3.10+ unter Linux, macOS oder Windows. Der native Run läuft in seiner eigenen Prozessgruppe, und ein Abbruch killt den ganzen Baum, sodass der
node-Child hinter dem npm-Shim einen abgebrochenen Request nie überlebt. - Die offizielle Claude Code CLI, installiert und eingeloggt:
npm install -g @anthropic-ai/claude-code, dannclaude auth login.
Das Plugin ist explizit bei jedem Pfad, auf dem claude fehlt: Beim Laden des Plugins protokolliert es eine Warnung und bleibt registriert, damit das Setup erklären kann, was fehlt; hermes model stoppt mit dem Install-Hinweis und schreibt nichts in die Config; eine Anfrage schlägt sofort mit demselben Hinweis fehl statt mit einem Popen-Traceback.
Installation und Auswahl
# 1) die offizielle CLI (das Plugin speichert keine Credentials)
npm install -g @anthropic-ai/claude-code
claude auth login
# 2) aus dem Hermes-Plugin-Katalog installieren (gepinnt, geprüft)
hermes plugins install claude-subscription-directsdk
# oder direkt von GitHub (folgt main)
hermes plugins install NousResearch/hermes-plugin-claude-subscription-directsdk
# 3) auswählen
hermes model # "Claude Subscription DirectSDK (Experimental)" wählen
Per-Profile-Installationen liegen unter ~/.hermes/profiles/<profile>/plugins/. Das Plugin deklariert kind: model-provider, also importiert die Provider-Discovery es direkt — kein plugins.enabled-Eintrag nötig.
Für einen einzelnen Run:
hermes --provider claude-subscription-directsdk-experimental -m sonnet
Die persistente Konfiguration ist das gewöhnliche Provider-Paar:
model:
provider: claude-subscription-directsdk-experimental
default: sonnet
Zwei Umgebungsvariablen sind in echten Projekten wichtig: CLAUDE_CONFIG_DIR (oder das plugin-seitige CLAUDE_SUBSCRIPTION_DIRECTSDK_CONFIG_DIR), um auf ein separat verwaltetes CLI-Auth-Verzeichnis zu zeigen, und CLAUDE_SUBSCRIPTION_DIRECTSDK_COMMAND für eine Binary außerhalb des PATH. Noch eine Sache, die man wissen sollte: Wenn die Startumgebung ein geerbtes ANTHROPIC_API_KEY, einen benutzerdefinierten Anthropic-Endpoint oder einen Cloud-Backend-Override mitbringt, verweigert der Hermes-Client-Pfad bevor irgendetwas gespawnt wird — der Fehler nennt die konfliktierenden Variablen, ohne ihre Werte zu drucken. Entferne diese Overrides, wenn du OAuth willst.
Ein Hermes-Aufruf, eine Upstream-Anfrage: das Admission-Relay
Das ist der Teil, den es zu verstehen lohnt. Natives Claude Code 2.1.263 kann zusätzliche Generierungen versuchen, selbst mit --max-turns 1 und deaktivierten HTTP-Retries. Unbeaufsichtigt könnte ein einzelner Hermes-Aufruf zwei Upstream-Anfragen bedeuten und damit Nutzung und Kosten still verdoppeln.
Deshalb setzt das Plugin ein request-scoped Relay dazwischen: Es leitet nur die erste Messages-Anfrage weiter und lehnt nachfolgende Versuche lokal ab. Hermes erhält die erste abgeschlossene Upstream-Antwort mit ihrem tatsächlichen Usage und nativen Stop-Reason, und eine blockierte native Recovery verwandelt eine abgeschlossene Antwort nicht in eine Exception — abgeschnittene Streams und Upstream-HTTP-Fehler bleiben Fehler.
Die Qualifikationszahlen sind der Beweis, dass die Admission-Grenze hält: Ein integriertes, subscription-gestütztes Review absolvierte sieben Hermes-Aufrufe mit exakt sieben Upstream-Anfragen, zwölf Tool-Ausführungen und zwölf dauerhafte Tool-Ergebnisse. Der Kontext wuchs von 138.498 auf 165.697 Token, die Cache-Reads der Folgeanfragen lagen im Schnitt bei 97,13 %, und das native Accounting meldete 0,8793728 $ als Listenpreis-Äquivalent.
Die Isolation ist auf dieselbe Weise gebaut: Jedes chat.completions.create startet einen frischen Prozess in einem privaten temporären Verzeichnis mit deaktivierten nativen Tools, Skills und Setting-Quellen; MCP gibt nur das aktuelle Hermes-Tool-Inventar bekannt, mit inerten Callbacks, und die Ausführung wird durch das native dontAsk verweigert; System-Prompt und Generation-Felder reisen über private Dateien, um das Längenlimit des OS pro Argument zu umgehen. Authentifizierungs- und Identitätsfelder werden nie ersetzt.
Abrechnung: Listenpreis ist keine Rechnung
Die offizielle Formulierung ist hier bewusst vorsichtig, und es lohnt sich, sie wörtlich im Kopf zu behalten. Wenn jedes gemeldete Modell costBasis: list trägt und die Summe endlich und nicht-negativ ist, verbucht Hermes diesen Betrag als geschätztes API-Listenpreis-Äquivalent — es ist nicht deine Abo-Rechnung oder eine Extra-Usage-Abbuchung, es wird nie als kostenlos oder inklusive markiert und nie durch geratene Alias-Preise ersetzt. Fehlendes oder ungültiges finales Accounting bleibt unbekannt, und eine abgebrochene Anfrage darf nicht als kostenlose oder Token-freie Arbeit gelesen werden.
Was sich auf zwei Sätze reduziert: Abo-Anspruch und Extra-Usage-Einstellungen gehören zu deinem Konto und dem nativen Dienst — deaktiviere Extra Usage im Konto, wenn du keine Overage-Abrechnung willst; und eine native Listenpreis-Schätzung ist kein Beweis für eine Abo-Abbuchung.
Zwei echte Caching-Fallstricke (und wie sie behoben wurden)
Bei jedem Design, das eine CLI einwickelt, ist Prompt-Caching die Stelle, an der es schiefgeht. Das Plugin dokumentiert zwei Long-Context-Qualifikationen, und sie lohnen sich zusammen gelesen.
Erstens: Eine echte Sonnet 5-Review-Aufgabe schickte 187.049 Input-Token in ihrer ersten Anfrage, und die nächste Tool-Runde las nur 6.989 von 190.840 Input-Token aus dem Cache (3,66 %) und schrieb 183.849 Token neu in den Ein-Stunden-Cache. Identical-Request-Tests bei 179K Token hatten bestanden — sie haben diese Replay-Grenze schlicht nie berührt.
Die Ursache war der native Token-Budget-Reminder, der in den Kontext injiziert wird: Hermes besitzt die Budgets und rekonstruiert diesen Reminder beim Replay über die Cache-Grenze hinweg, sodass das Präfix nicht mehr stabil blieb. Die Lösung war, den nativen Reminder zu deaktivieren — keine zusätzlichen Cache-Marker, keine TTL-Änderung. Danach: Ein abgeschlossenes Review mit sieben Aufrufen und zehn echten Tool-Ausführungen ließ den Kontext von 187K auf 212K wachsen, wobei die Folgeanfragen im Schnitt 97,99 % Cache-Reads hatten (85,45 % inklusive Kaltstart) und 1,1030034 $ im nativen Listenpreis-Accounting.
Lies die beiden zusammen, und die Erkenntnis ist: Der Cache lässt sich zum Laufen bringen, und Workloads über etwa 187K Kontext lohnen es, vorher gemessen zu werden. Beachte außerdem, dass das Sonnet 5-Ergebnisse sind — Fable 5.1 erforderte auf demselben Konto bezahlte Usage-Credits und wurde nicht getestet.
Grenzen und Vorbehalte
- Das ist ein Review-Build, keine Aussage über volle Parität oder Produktionsreife. Natives Claude Code 2.1.263 ist die qualifizierte Version; Replay-Bestätigungen und Extra-Body-Verhalten sind version-sensitive Schnittstellen.
- Tool-Namen werden über
mcp__hermes__gemappt, und die Originalnamen müssen eindeutige ASCII-Identifier aus Buchstaben, Ziffern, Unterstrich und Bindestrich mit höchstens 50 Zeichen sein. - Text wird inkrementell gestreamt, aber ein vollständiger Tool-Batch wird erst veröffentlicht, nachdem der Assistant-Turn abgeschlossen ist (natives
message_stop, finales Usage, Prozess-Exit). Danach wendet Hermes seine eigenen Hooks, Approvals, Tools und Persistenz an. - Die native Autokompaktion ist deaktiviert, damit Hermes die Compaction besitzt; das ist nicht dasselbe wie Parität für jede History-Transformation oder jedes cross-model signierte Replay.
- Auxiliary- und Fallback-Routing bleiben host-owned: Konfiguriere sie explizit, wenn sie ebenfalls das Abo nutzen sollen. Dieser Provider ändert deine anderen ausgewählten Provider nicht still.
Die Kurzfassung
Wenn du sowohl ein Claude Pro/Max-Abo als auch Hermes hast, verwandelt dieses Plugin „einen zweiten Topf an API-Credit kaufen“ in eine Wahl: drei Installationsbefehle, den Provider auswählen, und der Rest ist das native Protokoll der offiziellen CLI, das die Arbeit macht. Nur zwei Dinge brauchen wirklich deine Hand — die Extra-Usage-Einstellung im Konto und deine eigene Umgebung (geerbte Overrides wie ANTHROPIC_API_KEY entfernen, damit der Client-Pfad beim Start nicht verweigert). Um zu sehen, welches Release die Core-Hälfte trägt, von der das Plugin abhängt, lies was v0.21.4 tatsächlich ausgeliefert hat; für die tägliche Modell-Arbeit siehe die hermes model Befehl-Referenz und Provider-Plugin-Hooks.