Neu Kostenlos registrieren und 10 Aufrufe gratis nutzen. Bis zu 1 $, ohne Kreditkarte.

Claude Code: Wohin $0.17 gingen, aufgeteilt nach Sub-Agent

Ein Claude-Code-Lauf über ein Gateway, nach Agent aufgeschlüsselt: Die ersten Aufrufe der drei Agents machten 72% von $0.17 aus. Zwei Umgebungsvariablen reichen.

Unsere Empfehlungen

Live-Preise
Modell Fazit Preis
Claude Sonnet 5.5 Ein Claude Code-Durchlauf mit 11 Aufrufen und zwei Sub-Agenten kostete $0.1728 bei kaltem Cache und $0.0812 eine halbe Minute später. Cache-Schreibvorgänge machten 77% des Durchlaufs mit kaltem Cache aus. Modell in der Demo ab $2/Mio.
Inhalt
  1. Wie leitest du Claude Code über ein Gateway?
  2. Was sieht das Gateway ohne weitere Einrichtung?
  3. Wohin gingen die $0.17?
  4. Was kostet ein zweiter Lauf?
  5. Stimmt die Kostenanzeige von Claude Code mit der Rechnung überein?
  6. Wie teilst du die Kosten nach Entwickler oder Repository auf?
  7. Wie siehst du Agent-Kosten über mehrere Sitzungen hinweg?
  8. Was liefert diese Einrichtung nicht?
  9. FAQ
  10. Wie viel kostet eine Claude-Code-Sitzung?
  11. Wie erfasse ich die Claude-Code-Kosten eines Teams?
  12. Kosten Claude-Code-Sub-Agents mehr?
  13. Ist die Kostenanzeige von Claude Code korrekt?
  14. Was macht CLAUDE_CODE_GATEWAY_HINT_HEADERS?
  15. Weiterführende Artikel

Claude Code zeigt die Kosten einer Sitzung an. Wie sie sich innerhalb der Sitzung verteilen, bleibt offen. Sobald ein ganzes Team damit arbeitet, lässt sich die Rechnung auch keinem Repository oder Entwickler mehr zuordnen. Ein Gateway zwischen Claude Code und dem Modellanbieter beantwortet beide Fragen, ohne Plugin oder Wrapper: Es sieht ohnehin jede Anfrage, und Claude Code versieht seine Anfragen bereits mit einer Sitzungs-ID und einer Agent-ID. Für diesen Artikel lassen wir eine kleine Aufgabe über das Synthorai-Gateway laufen und werten das Ergebnis aus: $0.1728 für 11 Anfragen. Die ersten Aufrufe der drei Agents machten zusammen 72% dieser Kosten aus.

TL;DR

  • Ein Claude-Code-Lauf mit Claude Sonnet 5.5 und zwei Sub-Agents kostete über ein Gateway $0.1728. Eine Wiederholung eine halbe Minute später kostete $0.0812.
  • Cache-Schreibvorgänge machten 77% des ersten Laufs aus, die ersten Aufrufe der drei Agents zusammen 72%.
  • Auf die beiden Sub-Agents entfielen 39% der Sitzungskosten.
  • Zwei Umgebungsvariablen leiten Claude Code über ein Gateway. Eine dritte macht den Typ jedes Sub-Agents sichtbar.

Der Code liegt auf github.com/synthorai-io/use-cases unter coding-agent-spend/. Du brauchst Python 3.10 oder neuer und den Befehl claude ab Version 2.1.280, die dieses Modell voraussetzt.

git clone https://github.com/synthorai-io/use-cases
cd use-cases
cp .env.example .env    # put your API key in it
cd coding-agent-spend
python3 -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
python run.py --hints --label repo=shipping --label _user=dev_1

Das Skript startet Claude Code mit einer Kopie eines kleinen Beispiel-Repositories, in dem ein Test fehlschlägt. Gateway-Adresse und Schlüssel setzt es nur in der Umgebung dieses Prozesses. Ein leeres Konfigurationsverzeichnis sorgt dafür, dass deine eigene Claude-Code-Konfiguration weder gelesen noch verändert wird. Ein Lauf dauert etwa eine halbe Minute. Mit --max-budget-usd begrenzt das Skript jeden Lauf auf $0.60. Einen Lauf, der die Gesamtkosten über $2 bringen könnte, startet es nicht.

