Claude Code Statusline : Personnaliser la Barre de Statut du Terminal (2026)
Tutoriel2026-06-1016 min de lecture

Claude Code Statusline : Personnaliser la Barre de Statut du Terminal (2026)

Claude Code statusline : créez une barre de statut sur mesure (contexte, coût, git, modèle). Setup settings.json, script bash, /statusline et exemples 2026.

Claude Code Statusline : la barre de statut qui transforme votre terminal en cockpit

La statusline de Claude Code est cette petite barre discrète, en bas de votre terminal, qui peut devenir le tableau de bord le plus utile de votre journée de développeur. Par défaut, elle affiche peu de chose. Mais une fois personnalisée, elle vous montre en permanence le modèle actif, le pourcentage de fenêtre de contexte consommée, le coût de la session, la branche git, le nombre de lignes modifiées — bref, tout ce que vous deviez auparavant aller chercher à la main.

Concrètement, la statusline Claude Code est un script shell que vous configurez une fois et qui s'exécute à chaque mise à jour de la session. Claude Code lui envoie un objet JSON complet via l'entrée standard (stdin), votre script en extrait ce qui vous intéresse, et le texte qu'il affiche apparaît instantanément en bas de l'écran. C'est simple, rapide, et terriblement efficace pour garder un œil sur ce qui compte.

