Warum Hermes für deinen Run 0,00 $ gemeldet hat

Der Run ist durch, du wirfst einen Blick auf die Statusleiste und liest in der Cost-Zeile: $0.00. Oder n/a. Die ganze Zeit lief der Run über deinen eigenen OpenAI-Key, es sind offensichtlich Zehntausende Tokens durchgelaufen, und die Zahl vor dir behauptet, die Session sei kostenlos gewesen. Entweder war sie es tatsächlich, oder Hermes hatte keine Ahnung, was sie gekostet hat — und bis zu dieser Woche gab es keine Möglichkeit, das eine vom anderen zu unterscheiden.
Diese Mehrdeutigkeit ist für das gängigste Setup jetzt weg. Ein Run, der direkt gegen eine First-Party-API spricht — OpenAI, xAI, Anthropic, Google, DeepSeek —, bekommt nun einen Preis, selbst wenn das Modell in der mitgelieferten Tabelle von Hermes fehlt, und die Zeile gibt nicht länger vor, echte Ausgaben seien null gewesen (#120441, rettet #56625; dazu #120517 für Anthropic).
Drei Quellen, aus denen ein Preis kommen kann
Jede Kostenangabe, die Hermes ausgibt, läuft durch eine einzige Auflösungsfunktion, get_pricing_entry. Sie geht eine kurze Leiter ab und nimmt die erste Sprosse, die antwortet:
- Eine Abo-Route wird überhaupt nicht bepreist. Wenn die Abrechnungsroute sagt, das Modell sei in einem Plan enthalten (
openai-codex,xai-oauth), ist der Eintrag ein fester „included“-Marker. Es wird nichts pro Token berechnet, also wird auch nichts geschätzt. - OpenRouter behält seinen eigenen Pfad, weil der Router live Preise pro Modell zusammen mit dem Katalog ausliefert, den er bedient.
- Die mitgelieferte Preistabelle — ein Snapshot, der mit Hermes ausgeliefert wird — antwortet für die gängigen Modelle.
- Der
/models-Endpunkt des Providers wird als Nächstes gefragt, wenn du eine base URL konfiguriert hast, die Preis-Metadaten bereitstellt. - Neu: der Listenpreis des Anbieters über models.dev, wenn die ersten vier Sprossen schweigen.
Sprosse fünf ist die interessante, und sie ist bewusst eng gefasst. Sie greift nur, wenn deine Abrechnungsroute auf den Anbieter selbst zeigt:
| Abrechnungsroute | Vertrauenswürdiger Host |
|---|---|
openai |
openai.com |
xai |
x.ai |
anthropic |
anthropic.com |
google |
googleapis.com |
deepseek |
deepseek.com |
xiaomi |
xiaomimimo.com |
Auch ganz ohne base URL gilt die Route als vertrauenswürdig, denn das bedeutet den Standard-Endpunkt des Anbieters selbst.
Warum ein Relay oder Proxy unbepreist bleibt
Hier ist der Teil, den du verinnerlichen solltest, bevor du irgendeiner Kostenzahl vertraust: dieselbe Modell-ID kann zu unterschiedlichen Sätzen abgerechnet werden, je nachdem, wer sie ausliefert.
Ein Proxy, ein Relay oder ein eigener Endpunkt können gpt-5-nano mit Aufschlag, mit Rabatt oder gegen eine Pauschale ausliefern. Der Listenpreis des Anbieters wäre dann eine selbstbewusste Lüge. Deshalb prüft der Fallback den Origin, den er bepreisen will: Er muss https auf Port 443 sein, und der Host muss die Domain dieses Anbieters oder eine Subdomain davon sein. Alles andere liefert nichts zurück, und die Session behält ihr ehrliches unknown.
In der Statusleiste steht dann n/a statt einer erfundenen Dollarnummer, und die CLI-Dokumentation sagt inzwischen genau, welche Quellen die Zeile speisen: zuerst die mitgelieferte offizielle Preistabelle, dann die /models-Liste des Providers, wobei models.dev die Lücke nur bei einer direkten First-Party-API füllt.
Was du tatsächlich ausgegeben hast
- Die Cost-Zeile der Statusleiste ist die Schätzung auf einen Blick (
n/a, wenn unbekannt oder wirklich kostenlos). /usageöffnet die detaillierte Aufschlüsselung, inklusive Input- versus Output-Tokens und der Kategorien für Cache-Reads/-Writes.hermes insightsaggregiert Token- und Kosten-Analysen über Sessions hinweg — genau das, was du willst, wenn du entscheidest, ob ein Modell für einen bestimmten Job bleiben darf.
Zwei Statuswörter tragen echte Bedeutung, deshalb lohnt es sich zu wissen, welches du gerade siehst. Ein estimated-Preis heißt: Hermes hat eine Preistabelle gefunden und sie mit den gezählten Tokens multipliziert. unknown heißt: Es gab keine Preistabelle, die Hermes anzuwenden bereit war — nicht, dass der Run kostenlos war.
Die Schätzung selbst ist Arithmetik auf Zahlen, die Hermes bereits hat. Der Fallback liest die Modell-Metadaten aus dem In-Process- oder On-Disk-Cache, statt mitten im Turn nach draußen zu telefonieren; eine Direct-API-Session zahlt also keinen Netzwerk-Roundtrip, um ihren eigenen Preis zu erfahren.
Kleine Runs runden nicht mehr auf 0,00 $ ab
In derselben Anzeige steckt eine zweite, ältere Falle: günstige Modelle. Ein kurzer Run auf einem kleinen Modell kann legitim einen Bruchteil eines Cents kosten, und ein Format mit zwei Nachkommastellen rendert das als $0.00 — nicht unterscheidbar von „unbepreist“. Kosten unter einem Cent werden jetzt mit vier Nachkommastellen dargestellt, du siehst also $0.0046 statt einer glatten Null.
Was weiterhin nur eine Schätzung ist
Sei dir klar darüber, was du vor dir hast: Das sind Listenpreise mal gezählte Tokens, nicht deine Rechnung. Wenn dein Konto ausgehandelte Sätze, Committed-Use-Rabatte oder eine andere Cache-Policy hat, weicht die Rechnung des Anbieters ab. Die Schätzungen beantworten die Frage „ist dieses Modell zehnmal so teuer wie jenes?“ — und das tun sie gut —, nicht die Frage nach deiner Monatsabrechnung auf den Cent genau.
Zu den Zahlen aus dem ursprünglichen Fix: Ein direkter openai-api-Run auf gpt-5-nano (19.750 Input- / 109 Output-Tokens) verzeichnete früher cost_status=unknown, estimated_cost_usd=0.0 und verzeichnet heute $0.0010266; ein direkter xai-Run auf grok-4.3 (21.157 in / 156 out) ging von unknown, 0.0 auf $0.02637205. Beide lassen sich von Hand gegen die veröffentlichten Sätze des Anbieters nachrechnen.
Die Nachfolgerunde hat außerdem den Anthropic-Fast-Mode an die aktuelle Claude-Dokumentation angeglichen, sodass der Modus, den du auswählst, auch der Modus ist, der gemeldet wird.
Wo das ausgeliefert wird
Beide Änderungen sind nach dem Tag v0.21.4 auf main gelandet, also noch in keinem Release — sie kommen mit einem hermes update, das main zieht, oder mit dem nächsten getaggten Release. Zu konfigurieren gibt es nichts: Wenn du auf eine First-Party-API routest, greift der Fallback von allein, und die Cost-Zeile in der CLI-Referenz nennt jetzt ihre drei Quellen, damit du das Verhalten selbst nachprüfen kannst.
Wenn du aus Kostengründen über ein Relay routest, behalte das im Auge: n/a auf einem Relay ist Absicht, und es ist der eine Fall, in dem Hermes lieber gar nichts sagt als zu raten. Für den breiteren Überblick, was die Statusleiste alles verfolgt, geht unser Statusleisten-Metriken-Guide Zeile für Zeile durch, und der Provider-Plugin-Hooks-Guide behandelt die Per-Modell-Capability-Daten, die derselbe Metadaten-Cache Plugins zur Verfügung stellt. Abo-Nutzer sollten zuerst den Claude-Subscription-Provider-Guide lesen — diese Routen sind absichtlich unbepreist.