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

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
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,.pyou.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,typeestatusdescriptionelabelstartTimemodel,effortecontextWindowSizetokenCountetokenSamplescwd
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:
- 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
- roda
/statuslinedentro 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) - 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.
Formações
Formação Vibe Coding
Do Prompt ao Produto: Crie Software Real com IA
- 474 aulas
- 20 projetos
- 39h 27min
Blog | Mais populares
Bateu o limite de uso do Claude Code? Como retomar a tarefa sem refazer tudo
Bateu o limite de uso do Claude Code? Veja como retomar a tarefa de onde parou com /usage, CLAUDE.md e --continue, sem refazer nada.
Como pagar o Claude Code no Brasil: cartão, dólar, IOF e quanto fica em reais
Claude Code preço Brasil na prática: câmbio, IOF de 3,5% e quanto fica na fatura. Planos Pro e Max convertidos em reais e como pagar com cartão.
Como instalar uma skill no Claude Code: passo a passo
Saiba como instalar skill no Claude Code: use a pasta pessoal para todas as sessões ou a pasta de projeto para versionar. Frontmatter YAML é obrigatório.
