SSD Nodes Learn Hosting plans →
Anleitungen Matt ConnorVon Matt Connor · Aktualisiert 2026-08-13

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 Bildschirme zur Kontonutzung. 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 20 Dateien, führt die Testsuite aus und sendet die gesamte Unterhaltung bei jeder Runde erneut. Dadurch wird die Rechnung von Kontext bestimmt, den Sie nie selbst eingegeben haben. Bei einem Abonnement gibt es überhaupt keinen Dollarbetrag. Stattdessen sehen Sie nur einen Nutzungsbalken, der an manchen Tagen schneller leer wird als an anderen. Jeder der drei Ansätze schließt eine andere Lücke.

Shape 1: Ein lokaler Log-Parser zeigt, was heute gekostet hat

Claude Code speichert jede Unterhaltung als JSON Lines (JSONL) unter ~/.claude/projects/<project>/<session-id>.jsonl. Dabei ist <project> der Pfad Ihres Arbeitsverzeichnisses, wobei 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 die naheliegendste Wahl. Es muss nichts installiert werden:

npx ccusage@latest daily
npx ccusage@latest daily --breakdown
npx ccusage@latest blocks
npx ccusage@latest session --json

daily 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 Unterhaltung, und --instances gruppiert nach Projekt. Damit sehen Sie, welches Repository teuer ist. Mit --since und --until begrenzen Sie den Zeitraum. Führen Sie npx ccusage@latest daily --help aus, um das von Ihrer Version erwartete Datumsformat zu ermitteln. Seit August 2026 liest das Tool auch andere Agent-CLIs, 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 er vorhanden ist. Andernfalls werden die Kosten aus den Token-Anzahlen berechnet. --mode calculate berechnet die Kosten immer aus den Token-Anzahlen 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. Eine große Abweichung bedeutet, dass die meisten Einträge keine aufgezeichneten Kosten enthalten. Alle angezeigten Werte sind dann Schätzungen.

Dieselben Daten können auch Ihre Eingabeaufforderung speisen. ccusage statusline gibt eine kompakte Zeile für die Statusleiste von Claude Code aus. Sie können sie wie jeden anderen Befehl für eine Statuszeile in ~/.claude/settings.json einbinden. Unter eine Statuszeile für Claude Code 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. Eine zweite Laptop-Sitzung, eine Sitzung auf claude.ai oder die Arbeit eines Teammitglieds: Diese Transkripte liegen auf den jeweiligen Datenträgern. Auch ältere Daten können fehlen. Unter der Einstellung cleanupPeriodDays werden Transkripte standardmäßig nach 30 Tagen bereinigt. Das letzte Quartal ist daher nicht mehr verfügbar, sofern Sie es nicht archiviert haben.

Es gibt noch ein weiteres, strukturelles Risiko. In der Dokumentation von Anthropic steht, dass das Eintragsformat intern für Claude Code ist und sich zwischen Versionen ändern kann. Skripte, die diese Dateien direkt parsen, können daher mit jedem Release ausfallen. Das gilt für jedes Tool dieser Art. Aus demselben Grund ist ein selbst erstellter jq-Einzeiler für die JSONL-Datei eine schlechtere Idee, als es zunächst scheint. Gepflegte Parser berücksichtigen Formatänderungen für Sie. Ihr Einzeiler wird dagegen an dem Tag eine überzeugend falsche Zahl ausgeben, an dem ein Feld umbenannt wird.

Zum Schluss braucht der Dollarbetrag bei einem Abonnement einen Hinweis. Bei Pro oder Max zahlen Sie nicht pro Token. Der Betrag zeigt daher, was Ihre Token zu den API-Listenpreisen gekostet hätten. Er misst, wie umfangreich Ihre Nutzung ist. Er ist nicht Ihre Rechnung. Wenn die eigentliche Frage lautet, welches Abonnement Sie wählen sollten, ist das ein eigener Vergleich. Siehe API-Abrechnung im Vergleich zu einem Claude-Abonnement.

Form 2: Die integrierten Nutzungsanzeigen zeigen, welches Modell das Budget verbraucht hat

