Status line no Claude Code: o que é, o que ela mostra e por que virou categoria própria no awesome-claude-code

status line do Claude Code exibindo modelo, diretório e uso de contexto na sessão
Resposta rápida

A status line do Claude Code é um recurso oficial da Anthropic: uma linha de status que você mesmo define e que fica à vista durante a sessão. A configuração vive no campo statusLine do settings.json, apontando para um script, e o Claude Code entrega um JSON no stdin com dados da sessão (modelo, diretório, uso da janela de contexto e as tasks dos subagentes). Só a primeira linha do stdout vira o texto exibido, com suporte a cores ANSI. O awesome-claude-code, mantido por hesreallyhim, deu prateleira própria pra isso, com projetos como ccstatusline, claude-pace, Claude HUD e CCometixLine

Fala aí, beleza? Trabalhar no Claude Code sem status line é dirigir com o painel coberto: tu não sabe em qual modelo está falando, nem em qual pasta ele está mexendo, nem quanto da janela de contexto já foi embora

E aí, quando a compactação chega do nada no meio de uma refatoração, a surpresa é sua

A boa notícia: isso não é gambiarra de comunidade, é recurso oficial. A Anthropic documenta o Customize your status line com página própria na documentação do Claude Code

E virou coisa grande o suficiente pra ganhar seção separada no awesome-claude-code, o repositório mantido por hesreallyhim que cataloga o ecossistema em volta da ferramenta

Bora entender o que essa categoria resolve? 🙂

Como o Claude Code alimenta a status line:

Antes do como, o porquê: a status line não é um tema visual que tu escolhe numa lista. Ela é a saída de um comando que você controla

O Claude Code roda o teu script, pega o que ele imprimiu e mostra ali. Só isso

Formação Claude Code
Formação Recomendada

Formação Claude Code

Domine Claude Code do absoluto zero até o avançado

  • 120 aulas
  • 4 projetos
  • 9h 45min

A configuração fica no campo statusLine, dentro do ~/.claude/settings.json (settings do usuário) ou nos settings do projeto:

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

O type é command, e o command aponta pro script ou comando de shell que vai gerar a linha

Se você conhece aqueles prompts customizados de terminal, tipo o que mostra a branch do git ao lado do diretório, a ideia é bem semelhante: um pedaço de script que roda e devolve texto

E como o script sabe o que está acontecendo na sessão? O Claude Code passa informação contextual em JSON pelo stdin. Teu script lê esse JSON, monta a frase que quiser e imprime

Aqui tem um detalhe que pega muita gente: apenas a primeira linha do stdout vira o texto da status line. Se teu script cospe três linhas de debug antes do resultado, quem aparece na barra é a primeira delas

Outros pontos da mecânica que valem saber antes de sair configurando:

  • o arquivo pode ser .sh, .py ou .js, e precisa de permissão de execução (chmod +x ~/.claude/statusline.sh), senão simplesmente não roda
  • códigos de cor ANSI são suportados, então dá pra estilizar sem depender de nada externo
  • a barra é atualizada quando as mensagens da conversa mudam, no máximo a cada 300ms

Esse limite de 300ms é importante de ter na cabeça: script pesado ali dentro não é boa ideia, porque ele é chamado com frequência

E tem um caminho preguiçoso (e isso é bom!) pra quem não quer escrever nada: o comando de barra /statusline, dentro do próprio Claude Code

Ele pede ao Claude Code pra montar a status line pra você. Por padrão, tenta reproduzir o prompt do teu terminal, e aceita instruções adicionais se tu quiser algo diferente

O que dá para deixar à vista durante a sessão:

Agora a parte que interessa: o que tem dentro daquele JSON que chega no stdin

O campo model.display_name traz o nome de exibição do modelo. Parece bobo, mas é o tipo de coisa que evita você jogar uma tarefa arquitetural pesada num modelo que não era o que você achava que estava usando

O cwd traz o diretório atual. Quem mantém três projetos abertos em três abas de terminal sabe bem o valor de ver isso escrito na tela antes de mandar "apaga esse arquivo" 😅

Tem também o percentual de uso da janela de contexto. Esse é o campo que muda o jeito de trabalhar, porque te dá aviso prévio: dá pra fechar um raciocínio e quebrar a tarefa antes da compactação chegar, em vez de depois

Se você trata contexto como recurso escasso e trabalha com context engineering no Claude Code, ter esse número fixo na tela deixa de ser enfeite e vira instrumento de decisão

