Skip to main content
La barra di stato è una barra personalizzabile nella parte inferiore di Claude Code che esegue qualsiasi script di shell che configuri. Riceve dati di sessione JSON su stdin e visualizza tutto ciò che il tuo script stampa, fornendoti una visualizzazione persistente e immediata dell’utilizzo del contesto, dei costi, dello stato git o di qualsiasi altra cosa tu voglia tracciare. Le barre di stato sono utili quando:
  • Vuoi monitorare l’utilizzo della finestra di contesto mentre lavori
  • Hai bisogno di tracciare i costi della sessione
  • Lavori su più sessioni e hai bisogno di distinguerle
  • Vuoi che il ramo git e lo stato siano sempre visibili
La barra di stato viene renderizzata nella sua propria riga sopra i badge del footer integrati e non li sostituisce. Con una barra di stato personalizzata configurata, Claude Code smette di mostrare la maggior parte dei suggerimenti da tastiera del footer, inclusi esc per interrompere, il fallback ? per scorciatoie e il suggerimento tieni premuto spazio per parlare della dettatura vocale. Per aggiungere badge di collegamento cliccabili al footer quando un ID appare nella conversazione, senza scrivere uno script, configura invece footerLinksRegexes. Ecco un esempio di una barra di stato multi-riga che visualizza le informazioni git sulla prima riga e una barra di contesto codificata a colori sulla seconda.
Una barra di stato multi-riga che mostra il nome del modello, la directory, il ramo git sulla prima riga, e una barra di progresso dell'utilizzo del contesto con costo e durata sulla seconda riga
Questa pagina illustra come configurare una barra di stato di base, spiega come fluiscono i dati da Claude Code al tuo script, elenca tutti i campi che puoi visualizzare, e fornisce esempi pronti all’uso per modelli comuni come lo stato git, il tracciamento dei costi e le barre di progresso.

Configura una barra di stato

Usa il comando /statusline per far generare uno script a Claude Code, oppure crea manualmente uno script e aggiungilo alle tue impostazioni.

Usa il comando /statusline

Il comando /statusline accetta istruzioni in linguaggio naturale che descrivono cosa vuoi visualizzare. Claude Code genera un file di script in ~/.claude/ e aggiorna automaticamente le tue impostazioni:
Approva i prompt di modifica dei file se Claude Code ti chiede il permesso durante la configurazione.

Configura manualmente una barra di stato

Aggiungi un campo statusLine alle tue impostazioni utente (~/.claude/settings.json, dove ~ è la tua directory home) o alle impostazioni del progetto. Imposta type su "command" e punta command a un percorso di script o a un comando di shell inline. Per una procedura dettagliata sulla creazione di uno script, vedi Costruisci una barra di stato passo dopo passo.
Il campo command viene eseguito in una shell, quindi puoi anche usare comandi inline invece di un file di script. Questo esempio usa jq per analizzare l’input JSON e visualizzare il nome del modello e la percentuale di contesto:
Il campo opzionale padding aggiunge spazi orizzontali extra (in caratteri) al contenuto della barra di stato. Il valore predefinito è 0. Questo padding è in aggiunta alla spaziatura integrata dell’interfaccia, quindi controlla l’indentazione relativa piuttosto che la distanza assoluta dal bordo del terminale. Il campo opzionale refreshInterval esegue nuovamente il tuo comando ogni N secondi oltre agli aggiornamenti guidati da eventi. Il minimo è 1. Impostalo quando la tua barra di stato mostra dati basati sul tempo come un orologio, o quando i subagent in background cambiano lo stato git mentre la sessione principale è inattiva. Lascialo non impostato per eseguire solo su eventi. Il campo opzionale hideVimModeIndicator sopprime il testo integrato -- INSERT -- sotto il prompt. Impostalo su true quando il tuo script renderizza vim.mode stesso, in modo che la modalità non venga visualizzata due volte.

Disabilita la barra di stato

Esegui /statusline e chiedigli di rimuovere o cancellare la tua barra di stato (ad esempio, /statusline delete, /statusline clear, /statusline remove it). Puoi anche eliminare manualmente il campo statusLine dal tuo settings.json.

