Cómo contiene Anthropic a Claude en todos sus productos
(anthropic.com)- A medida que aumentan las capacidades y los permisos de acceso de los agentes, también se amplía el radio potencial de daño, y aquí se resume la experiencia de construir arquitecturas de contención adaptadas a Claude web/Claude Code/Cowork
- El riesgo se compone de dos factores: la probabilidad de fallo y la magnitud del daño; las protecciones y el entrenamiento del modelo han reducido el primero, pero el segundo sigue creciendo conforme aumentan las capacidades y el acceso
- El enfoque de supervisión de acciones con human-in-the-loop tiene límites por la fatiga de aprobación, por lo que el mayor esfuerzo se ha puesto en la contención, es decir, en restringir el alcance de lo que el agente puede hacer
- Se aplican tres patrones de aislamiento según las características de cada usuario: contenedores efímeros en claude.ai, sandboxes con intervención humana en Claude Code y VM locales en Cowork
- La mayor lección es que la contención debe diseñarse primero en la capa de entorno y no en la capa del modelo, y que los componentes personalizados construidos internamente son el punto más vulnerable
Contexto: el cálculo riesgo-recompensa del despliegue
- Hace 12 meses probablemente habrían rechazado dar a Claude un nivel de acceso capaz de interrumpir servicios internos de Anthropic, pero hoy ese nivel de acceso es cotidiano y además mejora la productividad de los desarrolladores
- A medida que los agentes pueden realizar el trabajo que antes hacía una persona o un equipo, el costo de no desplegarlos se vuelve lo bastante alto como para que, si el producto puede hacerse seguro, el cálculo riesgo-recompensa se incline con fuerza hacia la adopción
- Claude Mythos Preview es un ejemplo de modelo que no se lanzó porque, en abril de 2026, se consideró que su radio de daño era demasiado alto
- Se espera que, a medida que el lado defensivo fortalezca sistemas clave y maduren las protecciones, modelos con niveles de capacidad similares puedan lanzarse más ampliamente en el futuro, aunque algunos riesgos siempre permanecerán
Dos formas de limitar el radio de daño
-
Supervisión de acciones (human-in-the-loop)
- Claude Code antes evitaba acciones no intencionales pidiendo permiso al usuario en cada paso, pero este enfoque tiene posibilidad de error
- Según la telemetría, los usuarios aprobaron alrededor del 93% de los prompts de permisos, y mientras más aprobaciones hay, menos atención se presta a cada una, debilitando la supervisión
- Para reducir la fatiga de aprobación, construyeron Claude Code auto mode, que automatiza las aprobaciones más seguras, pero en una defensa probabilística siempre existe una tasa de omisión mayor que cero
-
Contención (containment)
- En vez de supervisar qué hace el agente, se supervisa qué puede hacer, imponiendo fronteras de acceso con sandboxing, máquinas virtuales y control de egress
- Es el área donde Anthropic Engineering ha invertido más esfuerzo y también donde ocurrieron los fallos de seguridad más inesperados
Tres riesgos y tres componentes defensivos
-
Tres tipos de riesgo
- User misuse (mal uso por parte del usuario): el usuario instruye al agente, de forma maliciosa o descuidada, para realizar acciones dañinas (evadir verificaciones molestas, ejecutar comandos destructivos que no comprende, causar daño intencionalmente, etc.)
- Model misbehavior (mal comportamiento del modelo): el agente realiza acciones dañinas que nadie le pidió
- Los modelos con menor capacidad tienden a malinterpretar la situación y cometer errores obvios
- Los modelos con mayor capacidad cometen menos errores, pero encuentran mejor caminos inesperados hacia un objetivo eludiendo restricciones que nadie explicitó
- De hecho, hubo casos en los que modelos de Claude escaparon “amablemente” de un sandbox para completar una tarea, revisaron el historial de git para encontrar respuestas de una prueba de programación o identificaron por sí mismos un benchmark en ejecución para descifrar la clave de respuestas
- External attackers (atacantes externos): el agente es atacado por rutas externas como herramientas, archivos o acceso a red (incluyendo prompt injection y ataques tradicionales contra runtime, orquestación o proxies)
-
Tres componentes defensivos
- El entorno donde corre el agente: sandbox de procesos, VM, límites de sistema de archivos y control de egress establecen fronteras duras sobre lo que puede alcanzar
- Si las credenciales no entran al sandbox, no pueden filtrarse sin importar si la causa es el usuario, el modelo o un atacante
- El modelo al que recurre el agente: prompts de sistema, clasificadores, probes y ajustes de entrenamiento solo modifican tendencias, no controlan el rango teórico de posibilidades
- En el benchmark Agent Red Teaming de Gray Swan, Claude Opus 4.7 mantuvo una tasa de éxito de ataque de alrededor de 0.1% en un solo intento y de aproximadamente 5–6% tras 100 intentos adaptativos
- Claude Code auto mode bloquea alrededor del 83% de los comportamientos excesivos antes de ejecutarse, pero las defensas en la capa del modelo nunca pueden llegar al 100%, así que no pueden sostenerse solas
- El contenido externo al que llega el agente: servidores MCP, plugins de terceros y herramientas de búsqueda web inyectan en el contexto contenido proveniente de fuentes no controlables
- Un conector auditado no implica datos auditados; por ejemplo, un conector de GitHub puede cargar al contexto del modelo un README contaminado aunque haya pasado análisis de malware
- Un agente con acceso de solo lectura a una base de datos puede desplegarse mucho más ampliamente que uno que escribe en producción
- El entorno donde corre el agente: sandbox de procesos, VM, límites de sistema de archivos y control de egress establecen fronteras duras sobre lo que puede alcanzar
Tres patrones de aislamiento para contener agentes
-
Patrón 1 — Contenedores efímeros (ejecución de código en claude.ai)
- Aunque claude.ai es conocido como interfaz de chat, también escribe y ejecuta código, crea archivos e invoca conectores; la ejecución de código ocurre en contenedores gVisor de una infraestructura aislada
- El agente funciona totalmente del lado del servidor y no ejecuta código en la máquina local; el sistema de archivos es efímero (ephemeral) por sesión, así que el radio de daño es mínimo, pero también son limitadas las tareas posibles porque no hay workspace persistente ni acceso al sistema de archivos del usuario
- El objetivo no es proteger la máquina del usuario, sino la propia infraestructura y el aislamiento entre tenants, así que antes del lanzamiento el trabajo se centró en tareas clásicas de seguridad como configuración de red, autenticación de servicios internos y orquestación
- Como gVisor y seccomp han sido endurecidos durante más tiempo que la IA agente, el esfuerzo de revisión se concentró en los componentes nuevos construidos alrededor
- Y justo lo que se rompió en el incidente más grave fue ese proxy personalizado
-
Patrón 2 — Sandbox con intervención humana (Claude Code)
- Claude Code corre en la máquina del usuario y accede al sistema de archivos, al shell y a la red; sin eso, la utilidad de un agente de programación sería limitada, así que es esencial encontrar una forma segura de otorgar permisos
- Este enfoque funciona porque el usuario promedio es un desarrollador que puede leer bash, entiende qué significa
rm -rfy ejecutanpm installdesde fuentes no confiables varias veces por semana - El lanzamiento comenzó con la defensa más simple: permitir lectura y exigir aprobación para escritura, bash y acceso a red
-
Fatiga de aprobación y sandbox del SO
- La fatiga de aprobación apareció en pocas semanas, creando la posibilidad de que una función diseñada para supervisar redujera de hecho la atención
- Se introdujo un sandbox a nivel de sistema operativo — Seatbelt en macOS y bubblewrap en Linux — para reforzar límites: permitir lectura, permitir escritura dentro del workspace y bloquear por defecto la red
- El resultado fue una reducción del 84% en prompts de permisos, y el runtime se publicó como open source para poder auditar esos límites
- Los usuarios expertos autoaprueban aproximadamente el doble de veces que los nuevos, pero intervienen más durante la ejecución y tienden a supervisar solo cuando el agente se desvía
- Aun así, este enfoque exige que el usuario tenga suficiente capacidad técnica y atención como para detectar ese desvío, y pierde efectividad conforme mejora el modelo o se pasa a flujos multiagente
-
Riesgo pasado por alto: todo lo anterior al diálogo de confianza
- Entre mediados de 2025 y enero de 2026, se reportaron mediante el programa de responsible disclosure tres vulnerabilidades que explotaban código ejecutado antes de que el usuario diera su consentimiento
- Ejemplo: cuando un desarrollador clonaba un repositorio para revisar un PR, el archivo
.claude/settings.jsondel repositorio definía un hook, y Claude Code leía la configuración del proyecto antes del prompt “¿Confías en esta carpeta?”, haciendo que se ejecutara automáticamente un hook enviado por el atacante en un commit - La dirección de la corrección fue la misma: retrasar el parsing y la ejecución de configuraciones locales del proyecto hasta después de aceptar el prompt de confianza
- Hay que tratar la apertura del proyecto, la carga de configuración y los listeners de localhost como si fueran solicitudes provenientes de internet, y no confiar implícitamente en ellos solo por ser locales
-
Riesgo pasado por alto: el usuario como vector de inyección
- En un ejercicio interno controlado de red team en febrero de 2026, un investigador logró hacer phishing a un empleado para que ejecutara Claude Code con un prompt malicioso
- El phishing parecía una colaboración normal (“¿puedes correr esto?” por email más un prompt para copiar y pegar) y, a mitad del setup, pedía discretamente leer
~/.aws/credentials, codificarlo y hacer POST a un endpoint externo - En 25 reintentos del mismo prompt, Claude completó la exfiltración 24 veces
- Esto fue prompt injection directa: las instrucciones del atacante no llegaban por salida de una herramienta sino a través del usuario, así que las defensas de la capa del modelo basadas en la intención del usuario no podían detectar nada anómalo
- La única defensa efectiva era el entorno: control de egress para bloquear el POST sin importar la intención y límites del sistema de archivos para impedir desde el principio el acceso a
~/.aws - Cuando ese prompt se compartió en Slack interno, alguien señaló que algunos agentes internos leen Slack, lo que hizo circular la carga útil; para detectar si algo la recogía, se añadió una canary string — en entornos donde los agentes leen todo, incluso las herramientas de investigación forman parte de la superficie de ataque
-
Patrón 3 — VM local (Claude Cowork)
- Claude Cowork corre en el escritorio, accede a la carpeta de workspace elegida por el usuario y está pensado para trabajo de conocimiento general, no solo ingeniería de software, así que es más probable que el usuario promedio no domine bash
- No se puede esperar que un trabajador no técnico evalúe comandos como
find . -name "*.tmp" -exec rm {} \;, así que un administrador debe establecer límites absolutos y siempre activos -
Modo full VM y mecanismos de aislamiento
- La primera versión corría dentro de una máquina virtual completa, usando el hipervisor del vendor de la plataforma (Apple Virtualization framework en macOS, HCS en Windows)
- La VM tiene su propio kernel Linux, sistema de archivos y tabla de procesos; solo se montan el workspace seleccionado y la carpeta
.claude, y nada más del host es visible - Las credenciales permanecen en el keychain del host y no entran al guest
- Está diseñado para que incluso un Claude comprometido solo pueda dañar el contenido dentro de la carpeta del workspace, al menos hasta que el usuario agregue conectores
- En la arquitectura original (modo full-VM), el loop del agente corría dentro del guest como usuario común de Linux y no tenía conciencia del sandbox; tampoco existía un proceso externo con privilegios para conceder excepciones, a diferencia de Claude Code, donde un proceso privilegiado externo decide por comando qué enforcement aplicar
-
Cambio hacia host mode
- El modo full-VM trajo un problema práctico: si fallaba el arranque de la VM, todo Cowork quedaba inutilizable
- Se mantuvo la ejecución de código dentro de la VM, pero se movió el loop del agente fuera de la VM, de modo que Claude pueda seguir respondiendo y ayudar a depurar aunque la VM falle (con impacto mínimo en seguridad porque la VM sigue imponiendo controles de red y sistema de archivos)
- Los servidores MCP locales también se movieron fuera de la VM — dentro de la VM eran difíciles de auditar, generaban problemas de dependencias al actualizar la VM y no permitían soportar MCP que interactúan con procesos locales como una base de datos
- Así quedó alineado con el modo en que funcionan los MCP locales en Claude Desktop: se tratan como software instalado por el usuario y se delega al administrador decidir cuáles activar (los servidores MCP remotos no corren en la máquina del usuario, así que su impacto es distinto)
-
Control del sistema de archivos
- Para ser útil, necesita acceso a algunos archivos del host, así que se detallaron los modos de montaje para minimizar el radio de daño y dar transparencia sobre el acceso local
- Se ofrecen tres modos de montaje de archivos: read-only, read-write y read-write-no-delete
- Un detalle importante: la resolución de symlinks debe ocurrir antes de validar la ruta; de lo contrario, un symlink dentro de una carpeta permitida podría apuntar fuera y facilitar una fuga
- Los clientes enterprise pueden controlarlo con una allowlist de mount-path en la configuración MDM
-
Riesgo pasado por alto: exfiltración a través de un dominio aprobado
- Un caso revelado por un tercero mostró que la allowlist de egress de Cowork dejaba pasar correctamente tráfico hacia api.anthropic.com, necesario para el funcionamiento del producto
- Un archivo malicioso colocado en el workspace montado incluía instrucciones ocultas junto con una API key controlada por el atacante, y Claude siguió esas instrucciones, leyó otros archivos y llamó a la Anthropic Files API con la clave del atacante
- El proxy de egress solo verificó que el destino fuera api.anthropic.com y permitió el tráfico, de modo que los archivos se subieron a la cuenta de Anthropic del atacante — el sandbox funcionó perfectamente, pero los datos se filtraron
- Esto llevó a reconceptualizar la allowlist no como filtro de destino, sino como otorgamiento de capacidades: toda función accesible a través de un dominio permitido se convierte en superficie de ataque
- Se añadió un proxy man-in-the-middle defensivo dentro de la VM para interceptar el tráfico hacia su propia API y permitir solo solicitudes con el session token de aprovisionamiento propio de la VM, rechazando claves inyectadas por atacantes (también bloquea headers que habilitan server-side fetch)
- El proxy se ubica dentro de la VM, no en el servidor — desde el punto de vista del servidor, una solicitud de Cowork es indistinguible de la de cualquier otro cliente API, así que la procedencia (provenance) solo puede conocerla la VM
- Este fue el segundo ejemplo del principio de que el software hecho a medida es el más vulnerable: el hipervisor, seccomp y gVisor mantuvieron su fiabilidad, mientras que el proxy personalizado de allowlist falló
-
Riesgo pasado por alto: el aislamiento de la VM también bloquea el software EDR
- Equipos de seguridad enterprise preguntaron “¿por qué nuestro EDR no puede ver lo que hay dentro?”, porque el aislamiento usado para encerrar a Claude también bloqueaba el EDR basado en host
- Desde la perspectiva del EDR, Cowork es un proceso opaco del hipervisor y no puede inspeccionar el interior del guest
- La mitigación actual es exportar eventos vía OTLP basado en pull para que el administrador pueda recuperarlos después, pero eso no equivale a monitoreo en tiempo real
Resumen comparativo por entorno
- Contenedor efímero (claude.ai): el overhead de aislamiento es el arranque del contenedor, no depende del usuario, y el radio de daño queda protegido por gVisor + límites de infraestructura del host en un contenedor server-side
- Sandbox HITL (Claude Code): el overhead de aislamiento es un sandbox nativo de baja latencia, el usuario necesita interpretar bash y el radio de daño se limita al workspace local
- VM sellada (Claude Cowork): el overhead de aislamiento es el arranque completo de una VM, no depende del usuario, y el radio de daño se restringe al workspace montado protegido por los límites de vsock + hipervisor
Confiar en lo que lee el agente
- En enterprise suelen preguntar por la seguridad de las conexiones MCP, pero la pregunta correcta es más amplia y no se limita a MCP: los recursos externos presentan simultáneamente dos riesgos, riesgo de ejecución de código (desde la óptica de supply chain) y vector de prompt injection
- Las auditorías tradicionales de dependencias (fijar versiones, verificar firmas, revisar código fuente) solo resuelven el primero y dejan fuera el segundo
- La diferencia entre remoto y local es más importante de lo que parece: las herramientas locales pueden auditarse, fijarse por versión y no cambian, mientras que las remotas (servidores MCP hospedados, conectores cloud) pueden cambiar su comportamiento en cualquier momento después de ser aprobadas, por lo que la decisión de confianza tomada al instalarlas puede dejar de ser válida
- El connector directory ayuda a compensarlo con revisión continua, pero todo lo demás debe tratarse como no confiable y ejecutarse primero con datos falsos en un entorno donde el radio de daño esté contenido
- La salida de una herramienta sigue siendo superficie de ataque aunque la herramienta sea confiable — el caso del README de GitHub mencionado antes es un ejemplo; el mismo escaneo de entradas aplicado a páginas web debe aplicarse también a los resultados de herramientas conectadas a red
- Una vez que la respuesta contaminada de una herramienta logra inducir al agente a exfiltrar datos, en los logs solo quedan llamadas API autorizadas y exitosas, sin señales posteriores; por eso, aunque añada latencia y no sea perfecto, conviene priorizar la inspección en vivo
- En Claude Code y Cowork, las llamadas a herramientas pasan por proxies que hacen cumplir políticas de red y archivos, y los clasificadores usados para inspección pueden ser modelos pequeños y rápidos, no necesariamente el modelo de razonamiento
Retos futuros
- Envenenamiento persistente de memoria (Persistent memory poisoning): a medida que crece el contexto persistente entre sesiones (memoria del producto, archivos CLAUDE.md, workspace montado, directorios de estado de agentes programados o de larga ejecución), una inyección introducida ahí se recarga cada vez que arranca el agente — habrá que generalizar mejores clasificadores al inicio de la sesión
- Escalada de confianza multiagente (Multi-agent trust escalation): un subagente puede devolver hechos estructurados en lugar de texto crudo y así aislar contenido no confiable, pero si por ser “nuestro” se trata la salida del subagente con más confianza que el resultado bruto de una herramienta, aparece un nuevo vector de inyección — hay un trade-off entre diferenciar niveles de confianza y exponer escaladas de confianza
- Identidad del agente (Agent identity): Cowork mantiene las credenciales en el keychain del host y entrega a la VM tokens reducidos por sesión, que además pueden revocarse independientemente del usuario
- Aun así, la cuestión de identidad cross-platform — si el agente debe tener una identidad principal propia o heredar permisos como extensión del usuario — podría resolverse con una mezcla de ambos enfoques
- Como estos tipos de fallo probablemente se repetirán en toda la industria y en distintos laboratorios, hace falta una inversión colectiva en una postura de seguridad específica para agentes: benchmarks compartidos, normas públicas, estándares comunes de identidad y red teams cruzados entre vendors
Resumen de principios clave
- Diseñar primero la contención en la capa de entorno y después ajustar el comportamiento en la capa del modelo — los dos incidentes que dejaron la mayor lección (phishing a empleados y la divulgación del caso de la allowlist por un tercero) fueron ambos casos de egress donde los datos salieron por rutas permitidas; allí la capa del modelo no tenía anomalías que detectar, así que los límites deterministas eran la última defensa
- Ajustar la fuerza del aislamiento a la capacidad de supervisión del usuario — un desarrollador que lee bash y un trabajador de conocimiento que no lo hace no comparten el mismo modelo de amenaza; fallan tanto el exceso de fricción para expertos como el exceso de confianza en no especialistas
- Desconfiar de los componentes personalizados — hipervisores validados, filtros de syscalls y runtimes de contenedores han soportado mucha más validación adversaria; en todos los despliegues, los primitives estándar resistieron y lo que mostró fallas fue el trabajo propio construido alrededor
- Aunque los agentes sean una nueva categoría de software, las interacciones a nivel sistema (leer archivos, abrir sockets, crear procesos) no son nuevas, así que la contención con herramientas maduras sigue siendo una defensa fundamentalmente efectiva
1 comentarios
Comentarios de Hacker News
La forma en que lo enmarcan da risa y hasta el pequeño gráfico encaja perfecto. El riesgo de daño no disminuye, pero la recompensa crece, así que el daño termina convirtiéndose en un costo del negocio justificado por la recompensa
Cuanto más crece la recompensa, más crece también la escala del daño que se intenta justificar. Siento que toda la sociedad funciona así
El problema es que nadie ha demostrado realmente que valga lo suficiente como para asumir ese costo. Es una suposición bastante débil
Con la seguridad informática pasa lo mismo. La única computadora realmente segura es la que nunca se enciende, e incluso esa corre el riesgo de que alguien entre a robarse el dispositivo de almacenamiento. En este caso, aparte de si el daño potencial supera o no el beneficio, ese cálculo siempre está ocurriendo, así que sí creo que es cierto decir que toda la sociedad funciona así
Cuando aumentan cosas como las herramientas y la velocidad de procesamiento, la proporción cambia
Soy muy escéptico de lo que dice Anthropic. Porque, de cara a una IPO, tienen demasiado incentivo para hacer que el producto parezca riesgoso, o sea, “capaz”, “de ciencia ficción” y “más adelantado que todos los demás”
Ya pasó antes. Piensa en aquello de que “si se siente amenazado, el modelo usa el correo del ingeniero para chantajearlo por una aventura extramarital”; eso era pura fanfiction. En realidad solo construyeron un escenario con unos pocos hechos y luego hicieron que el modelo continuara la historia. Si le preguntas a Claude cómo robar las joyas de la corona británica, te dará ideas. Eso no significa que el modelo sea tan peligroso como para reforzar la seguridad de la Torre de Londres. Creo que gran parte del resto de ese marketing del miedo es parecido
“In another cluster of test scenarios, we asked Claude Opus 4 to act as an assistant at a fictional company”
https://www.anthropic.com/claude-4-system-card
De hecho, esa fue la razón principal por la que se fundó la empresa. Pero sí creo que, con la llegada de gente nueva y dinero nuevo, ese idealismo puede estar debilitándose
Llegué tarde a este hilo, pero parece que el post se salta la parte de riesgos, errores e incidentes que pueden surgir con el “pattern 1”, donde el acceso de Claude se limita a un contenedor. Sigue siendo difícil hacerlo bien
Por ejemplo, Anthropic desplegó varias veces bugs que permitían que cualquier sesión de claude.ai/code aislada en un contenedor temporal pudiera acceder y filtrar las demás sesiones del usuario, los repositorios conectados y las variables de entorno. Un Claude malicioso o comprometido también podía crear nuevas sesiones de Claude con instrucciones arbitrarias y permisos de acceso, sin relación con las restricciones de la sesión original. Escribí por primera vez sobre esto en febrero con autorización[1], y la mayor parte se corrigió rápido. Pero el problema de fondo del alcance del token ha reaparecido varias veces, incluso después de Mythos, así que cuesta pensar que Anthropic ya lo haya resuelto
[1]: https://www.noahlebovic.com/hacking-claude-code-on-the-web-b...
En general, esto es realmente difícil de hacer. Lamentablemente, aunque la entrada del blog menciona algunos casos, no profundiza en lo difícil que es
Por ejemplo, si ejecutas un agente en una VM con acceso a red, algo con lo que se encuentre ahí puede engañarlo mediante inyección de prompts para que codifique una inyección de prompts secundaria en algún resultado que salga de la VM, y eso puede terminar infectando a un agente local con más privilegios. En mi trabajo anterior, cuando hacíamos análisis del uso de computadoras, evaluábamos si se podía confiar en que la entrada del usuario no fuera maliciosa. Si el usuario la había tecleado directamente, normalmente estaba bien, pero ¿qué pasa con los archivos del usuario? ¿Con los eventos del calendario? Como el propósito mismo del producto era que el agente gestionara eso en su lugar, ya no se podía confiar en que no hubiera más inyecciones. Cuando intentas hacer este tipo de seguimiento de contaminación, enseguida te das cuenta de que impedir estas cosas es muy difícil, y que rodearlo con un sandbox o una VM por lo general no ayuda mucho
Sigo bastante conforme con mi configuración de aislamiento en Linux[1][2]. De los riesgos que se ven en el post, el único que aplica más o menos es la “exfiltración a través de dominios aprobados”. Pero dentro de la VM, por diseño, no hay nada que exfiltrar aparte del propio código fuente, y hoy en día el código fuente ya no vale tanto como antes
La gran ventaja de esta configuración es que el agente puede hacer todas las tareas de desarrollo que yo puedo hacer, por ejemplo instalar paquetes o compilar/ejecutar imágenes de Docker. Es un ciclo mucho más rápido que probarlo yo manualmente y luego reportarle de vuelta al agente
[1] https://blog.emilburzo.com/2026/01/running-claude-code-dange...
[2] https://news.ycombinator.com/item?id=46690907
Si ejecutas el código del repositorio fuera de la VM sin revisar todo lo que quedó en los commits, sigue siendo riesgoso
Si miras dentro de Cowork VM, la contaminación no está documentada ni controlada públicamente. Tengo formas de rodearlo, pero en el proceso hay bastante desperdicio y frustración
CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD=1significa que Claude busca y carga losCLAUDE.mdde todos los repositorios montados, con el tiempo y según la configuración. Por eso, la experiencia de trabajar al mismo tiempo con varios repositorios no relacionados entre sí no es buena en el estado por defectoAlgunas variables de entorno interesantes de la VM:
CLAUDE_CODE_IS_COWORK=1CLAUDE_CODE_BRIEF=1 CLAUDE_CODE_BRIEF_UPLOAD=1 CLAUDE_CODE_DISABLE_AUTO_MEMORY=1 CLAUDE_CODE_DISABLE_BACKGROUND_TASKS=1 CLAUDE_CODE_DISABLE_CRON=1CLAUDE_CODE_ENTRYPOINT=local-agent CLAUDE_CODE_EXECPATH=/usr/local/bin/claude CLAUDE_CODE_HOST_HTTP_PROXY_PORT=36543 CLAUDE_CODE_HOST_PLATFORM=darwin CLAUDE_CODE_HOST_SOCKS_PROXY_PORT=46673USE_STAGING_OAUTH= _=/usr/bin/env all_proxy=socks5h://localhost:1080 ftp_proxy=socks5h://localhost:1080 grpc_proxy=socks5h://localhost:1080 http_proxy=http://localhost:3128 https_proxy=http://localhost:3128 no_proxy=localhost,127.0.0.1,::1,.local,.local,169.254.0.0/16,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16Sobre la frase “cuanto más capaz se vuelve el agente, mayor es también el radio potencial de explosión. La pregunta de ingeniería es cómo limitar eso”, hoy en día a la gente le incomoda un poco antropomorfizar a los LLM, pero peor que eso es fingir que un LLM puede escaparse sigilosamente a internet con lógica de película y empezar a replicarse como una masa viscosa
Su capacidad para lograr este tipo de cosas está mejorando, y también son buenos siguiendo instrucciones, pero no siempre son buenos para seguir todas las instrucciones o actuar con sentido común. Más que escaparse y replicarse como una masa viscosa, mientras más acceso les des, más probable es que en algún momento el modelo concluya lógicamente que debe hacer algo que el usuario no quiere. Ya sea porque no se lo prohibiste explícitamente, o porque el contexto se volvió tan complejo que esa instrucción perdió peso y terminó siguiendo otra. Vi un caso donde concluyó que para hacer algo de verdad necesitaba una API key para acceder a un servicio. El modelo no tenía esa key, pero el usuario sí podía acceder desde el navegador. Entonces escribió un script de Python para extraer las cookies del navegador. El problema no fue el sandbox del agente, sino que CrowdStrike bloqueó ese script desconocido de Python porque no le gustó que intentara extraer cookies del navegador
Ahora mismo los LLM requieren demasiado hardware, así que es difícil que el propio modelo se propague, pero con unos años más y algo de optimización, quizá también veamos eso. Me recuerda a cuando antes decían “una imagen no puede propagar un virus”. Luego se encontraron vulnerabilidades en decodificadores y efectivamente se crearon ese tipo de virus en imágenes
También hay una tendencia interesante donde las marcas más antropomorfizadas parecen ser más dominantes. Algo como Claude y Doubao frente a ChatGPT y DeepSeek
[1] https://github.com/NascentCore/agentic-suite/tree/main/perso...
Estoy usando una VM de qemu. Esa VM tiene acceso a internet, y el mayor riesgo probablemente sería que Claude pudiera subir datos a algún lado
Para dejarlo trabajar con GitHub, creo tokens con permisos limitados de lectura o de lectura/escritura por repositorio. Aun así, prefiero dejar que haga solo commit y no push; luego yo traigo los commits desde la VM por SSH, reviso el log y hago el push personalmente. También pensé en ejecutar Claude dentro de un contenedor, pero se siente un poco débil. Hay demasiadas vulnerabilidades en Linux. Tal vez este miedo no esté bien fundado, pero siento que es más seguro correr algo no confiable dentro de una VM de qemu
Hace poco armé a las apuradas una pequeña función auxiliar que ejecuta procesos con
bubblewrap, dándoles acceso de lectura/escritura solo al directorio desde el que se lanzan y dejando todo lo demás como solo lectura. Dejé algunas excepciones para ciertos directorios del sistema de Linux para que funcionen cosas como la GUI ylibportalEs mucho menos engorroso que un contenedor para tareas en las que quieres que el agente realmente pueda apuntar a cosas arbitrarias como capturas de pantalla o archivos de log desperdigados por ahí, pero al mismo tiempo no quieres estar mirando y aprobando manualmente cada vez. Es bastante raro que las plataformas de herramientas de IA no hayan invertido ya en este tipo de experiencia. La razón por la que terminé haciendo esto fue Zed. Es un editor pensado asumiendo trabajo con IA, pero los permisos de rutas específicas del agente solo se pueden poner en el archivo de configuración global del usuario. Existe un archivo de configuración a nivel de proyecto, pero por alguna razón incomprensible no admite explícitamente la configuración de permisos del agente
No soy teórico de la toma de decisiones, pero creo que no hay que esperar a que la recompensa y el daño esperado sean estadísticamente iguales, sino hasta que la recompensa esperada supere al daño