E tem o array de tasks, com os subagentes. Cada task traz:

  • id, name, type e status
  • description e label
  • startTime
  • model, effort e contextWindowSize
  • tokenCount e tokenSamples
  • cwd

Ou seja: dá pra montar uma barra que mostra quantos subagentes estão rodando agora, há quanto tempo cada um começou e em qual modelo

Quem já delegou tarefa pra subagente e ficou olhando pro nada esperando entende o valor disso

Por último, um campo discreto e muito útil: columns, com a largura útil da linha. É ele que permite ao teu script decidir se cabe o caminho completo do diretório ou se é hora de abreviar

Por que o awesome-claude-code separou Status Lines como categoria própria:

No README do repositório de hesreallyhim, Status Lines aparece como seção própria, ao lado de categorias como skills, agentes, tooling e plugins. A descrição é direta: configurações e customizações da barra de status do Claude Code

E por que isso não ficou espremido dentro de "tooling"? Aqui vai a minha leitura

Skill você invoca. Agente você delega. Comando você dispara

Status line não faz nada disso: ela é camada de visibilidade contínua. Não executa tarefa, não altera código, não decide nada. Fica lá o tempo todo respondendo "onde eu estou e quanto já gastei"

É uma natureza diferente das outras prateleiras, e por isso pede prateleira separada. Categoria própria num awesome list é sinal de maturidade do ecossistema: significa que apareceu gente suficiente resolvendo o mesmo problema pra virar assunto

Os projetos de status line listados no awesome-claude-code:

Se liga no que a categoria já tem de nomeado, e no que cada um propõe:

Projeto Autor O que propõe
CCometixLine Haleclipse Statusline em Rust com integração Git, acompanhamento de uso e configuração por TUI interativa
ccstatusline sirmalloc Formatador para o Claude Code CLI com modelo, branch do git, uso de tokens e outras métricas, com suporte a powerline e temas
Claude HUD Jarrod Watts Status line que expõe uso de contexto, ferramentas, agentes e todos
claude-code-statusline rz1989s Statusline de 4 linhas com temas, acompanhamento de custo e monitoramento de servidores MCP
claude-pace Astro-Han Statusline leve em Bash + jq com ritmo de consumo do rate limit, percentual das janelas de 5h e 7d, uso de contexto, branch e estatísticas de diff
Clawd on Desk Ruller_Lulu Pet de desktop que reage às sessões do Claude Code em tempo real

Nome, autor e descrição de cada um saem da própria listagem da seção Status Lines no README do awesome-claude-code, então dá pra conferir a fonte item por item

Repara na variedade: tem coisa em Rust, tem arquivo único em Bash, tem barra de 4 linhas e tem até bichinho de desktop

Não é o mesmo produto seis vezes. É a mesma pergunta respondida de seis jeitos

Qual perfil combina com qual status line?

Não existe "a melhor" aqui, existe a que mostra o número que te faz falta. Então bora por perfil:

Quer o mínimo, sem instalar meio mundo? Olha o claude-pace. É arquivo único em Bash, sem dependências além do jq, e ainda assim mostra ritmo de rate limit, janelas de 5h e 7d, contexto, branch e diff

Se importa com estética e quer temas? ccstatusline e claude-code-statusline são os que citam isso explicitamente: um com powerline e temas, o outro com 4 linhas, temas e monitoramento de servidores MCP

Trabalha com subagentes e lista de todos? Claude HUD é o que anuncia exatamente esse recorte: contexto, ferramentas, agentes e todos na mesma barra

Não quer editar JSON na unha? CCometixLine tem configuração por TUI interativa, o que muda bastante a experiência de ajuste

E a real: boa parte disso é gosto. A pergunta que decide não é "qual é a melhor", é de qual número você sente falta hoje. Se tu nunca olhou pra uso de contexto na vida, começar por uma barra de 4 linhas é ruído, não visibilidade

O número que aparece na barra não é a conta inteira:

Tome cuidado com um detalhe aqui, senão a barra vira falsa sensação de segurança

O used_percentage, o percentual de uso do contexto, é calculado somente com tokens de entrada: input_tokens + cache_creation_input_tokens + cache_read_input_tokens

Ele não inclui output_tokens

Ou seja: tudo que o modelo escreveu de volta pra você não está naquele percentual. Pra ter noção real de consumo da sessão, o caminho é outro, tipo medir o gasto de tokens da sessão com ferramenta feita pra isso