Claude Code enthält eigene Berichte, die viele Anwender 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. Der Betrag wird lokal anhand der Tokenanzahl und der regulären Listenpreise berechnet. Rabatte oder Aktionspreise werden dabei nicht berücksichtigt. Deshalb kann der Betrag von Ihrer Rechnung abweichen. Die Summen werden zurückgesetzt, sobald /clear eine neue Unterhaltung startet.

Bei einem Pro-, Max-, Team- oder Enterprise-Plan zeigt dieselbe Anzeige außerdem, wie viel Ihres Planlimits Sie verwendet haben. Die aktuelle Nutzung wird dabei Skills, Subagents, Plugins und einzelnen MCP-Servern als Prozentsatz der Gesamtnutzung zugeordnet. Die Anzeige kennzeichnet Verhaltensweisen, die mindestens 10% der aktuellen Nutzung ausmachen, beispielsweise lange Kontexte 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 statt nur niedrig ist, teilt die Anzeige mit, dass das Zeitfenster geschlossen wurde, aber nicht, wie Sie weiterarbeiten können. Was nach dem Erreichen des Limits zu tun ist, ist eine separate Entscheidung über Modell, Kontext und Plan.

Sobald mehr als ein Entwickler beteiligt ist, werden die Zahlen auf Kontoebene erfasst. 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-Pläne erhalten in der Administratorkonsole einen Ausgabenbericht mit CSV-Export, der täglich aktualisiert wird. Enterprise bietet zusätzlich eine Analytics API. Welche dieser Anzeigen Sie sehen, hängt davon ab, wie sich die einzelnen Entwickler angemeldet haben. Eine Organisation mit gemischten Anmeldemethoden muss daher zwei Berichte auswerten und die Werte manuell addieren.

Für die Budgetplanung nennt die veröffentlichte Zahl in der Kosten-Dokumentation von Anthropic mit Stand August 2026 durchschnittlich etwa $13 pro Entwickler und aktivem Tag sowie $150 bis $250 pro Entwickler und Monat. 90% der Benutzer liegen bei weniger als $30 pro aktivem Tag. Betrachten Sie diese Werte als veröffentlichten Referenzwert aus Enterprise-Installationen, nicht als Prognose für Ihr Team. Führen Sie eine Pilotgruppe durch und messen Sie die tatsächliche Nutzung, bevor Sie die Werte hochrechnen.

Die Dashboards können nichts unterhalb der Ebenen Tag und Benutzer aufschlüsseln. Sie zeigen Ihnen, dass Opus am Dienstag den größten Anteil hatte. 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 Berichte der Organisation täglich aktualisiert werden. Die Dashboards eignen sich daher zur Auswertung, nicht zum Erkennen eines außer Kontrolle geratenen Agents am selben Nachmittag. Dafür benötigen Sie Limits statt Berichte. Dieses Thema wird unter Begrenzung der Agent-Kosten auf einem VPS behandelt.

Form 3: Ihr eigener OpenTelemetry-Stack zeigt, welcher Prompt eine Regression verursacht hat

Claude Code erzeugt OpenTelemetry-Metriken und -Ereignisse, sobald Sie eine Umgebungsvariable setzen. Nur mit dieser Option werden Token- und Kostendaten pro Benutzer nahezu in Echtzeit in ein von Ihnen kontrolliertes System übertragen. 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 relevant. Jeder Datenpunkt enthält type, also input, output, cacheRead oder cacheCreation, sowie model und query_source, also main, subagent oder auxiliary. Außerdem enthält er agent.name, skill.name, mcp_server.name und mcp_tool.name. Damit lassen sich Fragen beantworten, die kein Dashboard abdeckt: Wie viel des Rechnungsbetrags entfällt auf Subagents statt auf Ihre eigenen Interaktionen? Hat ein MCP-Server die Zahl Ihrer Eingabe-Tokens verdoppelt? Sind die Cache-Lesevorgänge zurückgegangen, nachdem jemand die CLAUDE.md bearbeitet hat? Das Cache-Verhalten sorgt normalerweise für die Überraschungen. Wann sich Prompt-Caching amortisiert erklärt, welche Daten Sie dabei betrachten.

