Telemetria
Última atualização: October 1, 2026
Resumo
As versões oficiais do MXterm Pro enviam relatórios de uso anônimos, ativados por padrão. Eles mostram quantas pessoas usam o app, quais versões estão em uso e quais falhas acontecem com mais frequência, para sabermos o que corrigir primeiro.
Os relatórios nunca incluem saída do terminal, comandos, conteúdo de arquivos, caminhos de arquivos, hosts ou nomes de usuário SSH, nem chaves de licença. Você pode desativar o envio em Configurações → Privacidade ou com uma variável de ambiente, e as versões que você compila por conta própria não enviam nada.
A partir da versão 1.1.12, eles também incluem contagens e faixas de uso dos recursos, nunca o que você digitou ou abriu. O bloco Contagens de uso, mais abaixo, lista todos os campos.
O que coletamos
Na versão 1.1.11 do MXterm Pro há três relatórios, e esta seção lista todos os campos de cada um. A partir da versão 1.1.12, um quarto bloco, as contagens de uso, é enviado junto com o check-in diário e aparece por último.
1. Ping de uso
- Enviado para
- Google Analytics (www.google-analytics.com)
- Quando
- Um evento app_open na abertura do app e nada mais pelo resto daquela execução.
| Campo | O que contém |
|---|---|
| client_id | Um ID aleatório criado na primeira abertura e guardado em um arquivo chamado telemetry-id |
| event name | app_open |
| session_id | O horário em que o app foi aberto, em segundos |
| engagement_time_msec | Um número fixo: 100 |
| app_version | A versão do MXterm Pro |
| os | O nome do sistema operacional, por exemplo macos |
O Google deduz um país aproximado a partir do endereço IP de onde a requisição vem.
2. Check-in diário
- Enviado para
- mxterm.net, nosso próprio servidor
- Quando
- Quando o app inicia, se já tiverem passado 24 horas desde o último check-in, ou na hora se a execução anterior fechou de forma inesperada. Um app deixado aberto por dias faz o check-in de novo na próxima abertura.
| Campo | O que contém |
|---|---|
| installId | Um ID aleatório guardado em um arquivo chamado telemetry-install-id. Guardamos um hash dele, não o ID em si |
| currentVersion | A versão do MXterm Pro |
| tier | free ou pro |
| telemetryEnabled | Sempre true, já que o relatório só é enviado quando o envio está ativado |
| osVersion | A versão do macOS, por exemplo 15.5 |
| arch | arm64 ou x64 |
| platform | mac ou windows |
| crashedLastRun | Se a execução anterior terminou sem um encerramento normal |
| sessionsSinceLastCheck | Quantas vezes o app foi aberto desde o último check-in |
| paywallShown | Número de vezes que cada prompt de upgrade foi exibido, por nome do prompt |
| paywallClicked | Número de vezes que cada prompt de upgrade foi clicado, por nome do prompt |
Os nomes dos prompts são locked_panes, locked_ssh_hosts, locked_war_room_members, locked_mxterm_hosts, locked_my_devices, locked_access_password, locked_email_share, locked_remote_devices, locked_shared_panes, settings_license_panel, titlebar_menu e command_palette.
3. Eventos de falha
- Enviado para
- mxterm.net, nosso próprio servidor
- Quando
- Quando acontece uma das falhas específicas listadas abaixo: oito no MXterm Pro 1.1.11 e mais sete a partir da versão 1.1.12. Eventos que não puderem ser enviados ficam em uma fila, de até 50, e são reenviados depois.
| Campo | O que contém |
|---|---|
| eventId | Um ID aleatório para este evento |
| installIdHash | Um hash do ID de instalação do check-in diário |
| occurredAt | Quando aconteceu |
| eventType | Um dos eventos abaixo |
| severity | warning, ou critical para um travamento ou uma licença perdida após a ativação |
| detail | O detalhe extra listado abaixo, e nada além disso |
| app version, OS, arch | A versão do MXterm Pro, o sistema operacional e o tipo de processador |
Os códigos de motivo são escolhidos no seu Mac por correspondência com o erro, e o texto do erro nunca é enviado. Para SSH, SFTP e o editor, o motivo é um destes: auth_denied, password_expired, host_unreachable, timeout, permission_denied, not_found, disk_full, network ou unknown. Para falhas de licença, é um código curto como bad_signature ou expired, às vezes o código que o nosso servidor de licenças devolveu, ou seat: seguido de um código quando uma ativação pela sua conta MXterm falha.
4. Contagens de uso (a partir da versão 1.1.12)
- Enviado para
- mxterm.net, nosso próprio servidor
- Quando
- Uma vez por dia, na mesma requisição do check-in diário, a partir da versão 1.1.12. Nenhuma contagem de uso é enviada enquanto o envio de dados de uso estiver desativado.
| Campo | O que contém |
|---|---|
| schema | A versão desta lista de campos, atualmente 1 |
| milestones | Cada um é enviado uma única vez, como um sinalizador sem data, e só é registrado enquanto os relatórios de uso estão ativados: onboarding (concluído ou pulado), firstPane, firstSplit, firstSshHost, firstSftpOpen, firstRemoteShare, firstLicenseActivation (uma licença foi ativada neste Mac, com uma chave ou pela sua conta MXterm), firstShortcutCustomized (você definiu um atalho de teclado personalizado), firstAgent (o nome do agente, da lista fixa, ou other) e firstImport (ssh_config, moba, iterm2 ou session_json) |
| daysSinceInstall | Dias desde a instalação, como faixa: 0, 1, 2 a 6, 7 a 29, 30 a 89 ou a partir de 90 |
| counters | Números inteiros de 0 a 100000, contados desde o último check-in que foi concluído e depois zerados: panesOpened, splits, warRoomRooms, sshConnects, sftpTransfers, worktreePanes, paletteOpens, remoteHostStarted, chatViewOpens, meshPeerConnects e myDeviceLinks. Painéis restaurados quando o app abre não são contados, sftpTransfers conta apenas downloads, remoteHostStarted conta apenas quando você mesmo clica em Iniciar servidor, chatViewOpens conta cada vez que um painel muda para a visualização Chat, meshPeerConnects cada conexão bem-sucedida com um par do recurso de rede experimental, e myDeviceLinks cada dispositivo que você vincula em Meus dispositivos |
| agentLaunches | Quantas vezes cada agente foi iniciado, pelo nome da lista fixa. Um nome que não está na lista é contado como other |
| importsBySource | Quantas importações vieram de cada origem: ssh_config, moba, iterm2 e session_json |
| sftpBytes | Volume de dados baixados por SFTP, como faixa de tamanho: 0, menos de 1 MB, menos de 100 MB, menos de 1 GB ou a partir de 1 GB. Só downloads |
| pairedDevices | Quantos dispositivos estão pareados, como faixa: 0, 1, 2 a 4 ou a partir de 5 |
| language | O idioma da interface, com um destes códigos: en, vi, zh, ja, ko, es, fr, tr, id, pt, de ou other |
| theme | O tema, que é um dos temas integrados iterm2-pro, vscode-dark, iterm-dark, tokyo-night, catppuccin, one-dark, monokai-pro, solarized-dark, mxterm-classic, mxterm-2, mxterm-light ou warm-paper, ou other |
| coldStartMs | Tempo de inicialização a frio, como faixa em milissegundos: menos de 500, menos de 1000, menos de 2000, menos de 4000 ou a partir de 4000 |
| firstPromptMs | Tempo até o primeiro prompt, como faixa em milissegundos: menos de 100, menos de 300, menos de 1000 ou a partir de 1000. Apenas shells locais |
| rssMb | Memória em uso, como faixa em MB: 0 a 200, 200 a 500, 500 a 1000, 1000 a 2000 ou a partir de 2000. Só os processos do próprio MXterm são contados |
| paneCount | Quantos painéis estavam abertos, como faixa: 1, 2 a 4, 5 a 9 ou a partir de 10 |
| hiddenTimerGapMs | Quanto os timers do app atrasaram com a janela oculta, como faixa de duração: menos de 1 segundo, menos de 5 segundos, menos de 30 segundos ou a partir de 30 segundos |
| ptyBurst | A maior taxa de saída do terminal vista naquele dia, em blocos por segundo, como faixa: menos de 100, menos de 1000, menos de 10000 ou a partir de 10000 |
As listas são fixas. Os agentes são claude_code, codex, gemini_cli, cursor_agent, opencode, github_copilot, amp, antigravity, omp, grok e other. Um valor que não está em uma lista é enviado como other. Os outros valores de desempenho são a faixa do meio das amostras do dia. O desempenho é enviado uma vez por dia. As contagens de uso ficam guardadas por 400 dias. Só reportamos grupos de pelo menos 10 instalações.
Os eventos de falha
| Evento | Detalhe extra enviado |
|---|---|
| ssh_connect_failed | Um código de motivo. Enviado quando falha a listagem de uma pasta remota por SFTP |
| sftp_transfer_failed | Se foi um upload ou um download, e um código de motivo |
| editor_read_failed | Um código de motivo |
| editor_save_conflict | Nada |
| license_activation_failed | Um código de motivo |
| license_lost_after_activation | Um código de motivo: bad_signature, not_paid_tier, hwid_mismatch, expired, revoked, machine_inactive, refunded, invalid_license ou no_seat |
| crash_recovered | A partir da versão 1.1.56: duas palavras de uma lista fechada: em que ponto o app estava ao parar (entre boot, restore, running, voice, quit, network ou other) e há quanto tempo estava em execução, numa faixa de menos de 1 minuto a mais de 1 dia |
| ui_crashed | O número do erro do React, ou other |
| pty_spawn_failed | A partir da versão 1.1.12: um motivo, entre shell_missing, permission ou other; a partir da versão 1.1.56 também cwd_missing e resource_limit |
| agent_not_found | A partir da versão 1.1.12: qual agente, pelo nome da lista fixa, ou other |
| update_failed | A partir da versão 1.1.12: a etapa, entre download, signature, install ou other; a partir da versão 1.1.56 também check (a própria verificação de atualização falhou), com uma classe: network, manifest, http_4xx, http_5xx ou other (uma verificação recusada é classificada hoje como manifest) |
| remote_attach_failed | A partir da versão 1.1.12: um motivo, entre auth, network, stale, revoked ou other |
| worktree_failed | A partir da versão 1.1.12: um motivo, entre not_repo, exists, git_error ou other |
| keychain_failed | A partir da versão 1.1.12: a operação, entre read, write, denied ou other |
| import_failed | A partir da versão 1.1.12: a origem da importação (ssh_config, moba, iterm2, session_json ou other) e um motivo, entre none_found, invalid, read_failed ou other |
O que nunca enviamos
- Saída ou scrollback do terminal
- Os comandos que você executa
- Conteúdo ou caminhos de arquivos
- Hostnames, nomes de usuário, senhas ou chaves SSH
- Chaves de licença
- Qualquer coisa da sua área de transferência ou da sua tela
Os três relatórios são verificados logo antes do envio: se um relatório contiver uma string que pareça um caminho de pasta pessoal, uma chave SSH, uma chave de licença, uma senha, um token ou um segredo, o relatório inteiro é descartado em vez de enviado.
A partir da versão 1.1.12, as contagens de uso nunca contêm caminhos, nomes de host, comandos, nomes de arquivos ou de repositórios, nomes de branch, chaves, prompts ou saída do terminal. Se parecer que contêm um caminho, uma chave ou um token, o relatório inteiro é descartado.
Desde o MXterm Pro 1.0.22, o ping de uso para o Google Analytics passa por essa mesma verificação. Ele é montado só com os seis campos listados acima, e nenhum deles pode carregar seus dados. Se um dia carregasse, seria descartado em vez de enviado.
As falhas também são gravadas em uma lista mantida só no seu Mac, com as 200 mais recentes e nada com mais de 14 dias, com o envio ativado ou não. Essa lista é um arquivo separado da fila de envio e nunca é enviada; ela existe para que um arquivo de diagnóstico possa descrever o que deu errado.
O MXterm Pro também mantém um segundo arquivo local, war-room-delivery.jsonl, na pasta de dados do app. Para cada mensagem da Control Room (antes War Room), ele registra por que a mensagem foi retida, liberada ou descartada antes de ser digitada em um painel: o horário, o evento, o motivo, quantas mensagens estavam esperando, quanto tempo esperaram e um código curto do painel (um hash, não o ID do terminal, exibido como o nome peer-… que a Control Room usa). Ele não guarda nomes, caminhos, texto de mensagens nem IDs de terminal. Guarda no máximo 500 linhas ou 30 dias, nunca é enviado e não faz parte do arquivo de diagnóstico.
Como desativar
Abra Configurações → Privacidade e desligue Compartilhar dados de uso anônimos. Desligar vale na hora para os três relatórios: a opção é lida de novo logo antes de cada envio, não na abertura do app.
A partir da versão 1.1.12, a mesma opção também controla as contagens de uso, e desligá-la interrompe novos relatórios de uso. Na primeira vez que você executa essa versão, um aviso de uma linha explica o que são essas contagens e onde desativá-las.
Você também pode desativar com uma variável de ambiente: DO_NOT_TRACK ou MXTERM_TELEMETRY_DISABLED. Qualquer valor conta como desativado, exceto 0, false ou no, em maiúsculas ou minúsculas. As duas variáveis são lidas antes de cada envio e, enquanto uma delas estiver definida, a opção em Configurações fica desabilitada e mostra o nome da variável que desativou o envio.
Ativar de novo vale sem reiniciar o app. Eventos de falha retidos de antes e um check-in diário pendente são enviados na hora, e o ping de uso volta em cerca de quinze segundos. Nada entra na fila de envio enquanto o envio está desativado, então uma falha que aconteceu nesse período nunca é enviada.
Para recomeçar com novos IDs aleatórios, feche o MXterm Pro e apague telemetry-id e telemetry-install-id de ~/Library/Application Support/com.mxterm.desktop/.
Os builds que você compila a partir do código-fonte não incluem nada desses relatórios: as chaves necessárias só são adicionadas na geração dos builds oficiais.
Para onde vão os dados
O ping de uso vai para o Google Analytics e é processado pelo Google, inclusive nos Estados Unidos.
O check-in diário e os eventos de falha vão para o mxterm.net, que roda em um servidor nosso na França, hospedado pela Contabo e servido pela Cloudflare. Para cada instalação guardamos um registro com os campos acima e o país de onde veio a requisição; não guardamos o endereço IP. Os eventos de falha também são guardados com o país. Esses registros não são apagados automaticamente por enquanto.
A partir da versão 1.1.12, as contagens de uso também vão para o mxterm.net, dentro do check-in diário, e ficam guardadas por 400 dias. Só reportamos grupos de pelo menos 10 instalações.
O arquivo de diagnóstico não vai a lugar nenhum sozinho. Em Configurações → Privacidade → Arquivo de diagnóstico para o suporte → Salvar arquivo… gera um arquivo chamado mxterm-diagnostics-YYYY-MM-DD.json e pergunta onde você quer salvá-lo. Ele contém a versão do app, se esta é uma versão oficial, há quanto tempo esta execução está rodando, Free ou Pro, o sistema operacional, sua versão e o tipo de processador, se o envio está ativado, o idioma da interface, se a execução anterior travou, contagens de hosts SSH salvos, abas abertas e painéis abertos, quais templates de agente estão em uso, quais provedores do Token Meter têm uma chave configurada e a lista local de falhas recentes. Sua pasta pessoal é reduzida a ~ antes da gravação, o arquivo inteiro passa pela mesma verificação de um relatório e é recusado de vez se falhar nela, e nada é enviado: você lê o arquivo e decide se quer mandá-lo por e-mail ao suporte.
Outras chamadas de rede que o app faz
Estas não são relatórios de uso, então a opção de uso acima não as afeta. As que você pode desativar têm um interruptor próprio, citado na entrada; a verificação de atualização, a verificação dos limites do Free e as verificações de licença não têm interruptor.
- Verificação de atualizações
- Logo depois da abertura e a cada quatro horas, o app pergunta ao mxterm.net se existe uma versão mais nova, enviando a versão atual, o seu sistema operacional e o idioma da interface. Isso acontece em todos os builds, inclusive nos que você mesmo compila. Quando o relatório de uso está desativado, uma verificação ainda pode deixar um registro anônimo no nosso servidor: a versão do app, o país, se havia uma atualização disponível e se o app é Free ou Pro, sem endereço IP e sem ID de instalação. Cada verificação de atualização também é contada por versão do app e país, sem nenhum identificador, para mostrar quantas cópias estão em execução.
- Ativação de licença
- Quando você digita uma chave de licença, o app envia a chave, uma impressão digital da máquina feita com parte de um hash do UUID de hardware do seu computador, o hostname do seu computador, a versão do app e a plataforma. Se o relatório de uso estiver ativado, ao ativar uma licença (com uma chave ou pela sua conta MXterm) o app também envia o ID de instalação aleatório (o mesmo do check-in diário), para que possamos associar uma licença paga aos dados de uso dessa instalação. Se estiver desativado, nenhum ID de instalação é enviado.
- Nova verificação da licença
- Na abertura (no máximo uma vez por hora) e depois cerca de uma vez por dia enquanto você estiver online, o app envia a chave de licença, a impressão digital da máquina e a versão do app para perguntar se esta máquina ainda tem licença. Se você ativou pela sua conta MXterm em vez de uma chave, ele envia a impressão digital da máquina, o nome da máquina, a plataforma e a versão do app junto com a sessão da sua conta. Uma verificação que falha ou que encontra você offline não muda nada; só uma resposta clara de que a licença ou a vaga acabou, dada duas vezes seguidas, remove o Pro do app. O servidor guarda o horário da última vez que cada máquina foi vista e a versão do app, não um histórico de verificações.
- Limites do Free
- Logo depois da abertura e a cada quatro horas, o app pergunta ao mxterm.net quais são os limites atuais do plano Free. A requisição não leva ID de instalação nem dados sobre você, só o que qualquer requisição revela, como seu endereço IP. Isso acontece em todas as versões.
- Conta MXterm e Meus dispositivos
- Só quando você entra com uma conta MXterm. O app guarda um token de login no seu Keychain e, para o Meus dispositivos, envia ao mxterm.net um ID de dispositivo, o nome deste computador e chaves públicas, e pede a lista dos seus dispositivos a cada cerca de cinco minutos. Cerca de uma vez por minuto, ele também envia uma atualização de presença, criptografada para os seus outros dispositivos, de modo que o mxterm.net não consegue lê-la: o endereço de rede onde o servidor host deste computador pode ser acessado. O mxterm.net vê o ID do dispositivo, o horário e o endereço IP da requisição. Sair da conta interrompe essas requisições. O que o servidor guarda está listado na política de privacidade.
- Recurso de rede experimental
- Só quando você ativa o recurso de rede experimental (macOS, testadores convidados). O processo auxiliar do app se conecta ao mesh.mxterm.net, que apresenta seus dispositivos uns aos outros, e ao relay sg.relay.mxterm.net. Os dois rodam na AWS, em Singapura. O relay vê as chaves públicas dos dispositivos e os endereços IP de origem, não o conteúdo do terminal, que é criptografado entre os seus dispositivos. Dispositivos na mesma rede experimental veem o nome, o sistema operacional e os endereços uns dos outros. Se você estiver logado, o app também pede ao mxterm.net uma chave de inscrição de uso único. Os detalhes estão na política de privacidade.
- Limites do plano Claude
- Desativado por padrão. Se você ativar Limites do plano em Configurações → Token Meter, o app lê o login salvo do Claude Code no seu Keychain pela ferramenta de segurança do macOS (o macOS normalmente não mostra um aviso para isso) e o usa para buscar seus limites de uso em api.anthropic.com, no máximo uma vez a cada cinco minutos.
- Limites do Codex em tempo real
- Desativado por padrão. Se você ativar Limites do Codex em tempo real em Configurações → Token Meter, o app lê o login do Codex em ~/.codex/auth.json e o envia apenas para chatgpt.com, para ler seus limites atuais de 5 horas e semanais, no máximo uma vez a cada cinco minutos. Ele nunca altera nem renova esse login, e um login que o Codex guarda no keychain do sistema não é lido.
- Saldos de contas de provedores
- Desativado até você adicionar uma chave. Em Configurações → Token Meter você pode colar uma chave de API da DeepSeek, Moonshot, Kimi, MiniMax, OpenRouter ou Z.ai. As chaves ficam no Keychain do macOS, em itens que o próprio MXterm Pro cria com o nome de serviço MXterm Pro, e cada chave é enviada apenas ao seu próprio provedor: api.deepseek.com, api.moonshot.ai ou api.moonshot.cn, api.kimi.com, api.minimax.io ou api.minimaxi.com, openrouter.ai, e api.z.ai ou open.bigmodel.cn. A requisição só lê seu saldo ou cota e não leva nada além da chave: nem prompts, nem transcrições, nem nomes de arquivos. Cada provedor é consultado no máximo uma vez a cada cinco minutos, e nenhuma consulta é feita enquanto nenhum provedor estiver configurado. Só no caso do Kimi, se nenhuma chave estiver salva e o Kimi Code CLI estiver logado neste Mac, o app lê o token desse CLI e o ID do dispositivo guardado junto dele em ~/.kimi-code e os envia para api.kimi.com da mesma forma; ele nunca grava nesse diretório e nunca renova o token.
- Token Meter
- As contagens de tokens do Claude Code, do Codex, do Gemini CLI e do omp, e as porcentagens de plano que o próprio Codex grava nos arquivos de sessão, são lidas de arquivos que essas ferramentas mantêm no seu Mac. Nada é enviado.
- Envio de feedback
- A partir da 1.1.57 no Mac (1.1.58 no Windows e no Linux), Configurações → Feedback envia ao mxterm.net seu nome, e-mail, mensagem, tipo, versão do app, sistema e idioma quando você clica em Enviar, e o arquivo de diagnóstico somente se você marcar (mantido por 90 dias). Nosso provedor de e-mail o processa. As versões anteriores abrem seu app de e-mail e não fazem nenhuma requisição ao mxterm.net.
- Acesso remoto
- Desativado até você usar. O servidor host só roda depois que você clica em Iniciar servidor em Configurações → Acesso remoto e dispositivos pareados, a menos que você ative Iniciar o servidor host quando o MXterm abrir, que vem desativado por padrão. Ele então escuta na porta 6868 (ou na próxima porta livre até 6877) no seu endereço Tailscale, se houver, mais seus endereços de rede privada se você ativou Permitir dispositivos na minha rede local, e caso contrário apenas neste Mac. Nunca em um endereço público. Em uma rede privada, o tráfego não é criptografado. Dispositivos pareados só alcançam os painéis que você compartilha. Um painel é compartilhado só para visualização ou com controle, e um dispositivo só pode digitar em um painel compartilhado com controle. Um dispositivo novo pareia com um código de seis caracteres ou com uma senha de acesso que você ativa; a própria senha nunca é enviada nas conexões seguintes e, quando é enviada, vai para um endereço Tailscale, para o proxy local de um par dessa rede experimental ou, se você permitir o acesso pela rede local, para um endereço de rede local, onde não é criptografada. Enquanto o servidor roda e um painel está compartilhado, o MXterm Pro impede que o computador entre em repouso sozinho (feito para macOS e Windows; o lado do Windows não foi verificado), a menos que você desative isso. Se você adicionar um host em Máquinas, o app se conecta ao endereço desse host com um token guardado no Keychain do macOS, e o pareamento com a senha desse host envia a senha para um endereço Tailscale, para o proxy local de um par dessa rede experimental ou, se você permitir o acesso pela rede local, para um endereço de rede local, onde não é criptografada. O conteúdo do terminal nunca passa pelo mxterm.net. Se você usar o Meus dispositivos, o mxterm.net só cuida da lista de dispositivos e da presença descritas em Conta MXterm e Meus dispositivos.
- Vídeo do guia do Tailscale
- Só se você clicar em Play no guia do Tailscale em Configurações: o vídeo é então carregado do YouTube (youtube-nocookie.com). Se você não clicar em Play, o app não faz nenhuma conexão para ele.
- Suas próprias conexões
- SSH, SFTP e qualquer coisa que você execute em um terminal se conectam ao destino que você indicar. Ferramentas que você executa dentro do MXterm Pro, como Claude Code ou Codex, fazem suas próprias chamadas de rede; elas pertencem a essas ferramentas, não ao MXterm Pro.
Pergunte a uma IA sobre o MXterm Pro
Gere na hora uma resposta no ChatGPT, no Claude ou no Perplexity, com base nesta página. Quem escreve a resposta é o assistente, não a gente, então confira as fontes que ele cita.
Pergunta enviadaQuais contagens de uso o MXterm Pro registra, o que ele nunca registra e para onde vão esses dados?