Telemetría
Última actualización: October 1, 2026
Resumen
Las compilaciones oficiales de MXterm Pro envían reportes de uso anónimos, y vienen activados por defecto. Nos dicen cuántas personas usan la app, qué versiones están en uso y qué fallos ocurren con más frecuencia, para saber qué corregir primero.
Los reportes nunca incluyen la salida de la terminal, comandos, contenido de archivos, rutas de archivos, hosts ni usuarios de SSH, ni claves de licencia. Puedes desactivar el reporte en Configuración → Privacidad, o con una variable de entorno, y las compilaciones que haces tú mismo no envían nada.
Desde la versión 1.1.12 también incluyen conteos y rangos de cómo se usan las funciones, nunca lo que escribiste o abriste. El bloque Conteos de uso más abajo lista cada campo.
Qué recopilamos
Desde MXterm Pro 1.1.11 hay tres reportes, y aquí se lista cada campo de cada uno. Desde la versión 1.1.12 se envía un cuarto bloque, los conteos de uso, junto con el registro diario, y se lista al final.
1. Ping de uso
- Se envía a
- Google Analytics (www.google-analytics.com)
- Cuándo
- Un evento app_open al iniciar, y nada más durante el resto de esa ejecución.
| Campo | Qué contiene |
|---|---|
| client_id | Un ID aleatorio que se crea en el primer inicio y se guarda en un archivo llamado telemetry-id |
| nombre del evento | app_open |
| session_id | La hora en que se inició la app, en segundos |
| engagement_time_msec | Un número fijo: 100 |
| app_version | La versión de MXterm Pro |
| os | El nombre del sistema operativo, por ejemplo macos |
Google deduce un país aproximado a partir de la dirección IP desde la que llega la solicitud.
2. Registro diario
- Se envía a
- mxterm.net, nuestro propio servidor
- Cuándo
- Al iniciar la app, si han pasado 24 horas desde el último registro, o de inmediato si la ejecución anterior se cerró por un fallo. Una app que se deja abierta varios días vuelve a registrarse en su siguiente inicio.
| Campo | Qué contiene |
|---|---|
| installId | Un ID aleatorio guardado en un archivo llamado telemetry-install-id. Guardamos un hash del ID, no el ID en sí |
| currentVersion | La versión de MXterm Pro |
| tier | free o pro |
| telemetryEnabled | Siempre true, porque solo se envía cuando el reporte de uso está activado |
| osVersion | La versión de macOS, por ejemplo 15.5 |
| arch | arm64 o x64 |
| platform | mac o windows |
| crashedLastRun | Si la ejecución anterior terminó sin cerrarse de forma limpia |
| sessionsSinceLastCheck | Cuántas veces se abrió la app desde el último registro |
| paywallShown | Cuántas veces se mostró cada aviso para mejorar el plan, por nombre de aviso |
| paywallClicked | Cuántas veces se hizo clic en cada aviso para mejorar el plan, por nombre de aviso |
Los nombres de aviso que se envían son 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 y command_palette.
3. Eventos de fallo
- Se envía a
- mxterm.net, nuestro propio servidor
- Cuándo
- Cuando ocurre uno de los fallos específicos que se listan abajo: ocho en MXterm Pro 1.1.11, y siete más desde la versión 1.1.12. Los eventos que no se pueden enviar se ponen en cola, hasta 50, y se reintentan más tarde.
| Campo | Qué contiene |
|---|---|
| eventId | Un ID aleatorio para este evento |
| installIdHash | Un hash del ID de instalación del registro diario |
| occurredAt | Cuándo ocurrió |
| eventType | Uno de los eventos de abajo |
| severity | warning, o critical si la app se cerró de forma inesperada o si se perdió la licencia después de activarla |
| detail | El detalle adicional que se lista abajo, y nada más |
| versión de la app, OS, arch | La versión de MXterm Pro, el sistema operativo y el tipo de procesador |
Los códigos de motivo se eligen en tu Mac comparando el error, y el texto del error nunca se envía. Para SSH, SFTP y el editor, el motivo es uno de auth_denied, password_expired, host_unreachable, timeout, permission_denied, not_found, disk_full, network o unknown. En los fallos de licencia es un código corto como bad_signature o expired, a veces el código que devolvió nuestro servidor de licencias, o seat: seguido de un código cuando falla una activación mediante tu cuenta de MXterm.
4. Conteos de uso (desde la versión 1.1.12)
- Se envía a
- mxterm.net, nuestro propio servidor
- Cuándo
- Una vez al día, en la misma solicitud que el registro diario, desde la versión 1.1.12. No se envía ningún conteo de uso mientras el reporte de uso está desactivado.
| Campo | Qué contiene |
|---|---|
| schema | La versión de esta lista de campos, actualmente 1 |
| milestones | Cada uno se envía una sola vez, como una marca sin fecha, y se registra solo mientras los reportes de uso están activados: onboarding (completado u omitido), firstPane, firstSplit, firstSshHost, firstSftpOpen, firstRemoteShare, firstLicenseActivation (se activó una licencia en esta Mac, con una clave o mediante tu cuenta de MXterm), firstShortcutCustomized (definiste un atajo de teclado personalizado), firstAgent (el nombre del agente de la lista fija, u other) y firstImport (ssh_config, moba, iterm2 o session_json) |
| daysSinceInstall | Días desde la instalación, como rango: 0, 1, 2 a 6, 7 a 29, 30 a 89 o 90 en adelante |
| counters | Números enteros de 0 a 100000, contados desde el último registro que llegó a enviarse y luego reiniciados: panesOpened, splits, warRoomRooms, sshConnects, sftpTransfers, worktreePanes, paletteOpens, remoteHostStarted, chatViewOpens, meshPeerConnects y myDeviceLinks. Los paneles restaurados al abrir la app no se cuentan, sftpTransfers cuenta solo descargas, remoteHostStarted cuenta solo cuando pulsas Iniciar tú mismo, chatViewOpens cuenta cada vez que un panel cambia a la vista de chat, meshPeerConnects cada conexión exitosa con un peer de la función de red experimental, y myDeviceLinks cada dispositivo que vinculas en Mis dispositivos |
| agentLaunches | Cuántas veces se inició cada agente, por nombre de la lista fija. Un nombre que no está en la lista se cuenta como other |
| importsBySource | Cuántas importaciones vinieron de cada origen: ssh_config, moba, iterm2 y session_json |
| sftpBytes | Cuántos datos de SFTP se descargaron, como rango de tamaño: 0, menos de 1 MB, menos de 100 MB, menos de 1 GB o 1 GB en adelante. Solo descargas |
| pairedDevices | Cuántos dispositivos están emparejados, como rango: 0, 1, 2 a 4 o 5 en adelante |
| language | El idioma de la interfaz, que puede ser en, vi, zh, ja, ko, es, fr, tr, id, pt, de u other |
| theme | El tema, que es uno de los temas integrados iterm2-pro, vscode-dark, iterm-dark, tokyo-night, catppuccin, one-dark, monokai-pro, solarized-dark, mxterm-classic, mxterm-2, mxterm-light o warm-paper, u other |
| coldStartMs | Tiempo de arranque en frío, como rango en milisegundos: menos de 500, menos de 1000, menos de 2000, menos de 4000 o 4000 en adelante |
| firstPromptMs | Tiempo hasta el primer prompt, como rango en milisegundos: menos de 100, menos de 300, menos de 1000 o 1000 en adelante. Solo los shells locales |
| rssMb | Memoria en uso, como rango en MB: 0 a 200, 200 a 500, 500 a 1000, 1000 a 2000 o 2000 en adelante. Solo se cuentan los procesos propios de MXterm |
| paneCount | Cuántos paneles había abiertos, como rango: 1, 2 a 4, 5 a 9 o 10 en adelante |
| hiddenTimerGapMs | Cuánto se retrasaron los temporizadores de la app mientras la ventana estaba oculta, como rango: menos de 1 segundo, menos de 5 segundos, menos de 30 segundos o 30 segundos en adelante |
| ptyBurst | La mayor tasa de salida de la terminal vista ese día, en fragmentos por segundo, como rango: menos de 100, menos de 1000, menos de 10000 o 10000 en adelante |
Las listas son fijas. Los agentes son claude_code, codex, gemini_cli, cursor_agent, opencode, github_copilot, amp, antigravity, omp, grok y other. Un valor que no está en una lista se envía como other. Los demás valores de rendimiento son el rango medio de las muestras del día. El rendimiento se envía una vez al día. Los conteos de uso se conservan durante 400 días. Solo reportamos grupos de al menos 10 instalaciones.
Los eventos de fallo
| Evento | Detalle adicional que se envía |
|---|---|
| ssh_connect_failed | Un código de motivo. Se envía cuando falla el listado de una carpeta remota por SFTP |
| sftp_transfer_failed | Si fue una subida o una descarga, y un código de motivo |
| editor_read_failed | Un código de motivo |
| editor_save_conflict | Nada |
| license_activation_failed | Un código de motivo |
| license_lost_after_activation | Un código de motivo: bad_signature, not_paid_tier, hwid_mismatch, expired, revoked, machine_inactive, refunded, invalid_license o no_seat |
| crash_recovered | Desde la versión 1.1.56: dos palabras de una lista cerrada: en qué punto estaba la app al detenerse (una de boot, restore, running, voice, quit, network u other) y cuánto tiempo llevaba en marcha, en un tramo de menos de 1 minuto a más de 1 día |
| ui_crashed | El número de error de React, u other |
| pty_spawn_failed | Desde la versión 1.1.12: un motivo, uno de shell_missing, permission u other; desde la versión 1.1.56 también cwd_missing y resource_limit |
| agent_not_found | Desde la versión 1.1.12: qué agente, por nombre de la lista fija, u other |
| update_failed | Desde la versión 1.1.12: la etapa, una de download, signature, install u other; desde la versión 1.1.56 también check (falló la propia comprobación de actualización), con una clase: network, manifest, http_4xx, http_5xx u other (una comprobación rechazada se clasifica ahora como manifest) |
| remote_attach_failed | Desde la versión 1.1.12: un motivo, uno de auth, network, stale, revoked u other |
| worktree_failed | Desde la versión 1.1.12: un motivo, uno de not_repo, exists, git_error u other |
| keychain_failed | Desde la versión 1.1.12: la operación, una de read, write, denied u other |
| import_failed | Desde la versión 1.1.12: el origen de la importación (ssh_config, moba, iterm2, session_json u other) y un motivo, uno de none_found, invalid, read_failed u other |
Qué nunca enviamos
- La salida que se muestra en la terminal o su historial de desplazamiento
- Los comandos que ejecutas
- Contenido o rutas de archivos
- Nombres de host, usuarios, contraseñas o claves de SSH
- Claves de licencia
- Nada de tu portapapeles ni de tu pantalla
Los tres reportes se revisan justo antes de enviarse: si un reporte contiene una cadena que parece una ruta de carpeta personal, una clave SSH, una clave de licencia, una contraseña, un token o un secreto, se descarta el reporte completo en lugar de enviarlo.
Desde la versión 1.1.12, los conteos de uso nunca contienen rutas, nombres de host, comandos, nombres de archivos ni de repositorios, nombres de ramas, claves, prompts ni salida de la terminal. Si parece que contienen una ruta, una clave o un token, se descarta el reporte completo.
Desde MXterm Pro 1.0.22, el ping de uso a Google Analytics pasa por esa misma revisión. Se construye solo con los seis campos listados arriba, ninguno de los cuales puede llevar tus datos, y se descartaría en lugar de enviarse si alguno llegara a llevarlos.
Los fallos también se escriben en una lista que se guarda solo en tu Mac, con los 200 más recientes y nada con más de 14 días, tengas el reporte activado o no. Esa lista es un archivo aparte de la cola de envío y nunca se sube; existe para que un archivo de diagnóstico pueda describir qué salió mal.
MXterm Pro también guarda un segundo archivo local, war-room-delivery.jsonl, en la carpeta de datos de la app. Por cada mensaje de la Control Room (antes War Room) registra por qué el mensaje se retuvo, se liberó o se descartó antes de escribirse en un panel: la hora, el evento, el motivo, cuántos mensajes esperaban, cuánto esperaron y un código corto del panel (un hash, no el ID de la terminal, que se muestra como el nombre peer-… que usa la Control Room). No contiene nombres, rutas, texto de mensajes ni IDs de terminal. Guarda como máximo 500 líneas o 30 días, nunca se sube y no forma parte del archivo de diagnóstico.
Cómo desactivarla
Abre Configuración → Privacidad y desactiva Compartir datos de uso anónimos. El cambio surte efecto de inmediato en los tres reportes: el interruptor se vuelve a leer justo antes de cada envío, no al iniciar.
Desde la versión 1.1.12, el mismo interruptor también controla los conteos de uso, y al desactivarlo dejan de enviarse reportes de uso nuevos. La primera vez que ejecutas esa versión, un aviso de una línea te informa de ellos y de dónde desactivarlos.
También puedes desactivarla con una variable de entorno: DO_NOT_TRACK o MXTERM_TELEMETRY_DISABLED. Cualquier valor cuenta como desactivado, excepto 0, false o no, en cualquier combinación de mayúsculas y minúsculas. Ambas variables se leen antes de cada envío, y mientras una de ellas esté definida, el interruptor de Configuración queda deshabilitado y muestra el nombre de la variable que desactivó el reporte.
Volver a activarla surte efecto sin reiniciar la app. Los eventos de fallo retenidos desde antes y un registro diario pendiente se envían de inmediato, y el ping de uso se reanuda en unos quince segundos. Nada se pone en cola para enviarse mientras el reporte está desactivado, así que un fallo ocurrido en ese lapso nunca se envía.
Para empezar de cero con IDs aleatorios nuevos, cierra MXterm Pro y borra los archivos telemetry-id y telemetry-install-id de ~/Library/Application Support/com.mxterm.desktop/.
Las compilaciones que haces desde el código fuente no contienen nada de este reporte: las claves que necesita solo se añaden al compilar las versiones oficiales.
A dónde van los datos
El ping de uso va a Google Analytics y lo procesa Google, también en Estados Unidos.
El registro diario y los eventos de fallo van a mxterm.net, que corre en nuestro propio servidor en Francia, alojado en Contabo y servido a través de Cloudflare. Por cada instalación guardamos un registro con los campos anteriores y el país desde el que llegó la solicitud; no guardamos la dirección IP. Los eventos de fallo también se guardan con el país. Por ahora, estos registros no se eliminan automáticamente.
Desde la versión 1.1.12, los conteos de uso también van a mxterm.net, dentro del registro diario, y se conservan durante 400 días. Solo reportamos grupos de al menos 10 instalaciones.
El archivo de diagnóstico no va a ninguna parte por sí solo. Configuración → Privacidad → Archivo de diagnóstico para soporte → Guardar archivo… genera un archivo llamado mxterm-diagnostics-YYYY-MM-DD.json y te pregunta dónde guardarlo. Contiene la versión de la app, si es una compilación oficial, cuánto tiempo lleva esta ejecución, Free o Pro, el sistema operativo, su versión y el tipo de procesador, si el reporte está activado, el idioma de la interfaz, si la ejecución anterior se cerró por un fallo, conteos de hosts SSH guardados, pestañas abiertas y paneles abiertos, qué plantillas de agente están en uso, qué proveedores de Token Meter tienen una clave configurada y la lista local de fallos recientes. Tu carpeta personal se reduce a ~ antes de escribirse, todo el archivo pasa por la misma revisión que un reporte y se rechaza por completo si no la supera, y no se sube nada: tú lees el archivo y decides si se lo envías por correo a soporte.
Otras llamadas de red que hace la app
Estas no son reportes de uso, así que el interruptor de uso de arriba no las afecta. Las que puedes desactivar tienen su propio interruptor, que se nombra en cada entrada; la búsqueda de actualizaciones, la comprobación de los límites de Free y las comprobaciones de licencia no tienen interruptor.
- Búsqueda de actualizaciones
- Poco después de iniciar y cada cuatro horas, la app le pregunta a mxterm.net si existe una versión más nueva, y envía su versión actual, tu sistema operativo y el idioma de la interfaz. Esto ocurre en todas las compilaciones, incluidas las que haces tú mismo. Cuando el reporte de uso está desactivado, una comprobación aún puede dejar un registro anónimo en nuestro servidor: la versión de la app, el país, si había una actualización disponible y si la app es Free o Pro, sin dirección IP ni ID de instalación. Cada comprobación de actualización también se cuenta por versión de la app y país, sin ningún identificador, para saber cuántas copias están en ejecución.
- Activación de licencia
- Cuando ingresas una clave de licencia, la app envía la clave, una huella de la máquina hecha con parte de un hash del UUID de hardware de tu computadora, el nombre de host de tu computadora, la versión de la app y la plataforma. Si el reporte de uso está activado, al activar una licencia (con una clave o con tu cuenta MXterm) la app envía también su ID de instalación aleatorio (el mismo del registro diario), para que podamos asociar una licencia de pago con los datos de uso de esa instalación. Si está desactivado, no se envía ningún ID de instalación.
- Revalidación de la licencia
- Al iniciar (como máximo una vez por hora) y después una vez al día aproximadamente mientras estás en línea, la app envía la clave de licencia, la huella de la máquina y la versión de la app para preguntar si esta máquina sigue con licencia. Si activaste mediante tu cuenta de MXterm en lugar de una clave, envía la huella de la máquina, el nombre de la máquina, la plataforma y la versión de la app junto con la sesión de tu cuenta. Una comprobación que falla o que te encuentra sin conexión no cambia nada; solo una respuesta clara de que la licencia o el cupo ya no existe, dada dos veces seguidas, quita Pro de la app. El servidor guarda la última vez que se vio cada máquina y su versión de la app, no un historial de comprobaciones.
- Límites de Free
- Poco después de iniciar y cada cuatro horas, la app le pide a mxterm.net los límites actuales del plan Free. La solicitud no lleva ID de instalación ni datos sobre ti, solo lo que revela cualquier solicitud, como tu dirección IP. Esto ocurre en todas las compilaciones.
- Cuenta de MXterm y Mis dispositivos
- Solo cuando inicias sesión con una cuenta de MXterm. La app guarda un token de sesión en tu Keychain y, para Mis dispositivos, envía a mxterm.net un ID de dispositivo, el nombre de esta computadora y claves públicas, y pide tu lista de dispositivos más o menos cada cinco minutos. Más o menos una vez por minuto también envía una actualización de presencia, cifrada para tus otros dispositivos de modo que mxterm.net no pueda leerla: la dirección de red donde se puede alcanzar el servidor host de esta computadora. mxterm.net ve el ID del dispositivo, la hora y la dirección IP de la solicitud. Al cerrar sesión, estas solicitudes se detienen. Lo que guarda el servidor está en la política de privacidad.
- Función de red experimental
- Solo cuando activas la función de red experimental (macOS, testers invitados). El helper de la app se conecta a mesh.mxterm.net, que presenta tus dispositivos entre sí, y al relay sg.relay.mxterm.net. Ambos se ejecutan en AWS, en Singapur. El relay ve las claves públicas de los dispositivos y las direcciones IP de origen, no el contenido de la terminal, que va cifrado entre tus dispositivos. Los peers de la misma malla ven el nombre del dispositivo, el sistema operativo y las direcciones de los demás. Con la sesión iniciada, la app también le pide a mxterm.net una clave de inscripción de un solo uso. Los detalles están en la política de privacidad.
- Límites del plan de Claude
- Desactivado por defecto. Si activas Límites del plan en Configuración → Token Meter, la app lee la sesión guardada de Claude Code desde tu Keychain mediante la herramienta de seguridad de macOS (macOS normalmente no muestra un aviso para esto), y la usa para obtener tus límites de uso desde api.anthropic.com, como máximo una vez cada cinco minutos.
- Límites en vivo de Codex
- Desactivado por defecto. Si activas Límites en vivo de Codex en Configuración → Token Meter, la app lee la sesión de Codex desde ~/.codex/auth.json y la envía solo a chatgpt.com, para leer tus límites actuales de 5 horas y semanales, como máximo una vez cada cinco minutos. Nunca modifica ni renueva esa sesión, y no lee una sesión que Codex guarde en el keychain del sistema.
- Saldos de proveedores de cuenta
- Desactivado hasta que añadas una clave. En Configuración → Token Meter puedes pegar una clave de API de DeepSeek, Moonshot, Kimi, MiniMax, OpenRouter o Z.ai. Las claves se guardan en el Keychain de macOS, en elementos que crea el propio MXterm Pro bajo el nombre de servicio MXterm Pro, y cada clave se envía solo a su propio proveedor: api.deepseek.com, api.moonshot.ai o api.moonshot.cn, api.kimi.com, api.minimax.io o api.minimaxi.com, openrouter.ai, y api.z.ai u open.bigmodel.cn. La solicitud solo lee tu saldo o cuota y no lleva nada más que la clave: ni prompts, ni transcripciones, ni nombres de archivos. A cada proveedor se le consulta como máximo una vez cada cinco minutos, y no se consulta nada hasta que haya al menos un proveedor configurado. Solo para Kimi, si no hay una clave guardada y la CLI de Kimi Code tiene la sesión iniciada en esta Mac, la app lee el token de esa CLI y el ID de dispositivo guardado junto a él desde ~/.kimi-code y los envía a api.kimi.com de la misma forma; nunca escribe en ese directorio y nunca renueva el token.
- Token Meter
- Los conteos de tokens de Claude Code, Codex, Gemini CLI y omp, y los porcentajes del plan que el propio Codex escribe en sus archivos de sesión, se leen de archivos que esas herramientas guardan en tu Mac. No se envía nada.
- Comentarios
- Desde 1.1.57 en Mac (1.1.58 en Windows y Linux), Configuración → Comentarios envía a mxterm.net tu nombre, correo, mensaje, tipo, versión de la app, sistema e idioma cuando pulsas Enviar, y el archivo de diagnóstico solo si lo marcas (se conserva 90 días). Nuestro proveedor de correo lo procesa. Las versiones anteriores abren tu app de correo y no hacen ninguna solicitud a mxterm.net.
- Acceso remoto
- Desactivado hasta que lo uses. El servidor host no se ejecuta hasta que pulses Start Server en Configuración → Acceso remoto y dispositivos emparejados, a menos que actives Iniciar el servidor host cuando se abra MXterm, que está desactivado por defecto. Luego escucha en el puerto 6868 (o en el siguiente puerto libre hasta el 6877) en tu dirección de Tailscale si hay una, más tus direcciones de red privada si activaste Permitir dispositivos de mi red local, y si no solo en esta Mac. Nunca en una dirección pública. En una red privada el tráfico no está cifrado. Los dispositivos emparejados solo pueden acceder a los paneles que compartes. Un panel se comparte como solo lectura o con control, y un dispositivo solo puede escribir en un panel compartido con control. Un dispositivo nuevo se empareja con un código de seis caracteres o con una contraseña de acceso que tú activas; la contraseña en sí nunca se envía en las conexiones posteriores, y cuando se envía va a una dirección de Tailscale, al proxy local de un peer de esa red experimental o, si permites el acceso por red local, a una dirección de red local, donde no está cifrada. Mientras el servidor está en ejecución y hay un panel compartido, MXterm Pro evita que la computadora se suspenda por sí sola (compilado para macOS y Windows; la parte de Windows está sin verificar), a menos que lo desactives. Si añades un host en MXterm Hosts, la app se conecta a la dirección de ese host con un token guardado en el Keychain de macOS, y emparejar con la contraseña de ese host envía la contraseña a una dirección de Tailscale, al proxy local de un peer de esa red experimental o, si permites el acceso por red local, a una dirección de red local, donde no está cifrada. El contenido de la terminal nunca pasa por mxterm.net. Si usas Mis dispositivos, mxterm.net solo gestiona la lista de dispositivos y la presencia descritas en Cuenta de MXterm y Mis dispositivos.
- Vídeo de la guía de Tailscale
- Solo si pulsas Play en la guía de Tailscale en Configuración: el vídeo se carga entonces desde YouTube (youtube-nocookie.com). Si no pulsas Play, la app no hace ninguna conexión para él.
- Tus propias conexiones
- SSH, SFTP y todo lo que ejecutes en una terminal se conectan adonde tú les indiques. Las herramientas que ejecutas dentro de MXterm Pro, como Claude Code o Codex, hacen sus propias llamadas de red; esas llamadas son de esas herramientas, no de MXterm Pro.
Pregunta a una IA sobre MXterm Pro
Abre una respuesta en vivo en ChatGPT, Claude o Perplexity, basada en esta página. La escribe el asistente, no nosotros, así que revisa las fuentes que cita.
Pregunta enviada¿Qué recuentos de uso registra MXterm Pro, qué nunca registra y adónde van esos datos?