Kimi Work adjunta secretamente registros sin procesar de cinco sesiones recientes de agentes a los informes de retroalimentación

La aplicación de escritorio para Windows de Moonshot AI empaqueta registros sin procesar limitados de las cinco conversaciones de Kimi Work actualizadas más recientemente cada vez que un usuario envía retroalimentación. El formulario no identifica esos archivos adjuntos ni las conversaciones seleccionadas.

By · Published · Updated

RUNTIMEWIRE INVESTIGATION — Scoop

Original reporting by RuntimeWire, based on reverse engineering, testing.

Why it matters

Kimi Work can handle private files, source code and shell output. Packaging five recent sessions without listing them prevents users from reviewing the data attached to feedback.

Reporting record

Finding

Submitting feedback in Kimi Work automatically triggers uploads of a diagnostic archive and bounded raw-record archives from the five most recently updated agent sessions, while the form does not list those attachments or let users choose which sessions are included.

How we verified

Methods: reverse engineering, testing.

RuntimeWire reverse-engineered Kimi Desktop 3.1.5 and its bundled Daimon 0.5.49 service. Static tracing established that the renderer invokes diagnostic-log and raw-record uploads before submitting feedback; the main process sorts all Work conversations by updatedAt, selects five, requests an archive for each and sends the ZIPs to /file/upload_simple. In a Windows Firewall-blocked test launched from Plugins feedback, Kimi selected five distinct conversation IDs, each reached the HTTP upload stage and failed with ERR_NETWORK_ACCESS_DENIED. Kimi's log concluded: "ok: 0/5 archives uploaded in 166ms." Official documentation describes wire.jsonl as the agent's complete communication record and says it includes request parameters, tool schemas and MCP tool listings.

RuntimeWire extracted the production ASAR and Windows Daimon bundle without modifying them, hashed the relevant files and traced the feedback flow from the renderer through preload IPC, the desktop main process, Daimon's archive generator and the two Kimi HTTP endpoints. We decoded the archive limits and sanitization logic, checked Kimi's public help, session-export documentation and privacy policy, and searched for prior reporting. For runtime validation, we blocked outbound traffic from the signed Kimi.exe, started the application, submitted harmless feedback from the Plugins page and reviewed the resulting main-process logs. The firewall denied every external request. We did not inspect or transmit conversation-record contents.

Tested versions: Kimi Desktop 3.1.5, release 3.1.5+c88420152; Daimon 0.5.49; Windows x64; Electron 41.7.2.

Reproduction

RuntimeWire independently reproduced the core finding.

Install Kimi Desktop 3.1.5 on Windows and ensure the Work interface has at least five recent conversations. Fully exit Kimi. Create a temporary outbound Windows Firewall block for Kimi.exe. Start Kimi and open Work > Plugins. Click the feedback icon, enter harmless test text and press Submit. Open %APPDATA%\kimi-desktop\logs\main.log. Search for FeedbackRawRecords. Confirm five distinct conversation entries fail with ERR_NETWORK_ACCESS_DENIED, followed by "ok: 0/5 archives uploaded." Remove the temporary firewall rule.

File hashes

  • 4ecfdc4ff9ad57707f050888056babeac79eb85b61c3e0a369b612d809f80122 app.asar
  • f92a5544c72a51e742060866a9cdb7c8129b553b36739a8d45a96e5aa9884e23 daimon-bundle.tar.gz
  • bc7a22afe8c91b8196550e6401797d55ff7565f80da5dd6109bcff38ee5eb079 out/main/index.js
  • aa4193cf1ac834842219823adaeb65d91c30d6b4739a95aad36c1a63e69dc508 preload-kimi-agent.mjs
  • 57e81f63c0d21f38a2c74f0ea55edb63e4a07f8e9e64dda20a3e2cabf64028ea common-DPn1pjsS.js
  • 794019269179bd285a5c16cdb7abe2f7d8f82737e1a3e1d1e90efd6422faca5d c-TFPRZLAB.js
  • 799d67dc410e99553e68c9bc151cf95c559f2cedcc3936ab8f8800e8fc97cb28 c-ECRC3J6R.js

Company response

RuntimeWire requested comment; the company had not responded by publication time.

