Esta documentación corresponde a las implementaciones federales de Devin. Volver a la documentación de Devin
Ubicación de los archivos
Archivos que creas tú
Estas son las entradas machine-wide. Cada una tiene una ruta predeterminada y una variable de entorno que la anula. La variable debe estar definida en el entorno desde el que se inicia el agente (consulta Variables de entorno de la clave de API para saber cómo hacerlo en Desktop).
Las rutas predeterminadas son las mismas en macOS y Linux. En Windows, la licencia, el archivo de modelos y el archivo de autenticación se encuentran de forma predeterminada en
C:\ProgramData\Devin\ (license.devin-onprem-license, models.json, auth.json), el archivo de políticas machine-wide es C:\ProgramData\Devin\system.json y las variables de anulación son las mismas. Restringe el acceso a la carpeta antes de colocar archivos en ella. La CLI lee estos archivos, pero nunca escribe en ellos, así que puedes gestionarlos con tus herramientas de gestión de la configuración y configurarlos como de solo lectura.
Estado por usuario escrito por la CLI
La CLI sigue la estructura de directorios base de XDG tanto en macOS como en Linux (no usa~/Library para su propio estado). Si XDG_CONFIG_HOME y XDG_DATA_HOME están definidas, se respetan.
cli-federal es el subdirectorio de producto que usa la compilación aislada de la red; así, este estado se mantiene separado de cualquier instalación estándar de la Devin CLI en la misma máquina, que usa cli.
En Windows, la CLI no lee las variables XDG_*. Guarda los mismos archivos en %APPDATA%\devin\ y su caché en %LOCALAPPDATA%\devin\:
Estado específico de Desktop
La aplicación Desktop está aislada de cualquier otra instalación de Devin Desktop o Windsurf en la misma máquina:
Desktop crea el enlace simbólico al iniciarse solo si no existe nada en
~/.devin-airgap-config/devin/config.json. Si ya hay un archivo normal en esa ubicación, Desktop no lo toca y el agente integrado usa ese archivo en lugar del compartido; además, el canal de salida Devin ACP registra una línea WARNING: … is a regular file, not a symlink. Para restaurar el enlace, elimine el archivo y reinicie Desktop.
En Windows no se usa enlace simbólico: el agente integrado de Desktop y la CLI comparten directamente %APPDATA%\devin\config.json, y Desktop no carga el archivo %APPDATA%\devin\mcp_config.json del usuario. Los datos de usuario de Desktop se encuentran en %APPDATA%\Devin - Airgap\.
Para hacer una reinstalación desde cero, solo es seguro eliminar ~/.devin-airgap-config/ y ~/.devin-airgap/. Los directorios ~/.config/devin/ y ~/.local/share/devin/ también los usa la CLI independiente.
Registro de auditoría
La CLI aislada de la red escribe un registro de auditoría local, estructurado y de solo anexión. Está siempre activo (no hay ningún interruptor para desactivarlo), no existe en ninguna otra compilación de Devin y se guarda en la estación de trabajo para que puedas revisarlo y para su ingesta en tu SIEM.Ubicación y rotación
Si necesitas una retención ilimitada, envía los archivos rotados a tu SIEM antes de que se eliminen. Como la CLI solo añade líneas y nunca reescribe las existentes, basta con un recolector estándar de seguimiento de archivos; consulta Reenviar el registro de auditoría a tu SIEM.
Garantías de ocultación de datos sensibles
Los eventos solo incluyen rutas y metadatos. El registro nunca contiene prompts, respuestas del modelo, código, contenido de archivos, valores secretos, claves de API ni líneas de comandos de shell completas: en el caso de las herramientas de shell, solo se registra el nombre del programa (el primer token).Envoltura (versión de esquema 1)
Cada línea incluye esta envoltura; los campos propios de cada evento se aplanan al mismo nivel.
Configura tu analizador para que ignore los campos y los valores de
event desconocidos: es posible que se agreguen nuevos campos y tipos de evento sin incrementar schema_version.
Tipos de eventos
session_start
Se emite cuando comienza una sesión del agente (sesión raíz nueva o reanudada).
session_end
Se emite cuando finaliza la sesión o se detiene el agente.
session_start va emparejado con exactamente un session_end para el mismo session_id cuando la salida es limpia. La CLI ejecuta el agente en un proceso hijo que finaliza durante el cierre, por lo que el proceso padre registra el session_end de la sesión hija (motivo other) cuando la sesión termina. Una sesión interrumpida por SIGKILL o por un corte de energía no puede escribir un evento final; trata cualquier session_start sin su session_end correspondiente como una terminación anómala.
tool_call
Se emite después de cada herramienta que ejecuta el agente.
file_read y file_write
Se emiten además de tool_call, una vez por cada ruta incluida en el ámbito de permisos resuelto de la herramienta. Describen el acceso al que la herramienta estaba limitada, no operaciones de E/S verificadas: una herramienta aprobada con ámbito de lectura sobre varias rutas emite un file_read por cada ruta aunque solo haya accedido a algunas de ellas, y los eventos se emiten tanto si la llamada a herramienta tuvo éxito como si no.
model_call
Se emite después de cada solicitud de inferencia a un endpoint de modelo definido en tu archivo de modelos.
Los campos de tokens se omiten cuando el endpoint no reporta el consumo.
auth
Objeto actor
La atribución de identidad se compone del usuario del sistema operativo, la identidad de Git local y (cuando SSO está configurado) la identidad del token de ID validado. Los campos se omiten cuando no están disponibles.
Los campos de SSO están presentes en todos los eventos
auth que disponen de un token validado (sso_login, sso_refresh, sso_logout, sso_login_denied); en sso_revalidation_failed, para el inicio de sesión que validó el proceso (o, si no validó ninguno, el inicio de sesión que sigue en la caché de tokens), y en session_start e identity_resolved, para el inicio de sesión que el proceso en ejecución validó al arrancar. tool_call, file_read, file_write y model_call no incluyen actor; atribúyelos a su session_start mediante session_id.
sso_groups registra en la máquina local la pertenencia a grupos del IdP de cada usuario. El directorio y los archivos de auditoría solo son accesibles para su propietario; inclúyelos en tu revisión de tratamiento de datos si los nombres de los grupos son confidenciales en tu entorno.Reenviar el registro de auditoría a tu SIEM
Devin no envía los registros de auditoría a ningún sitio. Para centralizar el consumo de todas las estaciones de trabajo, apunta el agente de recopilación de registros que ya usa tu SIEM (por ejemplo, un Splunk universal forwarder o Elastic Agent) al directorio de auditoría de cada estación de trabajo. No hace falta configurar nada en Devin. Configura la entrada de archivos del agente con estos ajustes:
La estación de trabajo de cada usuario conserva el archivo activo y un máximo de 10 archivos rotados de 10 MiB cada uno, unos 110 MiB en total. Lo que exceda ese límite se elimina, por lo que una estación de trabajo que genere más datos entre una recopilación y la siguiente perderá sus registros más antiguos.
Para confirmar que la recopilación funciona, inicia y finaliza una sesión de Devin en una estación de trabajo y, a continuación, busca en tu SIEM un registro
session_start y un registro session_end con el mismo session_id.
Ejemplo: Splunk universal forwarder
Despliega estos dos archivos en una aplicación de cada forwarder (por ejemplo,$SPLUNK_HOME/etc/apps/devin_audit/local/). Usa solo la stanza monitor que corresponda al sistema operativo de la estación de trabajo y sustituye devin por el índice que quieras usar.
inputs.conf
props.conf
props.conf debe estar en el forwarder, no solo en los indexadores, porque INDEXED_EXTRACTIONS se aplica donde se lee el archivo. Deja crcSalt sin definir: así, el forwarder reconoce un archivo rotado por su contenido y no vuelve a leerlo con su nuevo nombre. La cuenta con la que se ejecuta el forwarder debe tener permiso de lectura sobre todos los directorios de la ruta con comodines; un forwarder instalado como cuenta de servicio sin privilegios de root no puede leer los directorios de auditoría restringidos al propietario.
Los campos llegan como campos indexados con sus nombres JSON, por lo que actor.sso_user, model e input_tokens se pueden buscar directamente:
Ejemplo: Elastic (Filebeat o Elastic Agent)
Agrega esta entradafilestream a filebeat.yml. Conserva solo la ruta correspondiente al sistema operativo de la estación de trabajo.
filebeat.yml
ndjson coloca cada registro bajo el prefijo devin. (devin.event, devin.session_id, devin.actor.sso_user). No establezcas target: "": el campo event del registro es una cadena, lo que entra en conflicto con el objeto event del Elastic Common Schema y hace que Elasticsearch rechace los documentos. El procesador timestamp copia ts en @timestamp; Elastic marca este procesador como beta, así que, si lo prefieres, puedes eliminarlo y establecer @timestamp a partir de devin.ts en un pipeline de ingesta. El id debe ser único entre tus entradas filestream. De forma predeterminada, Filebeat identifica cada archivo mediante una huella digital de su inicio, que se mantiene aunque la rotación renombre el archivo, por lo que no hace falta configurar nada para la rotación. La longitud de la huella se reduce de los 1024 bytes predeterminados a 64 porque las versiones 9.0 a 9.4 de Filebeat ignoran un archivo hasta que alcanza al menos esa longitud, lo que haría que se omitieran las estaciones de trabajo con pocos registros. Los primeros 64 bytes de un archivo de auditoría contienen el ts y el pid del primer registro, lo que garantiza que las huellas sean distintas. Si cambias la longitud más adelante, Filebeat volverá a leer todos los archivos.
Con Elastic Agent, agrega la integración Custom Logs (Filestream) a la política del agente, introduce las mismas rutas y coloca los bloques parsers y processors anteriores en el campo de configuración personalizada de la integración.
Cognition no ha probado estos ejemplos en un despliegue de Splunk o Elastic. Valídalos en tu entorno y consulta la documentación del proveedor correspondiente a tu versión instalada antes de desplegarlos en las estaciones de trabajo.
Solo los registros
session_start y auth identifican al usuario. Para atribuir los registros tool_call, file_read, file_write y model_call a un usuario, combínalos con el registro session_start que tenga el mismo session_id.
Informe de diagnósticos
devin diagnostics genera un informe en texto plano, con los datos sensibles ocultos, que puedes revisar antes de enviarlo al soporte de Cognition. Solo incluye versiones, la estructura de la configuración (si cada archivo existe y se puede analizar), nombres de modelos, si cada variable de clave de API está definida y estadísticas del registro de auditoría; nunca incluye prompts, código, contenido de archivos, valores secretos, URL de endpoints ni valores de variables de entorno.
--output <path> para elegir el nombre del archivo. El informe se guarda con permisos de acceso exclusivo para el propietario (0600). Consulta Solución de problemas para saber qué incluir en una solicitud de soporte.