Eine Korrektur ist wichtig, weil dieses Thema in jedem entsprechenden Thread 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. Sein OTLP-Endpunkt akzeptiert jedoch nur Traces. Claude Code exportiert Metriken und Log-Ereignisse, aber keine Spans. Wenn Sie daher OTEL_EXPORTER_OTLP_ENDPOINT auf Langfuse setzen, bleibt das Projekt leer, und Sie erhalten keine brauchbare Fehlermeldung. Langfuse ist das richtige Tool für Agents, die Sie selbst auf der API erstellen und bei denen Ihr eigener Code jeden Span mit Prompt, Modell und Kosten anlegt. Für die Claude-Code-CLI ist ein Metrikenspeicher die passende Lösung.

Claude-Code-Ausgaben auf dem eigenen VPS überwachen

Dafür reichen zwei Dienste: ein Collector zum Empfangen der Metriken und Prometheus zum Speichern. Lassen Sie beide nicht aus dem öffentlichen Internet erreichbar sein, da ein offener OTLP-Port Schreibzugriffe von jedem akzeptiert, 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 Maschinen aus erreichbar und von keiner anderen Stelle. Die Adresse vor dem Port ist hier entscheidend, da 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 eigenes WireGuard-VPN auf dem 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 niemals auf dem Host veröffentlicht, da 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 collector

Das Collector-Log sollte mit Everything is ready. Begin running and processing data. enden. Wenn das Log mit einem Konfigurationsfehler endet, konnte das YAML nicht geparst werden. Der Container wird dann in einer Neustartschleife ausgeführt.

Konfigurieren Sie Claude Code nun für die Verwendung des Collectors. Fügen Sie auf jeder Maschine, auf der 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 eine Eingabeaufforderung, 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 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 keine Daten angekommen sind. Prüfen Sie, ob Protokoll und Port übereinstimmen: http/protobuf verwendet Port 4318 und grpc Port 4317. Eine Abweichung bleibt möglicherweise unbemerkt. Führen Sie claude --debug aus. Das Debug-Log meldet dann OTel-Exportfehler.

Wenn Sie nur eine Maschine und keinen Server verwenden, überspringen Sie alle vorherigen 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 in den Metriknamen weg. Dadurch bleibt der Scrape-Endpunkt im gültigen Prometheus-Textformat.

Diese Architektur erfordert eine Datenschutzentscheidung. Standardmäßig verlassen nur Zählerwerte die Maschine. Eingabetext und Toolausgabe werden nicht übertragen. OTEL_LOG_USER_PROMPTS=1 und OTEL_LOG_TOOL_CONTENT=1 ändern dieses Verhalten. Dann enthält Ihr Metrikserver Quellcode und alle anderen Daten, die im Kontext vorhanden waren. Aktivieren Sie diese Optionen nur bewusst und lesen Sie zuerst Geheimnisse aus dem Agent-Kontext heraushalten.

Kosten für skriptgesteuerte und CI-Ausführungen erfassen

Nicht-interaktive Ausführungen überraschen häufig, weil niemand den Bildschirm überwacht. claude -p mit --output-format json meldet die Kosten dieser Ausführung in seiner Ergebnis-Payload:

claude -p "summarise the failing tests" --output-format json | jq '.total_cost_usd'

Die Payload enthält total_cost_usd sowie eine Aufschlüsselung nach Modell. Dadurch kann ein CI-Job seine eigenen Kosten ohne Dashboard erfassen. 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 praktikable Methode zur Kostenüberwachung. Pro Ausführung ist dafür ein jq-Aufruf erforderlich.

Fehlerbilder und ihre sichtbaren Auswirkungen

Der Bericht ist leer. npx ccusage@latest daily gibt keine Zeilen aus. Das bedeutet, dass nicht der Speicherort gelesen wird, an dem Claude Code schreibt. CLAUDE_CONFIG_DIR ändert diesen Speicherort. Der Parser muss darüber informiert werden. Wenn Zeilen vorhanden sind, aber etwa einen Monat zurückreichen, funktioniert cleanupPeriodDays wie vorgesehen: Transkripte werden standardmäßig nach 30 Tagen gelöscht.

Zwei Rechner melden unterschiedliche Summen. Das ist zu erwarten und kein Fehler. Sowohl /usage als auch jeder Log-Parser lesen nur den lokalen Sitzungsverlauf. Die Nutzung auf einem anderen Gerät oder über claude.ai fehlt daher in beiden Auswertungen.