Eine Sitzung in der Konsole: 11 Aufrufe, $0.1728, 212k Eingabe-Tokens mit 74.9% Cache-Trefferquote, Claude Code 2.1.296 als Client, die Labels _user dev_1 und repo shipping sowie eine Agent-Tabelle mit $0.1053 für die Hauptkonversation, $0.0575 für einen Explore-Sub-Agent und $0.0101 für einen benutzerdefinierten Sub-Agent

Die Zahlen auf dieser Seite stammen aus Läufen vom 10. Oktober 2026 mit Claude Code 2.1.296 und Claude Sonnet 5.5.

Wie leitest du Claude Code über ein Gateway?

Dafür setzt du zwei Umgebungsvariablen. Claude Code nutzt die Messages API von Anthropic, und das Gateway stellt dieselbe API unter seiner eigenen Adresse bereit:

export ANTHROPIC_BASE_URL="https://synthorai.io"   # no /v1: Claude Code adds /v1/messages itself
export ANTHROPIC_API_KEY="<your gateway key>"

Sonst ändert sich nichts. Die Details stehen auf der Seite zur Claude-Code-Integration. Ab dann landet jeder Modellaufruf jeder Sitzung im Anfrageprotokoll des Gateways. Die Konsole gruppiert diese Aufrufe.

Was sieht das Gateway ohne weitere Einrichtung?

Es sieht die Sitzung, ihre Traces, den Client und jeden Sub-Agent. Claude Code schickt seine eigene Sitzungs-ID mit jeder Anfrage. Ein claude-Lauf entspricht deshalb einer Sitzung in der Konsole, und die Sitzungsseite zeigt „Claude Code 2.1.296“ als Client an. Die Anfragen haben in der Konsole auch eine Trace-ID. Die Sitzung listet daher ihre Traces auf: in diesem Lauf zwei mit 6 und 5 Aufrufen. Die Tabelle „Agents in this session“ trennt die Aufrufe bereits nach Hauptkonversation und Sub-Agents, mit einer Zeile pro Sub-Agent.

Ein Sub-Agent ist ein zweiter Agent, den Claude Code für einen Teil der Aufgabe startet. Er hat eigene Anweisungen und einen eigenen Kontext. Die Demo-Aufgabe verlangt zwei davon: Der integrierte Explore-Sub-Agent soll herausfinden, wo eine Regel definiert ist. Ein benutzerdefinierter test-runner-Sub-Agent soll die Tests ausführen.

Standardmäßig erscheint ein Sub-Agent unter einer ID wie a05e467acd14b25e6. Damit siehst du, dass es zwei gab, aber nicht, welcher welche Aufgabe hatte. Eine weitere Variable löst das:

export CLAUDE_CODE_GATEWAY_HINT_HEADERS=1
Standardmit der Hinweisvariable
Sitzung, Traces, Client und Kostenjaja
Sub-Agents nach ID getrenntjaja
Sub-Agent-Typ (Explore, custom)neinja
Art jedes Aufrufs und die zuvor ausgeführten Toolsneinja

Mit dieser Variable nennt die Tabelle den Typ jedes Sub-Agents. Öffnest du einen Aufruf in Logs, siehst du seine Art (subagent:Explore) und unter „Tools before this call“ die Namen und Laufzeiten der zuvor ausgeführten Tools, etwa Read 7 ms. Das Gateway speichert den Typ eines Agents, nicht den von dir vergebenen Namen. Deshalb erscheint test-runner als custom. Tool-Namen und Laufzeiten werden gespeichert, gelesene oder geschriebene Inhalte nicht.

Wohin gingen die $0.17?

Sie verteilten sich auf drei Agents, vor allem auf deren jeweils ersten Aufruf.

AgentAufrufeEingabe-TokensCache-TrefferquoteKosten
Hauptkonversation6159k78.9%$0.1053
Explore-Sub-Agent347.5k64.7%$0.0575
Benutzerdefinierter Sub-Agent (test-runner)25,32348.1%$0.0101
Sitzung11212k74.9%$0.1728

