- Quer monitorar o uso da janela de contexto enquanto trabalha
- Precisa rastrear custos de sessão
- Trabalha em várias sessões e precisa distingui-las
- Quer que a ramificação git e o status estejam sempre visíveis

Configurar uma linha de status
Use o comando/statusline para fazer com que o Claude Code gere um script para você, ou crie manualmente um script e adicione-o às suas configurações.
Use o comando /statusline
O comando/statusline aceita instruções em linguagem natural descrevendo o que você quer exibir. O Claude Code gera um arquivo de script em ~/.claude/ e atualiza suas configurações automaticamente:
Configure manualmente uma linha de status
Adicione um campostatusLine às suas configurações de usuário (~/.claude/settings.json, onde ~ é seu diretório inicial) ou configurações de projeto. Defina type como "command" e aponte command para um caminho de script ou um comando de shell inline. Para um passo a passo completo de criação de um script, consulte Construir uma linha de status passo a passo.
command é executado em um shell, então você também pode usar comandos inline em vez de um arquivo de script. Este exemplo usa jq para analisar a entrada JSON e exibir o nome do modelo e a porcentagem de contexto:
padding opcional adiciona espaçamento horizontal extra (em caracteres) ao conteúdo da linha de status. O padrão é 0. Este preenchimento é além do espaçamento integrado da interface, então controla o recuo relativo em vez da distância absoluta da borda do terminal.
Desabilitar a linha de status
Execute/statusline e peça para remover ou limpar sua linha de status (por exemplo, /statusline delete, /statusline clear, /statusline remove it). Você também pode excluir manualmente o campo statusLine do seu settings.json.
Construir uma linha de status passo a passo
Este passo a passo mostra o que está acontecendo nos bastidores criando manualmente uma linha de status que exibe o modelo atual, diretório de trabalho e porcentagem de uso da janela de contexto.Executar
/statusline com uma descrição do que você quer configura tudo isso automaticamente para você.
Crie um script que leia JSON e imprima a saída
O Claude Code envia dados JSON para seu script via stdin. Este script usa
jq, um analisador JSON de linha de comando que você pode precisar instalar, para extrair o nome do modelo, diretório e porcentagem de contexto, depois imprime uma linha formatada.Salve isto em ~/.claude/statusline.sh (onde ~ é seu diretório inicial, como /Users/username no macOS ou /home/username no Linux):Adicione às configurações
Diga ao Claude Code para executar seu script como a linha de status. Adicione esta configuração a Sua linha de status aparece na parte inferior da interface. As configurações são recarregadas automaticamente, mas as alterações não aparecerão até sua próxima interação com o Claude Code.
~/.claude/settings.json, que define type como "command" (significando “execute este comando de shell”) e aponta command para seu script:Como as linhas de status funcionam
O Claude Code executa seu script e envia dados de sessão JSON para ele via stdin. Seu script lê o JSON, extrai o que precisa e imprime texto para stdout. O Claude Code exibe tudo o que seu script imprime. Quando é atualizado Seu script é executado após cada nova mensagem do assistente, quando o modo de permissão muda ou quando o modo vim alterna. As atualizações são debounced em 300ms, significando que mudanças rápidas são agrupadas e seu script é executado uma vez que as coisas se estabilizam. Se uma nova atualização for acionada enquanto seu script ainda está em execução, a execução em andamento é cancelada. Se você editar seu script, as alterações não aparecerão até que sua próxima interação com o Claude Code acione uma atualização. O que seu script pode exibir- Múltiplas linhas: cada instrução
echoouprinté exibida como uma linha separada. Consulte o exemplo de múltiplas linhas. - Cores: use códigos de escape ANSI como
\033[32mpara verde (o terminal deve suportá-los). Consulte o exemplo de status do git. - Links: use sequências de escape OSC 8 para tornar o texto clicável (Cmd+clique no macOS, Ctrl+clique no Windows/Linux). Requer um terminal que suporte hiperlinks como iTerm2, Kitty ou WezTerm. Consulte o exemplo de links clicáveis.
A linha de status é executada localmente e não consome tokens de API. Ela se oculta temporariamente durante certas interações da interface, incluindo sugestões de preenchimento automático, o menu de ajuda e prompts de permissão.
Dados disponíveis
O Claude Code envia os seguintes campos JSON para seu script via stdin:| Campo | Descrição |
|---|---|
model.id, model.display_name | Identificador do modelo atual e nome de exibição |
cwd, workspace.current_dir | Diretório de trabalho atual. Ambos os campos contêm o mesmo valor; workspace.current_dir é preferido para consistência com workspace.project_dir. |
workspace.project_dir | Diretório onde o Claude Code foi iniciado, que pode diferir de cwd se o diretório de trabalho mudar durante uma sessão |
cost.total_cost_usd | Custo total da sessão em USD |
cost.total_duration_ms | Tempo total decorrido desde o início da sessão, em milissegundos |
cost.total_api_duration_ms | Tempo total gasto aguardando respostas de API em milissegundos |
cost.total_lines_added, cost.total_lines_removed | Linhas de código alteradas |
context_window.total_input_tokens, context_window.total_output_tokens | Contagens de tokens cumulativas em toda a sessão |
context_window.context_window_size | Tamanho máximo da janela de contexto em tokens. 200000 por padrão, ou 1000000 para modelos com contexto estendido. |
context_window.used_percentage | Porcentagem pré-calculada da janela de contexto usada |
context_window.remaining_percentage | Porcentagem pré-calculada da janela de contexto restante |
context_window.current_usage | Contagens de tokens da última chamada de API, descritas em campos de janela de contexto |
exceeds_200k_tokens | Se a contagem total de tokens (tokens de entrada, cache e saída combinados) da resposta de API mais recente excede 200k. Este é um limite fixo independentemente do tamanho real da janela de contexto. |
session_id | Identificador único de sessão |
transcript_path | Caminho para o arquivo de transcrição de conversa |
version | Versão do Claude Code |
output_style.name | Nome do estilo de saída atual |
vim.mode | Modo vim atual (NORMAL ou INSERT) quando modo vim está habilitado |
agent.name | Nome do agente ao executar com a flag --agent ou configurações de agente configuradas |
worktree.name | Nome da worktree ativa. Presente apenas durante sessões --worktree |
worktree.path | Caminho absoluto para o diretório da worktree |
worktree.branch | Nome da ramificação git para a worktree (por exemplo, "worktree-my-feature"). Ausente para worktrees baseadas em hook |
worktree.original_cwd | O diretório em que o Claude estava antes de entrar na worktree |
worktree.original_branch | Ramificação git verificada antes de entrar na worktree. Ausente para worktrees baseadas em hook |
Esquema JSON completo
Esquema JSON completo
Seu comando de linha de status recebe esta estrutura JSON via stdin:Campos que podem estar ausentes (não presentes em JSON):
vim: aparece apenas quando o modo vim está habilitadoagent: aparece apenas ao executar com a flag--agentou configurações de agente configuradasworktree: aparece apenas durante sessões--worktree. Quando presente,brancheoriginal_branchtambém podem estar ausentes para worktrees baseadas em hook
null:context_window.current_usage:nullantes da primeira chamada de API em uma sessãocontext_window.used_percentage,context_window.remaining_percentage: podem sernullno início da sessão
Campos de janela de contexto
O objetocontext_window fornece duas maneiras de rastrear o uso de contexto:
- Totais cumulativos (
total_input_tokens,total_output_tokens): soma de todos os tokens em toda a sessão, útil para rastrear o consumo total - Uso atual (
current_usage): contagens de tokens da chamada de API mais recente, use isto para porcentagem de contexto precisa, pois reflete o estado real do contexto
current_usage contém:
input_tokens: tokens de entrada no contexto atualoutput_tokens: tokens de saída geradoscache_creation_input_tokens: tokens escritos no cachecache_read_input_tokens: tokens lidos do cache
used_percentage é calculado apenas a partir de tokens de entrada: input_tokens + cache_creation_input_tokens + cache_read_input_tokens. Ele não inclui output_tokens.
Se você calcular a porcentagem de contexto manualmente a partir de current_usage, use a mesma fórmula apenas de entrada para corresponder a used_percentage.
O objeto current_usage é null antes da primeira chamada de API em uma sessão.
Exemplos
Estes exemplos mostram padrões comuns de linha de status. Para usar qualquer exemplo:- Salve o script em um arquivo como
~/.claude/statusline.sh(ou.py/.js) - Torne-o executável:
chmod +x ~/.claude/statusline.sh - Adicione o caminho às suas configurações
jq para analisar JSON. Python e Node.js têm análise JSON integrada.
Uso da janela de contexto
Exiba o modelo atual e o uso da janela de contexto com uma barra de progresso visual. Cada script lê JSON de stdin, extrai o campoused_percentage e constrói uma barra de 10 caracteres onde blocos preenchidos (▓) representam o uso:

Status do git com cores
Mostre a ramificação git com indicadores codificados por cores para arquivos preparados e modificados. Este script usa códigos de escape ANSI para cores de terminal:\033[32m é verde, \033[33m é amarelo e \033[0m redefine para padrão.

Rastreamento de custo e duração
Rastreie os custos de API e o tempo decorrido da sua sessão. O campocost.total_cost_usd acumula o custo de todas as chamadas de API na sessão atual. O campo cost.total_duration_ms mede o tempo total decorrido desde o início da sessão, enquanto cost.total_api_duration_ms rastreia apenas o tempo gasto aguardando respostas de API.
Cada script formata o custo como moeda e converte milissegundos em minutos e segundos:

Exibir múltiplas linhas
Seu script pode exibir múltiplas linhas para criar uma exibição mais rica. Cada instruçãoecho produz uma linha separada na área de status.

print ou echo cria uma linha separada:
Links clicáveis
Este exemplo cria um link clicável para seu repositório GitHub. Ele lê a URL remota do git, converte o formato SSH para HTTPS comsed e envolve o nome do repositório em códigos de escape OSC 8. Mantenha Cmd (macOS) ou Ctrl (Windows/Linux) pressionado e clique para abrir o link em seu navegador.

printf '%b' que interpreta escapes de barra invertida de forma mais confiável que echo -e em diferentes shells:
Cache de operações caras
Seu script de linha de status é executado frequentemente durante sessões ativas. Comandos comogit status ou git diff podem ser lentos, especialmente em repositórios grandes. Este exemplo armazena em cache informações do git em um arquivo temporário e apenas as atualiza a cada 5 segundos.
Use um nome de arquivo de cache estável e fixo como /tmp/statusline-git-cache. Cada invocação de linha de status é executada como um novo processo, então identificadores baseados em processo como $$, os.getpid() ou process.pid produzem um valor diferente a cada vez e o cache nunca é reutilizado.
Cada script verifica se o arquivo de cache está ausente ou mais antigo que 5 segundos antes de executar comandos git:
Configuração do Windows
No Windows, o Claude Code executa comandos de linha de status através do Git Bash. Você pode invocar PowerShell a partir desse shell:Dicas
- Teste com entrada simulada:
echo '{"model":{"display_name":"Opus"},"context_window":{"used_percentage":25}}' | ./statusline.sh - Mantenha a saída curta: a barra de status tem largura limitada, então saída longa pode ser truncada ou quebrada de forma estranha
- Cache de operações lentas: seu script é executado frequentemente durante sessões ativas, então comandos como
git statuspodem causar atraso. Consulte o exemplo de cache para saber como lidar com isso.
Solução de problemas
Linha de status não aparecendo- Verifique se seu script é executável:
chmod +x ~/.claude/statusline.sh - Verifique se seu script produz saída para stdout, não stderr
- Execute seu script manualmente para verificar se produz saída
- Se
disableAllHooksestiver definido comotrueem suas configurações, a linha de status também será desabilitada. Remova esta configuração ou defina-a comofalsepara reabilitar. - Execute
claude --debugpara registrar o código de saída e stderr da primeira invocação de linha de status em uma sessão - Peça ao Claude para ler seu arquivo de configurações e executar o comando
statusLinediretamente para descobrir erros
-- ou valores vazios
- Os campos podem ser
nullantes da primeira resposta de API ser concluída - Trate valores nulos em seu script com fallbacks como
// 0em jq - Reinicie o Claude Code se os valores permanecerem vazios após várias mensagens
- Use
used_percentagepara estado de contexto preciso em vez de totais cumulativos total_input_tokensetotal_output_tokenssão cumulativos em toda a sessão e podem exceder o tamanho da janela de contexto- A porcentagem de contexto pode diferir da saída
/contextdevido a quando cada uma é calculada
- Verifique se seu terminal suporta hiperlinks OSC 8 (iTerm2, Kitty, WezTerm)
- Terminal.app não suporta links clicáveis
- Sessões SSH e tmux podem remover sequências OSC dependendo da configuração
- Se sequências de escape aparecerem como texto literal como
\e]8;;, useprintf '%b'em vez deecho -epara manipulação de escape mais confiável
- Sequências de escape complexas (cores ANSI, links OSC 8) podem ocasionalmente causar saída corrompida se se sobrepuserem com outras atualizações da interface
- Se você vir texto corrompido, tente simplificar seu script para saída de texto simples
- Linhas de status de múltiplas linhas com códigos de escape são mais propensas a problemas de renderização do que texto simples de linha única
- Scripts que saem com códigos diferentes de zero ou não produzem saída fazem a linha de status ficar em branco
- Scripts lentos bloqueiam a linha de status de atualizar até que sejam concluídos. Mantenha scripts rápidos para evitar saída obsoleta.
- Se uma nova atualização for acionada enquanto um script lento está em execução, o script em andamento é cancelado
- Teste seu script independentemente com entrada simulada antes de configurá-lo
- Notificações do sistema como erros de servidor MCP, atualizações automáticas e avisos de token são exibidas no lado direito da mesma linha que sua linha de status
- Habilitar modo verbose adiciona um contador de tokens a esta área
- Em terminais estreitos, essas notificações podem truncar sua saída de linha de status