«Confía en nosotros» no es una respuesta.
Klorn lee el correo que te escriben otras personas para que tú no tengas que hacerlo. Esa frase es el modelo de amenazas: la entrada principal es texto escrito por desconocidos, algunos de ellos con malas intenciones. Esto es lo que la arquitectura garantiza de verdad, con el archivo que implementa cada garantía.
Esta traducción se ofrece por comodidad; la versión en inglés es la que prevalece. Leer la versión en inglés
Verificación de Google y evaluación independiente
Google completó su revisión de verificación OAuth de Klorn el 2026-10-03. Antes de eso, TAC Security evaluó Klorn de forma independiente según CASA Tier 2; resultado: In Compliance (conforme). La carta de validación (Letter of Validation) de esa evaluación se envió después a Google.
- Evaluación
- CASA Tier 2, pruebas dinámicas de seguridad de aplicaciones (DAST), realizada por TAC Security
- Resultado
- In Compliance (conforme), en el nivel de garantía AL1 (OWASP ASVS Level 1)
- Fechas
- Evaluado el 2026-08-12 · informe emitido el 2026-08-30 · revisión de Google completada el 2026-10-03
- Reevaluación
- Anual. La próxima evaluación está prevista para agosto de 2027
Los cinco permisos de Google y el porqué de cada uno
Estos cinco son los permisos de Google aprobados en esa revisión, y los únicos permisos de correo y calendario que solicita Klorn. No pide el permiso de acceso completo a Gmail y, en Calendar, solo pide calendar.events y calendar.readonly, nunca el permiso completo de Calendar.
gmail.readonly- Leer tus mensajes para que Klorn pueda clasificarlos, mostrar el motivo de cada decisión y resumir un hilo cuando lo pidas.
gmail.modify- Cambiar el estado de un mensaje cuando actúas en Klorn: archivar o desarchivar, mover a la papelera o sacarlo de ella, destacar, marcar como leído o no leído, y guardar un borrador de respuesta en Gmail.
gmail.send- Enviar correo solo cuando tú lo apruebas —una respuesta que confirmas, una baja por mailto que solicitas— o una respuesta automática según reglas que configuras tú mismo.
calendar.readonly- Leer la disponibilidad (libre/ocupado) de todos tus calendarios, para contrastar los correos de reuniones con tu agenda real y detectar conflictos.
calendar.events- Crear, cambiar o eliminar un evento en tu calendario principal cuando se lo pides a Klorn; no la configuración ni el uso compartido del calendario.
Al iniciar sesión con Google solo se piden tu nombre y tu correo. Los permisos de correo y calendario llegan después, en una segunda pantalla de consentimiento, cuando conectas una bandeja de entrada; y una conexión solo de calendario pide calendar.readonly sin ningún permiso de correo. (openid y userinfo.email/userinfo.profile también aparecen en ese archivo: identifican qué cuenta inició sesión, no son sensibles y no forman parte de lo que revisó Google.)
Adónde van los datos
Los tokens OAuth se cifran con AES-256-GCM antes de guardarse, todas las superficies alojadas usan solo TLS y la analítica nunca incluye el contenido de los mensajes; consulta la tabla de abajo para ver el archivo detrás de cada punto. Los registros caducan según el calendario fijo descrito en Cuánto tiempo se guarda cada cosa. Si prefieres que tu correo no pase en absoluto por nuestros servidores, autoaloja el mismo código con tu propia clave de modelo o un modelo local. La política de privacidad está en /privacy.
Qué significa esto y qué no. La revisión y la evaluación comprueban cómo trata Klorn los datos de Google que solicita. No son un respaldo de Klorn por parte de Google ni cubren nada más allá de esos permisos. Hoy puedes conectar Gmail, Google Calendar, Naver Mail (beta) e iCloud Mail (beta); otros proveedores aún no están disponibles.
Lo que garantiza la arquitectura
| Propiedad | Lo que es cierto de verdad | Dónde comprobarlo |
|---|---|---|
| El correo es una entrada hostil | Cada cuerpo de correo, asunto y cadena de terceros se envuelve en marcadores <untrusted_content> antes de llegar a un modelo, y antes se eliminan las etiquetas envolventes preexistentes para que un mensaje manipulado no pueda cerrar el envoltorio. La inyección de prompts está dentro del alcance, no es una limitación aceptada | SECURITY.md |
| Cifrado de tokens en reposo | AES-256-GCM antes de que el token toque la base de datos, con rotación del llavero (sobres v1/v2) para que una sospecha de filtración se resuelva rotando la clave sin un corte general. Si falta la clave fuera de dev/test, se aborta el arranque en lugar de recurrir a un respaldo | crypto-tokens.ts |
| Acciones salientes | Enviar, borrar definitivamente y reenviar a direcciones externas no pueden depender de la confianza del clasificador. Cada una requiere un recibo emitido en el momento de la aprobación que fija un sha256 de la carga canónica, verificado de nuevo al ejecutarse. Si algo cambió entretanto, la acción se rechaza | attention-floor.ts |
| Comodidades de desarrollo | El secreto JWT de desarrollo, la clave de cifrado de desarrollo, el CORS de localhost y el usuario de demostración están detrás de una lista de permitidos de dev/test que falla en cerrado para cualquier otro NODE_ENV | env.ts |
| Analítica | Solo propia. Una lista corta de nombres de eventos genéricos en la propia base de datos Postgres de Klorn. Ningún rastreador externo y nunca el contenido de los mensajes | analytics.ts |
| Cifrado en tránsito | Solo TLS en todas las superficies alojadas: API, web, API de Google, proveedores de modelos | self-hosting.md |
Cuánto tiempo se guarda cada cosa
La retención de registros la impone un barrido programado, no una promesa: las acciones del agente, el procesamiento de correo, la entrega de notificaciones push y los registros de webhooks se eliminan a los 90 días, las filas de límite de tasa a los 30 y la contabilidad de tokens a los 180 para analizar desviaciones de coste. Los plazos son una tabla en el código fuente, no un ajuste que podamos ampliar en silencio sin que se note en un diff.
Cómo informar de una vulnerabilidad
Escribe a k0820086@gmail.com con una descripción y los pasos para reproducirla. Por favor, no abras un issue público para un hallazgo explotable. Recibirás un acuse de recibo en unos días; las correcciones de la barrera de aprobación y de las rutas de cifrado de tokens tienen prioridad sobre todo lo demás. Los datos de contacto legibles por máquina están en /.well-known/security.txt.
Lo que no afirmamos. Aparte de la evaluación CASA Tier 2 mencionada arriba, Klorn no ha pasado una prueba de penetración de terceros ni una auditoría SOC 2, y esta página no lo da a entender. Es un producto en beta mantenido por una sola persona. El control compensatorio es que el código es AGPL-3.0 y las rutas relevantes para la seguridad se nombran arriba por archivo: puedes leerlas en lugar de fiarte de nuestra palabra.
SECURITY.md contiene la versión extensa, incluidas las carencias conocidas que decidimos declarar en lugar de omitir.