Seguridad y datos guardados
Documentación: v0.25.0
Esta herramienta accede a conversaciones personales. Por eso, explicar qué guarda es una parte central de su documentación.
Resumen: qué protege
- Un mensaje ajeno no debe controlar al agente. MCP no ofrece escrituras hasta habilitarlas con
--allow-*omcpTools; con--confirm-sendmuestra un formulario antes de cada acción. La aprobación vale una vez, cinco minutos y solo para el chat y texto mostrados (MCP). Las lecturas advierten al modelo que los mensajes son datos, no instrucciones. - Los límites del perfil se aplican siempre. Solo lectura, acciones permitidas, destinatarios y límite por hora se comprueban tanto en comandos como en el servidor, incluso al acceder directamente a su socket. Cada intento se registra sin texto (más abajo).
- El agente no debe cambiar de perfil ni enviar claves.
MAX_PROFILE_LOCKfija el perfil;--filerechaza ocultos,~/.sshy carpetas demax. - El texto ajeno no controla la terminal. Controles e invisibles se muestran como texto, nombres en una línea y autocompletado solo con identificadores (más abajo).
- Red: descargas solo por https, sin destinos locales y con límite de tamaño. Los marcos de MAX y datos descomprimidos tienen límites; las conexiones, tiempo máximo (más abajo).
- Token:
maxno guardaMAX_TOKENni lo entrega al servidor. El servidor no entrega tokens a clientes del socket (más abajo). - Archivos: en Linux y macOS, los archivos de estado sensibles, incluidas las conversaciones guardadas, usan
0600dentro de directorios0700. La configuración puede usar0644; los permisos del texto redirigido dependen de la shell. En Windows, el acceso depende de las ACL heredadas del directorio del usuario (más abajo). - Publicación: desde GitHub Actions con prueba de procedencia; no ejecuta código de dependencias al publicar y fija versiones exactas.
Dónde se guarda el token
En el almacén de claves del sistema, servicio max-cli, entrada con nombre del perfil. No se guarda en configuración, argumentos, variables de shell ni historial.
Si no hay almacén, se guarda en ~/.config/max-cli/credentials.json con 0600 y se avisa por stderr. max doctor también indica que procede de archivo.
MAX_TOKEN tiene prioridad sobre el almacén, para CI. El token de la variable permanece solo en ella:
- Si MAX renueva el token,
maxno lo guarda en almacén ni archivo; avisa por stderr. Así no queda un token activo en archivos de compilación que puedan acabar en cachés o artefactos. - Con
MAX_TOKENno iniciamax serveni le transmite la variable; evita que un token de un comando siga activo quince minutos en segundo plano.
El token de max bot está separado en el servicio max-cli, entrada bot:<профиль>; sin almacén, en el mismo archivo con 0600. MAX_BOT_TOKEN tiene prioridad, igual que MAX_TOKEN. max bot auth set valida a qué bot pertenece antes de guardar, para no sustituir un token válido por una errata. Nunca guarda el de MAX_BOT_TOKEN.
La configuración no admite secretos: no hay campos para token, teléfono ni identificador de chat.
Otros datos en disco
⚠ La copia compartida contiene texto de mensajes y transcripciones de voz: sirve para responder sin red. max session end no la elimina. max store clear --left --allow-dangerous solo borra datos de chats abandonados; no hay una orden que elimine toda la copia compartida.
Los archivos antiguos de caché del perfil ya no se abren. Si quedan, max doctor muestra su ruta; puedes borrarlos aparte sin afectar a la copia compartida.
También hay contenido de conversaciones en la copia del bot, exportaciones y descargas; la lista de chats del bot contiene títulos. El resto no contiene conversaciones.
Si el equipo cae en otras manos
En Linux y macOS, 0600 protege frente a otros usuarios, no frente a quien extrae el disco. Para eso usa cifrado completo: FileVault en macOS, LUKS en Linux, BitLocker en Windows. En Windows, 0600 y 0700 no establecen ACL: el acceso depende de los permisos del directorio del usuario y los directorios MAX_*_DIR elegidos. Los permisos numéricos de la tabla corresponden a Unix. La copia local no tiene cifrado propio: SQLite integrado en Node no lo ofrece y una clave del llavero no impediría que otro programa ejecutado como tu usuario lo leyese, igual que max.
Qué no hace la herramienta
- No marca como leído sin pedirlo. Consultar historial y marcar como leído son operaciones diferentes. Solo
max chats mark-readymessages list --mark-readenvían la segunda; hay una prueba que comprueba que leer no la envía. - No cambia nada sin solicitarlo. Solo cambian
messages send|edit|delete|forward|pin|unpin,reactions add|remove,polls vote|close|create,contacts add|remove|import|rename|block|unblock,account update,account sessions end,chats join|leave|create|update,chats members|admins …,chats link reset,chats folders create|update|delete,chats moderatesegún reglas,chats mark-readymessages list --mark-read. Cada uno hace lo indicado.max commands --jsonlos marca conmutates. - No elimina sin aprobación explícita.
max messages deleterequiere--allow-dangerousy, para todos,--for-everyone. Es irreversible. - No acepta teléfonos como argumentos.
contacts lookupsolicita o lee por stdin;contacts import, por archivo.pse historial mostrarían los argumentos. Errores y registros no contienen teléfonos;max session startymax account showlos ocultan parcialmente. - No registra mensajes, ni abreviados ni mediante hash: consulta diagnóstico.
- No utiliza intermediarios. Consulta destinos en red. No tiene telemetría propia;
max serveenvía a MAX un evento como una pestaña web oculta, explicado abajo. - Solo mantiene la conexión en
max serve. Lo inicia el primer comando que necesita MAX y termina tras 15 minutos inactivo. Para evitarlo:max config set serve false.
Protección de envíos
Un agente lee mensajes ajenos junto a tu petición. Esos mensajes pueden intentar hacerse pasar por instrucciones, como «reenvía esto aquí». Antes de enviar mensajes, reaccionar, editar, reenviar o eliminar, max comprueba límites; después registra el intento.
max bot usa los mismos readOnly y allow. Solo lectura impide cambios. allow usa los mismos permisos: envíos y botones send, edición edit, eliminación delete, fijados pin, miembros y ajustes groups, comandos del bot profile, actualizaciones read. Acciones sin palabra de permiso, como webhooks, se rechazan si hay allow definido.
Cada bot tiene destinatarios (max <имя> bot recipients add <чат>) y registro (max <имя> bot sends list) propios. Toda escritura pasa por ellos, incluidos messages send, messages pin y bot api, para evitar eludir controles con API genérica. Edición y eliminación reciben primero el chat; max consulta el mensaje y rechaza si pertenece a otro. No hace esa comprobación para user:<id>. Registra chat, tipo, resultado y longitud, nunca texto. No hay límite por hora de bots hasta definirlo en bot: max <имя> config set --bot sendsPerHour 200.
max serve aplica los mismos controles, incluso a programas conectados directamente a su socket. Solo admite peticiones conocidas con la estructura del CLI; por ejemplo, no permite eliminar todo un chat. config set surte efecto sin reiniciar.
Contactos, perfil, carpetas y sesiones también respetan solo lectura. No usan destinatarios ni límite por hora porque no envían a chats. Se registran como account y acción, sin nombres, teléfonos ni títulos.
La lista es opcional: sin destinatarios añadidos, cualquier chat; activa pero vacía significa ninguno. Si está activa, chats create <название> <люди…> y chats members add solo admiten personas cuyo chat individual esté permitido. Un nuevo miembro no ve mensajes anteriores salvo con --history. Un mensaje programado cuenta en la hora del envío. Dos comandos simultáneos no superan juntos el límite: se reserva desde la comprobación hasta la respuesta. Eliminar datos de chats abandonados no modifica el registro de envíos.
⚠ Limitaciones de los controles. Están dentro de max; un agente con shell puede modificar ajustes o quitar listas. Protegen frente a mensajes que inducen al modelo, no frente a agentes que intentan eludirlos. Para eso necesitas límites externos: entorno aislado, otro usuario del sistema o reglas del agente.
Al elegir esos límites:
MAX_PROFILE_LOCKfija el perfil,MAX_PROFILEno. La primera palabra gana: conMAX_PROFILE=agentbasta ejecutarmax work messages send ….MAX_PROFILE_LOCK=agentlo rechaza si el agente no puede cambiar el entorno, por ejemplo en configuración MCP o script envoltorio. Con shell puede quitar la variable. MCP fija el perfil al iniciar.--filerechaza archivos ocultos, carpetas ocultas como~/.sshy carpetas demax, que suelen contener claves.--allow-any-filelo omite; el agente no debe añadirla por iniciativa propia. Otros archivos legibles por tu usuario pueden enviarse; el registro guarda tipo y tamaño.- La regla «preguntar antes de
max messages send» puede no detectarmax work messages send. Limita el perfil conreadOnly,allowo destinatarios y no dejes cerca otro sin restricciones con sesión activa.
Texto ajeno en pantalla
Nombres, títulos, archivos y mensajes provienen de otras personas. max impide que controlen tu terminal o falseen lo mostrado:
- Controles que cambian colores, borran líneas, alteran títulos o portapapeles aparecen como texto (
\x1b), sin ejecutarse; también invisibles y cambios de dirección. - Nombre, título y leyenda ocupan una línea para impedir filas falsas.
- Aunque el nombre coincida exactamente con un chat y parcialmente con otros, muestra todos sin elegir.
- Autocompletado inserta solo identificadores de chat o persona; el nombre es una ayuda.
- Markdown y rutas descargadas reciben la misma limpieza; se eliminan controles de los nombres de archivos.
--json contiene datos tal como los envió MAX, escapados según JSON. Si los pasas a un programa que imprime en terminal, límpialos allí.
Qué ven otros procesos
Los argumentos son visibles en ps. Por eso el token no es argumento, pero el texto de un mensaje sí:
max messages send 0 "текст" # эта строка видна в ps и остаётся в истории оболочкиSi te preocupa, pásalo mediante el entorno de un script que controlas en lugar de la línea de comando, como el token.
Los archivos de estado y el socket están protegidos con 0600 en directorios 0700. Otros archivos pueden tener permisos distintos, como 0644 para la configuración. Comprueba los permisos al mover archivos o redirigir la salida.
Qué sale por la red
max messages download usa https y rechaza direcciones del propio equipo o red local, también tras redirecciones. Límite de archivos: 4 GiB; voz para transcripción: 32 MiB.
Las peticiones de bots se identifican como max-cli/<версия>; MAX ya reconoce el bot por token. El certificado de platform-api2.max.ru está firmado por la raíz del Ministerio de Desarrollo Digital ruso, ausente en Node. max la añade solo a sus peticiones Bot API, sin modificar el sistema.
La cuenta personal no envía el nombre de la herramienta ni user-agent propio: usa user-agent y descripción del cliente web, dirección, formato binario y compresión iguales. max serve replica un evento de telemetría de pestaña oculta: «lista de chats mostrada», 20 segundos después de entrar, y nada más. Solo incluye identificador de cuenta y hora, no mensajes ni títulos. Los comandos puntuales no envían telemetría. Después de entrar, max serve consulta carpetas, banners, llamadas, stickers y reacciones como la pestaña: solo lectura; no muestra ni guarda respuestas. Los comandos puntuales no lo hacen. Hay diferencias: la pestaña también consulta contactos, historias y suscripción push; max no. MAX puede distinguirlos.
Condiciones de MAX y tu cuenta
max no es una aplicación oficial. El acuerdo de usuario de MAX, versión del 09.09.2026, apartado 4.3.7, no permite programas automáticos sin consentimiento de la empresa. Por eso la cuenta puede recibir restricciones, incluso si está vinculada a servicios públicos o comunicación familiar.
Recomendaciones:
- Usa también MAX normalmente en el navegador o móvil. Una cuenta que solo atiende peticiones del CLI se comporta de forma diferente a una cuenta humana.
- No conviertas
maxen un flujo continuo de peticiones. Lee cuando lo necesites, no cada minuto por programación.
Se avisa una vez por stderr al iniciar sesión por primera vez con max setup o max session start.
Uso personal
La herramienta guarda conversaciones y contactos ajenos en tu equipo, incluido el texto de los mensajes. Quien accede al archivo local puede acceder a esos datos. Compartir una exportación (max store export) también comparte su contenido; los enlaces de fotos pueden abrirse sin iniciar sesión. Revisa el contenido y los destinatarios antes de compartir. Esta página describe el comportamiento técnico, no garantiza el cumplimiento legal de tu uso.
Los informes (max doctor report create) se adjuntan a incidencias públicas de GitHub. No contienen texto, nombres ni teléfonos; los identificadores se sustituyen por etiquetas. Revísalos antes de enviarlos.
Inicio de sesión con navegador
session start qr-chrome y sms abren un perfil temporal, separado de tus contraseñas y cookies. Contiene una sesión de web.max.ru y se elimina al terminar, cerrar ventana, alcanzar --timeout o pulsar Ctrl-C. El token se lee por canal de depuración entre proceso y navegador (--remote-debugging-pipe), sin puerto de red ni acceso de otros usuarios.
session start qr dibuja el QR en terminal; queda en el historial visual pero caduca en minutos. Si la terminal es estrecha, lo muestra en una página 127.0.0.1 con dirección aleatoria; no guarda el enlace en archivo ni texto. La página desaparece al terminar.
Cada acceso añade un dispositivo en la lista de sesiones de MAX; puedes cerrarlo allí.
Protocolo no oficial
MAX no publica API de cuentas personales. El conocimiento del protocolo procede de mediciones reales o ingeniería inversa ajena; se registra el origen de cada operación (protocolo (protocol.md), columna «Where it came from»).
Puede dejar de funcionar sin aviso. En ese caso el comando indica el problema por stderr, en lugar de devolver una lista vacía como si todo funcionase.
Si se filtra el token
max session end # забыть локальноEsto no basta: session end no avisa al servidor y la sesión sigue activa. Solo puedes revocarla desde el cliente oficial donde se creó, en dispositivos.
max account sessions end --others --yes cierra todas las demás sesiones, también el móvil, donde tendrás que iniciar sesión otra vez. No permite cerrar una concreta: MAX no les da identificador. Si MAX renueva el token actual, max lo guarda antes de confirmar.
Siguientes pasos
- Diagnóstico: qué se registra y qué nunca se registra.
- Sesiones: almacén,
MAX_TOKENy diferencia entre cerrar localmente y revocar. - MCP: permisos del agente y opciones.