Five numbered agent-session records feeding into a Kimi Work feedback form marked Records attached, showing how submitting feedback silently bundles the user's five most recent sessions.

La aplicación de escritorio Kimi Work de Moonshot AI está diseñada para adjuntar registros de diagnóstico sin procesar de cinco conversaciones recientes del agente cada vez que un usuario envía comentarios, encontró un análisis de RuntimeWire de la aplicación para Windows.

La recolección excede la tarea que el usuario está reportando. Kimi Desktop ordena cada conversación de Work registrada localmente por su hora de actualización más reciente, toma las cinco más nuevas y le pide a un servicio en segundo plano incluido que cree un archivo ZIP separado para cada una. Sube esos archivos junto con un paquete de registros de diagnóstico de escritorio antes de enviar el texto de los comentarios.

RuntimeWire confirmó el comportamiento en una copia instalada de Kimi Desktop 3.1.5 usando una regla del firewall de Windows que bloqueó el tráfico saliente de Kimi.exe. La prueba abrió el formulario de comentarios desde la página Plugins de Kimi Work y envió la frase inofensiva "RuntimeWire test." Kimi intentó de inmediato una carga multipart que contenía su archivo de diagnóstico. Luego intentó subir archivos de registros sin procesar asociados con cinco ID de conversación recientes distintos.

Los cinco intentos fallaron con net::ERR_NETWORK_ACCESS_DENIED, como era de esperarse. El propio registro del proceso principal de Kimi registró cinco fallas en cinco milisegundos, seguidas por:

[FeedbackRawRecords] ok: 0/5 archives uploaded in 166ms

El firewall impidió que los registros salieran de la máquina y confirmó la ejecución en producción del manejador.

Un formulario genérico de comentarios alcanza conversaciones recientes de Work

La pantalla de comentarios de Plugins fue un punto de entrada particularmente revelador. Su metadata interna identificó el informe como proveniente del hub de plugins, y esa versión del formulario desactiva los adjuntos de imagen por parte del usuario. Enviarlo siguió invocando la misma rutina de recolección global usada por los comentarios desde el menú de cuenta, una conversación activa y la vista previa generada del sitio web de Kimi.

El renderer inicia dos operaciones en segundo plano antes de enviar el informe:

Promise.allSettled([
  feedbackUploadLogs(),
  feedbackUploadRawRecords()
])

El manejador de registros sin procesar llama a conversations.list, ordena las conversaciones devueltas por updatedAt y aplica .slice(0, 5). No recibe la conversación actual como argumento. Un comentario interno en el código preload incluido con Kimi describe el método como exportar y subir las cinco sesiones más recientes, con la selección fijada en el proceso principal de escritorio.

Cada carga completada devuelve un nombre de objeto. Kimi coloca esos identificadores en un prefijo de metadata oculto dentro del cuerpo de los comentarios bajo rawRecordsObjectNames. El campo de adjunto normal file_object_names está reservado para las imágenes que el usuario seleccionó.

Esa división importa en la interfaz. El formulario en inglés invita al usuario a describir un problema y dice que se pueden subir o pegar imágenes. No enumera el archivo de diagnóstico, los cinco archivos de conversación ni su tamaño combinado potencial. No hay vista previa de adjuntos, casilla de consentimiento ni control para seleccionar una sesión relevante.

La página de ayuda pública de Kimi dice que los reportes desde el producto adjuntan automáticamente "device and account context." No menciona registros sin procesar de sesiones recientes del agente. La documentación de ayuda de la compañía estaba actual cuando RuntimeWire la revisó el 15 de agosto.

Qué pone Kimi en un archivo de registros sin procesar

Kimi Work utiliza un componente en segundo plano incluido llamado Daimon. El paquete para Windows que examinó RuntimeWire fue la versión 0.5.49, creada el 24 de julio. Publicita y registra un método de control de producción llamado conversations.getRawRecordsArchive, luego enlaza esa ruta con el generador de archivos usado durante el envío de comentarios.

