Seguridad y privacidad
Dónde viven tus datos, quién puede hacer qué y cómo se comprueba, qué se cifra, cómo inicias sesión y qué protege eso, qué direcciones nos negamos a consultar, qué registramos y qué puede y no puede ver el asistente.
Tus datos son tuyos, y están separados
Cada fila que pertenece a un espacio lleva su identificador de espacio, y cada consulta del producto se acota por él. No es una convención que intentamos seguir: el acceso a datos pasa por funciones que reciben el espacio como argumento, así que una consulta que se lo olvida no compila. Hay un test que crea dos espacios y falla si alguno alcanza las filas del otro.
Quién puede hacer qué, y cómo se comprueba
Cada persona a la que invitas tiene un rol -- propietario, administrador, miembro o lector -- y Espacios de trabajo y tu cuenta dice qué puede hacer cada uno. Lo que corresponde aquí es la parte que es fácil hacer mal e imposible de comprobar desde fuera: una interfaz que esconde algo no es una comprobación. Un botón desactivado, una pestaña que no se dibuja, una entrada que falta en un menú lateral: eso es comodidad. Por debajo, cada acción que ejecuta el producto es una dirección a la que se puede llegar directamente, hubiera lo que hubiera en la pantalla.
Así que cada una llega a una decisión de autorización en nuestros servidores antes de hacer nada, y cada una que modifica algo escribe quién lo hizo en el registro de auditoría. Ninguna de las dos reglas queda a merced de la disciplina, porque las reglas así se deshacen de commit en commit: dos tests leen nuestro propio código fuente y fallan si una acción de servidor o un endpoint se puede alcanzar sin una decisión de autorización, o si algo que modifica tus datos no registra quién lo hizo. Leen el código en vez de ejecutarlo, así que la regla alcanza al trabajo que nadie ha escrito todavía.
Los endpoints abiertos a propósito -- un widget respondiendo a un visitante, un webhook al que un servicio envía datos -- figuran por su nombre en el primero de esos tests, cada uno con su motivo escrito al lado, de modo que la pregunta "¿este es público a propósito?" se responde en un solo sitio en vez de volver a decidirse cada vez que alguien abre el archivo.
Las credenciales se cifran y no se pueden leer
Todo secreto que nos das -- una contraseña de aplicación de WordPress, un token de Webflow, una clave de CRM, tu propia clave de Anthropic -- se cifra con AES-256-GCM antes de guardarse y nunca vuelve al navegador. Tampoco al tuyo. Para cambiar una la reemplazas; no hay nada que leer.
Las claves de API que emitimos funcionan al revés: guardamos solo un hash, así que la clave se muestra una vez al crearla y nunca más. Revocar una se lleva el hash, de modo que una clave revocada no se puede verificar en absoluto, en vez de ser rechazada por una comprobación.
Algunas conexiones no llevan ningún secreto. Donde el servicio admite OAuth -- Webflow, por ejemplo -- pulsas Conectar, apruebas el acceso en su sitio, y nosotros recibimos una llave limitada a lo que has aprobado. Nunca vemos la contraseña de ese servicio, y puedes retirar el acceso desde allí sin tocar nada aquí.
Cómo inicias sesión, y qué protege eso
Cuatro maneras: contraseña, passkey, un enlace por correo y Google. Espacios de trabajo y tu cuenta explica cada una; dos cosas van aquí porque son propiedades de seguridad y no comodidades.
Una passkey no se puede robar con una página falsa. Está atada a este dominio, así que una copia de nuestra pantalla de acceso en una dirección que solo se le parece no tiene nada que pedir: el navegador no ofrece una llave que no corresponde a ese sitio. Añade una en Perfil; tu contraseña sigue funcionando al lado, porque una passkey que sea tu única credencial convierte un teléfono perdido en una cuenta perdida.
Cambiar o restablecer la contraseña cierra todas las demás sesiones. No solo el próximo inicio de sesión: las sesiones ya abiertas en otros sitios se revocan en ese mismo momento. Si la cambiaste porque creías que había alguien más dentro, esa es la parte que hace el trabajo.
Las cuentas nuevas verifican su dirección antes de poder usarse. Es un enlace en un buzón, una vez, y es lo que impide que alguien registre una dirección que no es suya y siga con la sesión abierta cuando su dueño real aparece y la recupera.
Perder todos los dispositivos que tienen una passkey es el único caso sin respuesta automática. Recuperar una cuenta lo revisa una persona contra lo que la cuenta es en realidad -- el plan, las facturas, los espacios --, porque una forma automática de quitarle a alguien su credencial más fuerte es una forma de entrar. La solicitud nunca revela si una dirección tiene cuenta aquí.
Direcciones que nos negamos a consultar
Varias funciones consultan una URL que tú nos das: el rastreador web, añadir un documento por URL, verificar que los enlaces siguen existiendo y enviar un webhook. Todas pasan por una sola regla -- la máquina del otro extremo tiene que ser pública -- y la regla se aplica a la dirección a la que la conexión llega de verdad, no a la que se escribió.
Esa distinción es todo. El nombre se comprueba, luego se resuelve, y la dirección resuelta queda fijada a la conexión, así que un nombre que responda distinto la segunda vez no sirve para llegar a otro sitio. Las redirecciones se siguen a mano y se vuelven a comprobar en cada salto, porque si no, una dirección que pasa el control y después responde "ve a esta otra" lo esquivaría entera.
En la práctica: las direcciones privadas e internas se rechazan, y también una dirección pública que redirige a una. Si intentas rastrear algo de tu propia red, se rechazará, y no es un fallo: nuestros servidores no están en tu red, así que tampoco habrían podido leerlo.
Qué puede ver el asistente
Un asistente responde desde la base de conocimiento a la que está conectado y de nada más. No puede leer tus otras bases, tus conversaciones, tus leads ni nada sobre tu espacio. Si un pasaje no está en el contenido que le diste, no está en la respuesta.
El widget también envía algo de contexto sobre la página en la que está -- la URL, el título, los encabezados -- para que la respuesta encaje con lo que el visitante está leyendo. Tú lo controlas: los extractos de página, el texto seleccionado y los encabezados se pueden desactivar por widget, y los datos personales de la página se pueden redactar antes de enviarlos.
Qué sitios pueden preguntar es otra cuestión, y la respuesta es tuya: un widget solo responde en los dominios que enumeras, así que llevarse el fragmento a otro sitio no se lleva tu base de conocimiento con él. Widgets e instalación explica cómo se configuran.
Qué registramos y qué no
Registramos qué se le preguntó al asistente y qué respondió, porque esa es la conversación que vienes a leer. Registramos quién cambió qué en tu espacio, en el registro de auditoría.
No guardamos las direcciones IP de los visitantes. Donde hace falta una -- para limitar el ritmo, o para que una entrada de auditoría pueda situarse -- guardamos un hash. Puedes seguir filtrando el registro por una dirección, porque el filtro convierte lo que escribes antes de comparar, pero el registro en sí no es un historial de dónde trabaja nadie.
Los informes de error capturan la página y la actividad reciente para que el informe sirva de algo, y todo lo que parece una credencial se quita antes de guardarlo -- por nombre y por forma, así que un token en un campo que nadie pensó en excluir se detecta igual.
Archivos
Los archivos subidos viven en almacenamiento de objetos, nunca en la base de datos, bajo una clave con el prefijo de tu espacio. Borrar un documento borra el archivo. Borrar un espacio borra todos los archivos que subió, no solo sus filas -- los objetos van primero, para que un fallo de almacenamiento no pueda dejarlos huérfanos.
Retención
Un espacio borrado se puede recuperar durante 180 días y después se purga definitivamente. Un documento, fragmento o conversación borrado se elimina al instante. Las analíticas se conservan la ventana que incluye tu plan.
Subencargados
La inferencia de los modelos va a Anthropic y OpenAI. Los pagos a Lemon Squeezy, que es el comercio de registro. El correo a Resend. En el plan Bring Your Own la inferencia va a tus propias cuentas de proveedor, bajo tu acuerdo con ellos.