Volver al Blog
Claude Code Serie · Parte 6/6 🏁 Artículo Final 14 min de lectura

El Build Dual de Claude Code: Qué Tiene Anthropic que Tú No

Hay dos Claude Codes. El que usas tú, y el que usan los empleados de Anthropic. Las diferencias no son cosméticas — son instrucciones más agresivas, herramientas que no existen en tu versión, y un beta header secreto que desbloquea funciones del servidor que nunca has visto.

G
Gonzalo Monzón
Pantalla dividida representando builds duales de software — interno vs externo

Hay dos Claude Codes. Tú solo conoces uno.

En algún lugar del código fuente de Claude Code — el que se compila, no el que ves en npm — hay una línea que lo cambia todo:

// La línea que divide dos mundos
if (process.env.USER_TYPE === 'ant') {
  // Este código solo existe para empleados de Anthropic
  // En tu build, estas líneas ni siquiera compilan
}

No es un feature flag. No es un toggle que puedas activar con una variable de entorno. Es código que literalmente no existe en tu versión — eliminado en tiempo de compilación por el bundler de Bun. Dead code elimination. Las funciones no están ocultas; no están.

A lo largo de esta serie hemos ido desmontando Claude Code capa por capa — desde el system prompt de 18 secciones hasta el sistema de permisos. Ahora, en este artículo final, llegamos a la pregunta más incómoda de todas: ¿qué tiene Anthropic que tú no tienes?

Tesis de este artículo

Claude Code tiene un build dual: "ant" (interno para Anthropic) y "external" (el que instalas desde npm). Las diferencias incluyen prompts más agresivos, herramientas exclusivas, skills internos, y un beta header secreto. Estas diferencias revelan exactamente qué piensa Anthropic sobre safety, productividad y el futuro de los agentes de código.

Mecanismo

Feature Gates en Tiempo de Compilación

Claude Code usa Bun como bundler. Y Bun tiene una feature poderosa: bun:bundle feature flags con tree-shaking en tiempo de compilación.

// El patrón fundamental del build dual
import { feature } from 'bun:bundle';

if (feature('internal_tools')) {
  // Este bloque entero se elimina si feature('internal_tools') === false
  // No se comenta, no se deshabilita — SE BORRA del bundle final
  registerTool(new TungstenTool());
  registerTool(new ConfigTool());
  registerTool(new SuggestBackgroundPRTool());
}

// En el build 'ant': feature('internal_tools') → true → código incluido
// En el build 'external': feature('internal_tools') → false → código eliminado

Esto es fundamentalmente diferente de un feature flag en runtime como GrowthBook o LaunchDarkly. Un flag de runtime existe en el código — está compilado, presente, evaluable. Lo puedes encontrar, activar, reverse-engineerar. Un feature gate de compilación es irreversible: el código no está ahí. No puedes activarlo porque no fue incluido.

El sistema documenta 19 feature flags de compilación. Los más relevantes:

Flag Build ant Build external
internal_tools ✓ true ✗ false
internal_prompts ✓ true ✗ false
internal_skills ✓ true ✗ false
beta_header ✓ true ✗ false
repl_mode ✓ true ✗ false
nested_agents ✓ true ✗ false
El tree-shaking de Bun es agresivo. Si feature('X') evalúa a false, todo el bloque condicional se elimina — incluyendo las importaciones que solo usa ese bloque. El build external es literalmente más pequeño porque le falta código.
Prompts

Los Prompts que Nunca Ves

Las diferencias más reveladoras no están en las herramientas — están en las instrucciones del system prompt. El build interno contiene directivas que cambian fundamentalmente cómo Claude se comporta:

Directiva Build ant (interno) Build external (tú)
Rechazo "Nunca digas que no puedes — muestra el error" (no existe)
Verbosidad "≤25 palabras entre herramientas, ≤100 palabras respuesta final" "Sé conciso"
Comentarios "Minimiza comentarios en código a menos que sea necesario" (sin instrucción)
Rigurosidad "Sé riguroso: edge cases, cambios adyacentes, cobertura completa" (no existe)

Analicemos por qué existen estas diferencias:

"Nunca rechaces" es la más reveladora. Cuando Claude trabaja para un empleado de Anthropic, se le instruye a nunca negarse a ejecutar una acción — y en su lugar, mostrar el error exacto. La lógica es simple: un empleado de Anthropic puede debuggear. Si Claude dice "no puedo hacer eso", un ingeniero interno pierde tiempo. Si muestra un stack trace, ese ingeniero lo resuelve en segundos.

Para usuarios externos, esa directiva no existe. Anthropic prefiere que Claude rechace con gracia antes de que un usuario sin contexto técnico vea un error crudo y piense que la herramienta está rota. Es una decisión de safety operacional, no de capacidad técnica.