Die beiden Sub-Agents kosteten $0.0676, also 39% der Sitzung. Dabei erledigten sie die beiden kleinsten Teilaufgaben: eine Regel in einer Bibliothek mit drei Quelldateien finden und fünf Tests ausführen. Die eigentliche Korrektur bestand aus einem Zeichen: > wurde zu >=.

Die Erklärung liefern die Token-Zahlen, die Claude Code am Ende des Laufs ausgibt:

claude-sonnet-5-5                20 in   158612 cache read   53058 cache write   2425 out  $0.1728

Bei den Preisen dieses Modells ($2 pro Million Eingabe-Tokens, $10 für Ausgabe, $0.10 für Cache-Lesevorgänge und $2.50 für Cache-Schreibvorgänge) ergeben diese vier Zahlen:

Token-TypTokensKostenAnteil
Cache-Schreibvorgang53,058$0.132677%
Ausgabe2,425$0.024314%
Cache-Lesevorgang158,612$0.01599%
Eingabe, nicht gecacht20$0.00000%

Cache-Schreibvorgänge machen 77% der Rechnung aus. Ein Prompt-Präfix wird beim ersten Senden in den Cache geschrieben. Das kostet das 1.25-Fache des Eingabepreises. Spätere Anfragen lesen es bei diesem Modell für ein Zwanzigstel des Eingabepreises. Der Prompt eines Coding-Agents ist schon lang, bevor du etwas eingibst: Er enthält den System-Prompt und die Definitionen aller Tools. Deshalb ist der erste Aufruf eines Agents sein teuerster.

Jeder Agent startet mit einem eigenen Prompt und bezahlt damit seinen eigenen ersten Aufruf:

Erster Aufruf vonEingabe-TokensCache-TrefferquoteKosten
Hauptkonversation30.0k0%$0.0772
Explore-Sub-Agent14.9k0%$0.0391
Benutzerdefiniertem Sub-Agent2,5620%$0.0077

Diese drei Aufrufe kosten $0.1240, also 72% des Laufs. Danach wird es günstig: Der zweite und dritte Aufruf des Explore-Sub-Agents lesen 94% ihrer Eingabe aus dem Cache und kosten $0.0052 und $0.0132.

Der Kaltstart eines Sub-Agents lohnt sich, wenn er große Mengen gelesener Inhalte aus dem Kontext der Hauptkonversation heraushält. Genau dafür ist Explore in einer echten Codebasis gedacht. Bei einer Aufgabe mit nur einem oder zwei Aufrufen vermeidet die Ausführung in der Hauptkonversation einen weiteren Cache-Schreibvorgang. Hier geht es um ein kleines Repository. Prüfe deshalb die Verteilung in deinen eigenen Sitzungen, bevor du deine Arbeitsweise änderst.

Was kostet ein zweiter Lauf?

Etwa die Hälfte, wenn der Cache beim Start noch warm ist. Wir haben denselben Lauf eine halbe Minute später erneut gestartet. Er erzeugte wieder 11 Aufrufe, las aber 93.1% seiner Eingabe aus dem Cache statt 74.9% beim ersten Lauf. Die Kosten lagen bei $0.0812 statt $0.1728. Seine drei ersten Aufrufe lasen 82%, 81% und 71% aus dem Cache, weil ihre Start-Prompts dort bereits vom vorherigen Lauf lagen.

Anthropics Cache hält einen Eintrag standardmäßig fünf Minuten und erneuert diese Frist bei jedem Lesen. Ein Entwickler, der kontinuierlich in einem Repository arbeitet, zahlt meist den Preis mit warmem Cache. Ein geplanter Job, der einmal pro Stunde läuft, zahlt jedes Mal den Preis mit kaltem Cache.

Stimmt die Kostenanzeige von Claude Code mit der Rechnung überein?

