Claude-Code-Statusline: Mit /statusline einrichten (2026)
Verwandeln Sie den unteren Rand Ihres Terminals in ein Live-Dashboard — Modell, Kontextfenster-Balken, Git-Branch, Ordner und Kosten. Zwölf bebilderte Schritte vom integrierten /statusline-Befehl bis zu einer gepflegten, farbigen Leiste, dazu die Fixes, wenn sie nicht erscheint.
Kurzfassung
- /statusline ist in Claude Code eingebaut. Starten Sie den Befehl, beschreiben Sie die gewünschte Leiste in einem Satz, und ein statusline-setup-Agent schreibt das Skript und verdrahtet den statusLine-Block in ~/.claude/settings.json für Sie.
- Unter Windows bietet der Agent drei Wege: Ihr PowerShell-Profil konvertieren, auf eine WSL- oder Git-Bash-Konfiguration zeigen oder ein frisches Standard-Setup mit Benutzer, Verzeichnis, Modell und Kontextnutzung einrichten.
- Das Skript liest ein JSON-Dokument von stdin — model.display_name, workspace.current_dir, context_window.used_percentage, cost.total_cost_usd und mehr — und alles, was es per echo ausgibt, wird Ihre Leiste. ANSI-Farben und mehrere Zeilen sind ausdrücklich erlaubt.
- Alles läuft lokal und kostet keine Tokens. Updates greifen bei Sitzungsereignissen (oder alle N Sekunden mit refreshInterval), und /statusline clear entfernt das Ganze, wenn Sie neu anfangen wollen.
How to Set Up a Custom Status Line in Claude Code CLI to Track API Costs and Context Usage (2026)
Video:ProgrammingKnowledge23:32
Claude Code最該裝的不是Skill,是這個腳本|彩色進度條、費用、git 分支一眼看完
Video:YAHA學堂8:44
Your Claude Code Terminal Should Look Like This (Status Line Setup)
Video:Leon van Zyl9:02
How to Add a Custom Status Line in Claude Code on Windows 11 (Project-Level Setup)
Video:Devtamin7:27
Status line — Claude Code documentation
Docs:code.claude.com
Die Schritte 1–4 wurden unter Windows PowerShell aufgezeichnet, die Schritte 5–12 unter macOS; Stills stammen ausschließlich aus sauberen Bildschirmaufnahmen — Frames mit Kamerabild des Creators oder eingebrannten Overlays wurden ausgeschlossen.
Setup-Tipps — Betriebssystem angeben, das Skript global und in einer eigenen Datei halten, die jq-Anforderung und der Debug-Datei-Trick — stammen aus den beiden oben genannten zusätzlichen Videos. Feldnamen und Aktualisierungsverhalten in den Vertiefungsabschnitten folgen der offiziellen Statusline-Dokumentation.
Der /statusline-Walkthrough — 12 bebilderte Schritte
/statusline starten und Claude das Verdrahten überlassen
- 1
Starten Sie Claude Code in Ihrem Terminal
Starten Sie claude in PowerShell, Terminal oder einer beliebigen Shell. Eine frische Sitzung zeigt nur die Willkommens-Box und einen leeren Prompt — der Streifen unter der Eingabe, in dem Ihre Statusline leben wird, existiert erst, wenn ein statusLine-Block in ~/.claude/settings.json steht.

Eine frische Claude-Code-v2.1.83-Sitzung in Windows PowerShell — Willkommens-Box, leerer Prompt, noch keine Statuszeile.Ansehen bei 0:22 - 2
Tippen Sie den /statusline-Befehl
Das Slash-Befehl-Menü beschreibt es schlicht: Claude Codes Statuszeilen-UI einrichten. Drücken Sie Enter. Der eingebaute Befehl versteht natürliche Sprache, Sie müssen also nie von Hand ein Skript schreiben — wobei Sie natürlich frei sind, alles zu bearbeiten, was er danach generiert.

