7 min de lectura
El 31 de marzo de 2026, el código fuente completo de Claude Code apareció en la red abierta. No como consecuencia de un ataque informático, sino debido a una línea de configuración olvidada en un paquete NPM. Las 512.000 líneas de TypeScript que el investigador de seguridad Chaofan Shou descubrió en el archivo de source map dibujan un panorama que va mucho más allá de un simple chatbot de IA: Claude Code es una runtime completa de agentes con sistema de herramientas, modelo de permisos y coordinación multiagente. El análisis del código no solo desvela cómo Anthropic ha construido su herramienta para desarrolladores más destacada, sino también cómo funciona, en términos fundamentales, la próxima generación de arquitecturas de agentes de IA.
En resumen
- El paquete NPM @anthropic-ai/claude-code v2.1.88 contenía un archivo de source map de 59,8 MB con el código fuente completo en TypeScript.
- La arquitectura se basa en Bun, TypeScript y React/Ink, con aproximadamente 40 herramientas integradas y un sistema de permisos de cuatro niveles.
- 44 feature flags apuntan a funciones no publicadas: modo daemon autónomo (KAIROS), coordinación multiagente y control por voz.
- Anthropic confirma: «Error de empaquetamiento causado por un fallo humano». No se vieron afectados datos de clientes ni claves API.
- Más de 8.100 réplicas en GitHub fueron eliminadas mediante notificaciones DMCA, pero el código sigue circulando en plataformas descentralizadas.
Qué ocurrió
La mañana del 31 de marzo, Chaofan Shou publicó su hallazgo en X. Shou es doctorando en la Universidad de California en Berkeley, cofundador de la startup de seguridad blockchain Fuzzland y investigador de bug bounty con 1,9 millones de dólares estadounidenses en vulnerabilidades reportadas. Su hallazgo: la versión 2.1.88 del paquete oficial NPM @anthropic-ai/claude-code incluía el archivo cli.js.map. Este archivo de source map de 59,8 MB contenía, en su campo sourcesContent, el código fuente completo en TypeScript de Claude Code: aproximadamente 1.900 archivos con 512.000 líneas de código de producción.
Además, la source map hacía referencia a un archivo ZIP alojado en un bucket público de Cloudflare R2 perteneciente a Anthropic. En cuestión de horas, el código fue replicado en GitHub. El repositorio más destacado alcanzó más de 41.500 forks, antes de que las notificaciones DMCA de Anthropic entraran en vigor y GitHub desactivara un total de 8.100 repositorios.
El código sigue disponible en plataformas descentralizadas. Proyectos derivados – entre ellos una portación a Python y una reescritura en Rust – sobrevivieron a las medidas DMCA, ya que no constituyen copias directas. La causa probable: Anthropic utiliza Bun como runtime. Un error conocido y abierto en Bun (reportado el 11 de marzo de 2026) documenta que el bundler de Bun genera source maps de forma predeterminada, incluso en modo producción. Ni .npmignore ni el campo files en package.json estaban configurados para excluir los archivos .map.
La comunidad reaccionó con rapidez – y con sentido del humor irónico – : en menos de 24 horas surgieron una portación a Python (claw-code, con 30.000 estrellas en GitHub en tiempo récord) y una reescritura en Rust. En Hacker News, un comentario dominó la discusión: «Anthropic comercializa a Claude como una herramienta para escribir código, y su propio código se filtra por la ausencia de una entrada en .npmignore».
Destacable: este fue el segundo incidente de privacidad en Anthropic en una semana. Pocos días antes, unas 3.000 carpetas internas aparecieron en una caché pública accesible – entre ellas detalles sobre un modelo de IA no publicado con el nombre en clave interno «Mythos». Para una empresa que aspira a una salida a bolsa con una valoración estimada en 380.000 millones de dólares estadounidenses, el momento no podría ser más inoportuno.
No una interfaz de chat, sino una runtime de agentes
El análisis técnico del código fuente confirma lo que muchos desarrolladores en la nube ya sospechaban: Claude Code no es un chatbot con interfaz de terminal. Es una runtime modular de agentes que envuelve un gran modelo de lenguaje con un extenso conjunto de herramientas.
La arquitectura central: Bun en lugar de Node.js como runtime (Anthropic adquirió la empresa matriz del proyecto Bun). React con Ink para el renderizado en terminal. Zod v4 para la validación de esquemas de todas las entradas y salidas de las herramientas. OpenTelemetry y gRPC se cargan únicamente bajo demanda para minimizar el tiempo de arranque – un patrón clásico de lazy loading que indica un enfoque decidido en la experiencia del desarrollador (Developer Experience).
El sistema de herramientas comprende unas 40 herramientas discretas y controladas por permisos: acceso al sistema de archivos, ejecución de Bash, recuperación web, búsqueda con glob, integración con LSP (Language Server Protocol) y conexión con servidores externos MCP (Model Context Protocol). Solo el motor de consultas – encargado de llamadas a API, streaming, almacenamiento en caché, orquestación y conteo de tokens – representa 46.000 líneas de código.
El modelo de permisos opera en cuatro niveles: Plan (solo lectura), Estándar (con diálogos de confirmación), Auto (wildcard de autorización) y Bypass (acceso completo). Un clasificador determina qué nivel de permiso requiere cada acción. Una capa de validación de Bash examina los comandos antes de su ejecución en busca de indicadores de riesgo. Todo el sistema admite sandboxing a nivel de sistema operativo para el sistema de archivos y la red.
«Earlier today, a Claude Code release included some internal source code. No sensitive customer data or credentials were involved or exposed. This was a release packaging issue caused by human error, not a security breach.»
– Anthropic, declaración oficial, 31.03.2026
El sistema de almacenamiento está estructurado en tres niveles: un archivo compacto MEMORY.md con referencias breves constituye el primer nivel. Las notas específicas del proyecto se cargan de forma contextual. El tercer nivel busca selectivamente sesiones anteriores, en lugar de cargar todo el historial completo. Este diseño aborda un problema fundamental de las aplicaciones basadas en LLM: las ventanas de contexto son limitadas, pero el contexto del proyecto crece ilimitadamente.
La integración con entornos IDE se realiza mediante un puente bidireccional autenticado con JWT hacia VS Code y JetBrains. En este contexto, Claude Code actúa simultáneamente como cliente MCP y servidor MCP: puede integrar herramientas externas y, a su vez, funcionar como herramienta para otros sistemas. Esta decisión arquitectónica posiciona a Claude Code no como un producto independiente, sino como una capa de integración para la infraestructura de desarrollo.
44 feature flags desvelan la hoja de ruta
Particularmente reveladoras son las 44 feature flags de tiempo de compilación para funciones no publicadas. Revelan hacia dónde dirige Anthropic el desarrollo de Claude Code:
KAIROS es un modo daemon autónomo que ejecuta Claude Code como agente de fondo permanente. Presupuesto de bloqueo de 15 segundos por acción y registros diarios de tipo append-only. Un subsistema denominado autoDream consolida observaciones durante los periodos de inactividad y transforma notas vagas en hechos concretos. Más de 150 menciones en el código fuente indican un desarrollo avanzado – no un mero experimento.
COORDINATOR_MODE implementa la orquestación multiagente: un agente Claude gestiona varios agentes trabajadores en paralelo. La instrucción del system prompt para el coordinador dice: «Do not rubber-stamp weak work». Esto no es multiagente como proyecto de investigación, sino como arquitectura de producción.
ULTRAPLAN es un modo de planificación profunda con hasta 30 minutos de ejecución en el lado del servidor – una magnitud superior a la duración típica de las interacciones actuales con LLM.
Además existen VOICE_MODE (control por voz push-to-talk en la terminal), BRIDGE_MODE (control remoto de una instancia de Claude Code mediante un proceso externo) y BUDDY – una mascota tipo Tamagotchi en la terminal con 18 especies, niveles de rareza y cinco atributos (depuración, paciencia, caos, sabiduría y sarcasmo). La mascota se genera a partir de un hash del ID de usuario y estaba prevista, al parecer, como una broma de abril (Easter egg).
Dos detalles técnicos merecen especial atención: un mecanismo anti-distilación (flag: ANTI_DISTILLATION_CC) inyecta definiciones falsas de herramientas en las solicitudes de API. Objetivo: contaminar los datos de entrenamiento de competidores que registren el tráfico de API para entrenar sus propios modelos. Y un modo encubierto (Undercover Mode) elimina todas las referencias a Anthropic cuando Claude Code opera en repositorios públicos. La instrucción interna es: «You are operating UNDERCOVER in a PUBLIC/OPEN-SOURCE repository. Do not blow your cover.»
Qué implica esto para las arquitecturas en la nube
La filtración confirma una tendencia que los arquitectos en la nube deben seguir atentamente: las herramientas de desarrollo impulsadas por IA no son simples contenedores ligeros de API. Son runtime completas con su propia infraestructura, gestión de memoria y lógica de orquestación.
Tres conclusiones para los equipos que integran herramientas de IA en sus procesos de desarrollo:
La complejidad subyacente es considerable. 512.000 líneas de código para una herramienta CLI ilustran el esfuerzo de ingeniería necesario para integrar productivamente un LLM en flujos de trabajo de desarrollo. El sistema de herramientas, el modelo de permisos, el sistema de almacenamiento: cada capa es un componente de software independiente. Quienes planeen integraciones similares internamente deberían evaluar el alcance de forma realista.
Multiagente es una arquitectura de producción. La implementación del modo Coordinator muestra un patrón concreto: un agente orquestador delega tareas a trabajadores paralelos, supervisa su calidad y consolida los resultados. Este patrón es trasladable a arquitecturas cloud-native basadas en microservicios – y proviene de un sistema en producción, no de un artículo académico.
Las source maps en paquetes NPM siguen siendo un riesgo infravalorado. La configuración de construcción predeterminada de Bun genera source maps de forma predeterminada. Cualquier equipo que utilice Bun en sus canalizaciones CI/CD debe verificar si los archivos .map terminan en los artefactos publicados. Un `npm pack –dry-run` antes de cada publicación es la contramedida más sencilla. Que este problema haya ocurrido tres veces en Anthropic (v0.2.8, v0.2.28 y ahora v2.1.88) demuestra que la revisión manual no es suficiente. Una puerta automática en CI que detenga la construcción si detecta archivos .map en el artefacto es la solución adecuada.
Además, la filtración plantea una pregunta estratégica: si los agentes de IA deben tomarse en serio como runtime de sistemas, sus modelos de permisos y sandboxing deben cumplir los mismos estándares de seguridad que cualquier otra infraestructura de producción. Seis CVE documentados en Claude Code antes de la filtración – entre ellos fugas de claves API y saltos de sandbox – indican que el sector aún no ha alcanzado de forma generalizada este grado de madurez.
Preguntas frecuentes
¿Se expusieron datos de clientes o claves API?
No. Anthropic y análisis de seguridad independientes confirman que ni los datos de los clientes ni las credenciales estaban incluidos en el código fuente. Lo expuesto fue el código de la aplicación CLI de Claude Code, no los modelos de IA, los datos de entrenamiento ni los secretos operativos.
¿Qué es una source map y por qué supone un riesgo?
Las source maps son archivos JSON que vinculan el código JavaScript compilado con el código fuente original. Contienen un campo sourcesContent con el texto fuente completo y legible. En paquetes de producción, revelan la arquitectura, la lógica interna y los puntos finales. Herramientas como reverse-sourcemap reconstruyen a partir de un único archivo .map toda la estructura de directorios.
¿Por qué Anthropic utiliza Bun en lugar de Node.js?
Anthropic adquirió la empresa matriz del proyecto Bun. Bun ofrece tiempos de arranque más rápidos y una cadena de herramientas de bundling integrada, decisiva para herramientas CLI. Sin embargo, el bundler de Bun genera source maps de forma predeterminada – un error documentado (reportado el 11 de marzo de 2026) que contribuyó a la filtración.
¿Sigue siendo accesible el código fuente?
En GitHub se desactivaron más de 8.100 repositorios mediante DMCA. El código sigue disponible en plataformas descentralizadas como Gitlawb. Proyectos independientes han reproducido la arquitectura en Python y Rust – como implementaciones propias, no están sujetos a la DMCA.
¿Qué significan las feature flags para los usuarios de Claude Code?
Las 44 flags muestran funciones en desarrollo activo. KAIROS (daemon autónomo), COORDINATOR_MODE (multiagente) y VOICE_MODE (entrada por voz) apuntan a una ampliación sustancial. Cuándo y si estas funciones se liberarán para todos los usuarios es incierto tras la filtración – Anthropic podría ajustar sus hojas de ruta internas.
Recopendaciones de lectura de la redacción
- → Source Map en el paquete NPM: cómo Anthropic expuso 512.000 líneas de código de producción (SecurityToday) – El análisis de seguridad de la cadena de suministro del incidente
Fuente de imagen: Pexels / Markus Spiske (px:6190327)