Para cada conversación seleccionada, Daimon descubre el archivo wire.jsonl del agente principal y los registros pertenecientes a cualquier subagente. Puede incluir hasta 100 archivos de registro en un archivo de conversación y lee los últimos 500 registros JSONL de cada archivo. Un solo ZIP comprimido está limitado a 8 MiB, lo que hace que el tope del lado del cliente sea 40 MiB en cinco archivos de registros sin procesar, además del paquete separado de registros de escritorio.

La propia documentación de Kimi describe agents/main/wire.jsonl como el "complete communication record" del agente principal. Los archivos soportan la recuperación y reproducción de sesiones. También llevan trazas de solicitudes que contienen esquemas de herramientas, parámetros de solicitud y listados de herramientas MCP, según la documentación de sesiones de la compañía.

Daimon aplica una sanitización limitada. Elimina cadenas que parecen grandes blobs base64, reemplaza valores de tamaño excesivo con marcadores de longitud y hash, y limita las cadenas ordinarias a 8,192 caracteres. Esas verificaciones se basan en tamaño y codificación. El código no busca contraseñas, claves de API, tokens de acceso, código fuente privado, salida de shell ni rutas de archivos sensibles. Una cadena ordinaria dentro del límite de tamaño se conserva tal cual.

Los registros JSONL malformados o inusualmente grandes reciben un reemplazo de diagnóstico que contiene una vista previa de 256 caracteres. El manifiesto del archivo también registra rutas de sesión locales, rutas de registros, identificadores y estadísticas de procesamiento.

La CLI de Kimi ofrece un flujo separado y explícito de exportación de sesiones. Su documentación advierte que los archivos exportados pueden contener código, salida de comandos y rutas de archivos, y les dice a los usuarios que revisen el contenido antes de compartirlo. El flujo de trabajo de comentarios no proporciona una advertencia ni un paso de revisión comparable.

Qué dice la política de privacidad

La política de privacidad de Moonshot AI, vigente desde el 4 de agosto, dice que la compañía puede recopilar información de conversaciones, datos de comentarios y registros que pueden incluir el contenido de las conversaciones. Ese lenguaje cubre categorías amplias de información manejadas por Kimi.

La implementación hace una elección de producto más estrecha que los usuarios no pueden ver al momento del envío: un informe de plugin, un informe de vista previa de sitio web o un informe general de cuenta puede llevar registros acotados de cinco sesiones recientes de Work no relacionadas entre sí. Esas sesiones pueden involucrar diferentes proyectos, carpetas, clientes o credenciales.

El cliente distribuido realiza la recolección como parte de su manejador ordinario de comentarios. Esto es un problema de alcance de recolección y de divulgación. La prueba no descubrió una vía de explotación remota.

RuntimeWire no encontró documentación pública sobre la selección de cinco sesiones ni ningún resultado público previo para el nombre del método interno conversations.getRawRecordsArchive o la etiqueta de registro FeedbackRawRecords.

Moonshot AI debería explicar cuándo se envió este comportamiento, qué versiones de escritorio y plataformas lo incluyen, cuánto tiempo se conservan los archivos subidos, quién puede acceder a ellos y si el servidor realiza redacciones adicionales. Los usuarios también necesitan una forma de inspeccionar los adjuntos propuestos, limitar la recolección a la sesión que se está reportando y enviar comentarios sin proporcionar registros de conversaciones.

Cómo lo probó RuntimeWire

RuntimeWire examinó el ASAR de producción de Kimi Desktop 3.1.5 y un paquete Daimon 0.5.49 para Windows x64. El análisis estático trazó el botón de comentarios desde el renderer a través de Electron IPC, la generación de ZIP, /file/upload_simple y /user/feedback.

Para la prueba en tiempo de ejecución, se bloqueó el acceso saliente en Windows Firewall para el ejecutable firmado Kimi.exe antes de iniciar la aplicación. RuntimeWire envió comentarios inofensivos de plugin y observó los registros locales resultantes. La aplicación seleccionó cinco ID de conversación y llegó a la etapa de carga para cada archivo. Todas las solicitudes externas fallaron con ERR_NETWORK_ACCESS_DENIED. RuntimeWire no inspeccionó ni transmitió el contenido de los registros de las conversaciones.

Los hashes principales de archivos y los límites detallados están disponibles en las notas del reportero de RuntimeWire.

Reader comments

Conversation for this story loads after sign-in.