- Voulez surveiller l’utilisation de la fenêtre de contexte pendant que vous travaillez
- Avez besoin de suivre les coûts de session
- Travaillez sur plusieurs sessions et avez besoin de les distinguer
- Voulez que la branche git et l’état soient toujours visibles

Configurer une barre de statut
Utilisez la commande/statusline pour que Claude Code génère un script pour vous, ou créez manuellement un script et ajoutez-le à vos paramètres.
Utiliser la commande /statusline
La commande/statusline accepte des instructions en langage naturel décrivant ce que vous voulez afficher. Claude Code génère un fichier script dans ~/.claude/ et met à jour vos paramètres automatiquement :
Configurer manuellement une barre de statut
Ajoutez un champstatusLine à vos paramètres utilisateur (~/.claude/settings.json, où ~ est votre répertoire personnel) ou paramètres de projet. Définissez type sur "command" et pointez command vers un chemin de script ou une commande shell en ligne. Pour une procédure complète de création d’un script, voir Construire une barre de statut étape par étape.
command s’exécute dans un shell, vous pouvez donc aussi utiliser des commandes en ligne au lieu d’un fichier script. Cet exemple utilise jq pour analyser l’entrée JSON et afficher le nom du modèle et le pourcentage de contexte :
padding ajoute un espacement horizontal supplémentaire (en caractères) au contenu de la barre de statut. Par défaut 0. Cet espacement s’ajoute à l’espacement intégré de l’interface, il contrôle donc l’indentation relative plutôt que la distance absolue du bord du terminal.
Désactiver la barre de statut
Exécutez/statusline et demandez-lui de supprimer ou d’effacer votre barre de statut (par exemple, /statusline delete, /statusline clear, /statusline remove it). Vous pouvez aussi supprimer manuellement le champ statusLine de votre settings.json.
Construire une barre de statut étape par étape
Cette procédure montre ce qui se passe sous le capot en créant manuellement une barre de statut qui affiche le modèle actuel, le répertoire de travail et le pourcentage d’utilisation de la fenêtre de contexte.L’exécution de
/statusline avec une description de ce que vous voulez configure tout cela automatiquement pour vous.
Créer un script qui lit JSON et imprime la sortie
Claude Code envoie les données JSON à votre script via stdin. Ce script utilise
jq, un analyseur JSON en ligne de commande que vous devrez peut-être installer, pour extraire le nom du modèle, le répertoire et le pourcentage de contexte, puis imprime une ligne formatée.Enregistrez ceci dans ~/.claude/statusline.sh (où ~ est votre répertoire personnel, tel que /Users/username sur macOS ou /home/username sur Linux) :Ajouter aux paramètres
Dites à Claude Code d’exécuter votre script comme barre de statut. Ajoutez cette configuration à Votre barre de statut apparaît en bas de l’interface. Les paramètres se rechargent automatiquement, mais les modifications n’apparaîtront pas avant votre prochaine interaction avec Claude Code.
~/.claude/settings.json, qui définit type sur "command" (ce qui signifie « exécuter cette commande shell ») et pointe command vers votre script :Comment fonctionnent les barres de statut
Claude Code exécute votre script et envoie les données de session JSON via stdin. Votre script lit le JSON, extrait ce dont il a besoin et imprime du texte sur stdout. Claude Code affiche tout ce que votre script imprime. Quand elle se met à jour Votre script s’exécute après chaque nouveau message d’assistant, quand le mode de permission change, ou quand le mode vim bascule. Les mises à jour sont débogées à 300 ms, ce qui signifie que les changements rapides se regroupent et votre script s’exécute une fois que les choses se stabilisent. Si une nouvelle mise à jour se déclenche pendant que votre script s’exécute encore, l’exécution en cours est annulée. Si vous modifiez votre script, les modifications n’apparaîtront pas avant que votre prochaine interaction avec Claude Code ne déclenche une mise à jour. Ce que votre script peut afficher- Plusieurs lignes : chaque instruction
echoouprints’affiche comme une ligne séparée. Voir l’exemple multi-lignes. - Couleurs : utilisez les codes d’échappement ANSI comme
\033[32mpour le vert (le terminal doit les supporter). Voir l’exemple d’état git. - Liens : utilisez les séquences d’échappement OSC 8 pour rendre le texte cliquable (Cmd+clic sur macOS, Ctrl+clic sur Windows/Linux). Nécessite un terminal qui supporte les hyperliens comme iTerm2, Kitty ou WezTerm. Voir l’exemple de liens cliquables.
La barre de statut s’exécute localement et ne consomme pas de jetons API. Elle se cache temporairement pendant certaines interactions UI, y compris les suggestions d’autocomplétion, le menu d’aide et les invites de permission.
Données disponibles
Claude Code envoie les champs JSON suivants à votre script via stdin :| Champ | Description |
|---|---|
model.id, model.display_name | Identifiant du modèle actuel et nom d’affichage |
cwd, workspace.current_dir | Répertoire de travail actuel. Les deux champs contiennent la même valeur ; workspace.current_dir est préféré pour la cohérence avec workspace.project_dir. |
workspace.project_dir | Répertoire où Claude Code a été lancé, qui peut différer de cwd si le répertoire de travail change pendant une session |
cost.total_cost_usd | Coût total de la session en USD |
cost.total_duration_ms | Temps écoulé total depuis le début de la session, en millisecondes |
cost.total_api_duration_ms | Temps total passé à attendre les réponses API en millisecondes |
cost.total_lines_added, cost.total_lines_removed | Lignes de code modifiées |
context_window.total_input_tokens, context_window.total_output_tokens | Comptages de jetons cumulatifs dans la session |
context_window.context_window_size | Taille maximale de la fenêtre de contexte en jetons. 200 000 par défaut, ou 1 000 000 pour les modèles avec contexte étendu. |
context_window.used_percentage | Pourcentage pré-calculé de fenêtre de contexte utilisée |
context_window.remaining_percentage | Pourcentage pré-calculé de fenêtre de contexte restante |
context_window.current_usage | Comptages de jetons du dernier appel API, décrits dans champs de fenêtre de contexte |
exceeds_200k_tokens | Si le comptage total de jetons (jetons d’entrée, de cache et de sortie combinés) de la réponse API la plus récente dépasse 200 k. C’est un seuil fixe indépendamment de la taille réelle de la fenêtre de contexte. |
session_id | Identifiant de session unique |
transcript_path | Chemin vers le fichier de transcription de conversation |
version | Version de Claude Code |
output_style.name | Nom du style de sortie actuel |
vim.mode | Mode vim actuel (NORMAL ou INSERT) quand le mode vim est activé |
agent.name | Nom de l’agent lors de l’exécution avec l’indicateur --agent ou les paramètres d’agent configurés |
worktree.name | Nom du worktree actif. Présent uniquement pendant les sessions --worktree |
worktree.path | Chemin absolu vers le répertoire du worktree |
worktree.branch | Nom de la branche git pour le worktree (par exemple, "worktree-my-feature"). Absent pour les worktrees basés sur des hooks |
worktree.original_cwd | Le répertoire dans lequel Claude se trouvait avant d’entrer dans le worktree |
worktree.original_branch | Branche git extraite avant d’entrer dans le worktree. Absent pour les worktrees basés sur des hooks |
Schéma JSON complet
Schéma JSON complet
Votre commande de barre de statut reçoit cette structure JSON via stdin :Champs qui peuvent être absents (non présents dans JSON) :
vim: apparaît uniquement quand le mode vim est activéagent: apparaît uniquement lors de l’exécution avec l’indicateur--agentou les paramètres d’agent configurésworktree: apparaît uniquement pendant les sessions--worktree. Quand présent,branchetoriginal_branchpeuvent aussi être absents pour les worktrees basés sur des hooks
null :context_window.current_usage:nullavant le premier appel API dans une sessioncontext_window.used_percentage,context_window.remaining_percentage: peuvent êtrenullau début de la session
Champs de fenêtre de contexte
L’objetcontext_window fournit deux façons de suivre l’utilisation du contexte :
- Totaux cumulatifs (
total_input_tokens,total_output_tokens) : somme de tous les jetons dans toute la session, utile pour suivre la consommation totale - Utilisation actuelle (
current_usage) : comptages de jetons du dernier appel API, utilisez ceci pour un pourcentage de contexte précis car il reflète l’état réel du contexte
current_usage contient :
input_tokens: jetons d’entrée dans le contexte actueloutput_tokens: jetons de sortie généréscache_creation_input_tokens: jetons écrits dans le cachecache_read_input_tokens: jetons lus du cache
used_percentage est calculé à partir des jetons d’entrée uniquement : input_tokens + cache_creation_input_tokens + cache_read_input_tokens. Il n’inclut pas output_tokens.
Si vous calculez le pourcentage de contexte manuellement à partir de current_usage, utilisez la même formule d’entrée uniquement pour correspondre à used_percentage.
L’objet current_usage est null avant le premier appel API dans une session.
Exemples
Ces exemples montrent les modèles courants de barre de statut. Pour utiliser n’importe quel exemple :- Enregistrez le script dans un fichier comme
~/.claude/statusline.sh(ou.py/.js) - Le rendre exécutable :
chmod +x ~/.claude/statusline.sh - Ajouter le chemin à vos paramètres
jq pour analyser JSON. Python et Node.js ont l’analyse JSON intégrée.
Utilisation de la fenêtre de contexte
Affiche le modèle actuel et l’utilisation de la fenêtre de contexte avec une barre de progression visuelle. Chaque script lit JSON depuis stdin, extrait le champused_percentage et construit une barre de 10 caractères où les blocs remplis (▓) représentent l’utilisation :

État git avec couleurs
Affiche la branche git avec des indicateurs codés par couleur pour les fichiers en attente et modifiés. Ce script utilise les codes d’échappement ANSI pour les couleurs de terminal :\033[32m est vert, \033[33m est jaune, et \033[0m réinitialise à la valeur par défaut.

Suivi des coûts et de la durée
Suivez les coûts API de votre session et le temps écoulé. Le champcost.total_cost_usd accumule le coût de tous les appels API dans la session actuelle. Le champ cost.total_duration_ms mesure le temps écoulé total depuis le début de la session, tandis que cost.total_api_duration_ms suit uniquement le temps passé à attendre les réponses API.
Chaque script formate le coût en devise et convertit les millisecondes en minutes et secondes :

Afficher plusieurs lignes
Votre script peut afficher plusieurs lignes pour créer un affichage plus riche. Chaque instructionecho produit une ligne séparée dans la zone de statut.

print ou echo crée une ligne séparée :
Liens cliquables
Cet exemple crée un lien cliquable vers votre dépôt GitHub. Il lit l’URL du dépôt distant, convertit le format SSH en HTTPS avecsed et enveloppe le nom du dépôt dans les codes d’échappement OSC 8. Maintenez Cmd (macOS) ou Ctrl (Windows/Linux) et cliquez pour ouvrir le lien dans votre navigateur.

printf '%b' qui interprète les échappements de barre oblique inverse de manière plus fiable que echo -e sur différents shells :
Mettre en cache les opérations coûteuses
Votre script de barre de statut s’exécute fréquemment pendant les sessions actives. Les commandes commegit status ou git diff peuvent être lentes, surtout dans les grands dépôts. Cet exemple met en cache les informations git dans un fichier temporaire et ne les actualise que toutes les 5 secondes.
Utilisez un nom de fichier stable et fixe pour le fichier de cache comme /tmp/statusline-git-cache. Chaque invocation de barre de statut s’exécute en tant que nouveau processus, donc les identifiants basés sur les processus comme $$, os.getpid() ou process.pid produisent une valeur différente à chaque fois et le cache n’est jamais réutilisé.
Chaque script vérifie si le fichier de cache est manquant ou plus ancien que 5 secondes avant d’exécuter les commandes git :
Configuration Windows
Sur Windows, Claude Code exécute les commandes de barre de statut via Git Bash. Vous pouvez invoquer PowerShell à partir de ce shell :Conseils
- Tester avec une entrée fictive :
echo '{"model":{"display_name":"Opus"},"context_window":{"used_percentage":25}}' | ./statusline.sh - Garder la sortie courte : la barre de statut a une largeur limitée, donc une sortie longue peut être tronquée ou s’enrouler maladroitement
- Mettre en cache les opérations lentes : votre script s’exécute fréquemment pendant les sessions actives, donc les commandes comme
git statuspeuvent causer des ralentissements. Voir l’exemple de mise en cache pour savoir comment gérer cela.
Dépannage
La barre de statut n’apparaît pas- Vérifiez que votre script est exécutable :
chmod +x ~/.claude/statusline.sh - Vérifiez que votre script affiche sur stdout, pas stderr
- Exécutez votre script manuellement pour vérifier qu’il produit une sortie
- Si
disableAllHooksest défini surtruedans vos paramètres, la barre de statut est également désactivée. Supprimez ce paramètre ou définissez-le surfalsepour le réactiver. - Exécutez
claude --debugpour enregistrer le code de sortie et stderr de la première invocation de barre de statut dans une session - Demandez à Claude de lire votre fichier de paramètres et d’exécuter la commande
statusLinedirectement pour afficher les erreurs
-- ou des valeurs vides
- Les champs peuvent être
nullavant la fin de la première réponse API - Gérez les valeurs null dans votre script avec des valeurs par défaut de secours telles que
// 0dans jq - Redémarrez Claude Code si les valeurs restent vides après plusieurs messages
- Utilisez
used_percentagepour un état de contexte précis plutôt que les totaux cumulatifs - Les
total_input_tokensettotal_output_tokenssont cumulatifs dans la session et peuvent dépasser la taille de la fenêtre de contexte - Le pourcentage de contexte peut différer de la sortie
/contexten raison du moment où chacun est calculé
- Vérifiez que votre terminal supporte les hyperliens OSC 8 (iTerm2, Kitty, WezTerm)
- Terminal.app ne supporte pas les liens cliquables
- Les sessions SSH et tmux peuvent supprimer les séquences OSC selon la configuration
- Si les séquences d’échappement apparaissent comme du texte littéral comme
\e]8;;, utilisezprintf '%b'au lieu deecho -epour une gestion plus fiable des échappements
- Les séquences d’échappement complexes (couleurs ANSI, liens OSC 8) peuvent occasionnellement causer une sortie brouillée si elles chevauchent d’autres mises à jour UI
- Si vous voyez du texte corrompu, essayez de simplifier votre script en sortie en texte brut
- Les barres de statut multi-lignes avec codes d’échappement sont plus sujettes aux problèmes de rendu que le texte brut sur une seule ligne
- Les scripts qui se terminent avec des codes non nuls ou ne produisent aucune sortie font que la barre de statut devient vide
- Les scripts lents bloquent la barre de statut de se mettre à jour jusqu’à ce qu’ils se terminent. Gardez les scripts rapides pour éviter une sortie obsolète.
- Si une nouvelle mise à jour se déclenche pendant qu’un script lent s’exécute, le script en cours est annulé
- Testez votre script indépendamment avec une entrée fictive avant de le configurer
- Les notifications système comme les erreurs de serveur MCP, les mises à jour automatiques et les avertissements de jetons s’affichent sur le côté droit de la même ligne que votre barre de statut
- L’activation du mode verbeux ajoute un compteur de jetons à cette zone
- Sur les terminaux étroits, ces notifications peuvent tronquer votre sortie de barre de statut