Bei 2.1.296 stimmte sie bis auf die vierte Nachkommastelle: auf beiden Seiten $0.1728 mit kaltem und $0.0812 mit warmem Cache. Das hängt von der Version ab. Claude Code berechnet die Kosten anhand einer eigenen Preistabelle. Version 2.1.278, mit der dieses Modell am 8. Oktober noch lief, rechnete mit $5 und $25 pro Million Eingabe- und Ausgabe-Tokens. Tatsächlich berechnet wurden $2 und $10. Die Ausgabe lag dadurch etwa beim 2.7-Fachen der Rechnung. Die Token-Zahlen waren jedes Mal auf beiden Seiten identisch.

Für eine Einstellung ist das entscheidend: --max-budget-usd stoppt einen Lauf, sobald Claude Codes eigene Berechnung das Limit erreicht. Mit der älteren Version wurde ein Lauf bei angezeigten $0.60 gestoppt, obwohl nur etwa ein Drittel davon berechnet wurde. Vergleiche die Anzeige nach einem Upgrade einmal mit der Sitzungsseite. Das Limit, auf das du dich verlässt, gehört dorthin, wo die tatsächlichen Kosten gezählt werden: als Ausgabenlimit auf den API-Schlüssel.

Wie teilst du die Kosten nach Entwickler oder Repository auf?

Du versiehst jede Anfrage mit einem Label. Claude Code kann es über eine bereits unterstützte Variable für eigene Header senden:

export ANTHROPIC_CUSTOM_HEADERS='X-Synthorai-Metadata: {"repo":"shipping","_user":"dev_1"}'

X-Synthorai-Metadata ist der Gateway-Header für Labels: ein flaches JSON-Objekt mit bis zu 10 kurzen Strings. _user bezeichnet die Person, für die eine Anfrage gestellt wurde. Die --label-Flags der Demo setzen genau diesen Header. Die Sitzungsseite oben zeigt beide Labels als Tags.

Setze die Variable für jeden Entwickler in dessen Shell-Profil und für jedes Repository über die jeweilige Projekt-Umgebung. Damit stehen zwei Ansichten zur Verfügung:

  • In Traces nimmt das Suchfeld metadata.repo = shipping entgegen und listet die Sitzungen dieses Repositories auf.
  • Auf dem Tab Breakdown in Analytics summiert die Karte Cost by metadata die Anfragen und Kosten für jeden Wert eines Schlüssels. repo liefert damit die Rechnung pro Repository, _user die Rechnung pro Entwickler.

Das funktioniert mit einem gemeinsamen Schlüssel. Separate Schlüssel pro Entwickler erlauben dieselbe Zuordnung der Kosten und zusätzlich getrennte Ausgabenlimits, erfordern aber die Verwaltung weiterer Schlüssel.

Wie siehst du Agent-Kosten über mehrere Sitzungen hinweg?

Nutze die Karte Cost by agent auf dem Tab Breakdown in Analytics. Die Sitzungsseite schlüsselt eine einzelne Sitzung auf. Diese Karte summiert dagegen alle Sitzungen im gewählten Zeitraum nach Agent-Typ:

Die Karte Cost by agent mit zwei Zeilen: Explore mal 2 mit 6 Anfragen, 95.1k Eingabe-Tokens und $0.0871 sowie custom mal 2 mit 4 Anfragen, 10.9k Eingabe-Tokens und $0.0170

Explore × 2 und custom × 2 stehen für den oben gezeigten Lauf mit kaltem und warmem Cache, jeweils als Summe pro Agent-Typ über beide Sitzungen. Die Spalte Share zeigt den Anteil jeder Zeile an den gesamten Ausgaben im Zeitraum, in dem auch andere Sitzungen lagen. Ohne die Hinweisvariable melden die Sub-Agents eines Laufs keinen Typ und werden gemeinsam in einer Zeile namens „Sub-agent“ gezählt. Ein Agent in deinem eigenen Programm, der X-Agent-Id selbst setzt, bekommt eine Zeile unter dem gesendeten Namen. Ein Beispiel zeigt LLM-Agents nachverfolgen.

Über eine Woche Team-Nutzung zeigt diese Ansicht, ob Sub-Agents einen kleinen oder großen Teil der Rechnung ausmachen und welcher Typ dafür verantwortlich ist.

