Token Meter: tokens do Claude Code e Codex nas últimas 5 h
O Token Meter lê as transcrições que o Claude Code, o Codex, o Gemini CLI e o omp gravam em disco e soma tudo na barra de título. Ele também pode mostrar os limites do seu plano e, para seis provedores de API, o saldo, a cota ou o gasto da sua conta. Os limites do plano e os limites do Codex em tempo real têm opções próprias para ativar; os provedores de conta começam a funcionar quando você salva uma chave. O popover lista todos os provedores que você configurou, com o que você fixou aparecendo primeiro.
O chip da barra de título
A barra de título mostra um chip. Clique nele para abrir um popover com uma linha para cada provedor que tenha algo a mostrar: o Claude Code, o Codex e o Gemini, quando as pastas de transcrições deles são encontradas neste computador, Outros agentes, quando o omp cobrou nos últimos 30 dias uma conta que não é nenhuma dessas, e cada provedor de conta para o qual você salvou uma chave (o Kimi também aparece quando o Kimi Code CLI está conectado neste computador). As linhas seguem uma ordem fixa: Claude Code, Codex, Gemini, Outros agentes, DeepSeek, Moonshot, Kimi, MiniMax, OpenRouter, Z.ai. A exceção é o provedor que você fixa, que vai para o topo (veja a seção sobre fixar mais abaixo).
O chip mostra o provedor que está mais perto de um limite. O que ele mostra depende do que realmente se sabe:
- Uma porcentagem quando algum provedor publica uma janela de cota: a mais restrita entre todas. O ícone do provedor fica ao lado, e ao passar o mouse sobre o chip aparecem o nome da janela e quando ela reinicia.
- Uma contagem de tokens quando nenhum provedor publica cota: os tokens usados nas últimas 5 horas, lidos das transcrições neste computador, para o primeiro entre Claude Code, Codex, Gemini e Outros agentes que tiver uma linha.
- O menor saldo quando não há linhas de transcrições locais (Claude Code, Codex, Gemini, Outros agentes), nenhum provedor publica cota e pelo menos um provedor informa um saldo em dólares americanos: o menor deles, como valor em dinheiro (por exemplo
$12.34), com o ícone desse provedor. Um saldo não tem teto, então nunca vira porcentagem, e um saldo em yuan nunca é convertido em dólares para a comparação. - Nenhum número quando não há linhas de transcrições locais e os provedores que você configurou informam só um gasto, ou só saldos em yuan. O chip mostra então um ícone simples de medidor.
Uma porcentagem fica neutra abaixo de 60%, âmbar a partir de 60% e vermelha a partir de 85%. Essa cor só vale para uma porcentagem publicada por um provedor, nunca para uma contagem de tokens ou um saldo.
O chip fica totalmente oculto quando não há nada a dizer: nenhuma pasta de transcrições de agente neste computador e nenhuma chave de provedor salva. A primeira varredura começa 8 segundos depois da abertura, e os primeiros números aparecem quando ela termina.
De onde vêm os números
| Agente | Pasta | Arquivos lidos |
|---|---|---|
| Claude Code | ~/.claude/projects | Transcrições .jsonl na pasta e nas subpastas |
| Codex | ~/.codex | Arquivos de sessão .jsonl na pasta e nas subpastas |
| Gemini CLI | ~/.gemini/tmp | Transcrições de chat .jsonl na pasta e nas subpastas |
| omp | ~/.omp/agent/sessions | Arquivos de sessão .jsonl na pasta e nas subpastas |
O uso é contado por turno e agrupado por hora e por modelo. Arquivos não modificados nos últimos 30 dias são ignorados, e dados com mais de 30 dias são descartados. O omp trabalha com vários provedores, então cada turno do omp vai para a linha da conta em que foi cobrado: Anthropic para o Claude Code, OpenAI para o Codex, Google para o Gemini e qualquer outra (DeepSeek, MiniMax e assim por diante) para Outros agentes. Um turno que o omp importou de uma sessão do Claude Code ou do Codex não é contado duas vezes. O OpenCode e outros agentes não entram na conta: o app lê apenas as quatro pastas acima.
~/.codex/config.toml para conectar o Codex ao seu servidor MCP (veja Agentes de código e Control Room, antes War Room), o que cria a pasta ~/.codex. A partir da próxima abertura, uma linha do Codex mostrando 0 pode aparecer no popover mesmo que o Codex não esteja instalado.HOME quando ela está definida, senão USERPROFILE, senão HOMEDRIVE mais HOMEPATH. Um app do Windows iniciado pelo Explorer costuma ter só USERPROFILE. O build para Windows é sem assinatura, e a varredura de transcrições foi verificada somente no macOS.O popover: uma linha por provedor
Cada linha traz o destaque do provedor: até três barras pequenas (5h, sem e uma terceira que é mês, Cota ou o nome de um limite específico de modelo) para as janelas que ele publica ou, no caso de saldo ou gasto, uma linha de texto. O primeiro texto de cada linha indica o reinício da janela mais próxima do limite: Reinicia em … para a janela de 5 horas, ou, por exemplo, Semana reinicia em … para outra. Uma janela cujo horário de reinício já passou, sem leitura nova desde então, mostra uma barra vazia e um traço em vez de um número desatualizado (Reiniciado · sem leitura desde no detalhe expandido e ao passar o mouse). A linha do Claude Code também diz Não foi possível atualizar · última leitura quando a leitura dos limites do plano tem mais de 15 minutos.
Cada linha vem marcada com de quem são os números que ela mostra. Conta significa que o provedor informa o dado para toda a sua conta, incluindo o uso em outras máquinas: barras de limite do plano, saldos e o gasto de uma conta. Este Mac significa que o dado foi contado só a partir das transcrições deste computador: uma linha sem limites mostra o gasto e os tokens de Hoje, por exemplo $1.20 today · 3.4M tokens. As linhas Gemini e Outros agentes sempre mostram essa linha local, porque o app não lê nenhuma cota para elas.
O popover lista todos os provedores que têm uma linha, o fixado primeiro e os demais na ordem fixa. O chip pode mostrar um provedor que não é o primeiro.
Os provedores de conta que você ainda não configurou aparecem depois das linhas como Configurar em Configurações; a partir de dois, eles se juntam em uma única linha Mais provedores… com os ícones, e você clica nela para mostrá-los. Qualquer linha já configurada abre Configurações → Token Meter.
Clique em uma linha do Claude Code, Codex, Gemini ou Outros agentes para expandir o detalhe dela. Os limites do próprio provedor vêm primeiro, sob a marca Conta, e depois o que foi contado aqui, sob Este Mac:
- Barras de Sessão e Semana, além de qualquer limite por modelo que o provedor informe, cada um com seu horário de reinício. Só para o Claude Code e o Codex, e só quando esses limites estão disponíveis (veja as duas seções abaixo).
- Tokens: usados nas últimas 5 horas, nos últimos 7 dias e nos últimos 30 dias. As janelas de 5 horas e de 7 dias são contadas em blocos de hora inteira, então cada uma pode incluir parte de uma hora a mais.
- Custo: estimado para hoje, os últimos 7 dias e os últimos 30 dias. Um valor que não pôde ser precificado aparece como sem preço ainda, e um que deixa de fora alguns tokens sem preço começa com ≥.
- Últimas 24 horas: uma barra por hora.
- Últimos 30 dias: uma barra por dia. Alterne entre Tokens e Custo, e passe o mouse sobre um dia ou chegue nele pelo teclado para ver o total e os três modelos com mais tokens.
- Os últimos 7 dias divididos em Entrada nova, Saída, Gravações em cache, Leituras de cache e Turnos.
- Há quanto tempo os números foram calculados e a linha Lido das transcrições de cada agente neste Mac. Nada é enviado para lugar nenhum.
Na parte de baixo do popover, uma linha Todos os agentes soma o Hoje, os Últimos 7 dias e os Últimos 30 dias de cada agente, com tokens acima do custo. Ela aparece quando dois ou mais agentes usaram tokens nos últimos 30 dias, e clicar nela mostra a divisão por agente.
Fixar um provedor no topo
Por padrão, o primeiro provedor do popover é o Claude Code. Para mudar isso, abra Configurações → Token Meter e escolha outro provedor em Fixado no topo, ou escolha Nenhum (ordem fixa).
Fixar só move uma linha. Todos os provedores que você configurou continuam na lista, e o chip continua seguindo o limite mais perto de acabar. Se o provedor fixado não tem linha (Codex não encontrado, nenhuma chave salva), nada se move.
Valores de custo
O custo é a contagem de tokens precificada pelas tarifas públicas de API de cada modelo, com uma tabela de preços embutida no app. Quando o omp registrou o próprio custo de um turno, esse valor é usado para esses tokens. O popover o rotula como Em tarifas de API, não o que uma assinatura cobrou e mostra a data dessa tabela. Se você paga um plano de assinatura, esse não é o valor que foi cobrado de você.
- Hoje começa à meia-noite local. Os Últimos 7 dias e os Últimos 30 dias são janelas móveis; só 30 dias de histórico são guardados.
- Modelos que a tabela de preços não lista contam nos tokens, mas não no custo. O valor então avisa que é um mínimo, nomeia esses modelos e mostra que parcela dos tokens teve preço.
- Um custo aparece como
—quando nada na janela tem preço conhecido. - A tabela de preços não foi verificada com a página de preços da própria OpenAI para os modelos da OpenAI, então trate os custos do Codex como uma estimativa.
Como ele atualiza
- A primeira varredura começa 8 segundos depois da abertura. Com transcrições grandes, ela pode demorar um pouco.
- Depois disso, o app refaz a varredura a cada 60 segundos e lê só o que foi acrescentado a cada arquivo desde a última.
- A barra de título pega o resultado mais recente das transcrições a cada 30 segundos e pede os limites do plano do Claude, os limites do Codex em tempo real e as leituras das contas a cada 60 segundos. Cada um desses provedores ainda aplica o próprio intervalo mínimo de 5 minutos.
- O botão de atualizar no topo do popover (Verificar todos os provedores de novo) puxa de uma vez a leitura mais recente de todos os provedores, em vez de esperar essa coleta. Ele não inicia uma nova varredura de transcrições e não encurta o intervalo mínimo de 5 minutos da Anthropic, dos limites do Codex em tempo real e dos provedores de conta: um provedor consultado há menos tempo que isso responde com a última leitura.
- O progresso da varredura é salvo em
token-meter-cache.jsonna pasta de configuração do app (no macOS,~/Library/Application Support/com.mxterm.desktop), então, depois de reiniciar, o app lê só o que mudou enquanto ele estava fechado.
Limites reais do plano para o Claude
As transcrições do Claude Code não registram os limites do seu plano, então, por padrão, o medidor mostra tokens em vez de uma porcentagem. Para ver as porcentagens que a Anthropic informa, abra Configurações → Token Meter, encontre Limites do plano e ative Mostrar as porcentagens reais de limite do Claude. Ela vem desativada por padrão e vale só para o Claude Code.
Ao ativar:
- O app lê o item de keychain do Claude Code,
Claude Code-credentials, pela ferramentasecuritydo macOS. O Claude Code grava esse item com a mesma ferramenta, então o macOS normalmente não mostra nenhum aviso. - O app pega o token de login do Claude Code nesse item e chama
GET https://api.anthropic.com/api/oauth/usagecom ele. O token fica na memória do app até expirar ou a Anthropic rejeitá-lo, então a keychain é lida uma vez por token. Ele nunca é gravado em disco nem registrado em log. - O chip e o popover mostram suas porcentagens de 5 horas e semanal e o horário em que elas reiniciam.
O app chama o endpoint no máximo uma vez a cada 300 segundos e mostra a última leitura nesse intervalo. Depois de uma resposta de limite de requisições (HTTP 429), ele espera 900 segundos antes da próxima tentativa. Se não for possível alcançar a Anthropic, a última leitura continua na tela.
claude para entrar. Os limites do plano funcionam só no macOS; em outros sistemas a credencial não pode ser lida, e o painel mostra a mesma mensagem de não conectado. Para proibir as leituras da keychain em um Mac gerenciado (o item do Claude Code e as chaves de conta salvas pelo MXterm Pro), inicie o MXterm Pro com a variável de ambiente MXTERM_DISABLE_KEYCHAIN=1.Limites do Codex: do disco ou, se você quiser, em tempo real
Para os limites, o Codex não precisa de nenhuma opção ativada nem de rede. Ele grava nos próprios arquivos de sessão os cabeçalhos de limite de requisições que o servidor enviou, então as porcentagens de 5 horas e semanal que a interface do Codex mostra já estão nos arquivos que o Token Meter varre. A linha expandida do Codex traz a observação Informado pelo Codex há …, porque um valor só é tão atual quanto o seu último turno do Codex neste computador.
Se você quer um número atual agora, Configurações → Token Meter tem Limites do Codex em tempo real. Ela vem desativada por padrão. Ao ativá-la, o app lê o login do ChatGPT do próprio Codex em ~/.codex/auth.json e o envia somente para chatgpt.com para buscar seus limites atuais; ele nunca altera nem renova esse login. A verificação roda no máximo uma vez a cada 5 minutos. Uma leitura em tempo real com menos de 15 minutos substitui a lida do disco, e a linha passa a dizer Ao vivo da OpenAI, atualizado há ….
~/.codex/auth.json não é lido: o painel então diz Nenhum login do Codex com ChatGPT em ~/.codex/auth.json. Execute `codex login`. Se a OpenAI limitar as requisições dessa verificação, o app espera 15 minutos antes de tentar de novo.Saldos de conta, lidos com as chaves de API que você informa
Seis provedores podem informar o estado da sua conta: um saldo, uma cota ou o que foi gasto. Cada um é lido com uma chave de API que você cola em Configurações → Token Meter, em Provedores de conta. Sem chave salva, o app não faz nenhuma chamada à keychain e, exceto para o Kimi quando o Kimi Code CLI está conectado neste computador (veja a nota abaixo), nenhuma chamada de rede.
| Provedor | A chave que ele pede | O que a linha mostra |
|---|---|---|
| DeepSeek | Uma chave de API da plataforma DeepSeek (página de chaves de API) | Saldo, dividido em pago e concedido |
| Moonshot | Chave de API da Moonshot / Kimi Open Platform, com uma Região Internacional ou China | Saldo |
| Kimi | Uma chave de API do Kimi Code | Cota: a janela de 7 dias e a janela de limite de uso, que é de 5 horas |
| MiniMax | Uma chave do MiniMax Coding Plan, que começa com sk-cp-, com uma Região Global ou China | Cota usada no plano, em porcentagem |
| OpenRouter | Uma chave de API de openrouter.ai/keys, não uma chave de gerenciamento | Cota quando a chave tem limite de gasto, senão o gasto até agora |
| Z.ai | Sua chave de API do coding plan do Z.ai / BigModel, com uma Região Global ou China | Cota do GLM Coding Plan |
Cada chave é guardada no armazenamento de credenciais do seu sistema (o macOS Keychain; no Windows o build usa o Gerenciador de Credenciais, o que não foi verificado) e enviada apenas à API do próprio provedor, com as duas exceções descritas em O que sai do seu computador. O painel diz isso, em palavras que citam o macOS Keychain nos dois sistemas: As chaves ficam no macOS Keychain e são enviadas apenas a esse provedor. Nada secreto é gravado nos arquivos do próprio app, apenas se um provedor está configurado, sua região e os últimos quatro caracteres da chave, para que o painel possa mostrar Chave salva · …abcd. Se o macOS recusar o acesso à Keychain, as linhas dos provedores que você configurou dizem Acesso ao macOS Keychain bloqueado até você salvar ou remover uma chave ou reiniciar o app, em vez de esperar uma leitura que não vai chegar.
Os formatos de resposta desses seis provedores não foram verificados com respostas reais, então uma linha pode não mostrar valor, ou mostrar um errado, até que sejam. Trate essas leituras como não verificadas.
Um provedor é atualizado no máximo uma vez a cada 5 minutos. Um provedor que limitou as requisições fica em espera por 15 minutos; um que responde Chave rejeitada: atualize em Configurações fica em espera até você trocar a chave. Quando uma atualização falha porque o provedor não pode ser alcançado ou está limitando as requisições, depois de uma boa leitura, a linha mantém o valor antigo e o marca com Não foi possível atualizar · última leitura. Uma chave rejeitada ou uma resposta ilegível descarta o valor antigo.
~/.kimi-code/credentials/kimi-code.json e o envia para api.kimi.com para ler sua cota, sem nenhuma opção para ativar. Ele só lê esse arquivo e nunca renova o token, e uma chave que você cole tem precedência.Em painéis e nas abas
O número de tokens de um painel fica na linha dele na barra lateral esquerda, não no cabeçalho do painel nem na aba. A segunda linha mostra o agente e o que a conversa daquele painel usou neste Mac (até os últimos 30 dias), como Claude Code · 1.7M · $0.41, a preços de tabela e não o que você foi cobrado. Uma linha de espaço de trabalho mostra o total dos painéis cuja conversa é conhecida. Um painel cuja conversa não é conhecida não mostra nada, e um painel do Gemini também não: nenhum valor é estimado.
Em um painel executando Claude Code ou Codex, aparece um aviso quando a porcentagem publicada pelo próprio plano chega a 80% (talvez seja hora de encerrar) e de novo a 95% (melhor parar). Ele vem só de uma porcentagem real, então precisa que os limites descritos acima estejam disponíveis; os outros agentes nunca recebem um. O aviso é só informativo: ele fecha com o ✕, e não pausa o agente nem digita no painel. Quando a última linha do Claude Code em uma conversa é um limite do plano com um horário de redefinição ainda no futuro, o cabeçalho do painel mostra Aguardando a redefinição do plano com esse horário.
O que sai do seu computador
As contagens de tokens e os custos são calculados no seu computador, e as transcrições nunca são enviadas a lugar nenhum. Os limites do Codex lidos do disco também são locais. Um celular pareado pode ler as porcentagens do seu plano a partir deste Mac, nunca saldos. Três coisas podem fazer uma requisição de rede, e cada uma vai só para o seu próprio provedor:
- Mostrar as porcentagens reais de limite do Claude →
api.anthropic.com, com o token de login do próprio Claude Code. - Limites do Codex em tempo real →
chatgpt.com, com o login do próprio Codex. - Provedores de conta → a API do próprio provedor, com a chave que você salvou para ele. Dois casos vão além disso. No Kimi, se você não salvou chave e o Kimi Code CLI está conectado neste computador, o app envia o token do CLI para
api.kimi.com, sem chave e sem nenhuma opção para ativar. Uma chave do MiniMax rejeitada na região Global é tentada de novo no host da China do MiniMax,api.minimaxi.com. Um redirecionamento é recusado de saída, então uma chave só pode chegar a um host do provedor para o qual foi salva.
Para o restante do tráfego de rede do app, veja Telemetria: o que o app envia.