Die Autovervollständigung bewirbt /statusline als den Befehl, der Claude Codes Statuszeilen-UI einrichtet.Ansehen bei 0:32 - 3
Beantworten Sie die Fragen des Setup-Agenten
Ein eigener statusline-setup-Agent übernimmt. Unter Windows meldet er, dass keine Standard-Shell-Konfiguration gefunden wurde, und bietet drei Wege: Ihr PS1-Profil einfügen, damit es konvertiert wird, auf eine WSL- oder Git-Bash-Konfiguration zeigen oder ein frisches Standard-Setup mit Benutzer, Verzeichnis, Modell und Kontextnutzung nehmen. Alle drei enden im selben settings.json-Block.

Die drei Windows-Optionen des Agenten: PS1 konvertieren, auf eine eigene Konfiguration zeigen oder mit einem sinnvollen Standard starten.Ansehen bei 1:20 - 4
Prüfen Sie die geschriebene Konfiguration und das Skript
Wenn der Agent fertig ist, druckt er eine Vorschau der Leiste — Benutzername, Verzeichnis, Git-Branch, Modell, Kontextprozentsatz — und sagt genau, wo alles gelandet ist: die Konfiguration in ~/.claude/settings.json, das Skript unter ~/.claude/statusline-command.sh. Unter macOS und Linux kann derselbe Ablauf stattdessen Ihren bestehenden .zshrc- oder .bashrc-Prompt konvertieren, statt bei null anzufangen.

Setup bestätigt mit einer Vorschau von hardik | ~/Dev/project | main | Claude Opus 4.6 | ctx:42% und beiden Dateipfaden.Ansehen bei 3:06
Die gewünschte Leiste in natürlicher Sprache beschreiben
- 5
Fordern Sie exakt die Leiste an, die Sie wollen
Rufen Sie /statusline jederzeit erneut auf und beschreiben Sie die Leiste in einem Satz: Zeige Modellname und Kontextprozentsatz mit einem Fortschrittsbalken. Anfragen in anderen Sprachen funktionieren ebenfalls — der Befehl ist einfach ein Prompt an den Agenten. Jede neue Anfrage schreibt dasselbe Skript neu, statt Duplikate zu stapeln.

Eine einzige Anfrage in natürlicher Sprache — Modellname plus Kontext-Fortschrittsbalken — ist die ganze Schnittstelle.Ansehen bei 1:07 - 6
Sehen Sie dem statusline-setup-Tool bei der Arbeit zu
Claude Code schickt ein eingebautes statusline-setup-Tool los, das Ihre aktuelle ~/.claude/settings.json und Ihr Statusline-Skript liest und dann neu schreibt. Claudes eigene Hover-Card fasst das Feature zusammen: eine eigene Statuszeile konfigurieren, um Kontextfenster-Nutzung, Kosten und Git-Status zu überwachen.

Das statusline-setup-Tool mitten im Lauf, liest Settings und Skript, mit der Feature-Beschreibung beim Hover.Ansehen bei 1:12 - 7
Begrüßen Sie Ihre neue Leiste
Am Ende fasst der Agent das Design zusammen — Modellname in fettem Cyan, ein zwanzig Zeichen langer Kontextbalken, der bis 49 % grün bleibt, bei 50 % gelb und bei 80 % rot wird — und die Leiste ist schon live am unteren Rand Ihres Terminals. Kein Neustart nötig; Feinschliff können Sie in derselben Sitzung anfordern.

Die Zusammenfassung des Agenten über der live laufenden Opus-4.6-Leiste (1M Kontext), die 2 % Kontext anzeigt.Ansehen bei 1:27
Das generierte Skript lesen
- 8
Ein JSON-Dokument trifft auf stdin ein
Öffnen Sie das generierte Skript — ~/.claude/statusline.sh unter macOS und Linux oder die .ps1-/statusline-command.sh-Variante unter Windows. Bei jedem Update piped Claude Code einen JSON-Snapshot der Sitzung in die Standardeingabe des Skripts. Das generierte Bash parst ihn mit jq: .model.display_name, .workspace.current_dir, .cost.total_cost_usd, .cost.total_duration_ms und .context_window.used_percentage.