Costruisci una barra di stato passo dopo passo

Questa procedura mostra cosa sta accadendo dietro le quinte creando manualmente una barra di stato che visualizza il modello corrente, la directory di lavoro e la percentuale di utilizzo della finestra di contesto.
Eseguire /statusline con una descrizione di quello che vuoi configura tutto questo automaticamente per te.
Questi esempi usano script Bash, che funzionano su macOS e Linux. Su Windows, vedi Configurazione Windows per esempi PowerShell e Git Bash.
Una barra di stato che mostra il nome del modello, la directory e la percentuale di contesto
1

Crea uno script che legge JSON e stampa l'output

Claude Code invia dati JSON al tuo script tramite stdin. Questo script usa jq, un parser JSON da riga di comando che potrebbe essere necessario installare, per estrarre il nome del modello, la directory e la percentuale di contesto, quindi stampa una riga formattata.Salva questo in ~/.claude/statusline.sh (dove ~ è la tua directory home, come /Users/username su macOS o /home/username su Linux):
2

Rendilo eseguibile

Contrassegna lo script come eseguibile in modo che la tua shell possa eseguirlo:
3

Aggiungi alle impostazioni

Dì a Claude Code di eseguire il tuo script come barra di stato. Aggiungi questa configurazione a ~/.claude/settings.json, che imposta type su "command" (che significa “esegui questo comando di shell”) e punta command al tuo script:
La tua barra di stato appare nella parte inferiore dell’interfaccia. Claude Code ricarica automaticamente le impostazioni ed esegue il tuo script non appena salvi il file.

Come funzionano le righe di stato

Claude Code esegue il tuo script con dati di sessione JSON su stdin e visualizza tutto ciò che lo script stampa su stdout.
La riga di stato viene eseguita localmente e non consuma token API. Si nasconde temporaneamente durante determinate interazioni dell’interfaccia utente, inclusi il menu della guida e le richieste di permesso.

Quando si aggiorna la riga di stato

Il tuo script viene eseguito una volta quando una sessione inizia, incluso quando ne riprendi una. Dopo di che, viene eseguito di nuovo quando:
  • Arriva un nuovo messaggio dell’assistente
  • /compact termina
  • La modalità di permesso cambia
  • La modalità Vim si attiva/disattiva
  • Cambi il command nelle tue impostazioni statusLine
  • Un timer refreshInterval scade, se ne hai impostato uno
  • Una finestra di rate limit nei dati che il tuo script ha ricevuto per ultimo raggiunge il suo tempo resets_at
  • Una prompt cache calda nei dati che il tuo script ha ricevuto per ultimo raggiunge il suo tempo expires_at
Claude Code debounce gli aggiornamenti a 300ms, quindi i cambiamenti rapidi si raggruppano insieme e il tuo script viene eseguito una volta che i cambiamenti si fermano. Un cambio al command stesso salta il debounce: Claude Code esegue il nuovo comando subito. Se un nuovo aggiornamento si attiva mentre il tuo script è ancora in esecuzione, Claude Code annulla lo script in corso. Se modifichi il tuo script, le modifiche appariranno la prossima volta che un trigger di aggiornamento lo riesegue. I trigger guidati dagli eventi possono diventare silenziosi quando la sessione principale è inattiva, ad esempio mentre un coordinatore attende i subagent in background. Per mantenere i segmenti basati sul tempo o provenienti da fonti esterne aggiornati durante i periodi di inattività, imposta refreshInterval per eseguire nuovamente il comando anche su un timer fisso.

Cosa può produrre il tuo script

Il tuo script può stampare più di una singola riga di testo semplice:

Ridimensionare l’output al terminale

Claude Code acquisisce l’output del tuo script invece di collegarlo direttamente al terminale, quindi tput cols e il rilevamento della larghezza a livello di linguaggio non possono leggere la dimensione del terminale dall’interno dello script. Leggi invece le variabili d’ambiente COLUMNS e LINES. Claude Code imposta queste variabili alle dimensioni attuali del terminale prima di eseguire il tuo script.

Dati disponibili

