lunes, 6 de abril de 2026

Claude Code leak, investigación

 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.

Captura del tweet de Chaofan Shou mostrando el listado de archivos del código fuente filtrado de Claude Code

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.

Captura del tweet de Boris Cherny reconociendo el error de despliegue en Claude Code

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:

  1. Managed Memory (/etc/claude-code/CLAUDE.md): instrucciones globales a nivel de máquina, para todos los usuarios
  2. User Memory (~/.claude/CLAUDE.md): instrucciones privadas globales del usuario
  3. Project Memory en tres variantes:
    • CLAUDE.md en la raíz del proyecto
    • .claude/CLAUDE.md en directorio oculto
    • .claude/rules/*.md: todos los archivos markdown en el directorio de reglas, incluyendo subdirectorios
  4. 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:

No hay comentarios:

Publicar un comentario

Claude Code leak, investigación

 Claude Code leak, investigación Pase unas horas investigando el  Claude Code leak , la filtración de código fuente más significativa de sob...