Was liefert diese Einrichtung nicht?

Sie liefert keine Span-IDs, keine Namen für benutzerdefinierte Agents, keine einfache Isolationsoption und keinen Einblick in die eigentlichen Arbeitsergebnisse.

  • Keine Span-IDs. Anfragen von Claude Code 2.1.296 zeigen eine Sitzungs-ID und eine Trace-ID, aber keine Span-ID. Im Span-Feld eines Aufrufs steht deshalb „not sent“. Für die Auswertung stehen die Sitzung, ihre Traces und ihre Agents zur Verfügung.
  • Keine Namen für benutzerdefinierte Agents. Jeder benutzerdefinierte Sub-Agent heißt custom. Wenn du mehrere Varianten einsetzt und sie unterscheiden musst, bleibt nur die Agent-ID auf der Sitzungsseite.
  • Keine einfache Isolationsoption. --bare scheint die passende Option zu sein, um Claude Code ohne eigene Plugins und Einstellungen auszuführen. Sie schaltet aber auch Sub-Agents ab. Die Sitzung hat dann nur einen Agent, und es gibt nichts aufzuschlüsseln. Die Demo isoliert den Lauf stattdessen mit einem leeren CLAUDE_CONFIG_DIR.
  • Kein Einblick in die eigentlichen Arbeitsergebnisse. Das Gateway protokolliert Modellaufrufe, Tool-Namen und Laufzeiten. Dateiinhalte, Diffs und Befehlsausgaben zeichnet es nicht auf.

FAQ

Wie viel kostet eine Claude-Code-Sitzung?

Das hängt vom Modell, der Größe des Repositories, der Anzahl beteiligter Agents und dem Cache-Zustand ab. Der Lauf auf dieser Seite umfasste 11 Anfragen an Claude Sonnet 5.5 und zwei Sub-Agents, um einen Fehler von einem Zeichen zu beheben. Er kostete $0.1728 mit kaltem Cache und $0.0812 bei der Wiederholung eine halbe Minute später.

Wie erfasse ich die Claude-Code-Kosten eines Teams?

Leite Claude Code bei jedem Entwickler über ANTHROPIC_BASE_URL auf ein Gateway und füge über ANTHROPIC_CUSTOM_HEADERS Labels für Entwickler und Repository hinzu. Das Gateway summiert dann die Kosten pro Sitzung, Label-Wert und Agent-Typ. In Claude Code muss dafür nichts installiert werden.

Kosten Claude-Code-Sub-Agents mehr?

Jeder Sub-Agent startet mit einem eigenen Prompt und bezahlt einen eigenen Cache-Schreibvorgang. In der Demo mit Claude Sonnet 5.5 kostete der erste Aufruf des Explore-Sub-Agents $0.0391, die nächsten beiden $0.0052 und $0.0132. Zusammen machten die beiden Sub-Agents 39% der Sitzungskosten aus. Dafür erhältst du einen getrennten Kontext. Das lohnt sich bei umfangreicher Code-Erkundung, nicht bei Aufgaben mit nur einem Aufruf.

Ist die Kostenanzeige von Claude Code korrekt?

Prüfe sie einmal pro Version. Claude Code 2.1.296 zeigte dieselben $0.1728 an, die berechnet wurden. Claude Code 2.1.278 rechnete für Claude Sonnet 5.5 mit $5 und $25 pro Million Tokens statt der tatsächlich berechneten $2 und $10. Die Anzeige lag damit etwa beim 2.7-Fachen der Rechnung. Die Token-Zahlen stimmten in beiden Versionen überein.

Was macht CLAUDE_CODE_GATEWAY_HINT_HEADERS?

Damit sendet Claude Code bei jeder Anfrage drei zusätzliche Angaben: den Agent-Typ, die Art des Aufrufs sowie Namen und Laufzeiten der zuvor ausgeführten Tools. Ohne diese Variable sieht ein Gateway weiterhin die Sitzung und jeden Sub-Agent, kann die Sub-Agents aber nur anhand ihrer IDs unterscheiden.

Weiterführende Artikel

← Anwendungsfälle