Claude Code invia i seguenti campi JSON al tuo script tramite stdin:
Il tuo comando della barra di stato riceve questa struttura JSON tramite stdin:
Campi che potrebbero essere assenti (non presenti in JSON):
  • session_name: appare quando un nome personalizzato è stato impostato con --name o /rename, o una volta che esiste un titolo di sessione generato dall’IA. Il nome visualizzato predefinito, come my-app-3f, non lo popola
  • prompt_id: appare solo dopo il primo input dell’utente
  • workspace.git_worktree: appare solo quando la directory corrente si trova all’interno di un git worktree collegato
  • workspace.repo: appare solo all’interno di un repository git con un remote origin configurato
  • effort: appare solo quando il modello corrente supporta il parametro di sforzo di ragionamento
  • vim: appare solo quando la modalità vim è abilitata
  • agent: appare solo quando si esegue con il flag --agent o le impostazioni dell’agente configurate
  • pr: appare solo mentre viene trovata una PR aperta o una merge request GitLab per il ramo corrente, e viene rimossa una volta che si unisce o si chiude. pr.review_state e pr.kind potrebbero essere indipendentemente assenti
  • worktree: appare solo durante una sessione worktree. Quando presente, branch e original_branch potrebbero anche essere assenti per i worktree basati su hook
  • rate_limits: appare solo per gli abbonati Claude.ai Pro e Max, o dietro un gateway di app Claude che imposta un limite di spesa per te, e solo dopo la prima risposta API nella sessione. Ogni finestra (five_hour, seven_day, spend_limit) potrebbe essere indipendentemente assente, e Claude Code elimina una finestra una volta che il suo tempo resets_at passa. Usa jq -r '.rate_limits.five_hour.used_percentage // empty' per gestire l’assenza con eleganza.
  • prompt_cache: appare dopo la prima risposta API della conversazione principale. Vedi campi della prompt cache
Campi che potrebbero essere null:
  • context_window.current_usage: null prima della prima chiamata API in una sessione, e di nuovo dopo /compact fino a quando la prossima chiamata API non lo ripopola
  • context_window.used_percentage, context_window.remaining_percentage: potrebbero essere null all’inizio della sessione
Gestisci i campi mancanti con accesso condizionale e i valori null con fallback predefiniti nei tuoi script.

Campi della finestra di contesto

L’oggetto context_window descrive la finestra di contesto attiva dalla risposta API più recente.
  • Totali combinati (total_input_tokens, total_output_tokens): token attualmente nella finestra di contesto. total_input_tokens è la somma di input_tokens, cache_creation_input_tokens e cache_read_input_tokens; total_output_tokens sono i token di output dalla risposta più recente. Entrambi sono 0 prima della prima risposta API.
  • Utilizzo per componente (current_usage): gli stessi conteggi dei token suddivisi per categoria. Usa questo quando hai bisogno di separare i cache hit dall’input fresco.
L’oggetto current_usage contiene:
  • input_tokens: token di input nel contesto corrente
  • output_tokens: token di output generati
  • cache_creation_input_tokens: token scritti nella cache
  • cache_read_input_tokens: token letti dalla cache
Per sapere cosa significano i campi della cache e come vengono fatturati, vedi controlla le prestazioni della cache. Il campo used_percentage viene calcolato solo dai token di input: input_tokens + cache_creation_input_tokens + cache_read_input_tokens. Non include output_tokens. Se calcoli manualmente la percentuale di contesto da current_usage, usa la stessa formula solo per l’input per corrispondere a used_percentage. L’oggetto current_usage è null prima della prima chiamata API in una sessione, e di nuovo immediatamente dopo /compact fino a quando la prossima chiamata API non lo ripopola.

Campi del limite di spesa

