Seguridad

Lo que el agente no va a hacer

Vas a ejecutar nuestro software en máquinas de las que respondes tú. Esto es lo que puede hacer y, sobre todo, lo que no puede — en palabras llanas. Cada línea de aquí abajo es una prueba que bloquea nuestras propias versiones: si una deja de ser cierta, no se publica nada.

Nada que abrir en el cortafuegos

El agente no escucha en ningún puerto, en ninguna configuración. Nos llama él, hacia fuera, al 443; nosotros no le llamamos nunca. No hay una vía de entrada para nosotros, ni para quien algún día ocupe nuestro sitio.

La misma regla vale para las sondas que miran tus webs desde fuera: tampoco abren puertos. La única puerta local es un socket UNIX para la línea de comandos, en la propia máquina.

No podemos ejecutar nada en tus máquinas

Ejecutar un programa en un servidor vigilado viene desactivado, y no hay camino desde aquí para activarlo: ni el panel, ni la API, ni un asistente por MCP. Lo activa alguien con una shell en ese servidor, editando el fichero local, y nombrando exactamente qué binarios se permiten.

Así, aunque nos tomaran la infraestructura mañana, quien lo hiciera no consigue ejecutar nada en un servidor que no lo hubiera permitido ya, en local y a propósito. Ese es todo el sentido del diseño.

No necesita root

El agente corre con su propio usuario sin privilegios, en un servicio endurecido: sistema de ficheros casi todo de solo lectura, directorio temporal propio, sin privilegios nuevos y con filtro de llamadas al sistema. Una comprobación que necesitaría más permisos falla con un mensaje claro en vez de exigir root para todo lo demás.

La clave de tu servidor no sale de tu servidor

Al darse de alta, el agente genera su par de claves en la máquina, y la mitad privada no se transmite nunca — ni a nosotros, ni una vez, ni siquiera durante el alta. Cada petición se autoriza contra ese host: uno de tus servidores no puede leer los datos de otro, y nadie de fuera tampoco.

Todo lo que te mandamos va firmado

La configuración llega al agente como un paquete firmado. La firma cubre el contenido, tu organización, ese host y el número de versión, así que un paquete hecho para un servidor lo rechazan todos los demás, y uno antiguo no se puede reenviar. Lo que llegue sin firma, alterado o ajeno se rechaza y se registra, y el agente sigue vigilando con la última configuración buena.

La clave que firma no la tiene la API. Vive en un proceso aparte, sin red ninguna, que comprueba lo que le piden firmar antes de firmarlo: no firma una comprobación que ejecute un programa, ni un campo que el contrato no tenga. Tener una shell en nuestra API no basta para llegar a ella.

Los secretos no salen en los registros, ni en la IA

Las credenciales que lleva una comprobación — la cabecera de un check HTTP autenticado, la URL de un webhook — se cifran para tu organización y se descifran en tu propia máquina. No aparecen en ningún registro, con ningún nivel de detalle, ni en ninguna respuesta de la API, ni en ninguna pantalla una vez guardadas.

Mango AI no es una excepción. Todo lo que se manda a un modelo se compone a partir de una lista de campos permitidos y pasa por una única función de censura al salir, incluidos los resultados de las herramientas. Lo demostramos plantando secretos falsos y exigiendo que aparezcan en nuestros propios registros y no en la petición que sale.

Una organización no puede leer los datos de otra

El aislamiento lo impone la base de datos, no el código de la aplicación. En cada tabla, una consulta por las filas de otra organización vuelve vacía, y a quien sacan de una organización se le corta el acceso en la petición siguiente. No es un filtro que alguien pueda olvidarse de escribir.

Límites, para que el ruido no tire el servicio

Cada llamada autenticada y cada formulario público pasan por un limitador, con las lecturas contadas aparte de las escrituras y con los límites y lo que queda de ellos en las cabeceras de la respuesta. Las rutas por las que reportan tus agentes y tus sondas son las que no se limitan nunca: frenarlas sería frenar la propia vigilancia.

Auditable, y honesto con lo que falta

Cada cambio de configuración se escribe en un registro que solo crece: quién, qué, desde dónde, cuándo, y la versión anterior y la nueva. Lo lees en tu propio panel, porque que puedas auditarnos forma parte del trato. El contrato con el que se construye cualquier cliente nuestro es público, y es este: https://api.hopmango.com/openapi.yaml

Lo que todavía no es cierto: la clave que firma la configuración está en su propio proceso, pero dentro de nuestra infraestructura, no en un dispositivo físico fuera de ella. Ese es el paso siguiente, y preferimos escribirlo aquí a dejar que supongas otra cosa.

¿Has encontrado algo?

Cuéntanos qué has encontrado y cómo reproducirlo, y te contestamos. Nadie va a tener problemas por avisar de un fallo de buena fe. hello@hopmango.com