Der Parser: fünf jq-Lesezugriffe von stdin, dann eine BAR_COLOR-Wahl an den 90-%- und 70-%-Kontextschwellen.Ansehen bei 5:46 - 9
Alles, was Sie per echo ausgeben, wird die Leiste
Das Ende des Skripts ist reine Darstellung: Kosten mit printf formatiert, Millisekunden in Minuten und Sekunden umgerechnet, und ein echo pro Statuszeile — Modell mit Ordner und Git-Branch in der ersten, Balken, Prozentsatz, Kosten und Timer in der zweiten. ANSI-Farbescapes sind willkommen, und jedes zusätzliche echo fügt einfach eine Zeile hinzu.

Zwei echo-Zeilen, zwei Reihen: Modell mit Verzeichnis und Branch, dann Balken, Prozent, Kosten und Timer.Ansehen bei 6:13 - 10
Git-Bewusstsein auf dieselbe Art ergänzen
Git-Daten sind einen Subprozess entfernt: git rev-parse --git-dir erkennt ein Repository, git branch --show-current nennt den Branch, und git diff --cached --numstat und --numstat zählen gestagte und geänderte Dateien. Die generierten Beispiele färben Staged-Zähler grün und geänderte gelb — ein billiger Schutz, wenn Sie mehrere Claude-Code-Sitzungen über verschiedene Branches hinweg offen halten.

GIT_STATUS aus Staged- und Modified-Zählern zusammengesetzt, mit ANSI-Codes grün und gelb gefärbt.Ansehen bei 5:01
Den Block in die Hand nehmen: clear, neu schreiben, mehrzeilig
- 11
Alles hängt an einem einzigen settings.json-Block
Ein Blick in ~/.claude/settings.json: Das ganze Feature ist ein einziges statusLine-Objekt — type "command" plus der auszuführende Befehl, hier bash ~/.claude/statusline-command.sh. Ein /statusline clear, und der Agent entfernt den Block; beschreiben Sie eine neue Leiste, und er schreibt ihn neu. Eine projektweite .claude/settings.json funktioniert ebenfalls, falls Sie eine Leiste pro Repo wollen.

Ein /statusline-clear-Diff: Der statusLine-Block verlässt settings.json, bereit zum Neuschreiben.Ansehen bei 1:41 - 12
Mehrzeilig mit Kosten, Dauer und Repo-Links
Zeilen stapeln sich umsonst: Das mehrzeilige Beispiel der offiziellen Doku druckt einen klickbaren Repo-Link mit OSC-8-Escape-Sequenzen, dann eine zweite Zeile mit Kontextbalken, den mit printf '$%.2f' formatierten Sitzungskosten sowie verstrichenen Minuten und Sekunden. Schwellen, Rate-Limit-Prozentsätze, Vim-Modus — fordern Sie jede beliebige Kombination an und iterieren Sie, bis das Dashboard passt.