Die lokale Summe stimmt nicht mit der Rechnung überein. Die lokalen Werte werden anhand der Token-Anzahl und der regulären Listenpreise berechnet. Aktionspreise und vertraglich vereinbarte Rabatte werden dabei nicht berücksichtigt. Bei einem Abonnement werden die Tokens außerdem überhaupt nicht einzeln abgerechnet. Für die API-Abrechnung ist die Nutzungsseite der Console maßgeblich.

Die Kosten sind gestiegen, obwohl Sie dieselbe Arbeit ausgeführt haben. Prüfen Sie zuerst die Cache-Spalten. Eine lange Sitzung sendet bei jeder Eingabe den gesamten Verlauf erneut. Solange der Cache aktiv ist, gilt dafür der Cache-Preis. Nach Ablauf des Caches gilt wieder der vollständige Eingabepreis. Eine längere Unterbrechung kann daher dazu führen, dass die gesamte Unterhaltung erneut verarbeitet wird. Das zeigt sich als große Eingabeanzahl neben einer kleinen Ausgabeanzahl. Die Token-Preise für Eingaben und Ausgaben erklären, warum sich diese beiden Werte unabhängig voneinander ändern.

Ein Tag mit Subagents wirkt unmöglich. Jeder Subagent verwendet ein eigenes Kontextfenster. Die Token-Nutzung steigt daher mit der Anzahl der gestarteten Subagents und ihrer jeweiligen Laufzeit. Nur die OTel-Daten können die Werte getrennt ausweisen, und zwar über das Attribut query_source auf claude_code.token.usage. Ein Log-Parser zeigt nur die Gesamtsumme an. Die einzelnen Anteile müssen Sie daraus ableiten.

FAQ

Zeigt ccusage, was mir bei einem Max-Tarif tatsächlich berechnet wird?

Nein. Bei einem Abonnement werden Ihnen keine einzelnen Tokens berechnet. Ein Log-Parser bewertet Ihre Tokens daher zu den regulären API-Listenpreisen 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 lassen sich damit Projekte oder Modelle miteinander vergleichen. Für den tatsächlich fälligen Betrag ist bei der API die Nutzungsseite der Console maßgeblich. Bei einem Abonnement gilt dafür die Abrechnungsseite des Tarifs.

Wo speichert Claude Code die Sitzungsdateien, die diese Tools einlesen?

In ~/.claude/projects/<project>/<session-id>.jsonl. Dabei ist <project> der Pfad des Arbeitsverzeichnisses, in dem nicht alphanumerische Zeichen durch - ersetzt werden. Jede Zeile ist ein JSON-Objekt für eine Nachricht, eine Tool-Verwendung oder einen Metadateneintrag. CLAUDE_CONFIG_DIR verschiebt das gesamte Verzeichnis. cleanupPeriodDays in settings.json steuert die Aufbewahrung über 30 Tage. Anthropic dokumentiert das Format der Einträge als intern und weist darauf hin, dass es sich zwischen Versionen ändern kann. Verwenden Sie daher zum Parsen ein gepflegtes Tool und kein eigenes Skript.

Kann ich Telemetriedaten von Claude Code an Langfuse senden?

Nicht direkt. Der Langfuse-OTLP-Endpunkt akzeptiert Traces. Claude Code exportiert jedoch Metriken und Log-Ereignisse statt Spans. Daher können die Daten dort nicht abgelegt werden. Senden Sie die Metriken von Claude Code an einen OpenTelemetry Collector und speichern Sie 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 Werte nicht mit der Nutzungsseite der Console überein?

Weil sie unterschiedlich berechnet werden. /usage und Log-Parser addieren die Token-Zahlen aus Sitzungsdateien auf dem jeweils verwendeten Rechner. Anschließend bewerten sie diese zu den regulären Listenpreisen. Die Console zeigt dagegen, was Ihrer Organisation tatsächlich berechnet wurde. Dabei werden alle Rechner und alle Keys berücksichtigt, einschließlich etwaiger Rabatte. Eine Abweichung ist normal. Eine sehr große Abweichung weist meist auf ein zweites Gerät, einen CI-Runner oder ein weiteres Teammitglied hin, das über dasselbe Konto abrechnet.

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, beispielsweise mit claude -p "..." --output-format json | jq '.total_cost_usd'. Dieselbe Nutzlast 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 einen Agent, ein Dashboard oder einen zusätzlichen Dienst zu benötigen.