Dietro un gateway di app Claude con limiti di spesa, l’oggetto rate_limits.spend_limit descrive il limite di spesa che si applica a te. Appare dopo la prima risposta API della sessione e richiede Claude Code v2.1.251 o successivo. Il tuo script riceve i suoi campi secondo tempistiche separate:
  • used_percentage e resets_at: arrivano con ogni risposta, quindi sono presenti ogni volta che lo è spend_limit. used_percentage va da 0 a 100, o sopra 100 una volta superato il limite, e resets_at indica i secondi di epoca Unix in cui il periodo del limite si ripristina.
  • used_usd, limit_usd e period: la tua spesa stimata finora e il tuo limite in dollari statunitensi, e il periodo coperto dal limite, uno tra daily, weekly o monthly. Il gateway calcola used_usd dai conteggi dei token, quindi è una stima e non un importo fatturato. Claude Code li legge dal gateway in una richiesta separata, circa ogni cinque minuti mentre invii richieste. Gli importi in dollari possono essere più vecchi di circa cinque minuti rispetto a used_percentage, quindi i due valori potrebbero non coincidere per breve tempo. Richiede la v2.1.284 o successiva sia su Claude Code sia sul gateway.
Tratta used_usd, limit_usd e period come facoltativi anche quando spend_limit è presente. Il tuo script riceve la percentuale prima di questi campi, e rimangono assenti se imposti CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC, che disattiva quella richiesta. Leggi ciascuno con un fallback nel tuo script, ad esempio jq -r '.rate_limits.spend_limit.used_usd // empty'.

Campi della prompt cache

L’oggetto prompt_cache riassume come la conversazione principale della sessione sta utilizzando la prompt cache. Claude Code la calcola dai conteggi dei token della cache nelle risposte dell’API, quindi funziona su ogni provider. L’oggetto appare dopo la prima risposta API della conversazione principale. Claude Code non conta le richieste dei subagent in queste statistiche. Richiede Claude Code v2.1.251 o successivo. La tabella elenca ogni campo con il suo significato. I timestamp sono secondi di epoca Unix, la stessa unità di rate_limits.*.resets_at. Una barra di stato breve di solito mostra uno o due di questi; warm e hit_ratio riassumono lo stato della cache più direttamente. Claude Code mostra le stesse statistiche nel terminale, sulla riga /usage della Prompt cache (main).

Causa dell’ultima mancanza

L’oggetto last_miss_cause segnala quello che Claude Code ha identificato come la probabile causa della mancanza più recente. Il suo array causes contiene uno o più nomi di causa, come tools_changed, system_prompt_changed, ttl_expired_5m, o likely_server_side. L’oggetto è null fino alla prima mancanza della sessione, e di nuovo ogni volta che Claude Code non riesce a identificare una causa per la mancanza più recente. Richiede Claude Code v2.1.260 o successivo. Due cause aggiungono conteggi all’oggetto:
  • tools_added e tools_removed: con tools_changed, quanti strumenti sono stati aggiunti o rimossi dalla richiesta
  • system_char_delta: con system_prompt_changed, il cambiamento nella lunghezza del prompt di sistema, in caratteri

Esempi

Questi esempi mostrano modelli comuni della barra di stato. Per usare qualsiasi esempio:
  1. Salva lo script in un file come ~/.claude/statusline.sh (o .py/.js)
  2. Rendilo eseguibile: chmod +x ~/.claude/statusline.sh
  3. Aggiungi il percorso alle tue impostazioni
Gli esempi Bash usano jq per analizzare JSON. Python e Node.js hanno l’analisi JSON integrata.

Utilizzo della finestra di contesto

Visualizza il modello corrente e l’utilizzo della finestra di contesto con una barra di progresso visiva. Ogni script legge JSON da stdin, estrae il campo used_percentage e costruisce una barra di 10 caratteri dove i blocchi pieni (▓) rappresentano l’utilizzo:
Una barra di stato che mostra il nome del modello e una barra di progresso con percentuale

Stato git con colori