La regla de verbosidad es igualmente significativa: ≤25 palabras entre tool calls. Anthropic ha aprendido internamente que menos texto entre acciones = más productividad. Cada palabra que Claude escribe entre una lectura de archivo y una edición es tiempo perdido para un ingeniero que sabe qué está pasando. La versión externa dice "sé conciso" — la interna dice "cállate y trabaja".

🎯 La filosofía implícita: Anthropic trata a sus usuarios internos como expertos que quieren velocidad, y a sus usuarios externos como una audiencia diversa que necesita protección. No es paternalismo — es gestión de riesgo asimétrica.

Herramientas

Las Herramientas que No Tienes

El build ant incluye herramientas que simplemente no existen en tu CLI. No están deshabilitadas — el código que las define fue eliminado en compilación:

⚙️

ConfigTool

ant-only

Gestión directa de configuración interna de Claude Code. Permite ajustar comportamientos, thresholds y políticas en tiempo real sin editar archivos de configuración. Un panel de control que tú no tienes.

🔬

TungstenTool

ant-only

Framework de testing interno de Anthropic. Tungsten permite ejecutar tests de integración y validación directamente desde Claude Code — un puente entre el agente y la infraestructura de QA interna.

🔀

SuggestBackgroundPRTool

ant-only

Creación automática de Pull Requests. Claude puede sugerir y crear PRs en background sin intervención manual. Imagina terminar un refactor y que el PR se cree solo, con diff, descripción y reviewers asignados.

🖥️

REPLTool

ant-only

Una VM que envuelve todas las herramientas primitivas (Bash, FileRead, FileEdit) en un entorno REPL unificado. En lugar de herramientas individuales, Claude opera en un modo conversacional con el sistema de archivos.

🤖

Agentes Anidados (Nested Agents)

ant-only

La capacidad más poderosa: subagentes que crean subagentes. Un Claude orquestador puede lanzar agentes hijos, cada uno con su propio contexto y herramientas, y coordinar el trabajo. Es el patrón "multi-agent" que la industria lleva meses intentando resolver — y Anthropic lo usa internamente como si fuera git commit.

Lo más interesante no es que estas herramientas existan — es que Anthropic las usa a diario para su propio desarrollo. Claude Code, la herramienta, se desarrolla parcialmente con Claude Code. Los empleados de Anthropic tienen un Claude significativamente más capaz de hacer cambios grandes, crear PRs automáticamente y coordinar múltiples agentes.

Skills

Los Skills que No Puedes Ejecutar

Además de herramientas, el build interno tiene slash commands exclusivos — skills que se registran solo cuando USER_TYPE === 'ant':

/verify

Verificación automatizada completa: ejecuta tests, lint, type checking y validaciones en secuencia. No es solo "correr tests" — es un pipeline completo de CI que corre localmente antes de hacer push.

En tu build, verificar requiere ejecutar cada paso manualmente o pedirle a Claude que lo haga paso a paso.

/remember

Promoción de memorias a CLAUDE.md. Cuando un empleado descubre algo importante durante una sesión, /remember lo extrae, lo formatea y lo inserta en el archivo de memoria persistente del proyecto.

En tu build, puedes editar CLAUDE.md manualmente o pedirle a Claude que lo haga, pero no hay un comando dedicado que optimice el formato y la ubicación.

/stuck

Diagnóstico de sesiones congeladas. Cuando Claude se queda en loop o no puede avanzar, /stuck analiza el estado, identifica el bloqueo, y sugiere soluciones.

Pero lo más revelador: /stuck tiene integración directa con el canal #claude-code-feedback de Slack. Un empleado atascado puede enviar un diagnóstico automático al equipo de Claude Code con un solo comando. El agente no solo se auto-diagnostica — reporta a sus creadores.

Esto es dogfooding extremo: los bugs se reportan desde dentro de la herramienta, por la herramienta misma.

/stuck es el skill que mejor resume la filosofía del build dual: internamente, Anthropic no solo usa Claude Code — tiene un canal de feedback directo integrado en la herramienta. Los bugs no se descubren en GitHub Issues; se descubren mientras un ingeniero programa y se reportan en el mismo flujo.
API

El Beta Header Secreto

El build interno envía un header HTTP adicional en cada request a la API de Anthropic:

// Solo en el build 'ant'
headers['anthropic-beta'] = 'cli-internal-2026-02-09';

// Combinado con los headers normales:
headers['anthropic-beta'] = [
  'context-management-2025-06-27',
  'context-1m',
  'cli-internal-2026-02-09'  // ← Solo para empleados
].join(',');

cli-internal-2026-02-09 — un header que solo existe en el build ant. ¿Qué desbloquea? No lo sabemos con certeza, pero las implicaciones son fascinantes:

Desbloqueo de funciones del servidor