Dans ce guide tutoriel en français, vous allez apprendre à mettre en place une barre de statut en moins de cinq minutes, à comprendre tous les champs JSON disponibles, à écrire votre propre script bash avec une barre de progression colorée, et à éviter les pièges classiques (script qui ne s'affiche pas, permissions, performances).

Sommaire

  • Qu'est-ce que la statusline de Claude Code ?
  • Méthode express : la commande /statusline
  • Configuration manuelle dans settings.json
  • Tous les champs JSON disponibles
  • Écrire son propre script bash pas à pas
  • Options avancées : refreshInterval, padding, multi-lignes
  • Dépannage : ma statusline ne s'affiche pas
  • FAQ : questions fréquentes sur la statusline Claude Code
  • Qu'est-ce que la statusline de Claude Code ?<a id="quest-ce-que-statusline"></a>

    La statusline (barre de statut) est une ligne personnalisable affichée en bas de l'interface Claude Code. Elle exécute n'importe quel script shell de votre choix et affiche ce que ce script imprime sur la sortie standard. Le mécanisme est volontairement minimaliste : Claude Code envoie les données de session au format JSON, votre script les lit, les transforme, et renvoie une chaîne de texte.

    Elle est particulièrement utile quand vous voulez :

  • Surveiller la fenêtre de contexte au fil de la conversation, pour anticiper un /compact avant la saturation.
  • Suivre le coût de la session en dollars, en temps réel.
  • Distinguer plusieurs sessions ouvertes en parallèle (répertoire, branche, nom de session).
  • Garder la branche git et son état toujours visibles sans taper git status.
  • Comment circulent les données

    Le flux est le suivant : à chaque événement (nouveau message de l'assistant, fin d'un /compact, changement de mode de permission, bascule du mode vim), Claude Code exécute votre script et lui transmet un objet JSON via stdin. Votre script lit ce JSON, extrait les champs voulus, et affiche le résultat. Les mises à jour sont « debouncées » à 300 ms : si plusieurs changements surviennent coup sur coup, le script ne tourne qu'une fois, une fois la situation stabilisée.

    Cette logique de personnalisation rejoint celle des output styles pour personnaliser le comportement de l'agent : Claude Code est conçu pour être façonné à votre main, de l'apparence du terminal jusqu'au ton de ses réponses.

    Méthode express : la commande /statusline<a id="commande-statusline"></a>

    Le moyen le plus rapide d'obtenir une barre de statut est de laisser Claude Code l'écrire pour vous. La commande /statusline accepte des instructions en langage naturel décrivant ce que vous voulez afficher.

    Dans votre session Claude Code, tapez par exemple :

    /statusline affiche le nom du modèle et le pourcentage de contexte avec une barre de progression

    Claude Code génère alors un fichier script dans ~/.claude/, le rend exécutable, et met à jour automatiquement votre fichier de paramètres. En quelques secondes, votre barre de statut est opérationnelle, sans une seule ligne de bash écrite à la main.

    Vous pouvez raffiner par itérations : « ajoute la branche git en vert », « affiche aussi le coût de la session », « passe la barre sur deux lignes ». Et pour faire le ménage, /statusline delete (ou clear, remove it) supprime la configuration.

    C'est l'approche idéale pour démarrer. Mais comprendre ce qui se passe sous le capot vous permettra d'aller beaucoup plus loin — c'est l'objet des sections suivantes.

    Configuration manuelle dans settings.json<a id="configuration-manuelle"></a>

    Si vous préférez le contrôle total, ajoutez un champ statusLine à vos paramètres utilisateur (~/.claude/settings.json) ou aux paramètres de projet (.claude/settings.json). Réglez type sur "command" et pointez command vers un script ou une commande inline :

    {
      "statusLine": {
        "type": "command",
        "command": "~/.claude/statusline.sh",
        "padding": 2
      }
    }

    Comme command s'exécute dans un shell, vous pouvez aussi passer une commande inline sans créer de fichier. Cet exemple utilise jq (un parseur JSON en ligne de commande) pour afficher le nom du modèle et le pourcentage de contexte :

    {
      "statusLine": {
        "type": "command",
        "command": "jq -r '\"[\\(.model.display_name)] \\(.context_window.used_percentage // 0)% contexte\"'"
      }
    }

    Le fichier settings.json est le même point d'entrée que celui qui pilote les hooks pour automatiser votre workflow. Si vous configurez déjà des hooks, ajouter une statusline n'est qu'un champ de plus dans le même fichier — pensez à versionner la version projet pour la partager avec votre équipe.

    Tous les champs JSON disponibles<a id="champs-json"></a>

    Voici le cœur du sujet. À chaque exécution, votre script reçoit un objet JSON riche. Voici les champs les plus utiles :

    Champ JSONContenu
    model.id, model.display_nameIdentifiant et nom affiché du modèle (ex. Opus)
    workspace.current_dirRépertoire de travail courant
    workspace.project_dirRépertoire de lancement de la session
    workspace.git_worktreeNom du worktree git si vous êtes dans un worktree lié
    workspace.repo.owner, workspace.repo.namePropriétaire et nom du dépôt (depuis le remote origin)
    cost.total_cost_usdCoût estimé de la session en USD
    cost.total_duration_msDurée totale depuis le début de la session
    cost.total_lines_added, cost.total_lines_removedLignes de code ajoutées / supprimées
    context_window.used_percentagePourcentage de fenêtre de contexte consommée
    context_window.context_window_sizeTaille max du contexte (200000, ou 1000000 en contexte étendu)
    exceeds_200k_tokensVrai si le total dépasse 200k tokens
    effort.levelNiveau de raisonnement courant (low à max)
    output_style.nameNom de l'output style actif
    session_id, versionIdentifiant de session et version de Claude Code

    Certains champs n'apparaissent que dans certaines conditions : workspace.repo seulement dans un dépôt git avec remote origin, effort seulement si le modèle supporte le paramètre d'effort, vim seulement si le mode vim est actif, rate_limits seulement pour les abonnés Claude.ai (Pro/Max). D'autres peuvent être null en début de session (used_percentage avant le premier appel API). Règle d'or : utilisez toujours un fallback du type // 0 ou // empty dans vos requêtes jq.

    Le champ context_window.used_percentage est le plus précieux au quotidien. Pour bien comprendre pourquoi surveiller ce pourcentage change tout, lisez notre guide sur la gestion du contexte, le compact et le context rot : une barre de statut bien réglée vous évite de laisser la fenêtre se dégrader silencieusement.

    Écrire son propre script bash pas à pas<a id="script-bash"></a>

    Passons à la pratique. Voici un script complet qui affiche le modèle et une barre de progression du contexte sur dix caractères, avec des blocs pleins (▓) et vides (░).

    Créez le fichier ~/.claude/statusline.sh :

    #!/bin/bash
    # Lit tout stdin dans une variable
    input=$(cat)
    
    # Extrait les champs avec jq, "// 0" gère les valeurs nulles
    MODEL=$(echo "$input" | jq -r '.model.display_name')
    PCT=$(echo "$input" | jq -r '.context_window.used_percentage // 0' | cut -d. -f1)
    
    # Construit la barre de progression
    BAR_WIDTH=10
    FILLED=$((PCT * BAR_WIDTH / 100))
    EMPTY=$((BAR_WIDTH - FILLED))
    BAR=""
    [ "$FILLED" -gt 0 ] && printf -v FILL "%${FILLED}s" && BAR="${FILL// /▓}"
    [ "$EMPTY" -gt 0 ] && printf -v PAD "%${EMPTY}s" && BAR="${BAR}${PAD// /░}"
    
    echo "[$MODEL] $BAR $PCT% contexte"

    Rendez-le exécutable — étape cruciale, souvent oubliée :

    chmod +x ~/.claude/statusline.sh

    Puis pointez votre settings.json vers ce script (voir la section configuration manuelle). Le résultat affiche par exemple : [Opus] ▓▓▓░░░░░░░ 32% contexte.

    Ajouter la couleur et le coût

    Pour aller plus loin, enrichissons avec la branche git, le coût et des couleurs ANSI (\033[32m pour le vert, \033[0m pour réinitialiser) :

    #!/bin/bash
    input=$(cat)
    
    MODEL=$(echo "$input" | jq -r '.model.display_name')
    DIR=$(echo "$input" | jq -r '.workspace.current_dir')
    COST=$(echo "$input" | jq -r '.cost.total_cost_usd // 0')
    PCT=$(echo "$input" | jq -r '.context_window.used_percentage // 0' | cut -d. -f1)
    
    GREEN='\033[32m'
    CYAN='\033[36m'
    RESET='\033[0m'
    
    BRANCH=$(git -C "$DIR" branch --show-current 2>/dev/null)
    [ -n "$BRANCH" ] && GIT=" ${GREEN}⎇ $BRANCH${RESET}" || GIT=""
    
    printf "${CYAN}[%s]${RESET}%s | %s%% ctx | $%.3f\n" "$MODEL" "$GIT" "$PCT" "$COST"

    Ce script affiche le modèle en cyan, la branche git en vert, le pourcentage de contexte et le coût de la session. Suivre ce coût en direct est une excellente habitude FinOps : nos stratégies pour réduire la facture Claude Code deviennent bien plus concrètes quand le montant s'affiche en permanence sous vos yeux.

    Vidéo : maîtriser l'environnement Claude Code

    La statusline n'est qu'une pièce d'un environnement Claude Code bien réglé (settings, hooks, MCP, sous-agents). Cette session de la chaîne Sophiene IA fait le tour complet de l'outil en 2026 et resitue la personnalisation du terminal dans le tableau d'ensemble :

    Options avancées : refreshInterval, padding, multi-lignes<a id="options-avancees"></a>

    Trois options de configuration méritent votre attention.

    refreshInterval : rafraîchir sur un timer

    Par défaut, la statusline ne se met à jour que sur événement. Mais si vous affichez une horloge, ou si des sous-agents en arrière-plan modifient l'état git pendant que la session principale est inactive, ces déclencheurs restent muets. Le champ refreshInterval (minimum 1 seconde) ré-exécute votre commande à intervalle fixe :

    {
      "statusLine": {
        "type": "command",
        "command": "~/.claude/statusline.sh",
        "refreshInterval": 5
      }
    }

    Cette gestion d'état partagé entre une session principale et des agents secondaires est au cœur des workflows multi-agents. Si vous orchestrez des flottes d'agents — notamment des agents IA open-source et auto-hébergés que la formation OpenClaw détaille en profondeur — un refreshInterval court garde votre barre synchronisée avec ce que font les agents en tâche de fond.

    padding et hideVimModeIndicator

    Le champ padding (défaut 0) ajoute une marge horizontale en caractères. Le champ hideVimModeIndicator, mis à true, supprime le texte intégré -- INSERT -- quand votre script affiche déjà vim.mode lui-même, pour éviter le doublon.

    Statusline sur plusieurs lignes

    Votre script peut imprimer plusieurs lignes : Claude Code affiche chaque echo sur sa propre ligne. Un pattern courant met la branche git et le répertoire sur la première ligne, et une barre de contexte colorée avec le coût sur la seconde. Pratique quand vous travaillez sur plusieurs branches en parallèle — un usage qui se marie parfaitement avec les sessions parallèles via git worktree, où distinguer visuellement chaque worktree fait gagner un temps précieux.

    Astuce v2.1.153+ : depuis l'intérieur du script, `tput cols` ne fonctionne pas (Claude Code capture la sortie). Lisez plutôt les variables d'environnement `COLUMNS` et `LINES` que Claude Code positionne avant chaque exécution.

    Dépannage : ma statusline ne s'affiche pas<a id="depannage"></a>

    Quelques causes récurrentes quand rien n'apparaît :

  • Permission d'exécution manquante. C'est la cause numéro un. Lancez chmod +x ~/.claude/statusline.sh. Sans le bit exécutable, le script ne tourne tout simplement pas.
  • jq non installé. Les exemples bash dépendent de jq. Installez-le (brew install jq, apt install jq) ou utilisez Python/Node dont le parsing JSON est natif.
  • Chemin incorrect. Le ~ est résolu, mais en cas de doute, mettez un chemin absolu dans command.
  • Erreur silencieuse dans le script. Testez-le hors Claude Code en lui injectant un JSON d'exemple : echo '{"model":{"display_name":"Opus"},"context_window":{"used_percentage":42}}' | ~/.claude/statusline.sh.
  • Script trop lent. Si une nouvelle mise à jour survient pendant l'exécution, l'exécution en cours est annulée. Gardez le script rapide : évitez les appels réseau, limitez les commandes git lourdes.
  • Une fois ces points vérifiés, votre barre de statut devrait apparaître instantanément. La personnalisation de l'environnement fait partie des réflexes qui séparent un utilisateur occasionnel d'un développeur productif — exactement ce que couvre la formation Claude Code complète, qui transforme l'outil en véritable méthode de travail professionnelle, des settings jusqu'aux workflows multi-agents, avec des projets pratiques mis à jour à chaque release d'Anthropic.

    FAQ : questions fréquentes sur la statusline Claude Code<a id="faq"></a>

    Comment ajouter une statusline dans Claude Code ?

    Le plus simple est de taper /statusline suivi d'une description en langage naturel (ex. « affiche le modèle et le pourcentage de contexte »). Claude Code génère le script et met à jour vos paramètres automatiquement. Pour un contrôle total, ajoutez manuellement un champ statusLine de type "command" dans ~/.claude/settings.json pointant vers votre script shell.

    Pourquoi ma statusline ne s'affiche-t-elle pas ?

    Dans 90 % des cas, le script n'a pas la permission d'exécution : lancez chmod +x ~/.claude/statusline.sh. Vérifiez aussi que jq est installé (pour les scripts bash), que le chemin dans command est correct, et testez le script à la main en lui injectant un JSON d'exemple via un pipe pour repérer une erreur éventuelle.

    Quels champs puis-je afficher dans la barre de statut ?

    Claude Code envoie un JSON riche : modèle (model.display_name), répertoire et branche (workspace.*), coût (cost.total_cost_usd), contexte (context_window.used_percentage), niveau d'effort (effort.level), output style, nombre de lignes modifiées, version, et plus encore. Certains champs n'apparaissent que sous conditions (dépôt git, mode vim, abonnement Claude.ai), pensez à gérer leur absence avec un fallback // 0 ou // empty.

    Comment afficher le pourcentage de contexte avec une barre de progression ?

    Extrayez .context_window.used_percentage avec jq, calculez le nombre de blocs pleins sur une largeur fixe (par exemple 10 caractères), puis construisez une chaîne avec des blocs ▓ pour la partie remplie et ░ pour le reste. Le script complet est donné dans la section « Écrire son propre script bash » de ce guide.

    La statusline ralentit-elle Claude Code ?

    Non, si le script est rapide. Les mises à jour sont debouncées à 300 ms et, si une nouvelle mise à jour arrive pendant l'exécution, celle en cours est annulée. Évitez les appels réseau et les commandes lourdes dans le script. Pour des données basées sur le temps, utilisez refreshInterval plutôt que de relancer une logique coûteuse à chaque événement.

    Peut-on avoir une statusline différente par projet ?

    Oui. Le champ statusLine peut vivre dans les paramètres de projet (.claude/settings.json à la racine du dépôt) plutôt que dans les paramètres utilisateur globaux. Versionnez ce fichier et toute l'équipe partagera la même barre de statut, par exemple avec des couleurs ou des indicateurs propres au projet.

    Pour aller plus loin

  • Personnaliser le comportement de l'agent avec les output styles — l'autre versant de la personnalisation
  • Gérer le contexte, le compact et le context rot — pourquoi surveiller le pourcentage de contexte
  • Réduire la facture Claude Code (FinOps) — pour exploiter le coût affiché
  • Automatiser son workflow avec les hooks — même fichier settings.json
  • Sessions parallèles avec git worktree — distinguer chaque branche dans la barre
  • Reçois la cheatsheet Claude Code (gratuite)

    Les 30 commandes, raccourcis et prompts que j'utilise tous les jours. Directement dans ta boîte mail.

    Zéro spam. Désinscription en un clic.

    Envie de maîtriser Claude Code ?

    Rejoignez notre formation complète et apprenez à utiliser Claude Code comme un pro.

    M'inscrire à la formation