Deepseek ArtifactsDeepseek Artifacts
Claude Code CLI · 2026

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

Ansehen

Claude Code最該裝的不是Skill,是這個腳本|彩色進度條、費用、git 分支一眼看完

Video:YAHA學堂8:44

Ansehen

Your Claude Code Terminal Should Look Like This (Status Line Setup)

Video:Leon van Zyl9:02

Ansehen

How to Add a Custom Status Line in Claude Code on Windows 11 (Project-Level Setup)

Video:Devtamin7:27

Ansehen

Status line — Claude Code documentation

Docs:code.claude.com

Ansehen

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. 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.

    Claude Code v2.1.83 welcome box open in a Windows PowerShell terminal after typing claude, with an empty input prompt and no status line beneath it
    Eine frische Claude-Code-v2.1.83-Sitzung in Windows PowerShell — Willkommens-Box, leerer Prompt, noch keine Statuszeile.Ansehen bei 0:22
  2. 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.

    Slash command /statusline typed into Claude Code with the autocomplete menu labelling it as the way to set up Claude Code’s status line UI
    Die Autovervollständigung bewirbt /statusline als den Befehl, der Claude Codes Statuszeilen-UI einrichtet.Ansehen bei 0:32
  3. 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.

    statusline-setup agent on Windows reporting it could not find standard shell config files and offering to paste a PS1, point at a WSL or Git Bash config, or set up a fresh statusline showing user, directory, model and context usage
    Die drei Windows-Optionen des Agenten: PS1 konvertieren, auf eine eigene Konfiguration zeigen oder mit einem sinnvollen Standard starten.Ansehen bei 1:20
  4. 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.

    Claude Code confirming your status line is configured with a preview reading hardik, ~/Dev/project, main, Claude Opus 4.6 and ctx:42%, and noting the config is in ~/.claude/settings.json with the script at ~/.claude/statusline-command.sh
    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

  1. 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.

    Natural language request /statusline show model name and context percentage with a progress bar submitted to Claude Code, which replies Noodling while it works
    Eine einzige Anfrage in natürlicher Sprache — Modellname plus Kontext-Fortschrittsbalken — ist die ganze Schnittstelle.Ansehen bei 1:07
  2. 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.

    Built-in statusline-setup tool configuring the status line while a white Configuration tooltip reads Customize your status line to monitor context window usage, costs and git status in Claude Code
    Das statusline-setup-Tool mitten im Lauf, liest Settings und Skript, mit der Feature-Beschreibung beim Hover.Ansehen bei 1:12
  3. 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.

    Claude Code summarising the freshly configured status line — a bold cyan model name and a 20 character context bar green to 49 percent, yellow to 79 and red above — above the live Opus 4.6 bar reading 2 percent
    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

  1. 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.

    Top of statusline.sh parsing the stdin JSON with jq into MODEL, DIR, COST and PCT variables, then choosing BAR_COLOR red at 90 percent context used and yellow at 70
    Der Parser: fünf jq-Lesezugriffe von stdin, dann eine BAR_COLOR-Wahl an den 90-%- und 70-%-Kontextschwellen.Ansehen bei 5:46
  2. 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.

    Lower half of statusline.sh turning DURATION_MS into minutes and seconds, appending the git branch from git rev-parse, and echoing the model row plus the bar, percentage, cost and elapsed time row
    Zwei echo-Zeilen, zwei Reihen: Modell mit Verzeichnis und Branch, dann Balken, Prozent, Kosten und Timer.Ansehen bei 6:13
  3. 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.

    Close-up of GIT_STATUS logic colouring staged counts green and modified counts yellow with ANSI escape codes next to the BRANCH detection in a Claude Code statusline script
    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

  1. 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.

    Diff of ~/.claude/settings.json deleting the statusLine block with type command pointing at bash /Users/matt/.claude/statusline-command.sh after /statusline cleared the config
    Ein /statusline-clear-Diff: Der statusLine-Block verlässt settings.json, bereit zum Neuschreiben.Ansehen bei 1:41
  2. 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.

    statusline.sh snippet building a clickable repo link with printf OSC 8 escapes and printing line one with model and branch plus line two with context bar, cost and duration
    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.

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.

Claude-Code-Statusline-FAQ

Verwandte Guides