El header probablemente activa capacidades server-side que no están disponibles en la API pública. Modelos con instrucciones diferentes, limits más altos, o capacidades experimentales que aún no están en producción para el público.

Versiones experimentales del modelo

Con este header, los empleados podrían estar usando una versión del modelo que no es la misma que ves tú. Optimizaciones de velocidad, instrucciones de sistema adicionales en el server, o modelos fine-tuneados para coding que aún están en pruebas.

La implicación más grande

Existen funciones de la API que no están ni siquiera en el CLI público. No solo el cliente es diferente — el servidor se comporta diferente según quién llama. El build dual no es solo client-side; es full-stack.

Análisis

Qué Revela Esto Sobre Anthropic

El build dual no es solo una decisión de ingeniería — es una declaración de principios. Cada diferencia entre los builds ant y external codifica una creencia sobre cómo debería funcionar la IA:

🛡️ Sobre Safety

Las instrucciones más agresivas van al equipo interno — el que puede debuggear. "Nunca rechaces" solo es seguro cuando el humano al otro lado tiene contexto completo. La safety no es un absoluto; es proporcional a la capacidad del usuario.

Sobre Productividad

"≤25 palabras entre herramientas" es brutal pero efectivo. Anthropic ha descubierto internamente que menos verbosidad = más velocidad. El modelo ideal no habla — ejecuta. Esto sugiere que el futuro de Claude Code será más silencioso, no más conversacional.

🤖 Sobre Agencia

Internamente confían en "nunca rechaces + muestra el error". Esto significa que Anthropic cree que un agente confiable y transparente es mejor que uno precavido y opaco. El rechazo educado es un parche, no una solución.

🔮 Sobre el Futuro

Features como REPLTool y nested agents son una preview de lo que Claude Code será en 6 meses. El patrón histórico es claro: features que empiezan en ant migran a external una vez están probadas y seguras.

🍽️ Sobre Dogfooding

Anthropic no solo usa Claude Code — usa una versión significativamente más poderosa. /stuck con integración a Slack, PRs automáticos, agentes anidados. Esto no es dogfooding cosmético donde el CEO usa la app para una demo. Es dogfooding real: desarrollan su producto con su producto, usando una versión que lleva meses de ventaja sobre la pública.

Cierre

La Pregunta Abierta

Después de 6 artículos desmontando Claude Code pieza por pieza, terminamos donde empezamos: con una pregunta sobre quién tiene acceso a qué.

¿Deberían ser públicas estas features? El argumento a favor es simple: si "nunca rechaces" funciona mejor, dáselo a todos. Si REPLTool es más productivo, publícalo. Si nested agents funcionan, desbloqueálos. La IA debería ser un ecualizador, no un amplificador de privilegio.

¿Es ético tener builds diferenciados? Toda empresa de software tiene features internas. Slack usa Slack con features que tú no tienes. Chrome de Google tiene flags que nunca llegarán al Canary público. Pero con IA, la pregunta se amplifica: ¿es lo mismo tener un botón extra que tener un agente fundamentalmente más capaz?

¿Qué features migrarán a external? Si el patrón histórico se mantiene, esperaría ver REPLTool y /verify en el build público dentro de 3-6 meses. Los agentes anidados probablemente más tarde — requieren infraestructura de coordinación que aún está madurando. SuggestBackgroundPRTool podría ser el siguiente candidato, dado que el ecosistema de GitHub Actions ya gestiona la complejidad de CI/CD.

¿Qué significa esto para la competencia? Cursor, Windsurf, Cline, Aider — ninguno tiene un build dual público. O tienen una versión para todos, o tienen features enterprise con licencia. El modelo de Anthropic es diferente: el build dual no monetiza — optimiza. Los empleados no pagan más; tienen permiso para romper cosas.

🏁 Final de la serie

Este fue el artículo 6 de 6. Empezamos desmontando las 18 capas del system prompt — la superficie visible — y terminamos aquí, en el sistema de builds que decide qué versión de Claude Code existe para cada persona.

Del prompt al compilador. De lo que ves a lo que no puedes ver. Anatomía completa.

¿Construyes agentes con LLMs?

En Cadences diseñamos agentes con los mismos patrones industriales que hemos descubierto en Claude Code. Si quieres aplicar estos principios a tu negocio, hablemos.

G

Gonzalo Monzón

Fundador de CadencesLab. Ingeniero de software, arquitecto de sistemas multi-agente y eterno estudiante de cómo piensan las máquinas. Esta serie nace de meses de reverse engineering sobre las herramientas que usamos a diario.

Newsletter

No te pierdas ninguna historia

Suscríbete para recibir nuevos lanzamientos, capítulos exclusivos y contenido detrás de cámaras.

  • Insights y artículos semanales
  • Contenido exclusivo y acceso anticipado
  • Sin spam, cancela cuando quieras

Respetamos tu privacidad. Puedes darte de baja cuando quieras.