Mostra il ramo git con indicatori codificati a colori per i file in staging e modificati. Questo script usa codici di escape ANSI per i colori del terminale: \033[32m è verde, \033[33m è giallo e \033[0m ripristina il valore predefinito.
Una barra di stato che mostra il modello, la directory, il ramo git e indicatori codificati a colori per i file in staging e modificati
Ogni script verifica se la directory corrente è un repository git, conta i file in staging e modificati e visualizza indicatori codificati a colori:

Tracciamento di costi e durata

Traccia i costi API della tua sessione e il tempo trascorso. Il campo cost.total_cost_usd accumula il costo stimato di tutte le chiamate API nella sessione corrente. Il campo cost.total_duration_ms misura il tempo totale trascorso dall’inizio della sessione, mentre cost.total_api_duration_ms traccia solo il tempo trascorso in attesa delle risposte API. Ogni script formatta il costo come valuta e converte i millisecondi in minuti e secondi:
Una barra di stato che mostra il nome del modello, il costo della sessione e la durata

Visualizza più righe

Il tuo script può produrre più righe per creare una visualizzazione più ricca.
Una barra di stato multi-riga che mostra il nome del modello, la directory, il ramo git sulla prima riga, e una barra di progresso dell'utilizzo del contesto con costo e durata sulla seconda riga
Questo esempio combina diverse tecniche: colori basati su soglie (verde sotto il 70%, giallo 70-89%, rosso 90%+), una barra di progresso e informazioni sul ramo git. Ogni istruzione print o echo crea una riga separata:
Questo esempio crea un link cliccabile al tuo repository GitHub. Tieni premuto Cmd (macOS) o Ctrl (Windows/Linux) e fai clic per aprire il link nel tuo browser.
Una barra di stato che mostra un link cliccabile a un repository GitHub
Ogni script ottiene l’URL del remote git, converte il formato SSH in HTTPS e avvolge il nome del repository nei codici di escape OSC 8. La versione Bash usa printf '%b' che interpreta gli escape di backslash in modo più affidabile rispetto a echo -e su diverse shell:

Utilizzo del limite di velocità

Visualizza nella riga di stato l’utilizzo del rate limit dell’abbonamento claude.ai, oppure la tua spesa rispetto a un limite di spesa di un gateway di app Claude. Per gli abbonati, l’oggetto rate_limits contiene una finestra mobile five_hour e una finestra settimanale seven_day. Ogni finestra fornisce used_percentage, da 0 a 100, e resets_at, i secondi di epoca Unix quando la finestra si ripristina. Dietro un gateway, leggi l’oggetto spend_limit, descritto in campi del limite di spesa. L’oggetto rate_limits è presente solo per gli abbonati claude.ai Pro e Max, o dietro un gateway di app Claude con limiti di spesa, e solo dopo la prima risposta API. Ogni script gestisce i campi assenti con eleganza e, dietro un gateway, stampa spend: $314.12 / $500, oppure spend: 63% quando i campi in dollari sono assenti:

Memorizza nella cache le operazioni costose

Il tuo script della barra di stato viene eseguito frequentemente durante le sessioni attive. Comandi come git status o git diff possono essere lenti, specialmente in repository di grandi dimensioni. Questo esempio memorizza nella cache le informazioni git in un file temporaneo e le aggiorna solo ogni 5 secondi. Il nome del file di cache deve essere stabile tra le invocazioni della barra di stato all’interno di una sessione, ma univoco tra le sessioni in modo che le sessioni simultanee in repository diversi non leggano lo stato git memorizzato nella cache l’uno dell’altro. Gli identificatori basati su processi come $$, os.getpid() o process.pid cambiano ad ogni invocazione e annullano la cache. Usa invece session_id dall’input JSON: è stabile per la durata di una sessione ed è univoco per sessione. Ogni script verifica se il file di cache è mancante o più vecchio di 5 secondi prima di eseguire i comandi git:

Configurazione Windows

Su Windows, Claude Code esegue i comandi della barra di stato tramite Git Bash quando Git Bash è installato, o tramite PowerShell quando Git Bash è assente. Git Bash tratta i backslash non quotati come caratteri di escape, quindi un percorso in stile Windows come C:\Users\username\script.mjs raggiunge lo script runner con i suoi separatori rimossi e il comando fallisce senza un errore visibile. Scrivi i percorsi dei file nella stringa command con barre oblique, come mostrato negli esempi seguenti. La scorciatoia ~ funziona anche e si espande alla tua directory home di Windows. Per eseguire uno script PowerShell come barra di stato, invocalo tramite powershell. Questo funziona indipendentemente dal fatto che Claude Code instrada il comando tramite Git Bash o PowerShell:
Oppure, quando Git Bash è installato, esegui uno script Bash direttamente:

Barre di stato dei subagent

L’impostazione subagentStatusLine renderizza un corpo di riga personalizzato per ogni subagent mostrato nel pannello dell’agente sotto il prompt. Usalo per sostituire la riga predefinita name · description · token count con la tua formattazione.
Il comando viene eseguito una volta per tick di aggiornamento e riceve tutte le righe dei subagent visibili come un singolo oggetto JSON su stdin. L’input include i campi hook di base, un campo columns con la larghezza di riga utilizzabile e un array tasks con una voce per riga, descritti in Campi dei task. Scrivi una riga JSON su stdout per ogni riga che vuoi sovrascrivere, nella forma {"id": "<task id>", "content": "<row body>"}. La stringa content viene renderizzata così com’è, inclusi i colori ANSI e i hyperlink OSC 8. Ometti l’id di un task per mantenere il rendering predefinito per quella riga; emetti una stringa content vuota per nasconderla. Gli stessi gate di fiducia, disableAllHooks e allowManagedHooksOnly che si applicano a statusLine si applicano qui. I plugin possono fornire un subagentStatusLine predefinito nel loro settings.json, ma a differenza dei hooks, i valori dei plugin non vengono eseguiti sotto allowManagedHooksOnly anche quando il plugin è forzato abilitato nelle impostazioni gestite enabledPlugins.

Campi dei task

Ogni voce dell’array tasks descrive una riga di subagent con i campi seguenti. I campi contrassegnati come opzionali vengono omessi quando non hanno un valore, quindi gestisci la loro assenza nel tuo script.

Suggerimenti

  • Testa con input simulato: echo '{"model":{"display_name":"Opus"},"workspace":{"current_dir":"/home/user/project"},"context_window":{"used_percentage":25},"session_id":"test-session-abc"}' | ./statusline.sh
  • Mantieni l’output breve: la barra di stato ha una larghezza limitata, quindi l’output lungo potrebbe essere troncato o andare a capo in modo sgradevole
  • Memorizza nella cache le operazioni lente: il tuo script viene eseguito frequentemente durante le sessioni attive, quindi comandi come git status possono causare lag. Vedi l’esempio di caching per come gestire questo.
Progetti della comunità come ccstatusline e starship-claude forniscono configurazioni pre-costruite con temi e funzionalità aggiuntive.

Risoluzione dei problemi

Se la riga di stato è vuota, inizia da La riga di stato non appare. Anche una cartella di cui non hai accettato la fiducia e uno script che fallisce la lasciano vuota, come descritto in Fiducia nel workspace richiesta e Errori di script o blocchi.

La riga di stato non appare

Se hai configurato una riga di stato e non compare nulla nella parte inferiore dell’interfaccia, esegui questi controlli:
  • Verifica che il tuo script sia eseguibile: chmod +x ~/.claude/statusline.sh
  • Controlla che il tuo script stampi su stdout, non su stderr
  • Esegui il tuo script manualmente per verificare che produca output
  • Su Windows con Git Bash installato, i backslash nel percorso command vengono probabilmente consumati come caratteri di escape prima che lo script venga eseguito. Usa barre oblique nel percorso. Vedi Configurazione Windows.
  • Se disableAllHooks è true al di fuori delle impostazioni gestite dopo che la precedenza delle impostazioni si applica, Claude Code esegue solo uno statusLine dalle impostazioni gestite, e senza uno statusLine gestito la riga di stato è disabilitata. Rimuovi l’impostazione, o impostala su false nel file che la imposta, per riabilitarla. Vedi disableAllHooks.
  • Se la tua organizzazione imposta allowManagedHooksOnly nelle impostazioni gestite, la tua riga di stato personalizzata scompare senza avviso: puoi ottenere una riga di stato solo da un valore statusLine in quelle impostazioni gestite. Vedi cosa viene eseguito sotto allowManagedHooksOnly per il comportamento completo, e chiedi al tuo amministratore se questa impostazione si applica a te.
  • Esegui claude --debug per registrare lo stderr del tuo script su ogni invocazione della riga di stato, e il suo codice di uscita sulla prima invocazione in una sessione
  • Chiedi a Claude di leggere il tuo file di impostazioni ed eseguire il comando statusLine direttamente per far emergere gli errori

La riga di stato mostra -- o valori vuoti

I campi potrebbero essere null prima che la prima risposta API si completi, quindi gestisci i valori null nel tuo script con fallback come // 0 in jq. Riavvia Claude Code se i valori rimangono vuoti dopo più messaggi.

La percentuale di contesto mostra valori inaspettati

La riga di stato riporta i conteggi dall’ultima risposta API, mentre /context aggiunge una stima per i messaggi aggiunti da quella risposta, quindi /context può leggere più alto fino alla risposta successiva. Usa used_percentage per lo stato di contesto più semplice e accurato. Per la formula alla base di used_percentage, vedi Campi della finestra di contesto. Se un link sia cliccabile dipende dal tuo terminale, dal fatto che Claude Code rilevi il supporto dei hyperlink in esso, dal fatto che SSH o tmux eliminino la sequenza di escape, e da come il tuo script la stampa:
  • Verifica che il tuo terminale supporti i hyperlink OSC 8 (iTerm2, Kitty, WezTerm)
  • Terminal.app non supporta i link cliccabili
  • Se il testo del link appare ma non è cliccabile, Claude Code potrebbe non aver rilevato il supporto dei hyperlink nel tuo terminale. Imposta la variabile d’ambiente FORCE_HYPERLINK per sovrascrivere il rilevamento prima di avviare Claude Code:
    In PowerShell, imposta la variabile nella sessione corrente prima:
  • Le sessioni SSH e tmux potrebbero eliminare le sequenze OSC a seconda della configurazione
  • Se le sequenze di escape appaiono come testo letterale come \e]8;;, usa printf '%b' invece di echo -e per una gestione più affidabile degli escape

Glitch di visualizzazione con sequenze di escape

Le sequenze di escape complesse (colori ANSI, link OSC 8) possono occasionalmente causare output corrotto se si sovrappongono ad altri aggiornamenti dell’interfaccia utente. Le righe di stato multi-riga con codici di escape sono più soggette a problemi di rendering rispetto al testo semplice su una sola riga. Se vedi testo corrotto, prova a semplificare il tuo script in output di testo semplice.

Fiducia nel workspace richiesta

Finché non accetti la finestra di dialogo di fiducia del workspace, la riga di stato rimane vuota. Poiché statusLine esegue un comando di shell, Claude Code lo esegue secondo la stessa regola di fiducia del workspace degli hook nei file di impostazioni. Accettare la finestra di dialogo per la cartella, o per una directory padre la cui fiducia si estende ad essa, è sufficiente. Fino ad allora, claude --debug registra Status line command skipped: workspace trust not accepted. Riavvia Claude Code e accetta la finestra di dialogo di fiducia per abilitarla.

Errori di script o blocchi

Claude Code visualizza l’output del tuo script solo dopo che lo script è terminato con codice 0:
  • Gli script che escono con codici diversi da zero o non producono output lasciano vuota la riga di stato
  • Gli script lenti bloccano l’aggiornamento della riga di stato fino al completamento. Mantieni gli script veloci per evitare output obsoleto.
  • Se un nuovo aggiornamento si attiva mentre uno script lento è in esecuzione, lo script in corso viene annullato
  • Testa il tuo script indipendentemente con input simulato prima di configurarlo

Le notifiche condividono la riga della riga di stato

Al di fuori del rendering a schermo intero, Claude Code mostra le notifiche sulla stessa riga della tua riga di stato. Nel rendering a schermo intero, Claude Code assegna alle notifiche una riga propria.
  • Le notifiche di sistema come errori del server MCP e aggiornamenti automatici vengono visualizzate sul lato destro della riga. Anche le notifiche transitorie come l’avviso di contesto basso si alternano in quest’area.
  • L’abilitazione della modalità verbose aggiunge un contatore di token a quest’area, che mostra la dimensione del tuo contesto come riportata dall’ultima risposta API, non il conteggio per turno accanto allo spinner
  • Su terminali stretti, queste notifiche potrebbero troncare l’output della tua riga di stato