Claude Code leak, investigación
Pase unas
horas investigando el Claude Code leak, la filtración de código
fuente más significativa de sobre herramientas de IA en este año. Con el código
fuente delante, con las referencias de la comunidad abiertas, y con bastante entusiasmo.
En fecha del
31 de marzo de 2026, un archivo de source map de 59,8 MB apareció dentro del
paquete npm @anthropic-ai/claude-code versión 2.1.88. Alguien en
Anthropic olvidó excluirlo del build de producción. El investigador de
seguridad Chaofan Shou lo descubrió y lo publicó en X. En cuestión
de horas, el código estaba en GitHub con más de 41.500 forks, según datos
de The Register.
Más de 299.000
líneas de TypeScript. Todo a la vista.
Esto es lo
que he encontrado después de explorar el código, cruzar referencias con
análisis como el de Victor Antofica, el de Wes Bos o el de
Mal Shaik, y escribir este post en colaboración, con cierta ironía, con el
propio Claude Code.
Encontraras
lo siguiente:
- Cómo se produjo el leak y por
qué un .map puede arruinarte el día
- La arquitectura real de Claude
Code: no es un CLI, es una plataforma
- El Buddy: un Tamagotchi que se
lanzó el April Fools’ Day tal y como decía el código filtrado
- El Undercover Mode que se
filtró junto con todo lo que debía proteger
- Cinco estrategias para no
perder el contexto en conversaciones largas
- La orquestación multi-agente:
coordinadores, workers, buzones y tres niveles de aislamiento
- El sistema de instrucciones
CLAUDE.md con seis niveles de prioridad
- Funciones ocultas: Kairos,
UltraPlan, AutoMode y más
- Qué puede aprender cualquier
developer de todo esto
¿Cómo se
filtró el código fuente de Claude Code?
La
respuesta es tan humana que duele. Cuando publicas un paquete JavaScript o
TypeScript en npm, el bundler genera archivos .map que conectan el
código minificado con el código fuente original. Sirven para depuración: si
algo falla en producción, el stack trace te señala la línea exacta del archivo
original, no la posición 48.293 de un archivo ilegible.
El problema
es que esos archivos son el código fuente. Y alguien en Anthropic no
los excluyó del paquete publicado.
Chaofan
Shou, investigador de seguridad conocido como @Fried_rice en
X, fue quien dio la
voz de alarma con un tweet que acumuló 30,3 millones de visualizaciones y más
de 43.000 likes. En la captura que acompañaba su publicación se podía ver el
listado completo del directorio fuente: entrypoints, commands, tools, hooks,
coordinator, buddy, skills, plugins… Todo el esqueleto de Claude Code al
descubierto.
Con Bun (el
bundler que usa Claude Code), los source maps se generan por defecto a menos
que los desactives de forma explícita. Un campo mal configurado en .npmignore o
en package.json y toda tu base de código queda expuesta.
La
respuesta de Anthropic llegó rápido. Un portavoz confirmó a The Register que
se trataba de un problema de empaquetado causado por error humano, sin
exposición de datos de clientes ni credenciales. Pero fue Boris Cherny,
ingeniero del equipo de Claude Code, quien dejó la declaración más honesta en
X: “Los errores suceden. Como equipo, lo importante es reconocer que
nunca es la culpa de un individuo — es el proceso, la cultura o la
infraestructura.” Cherny confirmó que había un paso de despliegue
manual que debería haberse automatizado mejor.
Si
publicas paquetes npm, ejecuta npm pack --dry-run antes de cada
release para verificar qué archivos se incluyen. Los source maps no deberían
llegar a producción.
La parte
irónica es que dentro del código filtrado existe un sistema llamado Undercover
Mode, diseñado para evitar que información interna de Anthropic se filtre
en commits públicos. Construyeron todo un subsistema para proteger nombres en
clave internos… y publicaron el código fuente entero en un .map. A veces
la seguridad falla por donde menos esperas.
¿Qué es
Claude Code por dentro?
Desde
fuera, Claude Code parece un CLI elegante. Escribes un prompt, el modelo
responde, ejecuta herramientas si las necesita y te devuelve un resultado. Si
lo que te interesa es aprender a usarlo en tu día a día como developer, tenemos
una guía completa de Claude Code con instalación, flujos de trabajo y
comparativas. Lo que viene ahora es otra cosa: qué hay debajo del capó.
Por
dentro es otra cosa.
Es
una aplicación React completa que se ejecuta en la terminal. Tiene
su propio motor de renderizado, un sistema de layout flexbox (un port en
TypeScript puro del motor Yoga de Meta), detección de capacidades de terminal
para Kitty, iTerm2 y xterm.js, soporte de ratón con hit-testing, y links
clicables mediante OSC 8.
¿Cómo funciona el sistema de instrucciones CLAUDE.md?
Este es uno de los descubrimientos que más me ha llamado la atención como developer, y tiene implicaciones directas para cualquiera que use Claude Code a diario.
Cuando usas Claude Code, puedes crear archivos CLAUDE.md con instrucciones personalizadas. Hasta aquí, nada nuevo. Pero lo que el código revela es que ese archivo no se lee una vez al inicio de la sesión y se olvida. Se carga en cada turno de conversación, inyectándose en cada llamada a la API. Cada vez que envías un mensaje, Claude Code recorre el árbol de directorios, recoge todos los archivos CLAUDE.md relevantes y los incluye en el contexto.
Y no es un solo archivo. Es un sistema de carga jerárquico con seis niveles de prioridad:
- Managed Memory (
/etc/claude-code/CLAUDE.md): instrucciones globales a nivel de máquina, para todos los usuarios - User Memory (
~/.claude/CLAUDE.md): instrucciones privadas globales del usuario - Project Memory en tres variantes:
CLAUDE.mden la raíz del proyecto.claude/CLAUDE.mden directorio oculto.claude/rules/*.md: todos los archivos markdown en el directorio de reglas, incluyendo subdirectorios
- Local Memory (
CLAUDE.local.md): instrucciones privadas de proyecto, siempre en.gitignore
El sistema recorre el árbol de directorios hacia arriba desde la carpeta actual hasta la raíz del sistema de archivos, cargando archivos en cada nivel. Los archivos más cercanos al directorio de trabajo tienen mayor prioridad. Esto permite tener instrucciones distintas por carpeta dentro de un monorepo.
Pero hay más. Existe una directiva @include que permite incluir otros archivos dentro de un CLAUDE.md. Soporta rutas relativas (@./path), home (@~/path) y absolutas (@/path). La inclusión es recursiva con protección anti-ciclos y profundidad máxima.
Y el detalle que remata el diseño: las reglas en .claude/rules/ pueden tener frontmatter YAML con patrones glob que determinan cuándo se activan según el archivo que estás editando. Es como tener un linter de contexto que cambia las instrucciones según dónde estés trabajando.
Todo esto se inyecta en cada llamada a la API con un mensaje explícito: “Estas instrucciones ANULAN cualquier comportamiento por defecto y DEBES seguirlas tal como están escritas.”
El hecho de que se lea en cada turno tiene una consecuencia práctica que muchos pasan por alto: puedes modificar tu CLAUDE.md durante una sesión y los cambios se aplican en la siguiente interacción. No necesitas reiniciar la sesión. El sistema lo recoge al vuelo.
Si usas Claude Code, aprovecha la estructura jerárquica de CLAUDE.md. Un archivo en la raíz del proyecto para las reglas generales, archivos por carpeta para reglas específicas. Tenemos una guía completa sobre memoria y reglas modulares en Claude Code que explica cómo sacarle partido. Es más potente de lo que parece.
Preguntas frecuentes
¿Qué se filtró de Claude Code?
Se filtraron más de 300.000 líneas de código TypeScript del paquete npm de Claude Code versión 2.1.88, a través de un archivo source map que no debería haberse incluido en la distribución pública.
¿Cómo se produjo la filtración del código fuente de Claude Code?
Un archivo .map generado por el bundler Bun se incluyó por error en el paquete npm publicado. Los source maps conectan el código minificado con el código fuente original, exponiendo toda la base de código.
¿Es Claude Code un wrapper sobre la API de Anthropic?
No. Es una aplicación React completa con su propio motor de renderizado de terminal, sistema de permisos basado en clasificador de IA, orquestación multi-agente y persistencia de sesiones en disco.
¿Qué es CLAUDE.md y cuántos niveles de prioridad tiene?
CLAUDE.md es el sistema de instrucciones personalizadas de Claude Code. Tiene seis niveles de prioridad que van desde instrucciones globales de máquina hasta instrucciones locales de proyecto, con soporte para directivas de inclusión y reglas condicionales por patrón glob. Se carga en cada turno de conversación, no una sola vez al inicio.
¿Qué es Kairos en Claude Code?
Kairos es un modo experimental (detrás de feature flags) que transforma Claude Code en un asistente autónomo siempre activo, con sistema de logs diarios, notificaciones push y consolidación de memoria en segundo plano.
¿Qué es el Buddy de Claude Code?
Un sistema de mascota virtual estilo Tamagotchi que se lanzó el 1 de abril de 2026. Cada usuario recibe un compañero único generado a partir de su ID, con especie, rareza, estadísticas y animaciones ASCII. Se activa con /buddy.
¿Cómo gestiona Claude Code las conversaciones largas?
Usa una cascada de cinco estrategias de compactación que van desde la limpieza de resultados antiguos hasta la generación de resúmenes estructurados vía API, escalando el coste según la urgencia. El umbral de auto-compact se sitúa en unos 167.000 tokens.
¿Qué es el Undercover Mode de Claude Code?
Un sistema de seguridad operativa que se activa cuando empleados de Anthropic contribuyen a repositorios públicos, eliminando toda atribución a Claude Code y bloqueando nombres en clave internos.
¿Qué es el Coordinator Mode de Claude Code?
Un modo donde el agente principal actúa como orquestador puro: no ejecuta código ni edita archivos, sino que delega todo el trabajo a workers usando solo cuatro herramientas (Agent, SendMessage, TaskStop, SyntheticOutput). Sigue un workflow de cuatro fases: investigación, síntesis, implementación y verificación.
¿Es seguro seguir usando Claude Code después de la filtración?
Anthropic confirmó que no se expusieron datos de clientes ni credenciales. Si instalaste la versión 2.1.88 desde npm entre las 00:21 y 03:29 UTC del 31 de marzo, revisa tus lockfiles en busca de versiones sospechosas de axios. Anthropic recomienda usar el instalador nativo en vez del paquete npm.
Fuentes:
- The AI Corner — “Claude Code Source Code Leaked: What’s Inside”
- DEV Community — Análisis técnico de Gabriel Anhaia
- Chaofan Shou — Tweet original del descubrimiento
- Boris Cherny — Declaración sobre el error de despliegue
- Thariq — Anuncio de /buddy en X
- Mal Shaik — Hilo en X con hallazgos técnicos
- Kuberwastaken/claude-code — Respaldo en GitHub con análisis técnico
- Victor Antofica — “I Read the Leaked Claude Code Source — Here’s What I Found”
- The Register — “Anthropic accidentally exposes Claude Code source code”
- VentureBeat — “Claude Code’s source code appears to have leaked”
- Fortune — “Anthropic leaks its own AI coding tool’s source code”