Ein annotiertes Beispiel: ein OSC-8-Repo-Link in Zeile eins; Balken, Kosten und Dauer in Zeile zwei.Ansehen bei 7:31
Die stdin-JSON-Daten, die Ihr Statusline-Skript erhält
Claude Code ruft Ihr Skript mit einem JSON-Snapshot der Sitzung auf der Standardeingabe auf. Das sind die Felder, die man kennen sollte, laut offizieller Doku — erwähnen Sie eines davon in einem /statusline-Satz, und der Agent verdrahtet es für Sie:
- 1Sitzungs-Grundlagen — session_id, transcript_path, cwd und version, dazu session_name und prompt_id, sobald Sie einen Prompt gesendet haben.
- 2model.id und model.display_name — das aktive Claude-Modell, das Ihre Leiste üblicherweise anführt.
- 3workspace.current_dir, workspace.project_dir und workspace.added_dirs, dazu workspace.git_worktree und repo.owner / repo.name, wenn der Ordner zu einem gehosteten Repository gehört.
- 4context_window.used_percentage und remaining_percentage — der Used-Wert zählt Input-, Cache-Erstellungs- und Cache-Lese-Tokens, aber keine Output-Tokens.
- 5context_window.current_usage schlüsselt das auf in input_tokens, output_tokens, cache_creation_input_tokens und cache_read_input_tokens; es ist null vor dem ersten API-Aufruf und direkt nach /compact.
- 6cost.total_cost_usd, cost.total_duration_ms, cost.total_api_duration_ms, cost.total_lines_added und cost.total_lines_removed für Spend-and-Pace-Leisten.
- 7rate_limits.five_hour und rate_limits.seven_day mit used_percentage und resets_at auf Pro-/Max-Plänen (bei Gateway-Setups erscheint ein spend_limit-Paar) — jedes Fenster kann unabhängig fehlen, also sichern Sie das im Skript ab.
- 8Extras — exceeds_200k_tokens, fast_mode, effort.level, thinking.enabled, output_style.name, vim.mode, agent.name, pr.number / pr.url / pr.review_state und die worktree.*-Familie.
Die Feldnamen folgen der offiziellen Statusline-Dokumentation, die auch fertige Skripte für Bash, Python und Node.js mitliefert, eine Windows-PowerShell-Variante und ein Rezept mit gepuffertem Git für langsamere Maschinen.
Fehlersuche: Statusline fehlt, stimmt nicht oder hinkt
Die meisten Statusline-Pannen laufen auf eine von fünf Ursachen hinaus. Alle lassen sich in derselben Sitzung beheben — keine Neuinstallation nötig.
- 1Nichts erscheint — prüfen Sie zuerst ~/.claude/settings.json auf kaputtes JSON; in einem aufgezeichneten Windows-Setup blieb die Leiste stumm, bis ein fehlerhaftes Zeichen im Befehlspfad korrigiert und die Sitzung neu gestartet war. Die Leiste versteckt sich auch, solange Berechtigungs-Prompts offen sind, und ein Workspace muss vertraut sein, bevor Skripte laufen.
- 2Leere Leiste ohne Fehler — Ihr Skript ist mit einem Wert ungleich null beendet oder hat nichts ausgegeben. Führen Sie es von Hand aus, z. B. echo '{"model":{"display_name":"Opus"}}' | bash ~/.claude/statusline.sh, und lesen Sie die Ausgabe; claude --debug protokolliert auch das Stderr des Skripts.
- 3Funktioniert nur in einem Projekt — der Block landete in einer projektweiten .claude/settings.json statt in Ihrem Home-Verzeichnis. Verschieben Sie ihn nach ~/.claude/settings.json, dann gibt es in jedem Projekt eine Leiste.
- 4Zahlen stimmen nicht — das Skript liest wahrscheinlich die falsche Eigenschaft. Bitten Sie Claude, das rohe stdin-JSON in eine Debug-Datei zu schreiben, lesen Sie diese und korrigieren Sie das Feld; die aufgezeichnete macOS-Sitzung hat genau so ihren eigenen Prozentsatz repariert.
- 5Skript existiert, rendert aber nichts unter macOS oder Linux — jq fehlt. Installieren Sie es (brew install jq, sudo apt install jq oder das Windows-Äquivalent), und lassen Sie Claude die Statuszeile aktualisieren, damit das Skript dagegen neu generiert wird.
Wie oft sich die Leiste aktualisiert (und was es kostet)
Das Skript läuft einmal beim Sitzungsstart, dann immer wieder, wenn etwas passiert: eine neue Assistant-Nachricht, ein abgeschlossener /compact, ein Wechsel des Berechtigungs- oder Vim-Modus, eine Änderung am Befehl selbst, ein ablaufendes Rate-Limit-Fenster oder ein ablaufender warmer Prompt-Cache. Updates sind auf 300 Millisekunden entprellt, und ein laufender Durchlauf wird abgebrochen, wenn ein neuerer eintrifft.
Weil Updates ereignisgesteuert sind, kann die Leiste verstummen, während Sie untätig warten — etwa auf einen langen Subagent-Lauf. Ergänzen Sie refreshInterval im statusLine-Block, um das Skript alle N Sekunden für zeitbasierte Daten neu laufen zu lassen. Nichts davon berührt die API: Das Skript läuft lokal und verbraucht keine Tokens, und jede zusätzliche echo-Zeile rendert als eigene Reihe.
Zwei weitere Stellschrauben für Tüftler: hideVimModeIndicator unterdrückt den eingebauten -- INSERT -- -Text, wenn Ihr Skript den Vim-Modus selbst rendert, und eine separate subagentStatusLine-Einstellung gibt Subagenten eigene Zeilen im Agenten-Panel.