Tem outra camada de aproximação também. O ccstatusline descobre o tamanho da janela de contexto por cascata: usa o context_window_size reportado pelo Claude Code quando ele está presente, depois cai numa dica pelo nome do modelo, e por fim num fallback fixo, configurável pela variável CCSTATUSLINE_CONTEXT_SIZE_FALLBACK

Isso é engenharia honesta, e mostra bem o ponto: quando a fonte primária não vem, o número vira estimativa

Então trata a status line como bússola, não como extrato. Ela te diz "tá ficando cheio, vai fechando o assunto", e isso já é muito. O que ela não faz é fechar a conta

Conclusão:

O valor da categoria Status Lines não é enfeitar o terminal, é devolver visibilidade e controle pra uma sessão que, por padrão, corre bastante às cegas

Modelo, diretório, contexto e subagentes deixam de ser coisa que você adivinha e viram coisa que você lê

O próximo passo é bem simples, e nem precisa escolher ferramenta ainda:

  1. abre a documentação oficial de status line e dá uma passada nos campos do JSON de entrada, pra saber o que existe pra mostrar
  2. roda /statusline dentro do Claude Code e vê a barra nascer sozinha (o erro comum aqui é já querer o layout perfeito de primeira: deixa ele reproduzir o teu prompt e ajusta depois)
  3. quando souber qual número te faz falta, aí sim escolhe um projeto pronto da lista

Faz nessa ordem que tu escolhe com critério, e não por print bonito no README 😀

até o próximo post!

Perguntas frequentes

Como configuro a status line no Claude Code usando o settings.json?

Basta adicionar o campo statusLine no ~/.claude/settings.json (ou nos settings do projeto), com type igual a command e o command apontando pro script, por exemplo ~/.claude/statusline.sh. O script precisa ter permissão de execução via chmod +x, senão o Claude Code não consegue rodá-lo.

Qual a diferença entre configurar a status line na mão e usar o comando /statusline?

Configurar na mão significa escrever o script você mesmo e apontar pra ele no settings.json. Já o /statusline pede ao próprio Claude Code pra montar isso pra você, e por padrão ele tenta reproduzir o prompt do seu terminal, aceitando instruções adicionais se você quiser algo diferente.

O percentual de uso de contexto na status line conta os tokens de resposta do Claude também?

Não. O used_percentage é calculado somando input_tokens, cache_creation_input_tokens e cache_read_input_tokens, sem incluir os output_tokens. Ou seja, é uma medida do que entrou na janela de contexto, não do total trocado na conversa.

Por que a status line não atualiza em tempo real a cada caractere digitado?

Porque ela é atualizada quando as mensagens da conversa mudam, com um limite de no máximo a cada 300ms. É por isso que scripts pesados dentro da status line não são recomendados, já que ela é chamada com bastante frequência.

Dá pra usar a status line pra ver quantos subagentes estão rodando ao mesmo tempo?

Sim. O JSON que chega no stdin inclui um array de tasks, e cada task traz id, name, type, status, description, label, startTime, model, effort, contextWindowSize, tokenCount, tokenSamples e cwd. Com esses campos dá pra montar uma barra que mostra quantos subagentes estão ativos e em qual modelo cada um roda.

O percentual de contexto mostrado por um projeto da lista é sempre exato?

Nem sempre, porque o tamanho da janela de contexto nem sempre chega pronto. No ccstatusline, por exemplo, o valor vem por cascata: primeiro o context_window_size reportado pelo Claude Code, e quando esse dado não está presente entram alternativas de aproximação. Na prática, trate o número como bússola de "tá ficando cheio", não como extrato fechado.



Escrito por | Matheus Battisti

Matheus Battisti
Fundador da Hora de Codar

Programador apaixonado pelo mundo das tecnologias, sempre buscando em aprender e se aprofundar em linguagens, frameworks e o que mais for necessário para executar um bom trabalho. Agora tem uma nova missão que é de passar seu conhecimento adiante para formar novos programadores e especializar mais os que já são.

Subscribe
Notify of
guest

0 Comentários
Oldest
Newest Most Voted

Formações

Formação Vibe Coding

Formação Vibe Coding

Do Prompt ao Produto: Crie Software Real com IA

  • 474 aulas
  • 20 projetos
  • 39h 27min

Blog | Mais populares