Code Mode Security (Beta)
Ejecución segura de MCP-as-code con sandboxing, análisis de AST y seguimiento de taint.
Code Mode permite a los agentes ejecutar código TypeScript para encadenar varias herramientas MCP entre sí, en lugar de hacer llamadas individuales a herramientas. Este enfoque reduce significativamente la latencia y el uso de tokens, pero introduce nuevas consideraciones de seguridad.
Función Beta: Code Mode Security está actualmente en beta. Las funciones y APIs pueden cambiar.
Edison Watch protege Code Mode con una arquitectura de defensa en profundidad que combina ejecución en sandbox, análisis estático y seguimiento de datos consciente del taint.
¿Por qué Code Mode?
Los agentes tradicionales sufren de context rot. La entrada y salida de cada llamada a herramienta debe agregarse a la ventana de contexto del LLM. Conectar un agente a muchos servidores MCP lleva a context rot, ya que las definiciones de herramientas consumen tokens incluso antes de que se tome cualquier acción. Para el procesamiento de datos complejos (p. ej. "resume estos 20 archivos"), esto puede consumir cientos de miles de tokens solo para mover datos.
Code Mode resuelve esto permitiendo al agente escribir un script para procesar datos dentro del entorno seguro. El LLM solo ve el resultado final, a menudo reduciendo el uso de tokens en más de un 90%.
Arquitectura de Seguridad
Edison Watch emplea tres capas de defensa para hacer que Code Mode sea seguro para el despliegue empresarial.
1. El Sandbox de Deno (Protección contra RCE)
El código se ejecuta en un sandbox seguro de Deno con permisos estrictos:
- Sin acceso a red: El script no puede hacer solicitudes HTTP arbitrarias. Solo puede llamar a herramientas MCP permitidas.
- Sin escritura al sistema de archivos: El script no puede modificar el sistema de archivos del host.
- Límites de recursos: Límites fijos en tiempo de ejecución (90s), memoria (256MB) y tamaño de salida (10MB).
2. Análisis de AST (Analizabilidad)
Antes de la ejecución, Edison Watch analiza el Abstract Syntax Tree (AST) del script para aplicar un subconjunto estricto de TypeScript. Esto previene técnicas de ofuscación que los atacantes usan para ocultar comportamiento malicioso.
Modo estricto: Bloqueamos funciones dinámicas como eval(), new Function() e importaciones dinámicas
(p. ej. import(variable)). El código debe ser analizable estáticamente para ejecutarse.
3. Trifecta con Seguimiento de Taint (Protección de Datos)
El modelo "Lethal Trifecta" clásico (bloquear Datos Privados + Contenido No Confiable + Comunicación Externa) puede ser demasiado agresivo para la ejecución de código. Code Mode usa seguimiento de taint para ser más preciso.
El Enfoque "Bisturí"
En lugar de marcar toda la sesión cuando se llama a una herramienta sensible, Edison Watch rastrea el flujo real de variables de datos dentro del script.
Ejemplo: El Problema del Calendario Imagina que un agente lee una invitación de calendario para revisar tu disponibilidad. El cuerpo de la invitación contiene contenido no confiable (posible inyección de prompt), pero las horas de inicio/fin son metadatos seguros.
- Trifecta clásico: Bloquea la acción porque se accedió a "Calendario" (Privado) y al "Cuerpo de la Invitación" (No Confiable), incluso si el agente solo imprimió la hora.
- Seguimiento de Taint de Code Mode: Analiza el script. Si el código hace
console.log(event.startTime)pero nunca registraevent.body, Edison sabe que el contenido no confiable nunca salió del sandbox. La acción se permite.
Esta precisión reduce falsos positivos mientras mantiene garantías de seguridad estrictas.
Observabilidad
Cada ejecución de Code Mode es auditada por completo. El sistema registra:
- El código TypeScript exacto generado por el agente.
- Los resultados de validación y cualquier error de AST.
- La salida de consola y los valores de retorno.
- Qué rutas de datos específicas fueron marcadas como tainted.
Estos detalles se almacenan en los logs de auditoría seguros.
Límites Operativos
Para prevenir denegación de servicio (DoS) y abuso, Code Mode aplica límites estrictos:
| Métrica | Límite |
|---|---|
| Tiempo de Ejecución | 90 segundos |
| Memoria | 256 MB |
| Tamaño de Salida | 10 MB |

