Claude Code Spend-Tracker im Vergleich
Vergleichen Sie lokale Log-Parser, integrierte Nutzungsanzeigen und OpenTelemetry. Die drei Quellen zählen unterschiedliche Daten und können deshalb abweichende Werte liefern.
Was ein Claude-Code-Spend-Tracker tatsächlich liest
Jeder Claude-Code-Spend-Tracker liest eine von drei Datenquellen. Die Quelle bestimmt, welche Frage er beantworten kann. Ein Log-Parser liest die Sitzungsprotokolldateien auf Ihrem eigenen Datenträger. Ein Dashboard liest die Nutzungsdaten, die Anthropic für Ihr Konto oder Ihre Organisation speichert. Ein Metrik-Backend liest den OpenTelemetry-(OTel-)Datenstrom, den Claude Code ausgibt, wenn Sie ihn aktivieren. Alle drei können gleichzeitig korrekte Ergebnisse liefern und trotzdem voneinander abweichen, weil sie unterschiedliche Dinge zählen.
In diesem Leitfaden werden Tokens nicht erneut erklärt. wie Claude Code die Token-Nutzung zählt behandelt Eingabe, Ausgabe, Cache-Schreibvorgänge und Cache-Lesevorgänge. Ohne diesen Teil zu verstehen, sind die Ergebnisse eines Dashboards nur eingeschränkt aussagekräftig. Hier geht es um eine engere Frage: Was kann die jeweilige Tool-Variante sehen, und was kann sie niemals sehen?
Warum an einem Tag drei Ausgaben-Tracker für Claude Code erschienen
Am selben Tag wurden drei separate Ausgaben-Tracker für Claude Code veröffentlicht. Es handelte sich nicht um drei Versionen desselben Tools. Genau das ist der interessante Punkt. Einer analysierte die lokalen Sitzungsdateien. Einer kapselte die Nutzungsansichten des Kontos. Einer war ein gehostetes Tracing-Backend, das Sie selbst betreiben.
Sie erschienen gleichzeitig, weil die Kosten einer Agentensitzung nicht mehr offensichtlich waren. Ein Chat kostet ungefähr so viel, wie Sie auf dem Bildschirm sehen. Ein Agent liest zwanzig Dateien, führt die Testsuite aus und sendet die gesamte Unterhaltung bei jeder Runde erneut. Dadurch werden die Kosten durch Kontext bestimmt, den Sie nie eingegeben haben. Bei einem Abonnement ist der von Claude Code angezeigte Dollarbetrag für die Sitzung eine Schätzung, die laut Anthropic für die Abrechnung nicht relevant ist. Entscheidend ist stattdessen eine Nutzungsanzeige, die sich an manchen Tagen schneller leert als an anderen. Jedes der drei Tools schließt einen anderen Teil dieser Lücke.
Muster 1: Ein lokaler Log-Parser zeigt, was heute angefallen wäre
Claude Code speichert jede Konversation als JSON Lines (JSONL) unter ~/.claude/projects/<project>/<session-id>.jsonl. Dabei ist <project> Ihr Arbeitsverzeichnispfad, in dem nicht alphanumerische Zeichen durch - ersetzt werden. Jeder Assistant-Turn in dieser Datei enthält die Token-Anzahlen für seine Anfrage. Ein Log-Parser addiert diese Werte und berechnet daraus die Kosten.
ccusage ist das Tool, bei dem die meisten Nutzer landen. Es muss nicht installiert werden:
npx ccusage@latest daily
npx ccusage@latest daily --breakdown
npx ccusage@latest blocks
npx ccusage@latest session --jsondaily summiert nach Datum. --breakdown teilt jede Zeile nach Modell auf. So sehen Sie, dass ein Nachmittag mit Opus den größten Teil der Woche ausmachen kann. blocks gruppiert nach dem Fünf-Stunden-Fenster, in dem ein Abonnement zurückgesetzt wird. session summiert pro Konversation, und daily --instances gruppiert nach Projekt. So sehen Sie, welches Repository teuer ist. Mit --since und --until begrenzen Sie den Zeitraum. Mit npx ccusage@latest daily --help ermitteln Sie das Datumsformat, das Ihre Version erwartet. Seit Oktober 2026 liest das Tool außerdem andere Agent-CLIs ein, darunter Codex und OpenCode. Das ist relevant, wenn Sie diese vergleichen.
Die Preise stammen aus einer Modelltabelle. Das Tool bietet drei Kostenmodi. --mode auto verwendet den Wert costUSD, den Claude Code in die Datei geschrieben hat, sofern dieser vorhanden ist. Andernfalls werden die Kosten aus den Token-Anzahlen berechnet. --mode calculate berechnet die Kosten immer aus den Tokens und ignoriert aufgezeichnete Kosten. --mode display zeigt nur aufgezeichnete Kosten an und gibt für Zeilen ohne solche Kosten $0.00 aus. Wenn eine Summe falsch aussieht, führen Sie denselben Bericht zuerst mit calculate und anschließend mit display aus. Ein großer Unterschied bedeutet, dass die meisten Einträge keine aufgezeichneten Kosten enthalten. Alle angezeigten Werte sind dann Schätzungen. Wenn Sie vertraglich vereinbarte Preise zahlen, ersetzt pricingOverrides unter defaults in einer ccusage.json-Konfigurationsdatei den Preis für einzelne Modelle.
Dieselben Daten können in Ihrem Prompt verwendet werden. ccusage statusline gibt eine kompakte Zeile für die Claude-Code-Statusleiste aus. Sie binden sie wie jeden anderen Befehl für eine Statuszeile in ~/.claude/settings.json ein. Unter Eine Claude-Code-Statuszeile erstellen finden Sie den Einstellungsblock und die Felder, die er erhält.
Ein Log-Parser kann nicht erkennen, was nicht auf diesem Rechner passiert ist. Ein zweiter Laptop, eine Sitzung auf claude.ai oder die Arbeit eines Teammitglieds: Diese Transkripte liegen auf den jeweiligen Datenträgern. Auch ältere Daten können fehlen, weil Transkripte unter der Einstellung cleanupPeriodDays standardmäßig nach 30 Tagen bereinigt werden. Das letzte Quartal ist daher verloren, sofern Sie es nicht archiviert haben.
Es gibt ein weiteres Risiko. Es betrifft die Struktur der Dateien. In der Dokumentation von Anthropic steht, dass das Eintragsformat intern für Claude Code ist und sich zwischen Versionen ändert. Daher können Skripte, die diese Dateien direkt parsen, mit jedem Release ausfallen. Das gilt für jedes Tool dieser Art. Deshalb ist auch ein selbst erstellter jq-Einzeiler über die JSONL-Datei riskanter, als er zunächst wirkt: Gepflegte Parser berücksichtigen Formatänderungen für Sie. Ihr Einzeiler gibt dagegen an dem Tag eine überzeugend falsche Zahl aus, an dem ein Feld umbenannt wird.
Zum Schluss ist beim Abonnement ein Hinweis zum Dollarbetrag erforderlich. Die Nutzung innerhalb des Limits Ihres Pro- oder Max-Plans wird nicht pro Token abgerechnet. Der Betrag zeigt daher, was Ihre Tokens zu den Listenpreisen der API gekostet hätten. Er misst den Umfang Ihrer Nutzung. Er ist nicht Ihre Rechnung. Eine Ausnahme sind Nutzungsguthaben: Wenn Sie diese aktivieren, wird die Nutzung über das Planlimit hinaus zu den normalen API-Preisen als separate Gebühr abgerechnet. claude.ai zeigt die Ausgaben des jeweiligen Monats unter Settings > Usage an. Wenn es tatsächlich darum geht, welchen Plan Sie wählen sollten, ist dieser Vergleich eine eigene Aufgabe. Siehe API-Abrechnung im Vergleich zu einem Claude-Abonnement.
Form 2: Die integrierten Nutzungsanzeigen zeigen, welches Modell das Budget verbraucht hat
Claude Code liefert eigene Berichte mit, die die meisten Benutzer nie öffnen. Führen Sie /usage innerhalb einer Sitzung aus. Der Block „Session“ oben zeigt die Token nach Modell sowie einen Dollarbetrag für die aktuelle Sitzung. Dieser wird lokal anhand der Tokenanzahl und der üblichen Listenpreise berechnet, sofern ein Administrator nicht in den verwalteten Einstellungen eine modelPricing-Tabelle festgelegt hat. In diesem Fall zeigt die Zeile Total cost den Wert at your organization's configured rates. Der Betrag ist in beiden Fällen eine Schätzung und kann von Ihrer Rechnung abweichen. Bei Pro oder Max erklärt Anthropic, dass er für die Abrechnung nicht relevant ist, weil diese Nutzung im Tarif enthalten ist. Die Summen werden zurückgesetzt, wenn /clear eine neue Unterhaltung startet.
Bei einem Pro-, Max-, Team- oder sitzbasierten Enterprise-Tarif zeigt dieselbe Ansicht, wie viel Ihres Tariflimits Sie bereits genutzt haben. Bei Enterprise mit nutzungsbasierter Abrechnung gibt es kein enthaltenes Kontingent, das aufgebraucht werden kann, da jedes Token zu API-Preisen abgerechnet wird. Bei diesen Tarifen ordnet die Ansicht außerdem die aktuelle Nutzung Skills, Subagents, Plugins und einzelnen MCP-Servern als Prozentsatz der Gesamtnutzung zu. Sie kennzeichnet Verhaltensweisen, die mindestens 10% der aktuellen Nutzung ausmachen, beispielsweise einen langen Kontext oder Cache Misses. Drücken Sie d oder w, um zwischen den letzten 24 Stunden und den letzten 7 Tagen zu wechseln. Diese Werte sind Näherungen und werden aus dem lokalen Sitzungsverlauf auf diesem Gerät berechnet. Ein zweites Gerät wird daher nicht berücksichtigt. Wenn der Balken leer und nicht nur niedrig ist, teilt die Ansicht mit, dass das Zeitfenster geschlossen wurde. Sie erklärt jedoch nicht, wie Sie weiterarbeiten können. Was nach Erreichen des Limits zu tun ist, ist eine separate Entscheidung über Modell, Kontext und Tarif.
Sobald mehr als ein Entwickler beteiligt ist, beziehen sich die Zahlen auf das Konto. Eine API-Organisation erhält die Nutzungsseite der Console, ein Claude-Code-Dashboard mit Ausgaben und akzeptierten Zeilen pro Mitglied sowie eine Claude Code Analytics API, die mit einem Administratorschlüssel dieselben täglichen Metriken pro Benutzer zurückgibt. Team- und Enterprise-Tarife bieten in der Administratorkonsole einen Ausgabenbericht mit CSV-Export, der täglich aktualisiert wird. Er umfasst jedoch nur Ausgaben aus dem Nutzungsguthaben: Die Nutzung innerhalb des Sitzkontingents wird nicht in Dollar gemessen. Enterprise bietet zusätzlich eine Analytics API. Welche dieser Ansichten Sie sehen, hängt davon ab, wie sich die einzelnen Entwickler angemeldet haben. Eine Organisation mit gemischten Anmeldemethoden muss daher zwei Berichte prüfen und die Werte manuell addieren.
Für die Budgetplanung liegt der veröffentlichte Wert in den Kostenangaben von Anthropic mit Stand Oktober 2026 bei durchschnittlich etwa $13 pro Entwickler und aktivem Tag sowie $150 bis $250 pro Entwickler und Monat. 90% der Benutzer liegen unter $30 pro aktivem Tag. Betrachten Sie dies als veröffentlichten Richtwert aus Enterprise-Bereitstellungen und nicht als Prognose für Ihr Team. Führen Sie einen Pilotbetrieb mit einer Gruppe durch und messen Sie die Werte, bevor Sie sie hochrechnen.
Was die Dashboards nicht erkennen können, sind Details unterhalb der Ebenen Tag und Person. Sie zeigen Ihnen, dass Opus den größten Teil des Dienstags verwendet wurde. Sie zeigen jedoch nicht, welcher Prompt, welches Repository oder welcher CI-Job dafür verantwortlich war. Außerdem sind die Daten verzögert, weil die Organisationsberichte täglich aktualisiert werden. Sie eignen sich daher zur Auswertung, nicht dazu, einen außer Kontrolle geratenen Agenten noch am selben Nachmittag zu stoppen. Dafür benötigen Sie Limits und keine Berichte. Dieses Thema behandelt Agentenkosten auf einem VPS begrenzen.
Form 3: Ihr eigener OpenTelemetry-Stack zeigt, welcher Prompt eine Verschlechterung verursacht
Claude Code erzeugt OpenTelemetry-Metriken und -Ereignisse, sobald Sie eine Umgebungsvariable setzen. Dies ist die einzige Option, mit der sich Token- und Kostendaten pro Benutzer nahezu in Echtzeit in ein von Ihnen kontrolliertes System übertragen lassen. Die Metriken enthalten claude_code.cost.usage in USD, claude_code.token.usage in Tokens, claude_code.session.count und claude_code.active_time.total.
Die Token-Metrik ist wegen ihrer Attribute besonders interessant. Jeder Datenpunkt enthält type. Der Wert ist input, output, cacheRead oder cacheCreation. Außerdem enthält er model und query_source. Der Wert ist main, subagent oder auxiliary. Zusätzlich werden agent.name, skill.name, mcp_server.name und mcp_tool.name erfasst. Die Namen selbst konfigurierter MCP-Server und eigener benutzerdefinierter Subagenten werden als custom übertragen, sofern Sie nicht OTEL_LOG_TOOL_DETAILS=1 setzen. Dadurch werden auch Bash-Befehle und Tool-Eingaben in Tool-Ereignisse aufgenommen. Damit lassen sich Fragen beantworten, die kein Dashboard abbilden kann: Welcher Anteil der Rechnung entfällt auf Subagenten statt auf Ihre eigenen Interaktionen? Hat ein MCP-Server die Anzahl Ihrer Eingabetoken verdoppelt? Sind die Cache-Lesevorgänge zurückgegangen, nachdem jemand CLAUDE.md bearbeitet hat? Überraschungen treten meist beim Cache-Verhalten auf. Wann sich Prompt-Caching amortisiert erläutert, welche Daten Sie dabei betrachten.
Eine Korrektur ist wichtig, weil dieses Thema in jeder Diskussion dazu auftaucht. Langfuse ist ein gutes selbst gehostetes Backend für Tracing. Der Betrieb auf einem VPS wird unter Langfuse für Agent-Tracing selbst hosten beschrieben. Der OTLP-Endpunkt akzeptiert ausschließlich Traces. Claude Code exportiert standardmäßig Metriken und Log-Ereignisse, aber keine Spans. Wenn Sie OTEL_EXPORTER_OTLP_ENDPOINT auf Langfuse verweisen, bleibt das Projekt daher leer. Sie erhalten außerdem keine verwertbare Fehlermeldung. Der Export von Spans ist möglich, bleibt als Beta-Funktion jedoch deaktiviert, bis Sie CLAUDE_CODE_ENHANCED_TELEMETRY_BETA=1 und OTEL_TRACES_EXPORTER setzen. Die eigene Claude-Code-Integration von Langfuse verwendet einen anderen Ansatz: Ein Stop-Hook oder ein Plugin, das einen solchen Hook installiert, liest die Sitzungstranskripte nach jeder Antwort und wandelt sie in Traces um. Daher gelten dabei dieselben Einschränkungen wie bei einem lokalen Log-Parser. Langfuse ist das richtige Tool für Agenten, die Sie selbst auf Basis der API entwickeln. Dort erzeugt Ihr eigener Code jeden Span mit Prompt, Modell und Kosten. Für die Gesamtausgaben der Claude-Code-CLI ist ein Metrik-Store die passende Lösung.
Claude-Code-Ausgaben auf Ihrem eigenen VPS nachverfolgen
Zwei Dienste sind ausreichend: ein Collector zum Empfangen der Metriken und Prometheus zum Speichern. Betreiben Sie beide nicht im öffentlichen Internet, da ein offener OTLP-Port Schreibzugriffe von jedem annimmt, der ihn findet. Schreiben Sie /opt/ccmetrics/compose.yaml:
services:
collector:
image: otel/opentelemetry-collector-contrib:latest
command: ["--config=/etc/otel/config.yaml"]
volumes:
- ./collector.yaml:/etc/otel/config.yaml:ro
ports:
- "10.8.0.1:4318:4318"
restart: unless-stopped
prometheus:
image: prom/prometheus:latest
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml:ro
- prom-data:/prometheus
ports:
- "127.0.0.1:9090:9090"
restart: unless-stopped
volumes:
prom-data:10.8.0.1 ist die Adresse des Servers innerhalb eines WireGuard-Tunnels. Dadurch ist der Collector von Ihren Rechnern aus erreichbar, aber von keinem anderen Ort. Die Adresse vor dem Port ist hier entscheidend, weil veröffentlichte Docker-Ports nicht durch ufw gefiltert werden: siehe warum veröffentlichte Docker-Ports ufw umgehen. Die Einrichtung des Tunnels selbst wird unter ein WireGuard-VPN auf Ihrem eigenen VPS beschrieben.
/opt/ccmetrics/collector.yaml:
receivers:
otlp:
protocols:
http:
endpoint: 0.0.0.0:4318
processors:
batch:
exporters:
prometheus:
endpoint: 0.0.0.0:8889
service:
pipelines:
metrics:
receivers: [otlp]
processors: [batch]
exporters: [prometheus]/opt/ccmetrics/prometheus.yml. Port 8889 wird nie auf dem Host veröffentlicht, weil Prometheus den Collector über das Compose-Netzwerk anhand des Servicenamens erreicht:
global:
scrape_interval: 30s
scrape_configs:
- job_name: claude-code
static_configs:
- targets: ["collector:8889"]cd /opt/ccmetrics
docker compose up -d
docker compose logs collectorDer Collector-Log sollte mit Everything is ready. Begin running and processing data. enden. Ein Log, das mit einem Konfigurationsfehler endet, bedeutet, dass das YAML nicht geparst werden konnte. Der Container wird dann fortlaufend neu gestartet.
Verweisen Sie Claude Code nun darauf. Fügen Sie auf jedem Rechner, auf dem Claude Code ausgeführt wird, Folgendes zu ~/.claude/settings.json hinzu:
{
"env": {
"CLAUDE_CODE_ENABLE_TELEMETRY": "1",
"OTEL_METRICS_EXPORTER": "otlp",
"OTEL_LOGS_EXPORTER": "none",
"OTEL_EXPORTER_OTLP_PROTOCOL": "http/protobuf",
"OTEL_EXPORTER_OTLP_ENDPOINT": "http://10.8.0.1:4318",
"OTEL_METRIC_EXPORT_INTERVAL": "10000"
}
}Starten Sie eine Sitzung, senden Sie einen Prompt, warten Sie das Exportintervall ab (hier 10 Sekunden, standardmäßig 60 Sekunden) und fragen Sie Prometheus anschließend nach den empfangenen Daten:
curl -s http://localhost:9090/api/v1/label/__name__/values | grep -o 'claude_code[a-z_]*'Sie sollten mehrere Namen erhalten, die mit claude_code_ beginnen. Der Exporter ersetzt die Punkte durch Unterstriche und hängt die Einheit an. Die genauen Zeichenfolgen hängen daher von Ihrer Collector-Version ab. Ein leeres Ergebnis bedeutet, dass nichts angekommen ist. Prüfen Sie, ob Protokoll und Port übereinstimmen: http/protobuf verwendet Port 4318 und grpc verwendet Port 4317. Eine Abweichung führt zu einem unauffälligen Fehler. Führen Sie claude --debug-file /tmp/claude-debug.log aus und suchen Sie in dieser Datei nach Zeilen mit [3P telemetry]. Dort meldet Claude Code Fehler beim OTel-Export.
Wenn Sie nur einen Rechner und keinen Server verwenden, überspringen Sie die bisherigen Schritte. Setzen Sie OTEL_METRICS_EXPORTER=prometheus. Claude Code stellt dann direkt unter http://localhost:9464/metrics einen Scrape-Endpunkt bereit. Wenn prometheus der einzige aufgeführte Exporter ist, lässt Claude Code die Einheiten USD, tokens und s aus den exportierten Metriken weg, damit der Scrape im gültigen Prometheus-Textformat bleibt. Die Metriknamen ändern sich nicht. Eine Einstellung, die mehrere Exporter kombiniert, beispielsweise otlp,prometheus, behält die Einheiten bei.
Diese Architektur bringt eine Datenschutzentscheidung mit sich. Standardmäßig verlassen nur Zähler und Metadaten den Rechner. Prompt-Text und Tool-Ausgaben werden nicht exportiert. OTEL_LOG_USER_PROMPTS=1 fügt exportierten Ereignissen Prompt-Text hinzu. OTEL_LOG_TOOL_CONTENT=1 fügt Trace-Spans Tool-Ausgaben hinzu. Sobald Sie eines der beiden Signale exportieren, enthält Ihr Telemetrieserver Quellcode und alle anderen Inhalte, die im Kontext enthalten waren. Aktivieren Sie diese Optionen bewusst und lesen Sie zuerst Secrets aus dem Agentenkontext fernhalten.
Nachverfolgung der Kosten für Skript- und CI-Ausführungen
Nicht interaktive Ausführungen führen häufig zu unerwarteten Kosten, weil niemand den Bildschirm überwacht. claude -p mit --output-format json meldet die Kosten dieser Ausführung in seiner Ergebnisnutzlast:
claude -p "summarise the failing tests" --output-format json | jq '.total_cost_usd'Die Nutzlast enthält total_cost_usd sowie eine Aufschlüsselung nach Modell. Dadurch kann ein CI-Job seine eigenen Kosten ohne Dashboard erfassen. Wie jeder lokale Wert ist dies eine clientseitige Schätzung. Eine Ausführung, die eine Unterhaltung mit --continue oder --resume fortsetzt, meldet die Gesamtkosten der gesamten Unterhaltung einschließlich früherer Ausführungen. Hängen Sie den Wert an eine Datei an oder übertragen Sie ihn als Metrik an den oben genannten Collector. Dies ist die kostengünstigste sinnvolle Methode zur Kostenverfolgung. Pro Ausführung ist dafür ein jq-Aufruf erforderlich.
Fehlerbilder und ihre sichtbaren Auswirkungen
Der Bericht ist leer. npx ccusage@latest daily liefert keine Zeilen. Das bedeutet, dass die Datenquelle nicht am Speicherort gelesen wird, an dem Claude Code schreibt. CLAUDE_CONFIG_DIR ändert diesen Speicherort. Der Parser muss auf den neuen Speicherort konfiguriert werden. Wenn Zeilen vorhanden sind, aber ungefähr einen Monat zurückreichen, funktioniert cleanupPeriodDays wie vorgesehen: Transkripte werden standardmäßig nach 30 Tagen gelöscht.
Zwei Rechner melden unterschiedliche Summen. Das ist erwartetes Verhalten und kein Fehler. Die Aufschlüsselung von /usage und jeder Log-Parser lesen nur den lokalen Sitzungsverlauf. Die Nutzung von einem anderen Gerät oder von claude.ai fehlt daher in beiden Auswertungen.
Die lokale Summe stimmt nicht mit der Rechnung überein. Lokale Werte werden anhand der Token-Anzahl und der standardmäßigen Listenpreise berechnet, sofern Sie keine vertraglich vereinbarten Preise konfigurieren: eine modelPricing-Tabelle in den verwalteten Einstellungen für /usage oder pricingOverrides für ccusage. Bei einem Abonnement wird die Nutzung innerhalb des Planlimits überhaupt nicht pro Token abgerechnet. Nur Nutzungsguthaben werden berechnet. Die Nutzungsseite in der Console ist für die API-Abrechnung maßgeblich.
Die Kosten sind gestiegen, obwohl Sie dieselbe Arbeit ausgeführt haben. Prüfen Sie zuerst die Cache-Spalten. Eine lange Sitzung sendet ihren gesamten Verlauf bei jeder Interaktion erneut. Solange der Cache aktiv ist, gilt dafür der Cache-Preis. Nach Ablauf des Caches gilt wieder der volle Eingabepreis. Eine längere Unterbrechung verarbeitet daher die gesamte Unterhaltung erneut. Das zeigt sich an einer hohen Eingabezahl neben einer niedrigen Ausgabezahl. Die Token-Preise für Eingaben und Ausgaben erklären, warum sich beide Werte unabhängig voneinander verändern.
Ein Tag mit Subagents wirkt unrealistisch. Jeder Subagent verwendet ein eigenes Kontextfenster. Der Tokenverbrauch steigt daher mit der Anzahl der ausgeführten Subagents und mit ihrer jeweiligen Laufzeit. Bei einem Plan zeigt die /usage-Zuordnung den Anteil der Subagents für diesen Rechner als Prozentsatz. Für Details auf Anfrageebene trennt die OTel-Datenerfassung die Werte anhand des Attributs query_source auf claude_code.token.usage. Ein Log-Parser zeigt nur die Gesamtsumme an und lässt die Ursache offen.
FAQ
Zeigt ccusage, was ich mit einem Max-Plan tatsächlich zahle?
Nein. Die Nutzung innerhalb des Planlimits eines Abonnements wird nicht pro Token abgerechnet. Daher bewertet ein Log-Parser Ihre Tokens anhand der standardmäßigen Listenpreise der API und zeigt, was dieselbe Arbeit über die API gekostet hätte. Das ist ein guter relativer Maßstab dafür, wie umfangreich ein Tag war. Außerdem können Sie damit Projekte oder Modelle miteinander vergleichen. Für den tatsächlich geschuldeten Betrag zeigt die Console-Nutzungsseite die API-Abrechnung. Die Abrechnungsseite des Plans zeigt die Abrechnung eines Abonnements. Wenn Sie Nutzungsguthaben aktiviert haben, wird die Nutzung oberhalb des Limits zu den standardmäßigen API-Preisen abgerechnet. claude.ai zeigt diese Kosten unter Settings > Usage an.
Wo speichert Claude Code die Sitzungsdateien, die diese Tools einlesen?
Unter ~/.claude/projects/<project>/<session-id>.jsonl. Dabei ist <project> der Pfad des Arbeitsverzeichnisses, in dem nicht alphanumerische Zeichen durch - ersetzt werden. Jede Zeile enthält ein JSON-Objekt für eine Nachricht, eine Tool-Nutzung oder einen Metadateneintrag. Mit CLAUDE_CONFIG_DIR verschieben Sie das gesamte Verzeichnis. cleanupPeriodDays in settings.json steuert die Aufbewahrung für 30 Tage. Anthropic beschreibt das Format der Einträge als intern und weist darauf hin, dass es sich zwischen Versionen ändern kann. Verwenden Sie daher ein gepflegtes Tool zum Parsen und kein eigenes Skript.
Kann ich Telemetriedaten von Claude Code an Langfuse senden?
Nicht mit der standardmäßigen Telemetrie. Der OTLP-Endpunkt von Langfuse akzeptiert Traces. Claude Code exportiert standardmäßig jedoch Metriken und Log-Ereignisse statt Spans. Daher gibt es für die Daten kein Ziel. Der Span-Export ist eine Betafunktion, die Sie aktivieren müssen. Die eigene Claude-Code-Integration von Langfuse verwendet stattdessen einen Stop-Hook, der Sitzungstranskripte in Traces umwandelt. Für Ausgaben in der Gesamtsumme senden Sie die Claude-Code-Metriken an einen OpenTelemetry Collector und speichern sie in Prometheus. Verwenden Sie Langfuse für Agents, die Sie selbst über die API erstellen. Dort gibt Ihr eigener Code Spans aus, die den Prompt, das Modell und die Kosten enthalten.
Warum stimmen meine lokalen Zahlen nicht mit der Console-Nutzungsseite überein?
Weil sie unterschiedlich berechnet werden. /usage und Log-Parser addieren die Tokenanzahlen aus den Sitzungsdateien auf dem verwendeten Rechner. Anschließend bewerten sie diese zu den standardmäßigen Listenpreisen, sofern keine Vertragspreise konfiguriert sind. Die Konfiguration erfolgt über modelPricing in den verwalteten Einstellungen für /usage oder über pricingOverrides für ccusage. Die Console zeigt, welcher Betrag Ihrer Organisation tatsächlich in Rechnung gestellt wurde. Dabei werden alle Rechner und alle Schlüssel berücksichtigt, ebenso mögliche Rabatte. Eine Abweichung ist normal. Eine sehr große Abweichung bedeutet meist, dass ein zweites Gerät, ein CI-Runner oder ein anderes Teammitglied dasselbe Konto belastet.
Wie erfasse ich die Kosten eines claude -p-Laufs in CI?
Führen Sie ihn mit --output-format json aus und lesen Sie total_cost_usd aus dem Ergebnis aus, zum Beispiel mit claude -p "..." --output-format json | jq '.total_cost_usd'. Die gleiche Antwort enthält eine Aufschlüsselung nach Modell sowie die Sitzungs-ID. Speichern Sie diesen Wert für jeden Job. Damit erhalten Sie die Ausgaben pro Pipeline ohne Agent, Dashboard oder zusätzlichen Dienst.