Claude Code verbrennt bis zu 20 % der Tokens für eine 3-Wort-Statuszeile
Eine Analyse von Flamerix AI zeigt: Claude Code schickt alle ~30 Sekunden das komplette Protokoll jedes Hintergrund-Agenten an das Modell, nur um eine Statuszeile mit 3–5 Wörtern zu erzeugen. Das soll rund 16–20 % der Kosten ausmachen. Ein kleines Skript schaltet das ab, da es offiziell keine Einstellung dafür gibt.

Worum es geht
Das Unternehmen Flamerix AI hat ein Skript veröffentlicht, das in Claude Code (Anthropics Programmierassistent für das Terminal) eine unscheinbare, aber teure Funktion abschaltet. Nach Angaben der Autoren schickt Claude Code etwa alle 30 Sekunden für jeden Hintergrund-Agenten dessen komplettes Gesprächsprotokoll an das Modell des Agenten – meist Opus, das leistungsfähigste und teuerste Modell. Die Aufgabe: „Beschreibe deine letzte Aktion in 3–5 Wörtern.“ Die Antwort landet nur in der Statuszeile des Agenten-Panels. Sie erreicht weder das Modell noch deine Unterhaltung.
Es gibt laut Quelle keine Einstellung, die das ausschaltet. Seit Version 2.1.232 (August 2026) ist die Funktion standardmäßig aktiv. Die Analyse stammt aus einem GitHub-Gist, der auf Hacker News diskutiert wird. Das ist eine Herstellerangabe eines Drittanbieters, keine Bestätigung von Anthropic.
Wie das Problem entdeckt wurde
Die Auffälligkeit zeigte sich in der OpenTelemetry-Ausgabe von Claude Code. OpenTelemetry ist ein Standard, um Messdaten wie einzelne API-Anfragen zu exportieren. Wer die Ereignisse claude_code.api_request nach dem Feld query_source gruppiert, sieht „agent_summary“ als eigenen Posten. Bei Flamerix AI (Messung durch DRIM) kostete dieser Posten mehr als die Hauptkonversation selbst:
| query_source = agent_summary | Woche vor dem Hook | 2 Tage danach |
|---|---|---|
| Anteil an allen Claude-Code-Kosten | 16,4 % (Hauptkonversation: 15,7 %) | 0 % |
| Anteil an allen API-Anfragen | 19,7 %, etwa jede fünfte | 0 % |
| Anteil der Kosten auf Opus | 96 % | – |
| Eingabe- pro Ausgabe-Token | ≈ 9.000 : 1 | – |
„Kosten“ meint hier Claude Codes eigene Schätzung pro Anfrage (cost_usd), keine Rechnung. Wer ein Abo nutzt, verliert dadurch vor allem Spielraum im Rate-Limit, also im erlaubten Nutzungskontingent. Das Sammel-Issue #86879 bündelt vier unabhängige Messungen mit 18–26 %. Das Verhältnis von etwa 9.000 Eingabe- zu 1 Ausgabe-Token zeigt das Missverhältnis: Es wird sehr viel gelesen, um sehr wenig zu schreiben.
Wie das Skript funktioniert
no-agent-summary.js ist ein „Bun-Preload“. Bun ist die JavaScript-Laufzeit, in der Claude Code läuft; ein Preload ist Code, der vor dem eigentlichen Programm geladen wird. Die Binärdatei selbst wird nicht verändert. Das Skript umhüllt setTimeout und setInterval. Enthält der Quelltext einer Timer-Funktion einen bekannten Anker, etwa die Logzeile [AgentSummary] Timer fired, liefert es einen wirkungslosen Timer zurück. Alle anderen Timer laufen normal.
Warum so umständlich? Das Modul liegt als vorkompilierter Bun-Bytecode vor, daher bringt Textbearbeitung in der Binärdatei nichts. Auch der API-Client läuft nicht über das umhüllbare fetch. Aber Function.prototype.toString liefert den Quelltext einer Callback-Funktion auch aus Bytecode. Der wirkungslose Timer nutzt genau 2³¹−1 Millisekunden, denn größere Werte behandeln Node und Bun als 1 ms – ein „unendlicher“ Wert würde sofort feuern.
Installation in Kurzform (Linux): Skript herunterladen, claude daemon stop --any ausführen und Claude Code mit BUN_OPTIONS="--preload <Pfad>" starten. Dauerhaft geht das über Shell-Profile, systemd-Umgebungsdateien oder einen Wrapper namens claude im PATH. Wichtig: Den Daemon nach der Installation neu starten, weil Daemon, Pty-Host und vorgewärmte Sitzungen die Umgebung des Prozesses erben, der den Daemon gestartet hat. Auch Headless-Läufe (claude -p, Cron, CI, Editor-Integrationen) brauchen die Variable.
Über CC_AGENT_SUMMARY_MODE lässt sich zwischen off (Standard, unterdrückt den Timer) und pass (lädt nur, ändert nichts – als A/B-Kontrolle) umschalten.
Warum die offiziellen Schalter nicht helfen
Die Autoren haben das Bundle durchsucht und nennen mehrere Sackgassen:
- Die dokumentierte SDK-Option
agentProgressSummariessteht auffalse, ist im Code aber Teil einer ODER-Verknüpfung; jeder schreibende Pfad setzttrue.falseändert also nichts. - Das Intervall bestimmt der Server (pro Modellfamilie, begrenzt auf 30–240 s). Der Standard ist schon das Minimum, kein Wert deaktiviert den Timer.
DISABLE_NON_ESSENTIAL_MODEL_CALLSkommt in der Binärdatei gar nicht vor.CLAUDE_CODE_FORK_SUBAGENT=0undCLAUDE_CODE_DISABLE_BACKGROUND_TASKS=1stoppen es zwar, nehmen aber Fork-Subagenten bzw. Hintergrund-Agenten gleich mit.- Der Prompt-Cache (zwischengespeicherte, günstiger abgerechnete Eingaben) macht es billiger, aber nicht billig: Rund 98 % der Aufrufe lesen aus dem Cache, die übrigen ~2 % mit kaltem Cache verursachen über ein Drittel der Kosten.
- Kostenwerkzeuge, die Sitzungsprotokolle auswerten, sehen die Anfragen nicht, weil sie nicht auf die Platte geschrieben werden (#104358). Nur der OpenTelemetry-Export zeigt sie.
Interessant: Version 2.1.310 enthält bereits einen günstigeren „Short Mode“ (etwa 2.000 Token Notizen statt des vollen Transkripts, optional von einem kleineren Modell geschrieben). Er ist aber abgeschaltet und lässt sich nur per Server-Flag ändern.
Verlauf und Überprüfung
Die Funktion tauchte in 2.1.32 (5. Feb.) erstmals im Code auf, wurde in 2.1.72 als SDK-Option erreichbar, in 2.1.117 im interaktiven CLI, ab 2.1.232 (13. Aug.) standardmäßig aktiv; ab 2.1.300 (14. Okt.) ist das Intervall serverseitig einstellbar. Der Wochenanteil an den Kosten stieg bei den Autoren von 3,5–7 % im Juli auf rund 16 % Mitte Oktober.
Getestet wurden die Versionen 2.1.257 bis 2.1.312: In einem etwa 2,5-minütigen Agentenlauf gab es ohne Hook rund 5 Zusammenfassungs-Forks, mit Hook im Modus off null. Da ein Update das Verfahren stillschweigend aushebeln kann (etwa bei umbenannten Logzeilen oder anderem Timer-Mechanismus), sollte man nach jedem Update prüfen: Logdatei mit CC_AGENT_SUMMARY_LOG ansehen und in der Telemetrie kontrollieren, ob agent_summary bei null bleibt.
Was du beachten solltest
Es handelt sich nicht um ein Modell, sondern um ein Hilfsskript, das du nicht „herunterlädst und startest“ wie eine KI. Praktisch brauchst du: Linux (macOS und Windows ungetestet; unter Windows wird der Hook wohl nie greifen), eine Claude-Code-Installation und Zugriff auf Shell-Umgebungsvariablen. Den Effekt siehst du nur, wenn du Telemetrie exportierst. Sichtbare Folge: Die Statuszeile der Agenten im Panel wird nicht mehr aktualisiert; im SDK enthält task_progress keine Zusammenfassung. Subagenten, Hintergrund-Agenten und Skills laufen normal. Der Overhead ist gering (claude --version: ca. 10 → 17 ms, eine Messung).
Einordnung
Die Zahlen kommen von einem einzelnen Anbieter plus Nutzerberichten im Issue-Tracker; Anthropic hat sich in der Quelle nicht geäußert. Dass vier unabhängige Messungen in ähnlicher Größenordnung liegen, spricht aber dafür, dass es ein reales Muster ist. Vor allem für Abo-Nutzer mit vielen Hintergrund-Agenten kann das merklich Kontingent sparen.
Kritisch: Das Skript greift in das Laufzeitverhalten eines Clients ein und kann laut Autoren gegen Nutzungsbedingungen verstoßen; Haftung und Prüfung liegen bei dir. Zudem ist es fragil, weil es auf Textankern im Quelltext beruht. Eine saubere Lösung wäre ein offizieller Schalter oder die Aktivierung des bereits eingebauten Short Mode. Bis dahin ist das ein lehrreiches Beispiel dafür, wie versteckte Nebenanfragen die Kosten von KI-Werkzeugen treiben – und warum Telemetrie so wichtig ist.
Quellen
- Hacker News gist.github.com
Frag den KI-Assistenten
Fragen zu diesem Artikel, zur Installation oder zu Hintergründen? Unser Assistent kennt diese Seite und läuft auf unserem eigenen Rechner, nicht in einer fremden Cloud.
Der Assistent ist eine KI (Gemma 4) und kann sich irren – wichtige Angaben bitte in der Quelle prüfen. Fragen werden nur zum Beantworten genutzt und nach einer Stunde gelöscht. Bitte keine persönlichen Daten eingeben.
Kommentare
Was meinst du dazu? Schon ausprobiert? Schreib es hier, ohne Anmeldung.
Kommentare sind öffentlich. Links sind nicht erlaubt, beleidigende Beiträge löschen wir. Deinen eigenen Kommentar kannst du in diesem Browser jederzeit wieder löschen. Mehr dazu in der Datenschutzerklärung.