Lo esencial
Eres el director de una empresa. Cuando hace falta una auditoría legal, no estudias derecho tú mismo. Contratas a un abogado, le explicas la tarea, él trabaja en su oficina y te trae el resultado. No viste lo que hizo por dentro: solo necesitas el resultado final. Un subagente funciona exactamente igual: el agente principal contrata a un especialista, este trabaja en su propio contexto y devuelve un resultado resumido.
Conceptos clave
- Subagente = un agente aparte con contexto independiente (su propia ventana de contexto)
- 5 razones para usarlos: contexto, herramientas, reutilización, especialización, costo
- Subagentes integrados: Explore (solo lectura), Plan (solo lectura), General-purpose (todas las herramientas)
- Formato del archivo: Markdown con frontmatter YAML en
.claude/agents/<name>.md - Crear un subagente personalizado: pedírselo a Claude o escribir el archivo a mano (el asistente
/agentsde versiones anteriores se eliminó) - Ámbitos: proyecto (
.claude/agents/), usuario (~/.claude/agents/), CLI, managed, plugin - Configuración: 18 campos de frontmatter (rol, herramientas, modelo, hooks, memoria, color y más)
- El anidamiento está limitado: por defecto los subagentes pueden llamar a otros, pero no más allá de tres niveles
- Cuándo NO usar subagentes
Teoría
Qué es un subagente, técnicamente
Según la documentación oficial de Anthropic: los subagentes son asistentes de IA especializados que se encargan de ciertos tipos de tareas. Cada subagente trabaja en su propia ventana de contexto, con un prompt del sistema personalizado, acceso limitado a herramientas y permisos independientes.
Usa un subagente cuando una tarea secundaria vaya a ensuciar la conversación principal con resultados de búsqueda, logs o contenido de archivos que ya no vas a usar. El subagente hace el trabajo en su contexto y devuelve solo un resumen.
Crea un subagente personalizado cuando lanzas una y otra vez al mismo trabajador con las mismas instrucciones.
Cuando el agente principal llama a un subagente, se crea una instancia aparte de Claude con el contexto limpio. Esa instancia:
- Recibe una tarea concreta y un prompt del sistema personalizado (NO el prompt del sistema completo de Claude Code)
- Trabaja de forma independiente: no ve el historial de la sesión principal (la excepción es fork, ver abajo)
- Solo tiene acceso a las herramientas permitidas
- Al terminar, devuelve el resultado al agente principal y "muere"
- Su contexto se libera
Agente principal (contexto acumulado: 30K tokens)
│
├── Llama al subagente "researcher"
│ ├── El subagente recibe: la tarea + los datos necesarios
│ ├── Trabaja con el contexto limpio (0 + tarea = ~2K tokens)
│ ├── Reúne información, analiza
│ └── Devuelve: un resumen comprimido (500 tokens) → muere
│
El agente principal sigue con el resumen
(30K + 500 = 30.5K, no 30K + todo el trabajo del subagente)Sin subagentes, cada acción se suma al contexto principal. Después de 2 horas de trabajo, el contexto está saturado y el modelo empieza a "olvidar" las primeras partes de la conversación.
Sobre el anidamiento: en las primeras versiones, los subagentes no podían llamar a otros subagentes. Ahora pueden, pero no más allá de tres niveles por debajo de la conversación principal (el límite se ajusta con la variable CLAUDE_CODE_MAX_SUBAGENT_SPAWN_DEPTH). Para empezar, es más fácil mantener la cadena plana: llama a los subagentes uno tras otro desde la conversación principal, así es más fácil entender quién hizo qué.
5 razones para usar subagentes
Razón 1: cuidar el contexto
Reunir 50 páginas de datos en el agente principal = 50 páginas en el contexto para siempre. Delégalo a un subagente → las reúne, las comprime en un resumen de 1 página → te lo devuelve. El contexto del agente principal queda limpio.
Razón 2: limitar las herramientas
El subagente "investigador" solo tiene acceso a la búsqueda web y a leer archivos. El subagente "programador" tiene acceso a bash y a editar archivos. El agente principal lo tiene todo.
¿Por qué importa? Un subagente no puede borrar un archivo por accidente si no tiene acceso a bash. Principio de mínimo privilegio.
Razón 3: reutilización
Creas el subagente "competitor-researcher" una vez → lo usas en 10 proyectos distintos. No tienes que describir cada vez cómo hacer un análisis de competencia.
Razón 4: especialización
Un agente enfocado en una sola tarea la hace mejor que un agente universal. Un "researcher" con un prompt especial para buscar información → mejor que un agente "hazlo todo" que intenta buscar, analizar y escribir al mismo tiempo.
Razón 5: control de costos
Tareas distintas requieren modelos distintos:
Reunir datos (trabajo mecánico) → Claude Haiku ($1 entrada / $5 salida por 1 millón de tokens)
Analizar datos (requiere razonamiento) → Claude Sonnet ($2 / $10)
Decisiones estratégicas → Claude Opus ($4 / $20)Precios de la API a octubre de 2026. Precios y versiones vigentes: Lo vigente. Si eliges el modelo correcto para cada tarea, ahorras varias veces en las tareas mecánicas.
Subagentes integrados de Claude Code
Claude Code trae varios subagentes integrados. Cada uno hereda los permisos de la sesión principal con restricciones adicionales de herramientas. El modelo de los agentes integrados depende de la versión y de la configuración; revisa lo vigente en la documentación:
Explore: búsqueda rápida de solo lectura en el código
- Modelo: por defecto el de la sesión principal, se puede cambiar
- Herramientas: solo lectura (Write y Edit prohibidos)
- Para qué: buscar archivos, navegar el código, analizar la estructura del proyecto
- Al llamarlo, Claude indica el nivel de detalle: quick (búsqueda puntual), medium (equilibrio), very thorough (análisis completo)
Plan: investigador para el modo de planificación
- Modelo: lo hereda de la sesión principal
- Herramientas: solo lectura (Write y Edit prohibidos)
- Para qué: reunir contexto antes de armar un plan
- Se usa cuando estás en plan mode y Claude necesita entender el código
General-purpose: universal para tareas complejas
- Modelo: lo hereda de la sesión principal
- Herramientas: todas las disponibles
- Para qué: investigaciones complejas, operaciones de varios pasos, modificar código
Auxiliares:
| Agente | Cuándo se usa |
|---|---|
| statusline-setup | Al ejecutar /statusline |
| claude-code-guide | Con preguntas sobre las funciones de Claude Code |
| fork | Cuando necesitas un subagente que herede toda la conversación (ver abajo) |
Estos subagentes se activan automáticamente cuando el agente principal decide que la tarea es buena para delegar.
Formato del archivo de un subagente (oficial)
Los subagentes se definen como archivos Markdown con frontmatter YAML. Es el formato oficial de Anthropic:
--- name: code-reviewer description: Reviews code for quality and best practices tools: Read, Glob, Grep model: sonnet --- You are a code reviewer. When invoked, analyze the code and provide specific, actionable feedback on quality, security, and best practices.
Estructura: frontmatter YAML (ajustes) + cuerpo en Markdown (el prompt del sistema del subagente). El subagente recibe este prompt del sistema, la tarea del agente principal, el CLAUDE.md del proyecto y una instantánea del git status, pero NO el prompt del sistema completo de Claude Code ni el historial de la conversación.
Todos los campos del frontmatter YAML (18 campos)
| Campo | Obligatorio | Qué hace |
|---|---|---|
name |
Sí | Identificador único (minúsculas + guiones) |
description |
Sí | Cuándo debe Claude delegarle una tarea a este subagente |
tools |
No | Lista de herramientas permitidas. Si no se indica, las hereda todas |
disallowedTools |
No | Herramientas que hay que prohibir (de las heredadas) |
model |
No | Modelo: sonnet, opus, haiku, fable, el ID completo (por ejemplo, claude-opus-5-5) o inherit. Si no se indica, el modelo de la sesión principal |
permissionMode |
No | Modo: default, acceptEdits, auto, dontAsk, bypassPermissions, plan, manual |
maxTurns |
No | Máximo de pasos del agente antes de detenerse |
skills |
No | Skills que se precargan en el contexto al iniciar |
mcpServers |
No | Servidores MCP disponibles solo para este subagente |
hooks |
No | Hooks de ciclo de vida atados al subagente |
memory |
No | Memoria persistente: user, project o local |
background |
No | true: mantenerlo en segundo plano aunque Claude pida esperar el resultado |
omitClaudeMd |
No | true: no cargar el CLAUDE.md del proyecto en este subagente |
effort |
No | Nivel de esfuerzo: low, medium, high, xhigh, max |
isolation |
No | worktree: una copia aislada del repositorio con git worktree |
color |
No | Color en la terminal: red, blue, green, yellow, purple, orange, pink, cyan |
initialPrompt |
No | Prompt automático al iniciarlo como agente principal (con --agent) |
experimental |
No | Ajustes experimentales, por ejemplo el tiempo de vida de la caché del prompt |
Dónde guardar los subagentes (ámbitos)
| Ubicación | Ámbito | Prioridad |
|---|---|---|
| Managed settings | Organización | 1 (la más alta) |
Flag de CLI --agents |
Sesión actual | 2 |
.claude/agents/ |
Proyecto actual | 3 |
~/.claude/agents/ |
Todos los proyectos del usuario | 4 |
Plugin agents/ |
Donde el plugin esté activado | 5 (la más baja) |
Los de proyecto (.claude/agents/): para el equipo, súbelos a git. Los de usuario (~/.claude/agents/): personales, disponibles en todas partes.
Si hay un conflicto de nombres, gana la prioridad más alta.
Crear un subagente: tres formas
Forma 1: pedírselo a Claude (recomendada)
En las versiones anteriores había un asistente /agents para esto. Desde la versión 2.1.198 se eliminó: el comando /agents ahora solo recuerda qué hacer. Los subagentes se crean pidiéndoselo a Claude:
Crea un subagente personal market-researcher en ~/.claude/agents/: investiga mercados y competidores, solo lee archivos y busca en la web, modelo haiku, color green
Claude escribirá el archivo con el frontmatter necesario. Revisa el resultado y ajusta la descripción para que quede claro cuándo llamar al agente.
Forma 2: a mano, creando un archivo .md
Crea el archivo .claude/agents/market-researcher.md:
--- name: market-researcher description: Investiga mercados y reúne datos sobre la competencia. Úsalo cuando haga falta reunir información sobre el mercado, competidores, precios o tendencias. tools: Read, Glob, Grep, WebFetch, WebSearch model: haiku color: green --- Eres un investigador de mercados. Reúne datos de fuentes abiertas, analiza a la competencia, encuentra tendencias. Devuelve un resumen estructurado con los hallazgos clave.
Los subagentes se cargan al iniciar la sesión. Si creaste el archivo a mano, reinicia la sesión para que se cargue.
Forma 3: con la CLI (para automatizar o probar rápido)
claude --agents '{
"code-reviewer": {
"description": "Expert code reviewer. Use proactively after code changes.",
"prompt": "You are a senior code reviewer. Focus on code quality, security, and best practices.",
"tools": ["Read", "Grep", "Glob", "Bash"],
"model": "sonnet"
}
}'Los subagentes de la CLI viven solo en la sesión actual y no se guardan en disco.
Elegir el modelo
Claude Haiku → para tareas mecánicas (reunir datos, dar formato, buscar)
Claude Sonnet → para tareas que requieren razonar (análisis, código, redacción)
Claude Opus → para tareas estratégicas complejas (arquitectura, análisis crítico)Prioridad para elegir el modelo (de la más alta a la más baja):
- El parámetro
modelen una llamada concreta - El campo
modelen el frontmatter del subagente - La variable de entorno
CLAUDE_CODE_SUBAGENT_MODEL - El modelo de la sesión principal
Para obligar a todos los subagentes a usar un mismo modelo, agrega una segunda variable, CLAUDE_CODE_SUBAGENT_MODEL_FORCE=1: así se impone sobre lo demás.
Nota a octubre de 2026: Claude Haiku 4.5 podría retirarse de la API no antes del 15.10.2026. Revisa la página Lo vigente.
Manejo de herramientas: tools vs. disallowedTools
Allowlist: indicar SOLO las permitidas:
tools: Read, Grep, Glob, BashEl subagente NO puede editar archivos, escribir ni usar MCP.
Denylist: prohibir algunas concretas y heredar el resto:
disallowedTools: Write, EditEl subagente hereda TODO menos escribir y editar archivos.
Si se indican ambos, primero se aplica disallowedTools y luego tools.
Limitar las llamadas anidadas: Agent(type)
Cuando un subagente se lanza como agente principal (con --agent), puedes limitar a qué subagentes puede llamar. Si quitas Agent de la lista tools, el subagente no podrá lanzar a nadie:
tools: Agent(worker, researcher), Read, BashSolo se permiten worker y researcher. Los demás se bloquean. La profundidad total del anidamiento se limita con CLAUDE_CODE_MAX_SUBAGENT_SPAWN_DEPTH (el valor 1 desactiva el anidamiento).
Memoria persistente (memory)
Un subagente puede acumular conocimiento entre sesiones:
memory: project| Scope | Dónde se guarda | Cuándo usarlo |
|---|---|---|
user |
~/.claude/agent-memory/<name>/ |
Conocimiento para todos los proyectos |
project |
.claude/agent-memory/<name>/ |
Conocimiento del proyecto (súbelo a git) |
local |
.claude/agent-memory-local/<name>/ |
Conocimiento del proyecto (NO va a git) |
Con la memoria activada, el subagente recibe automáticamente instrucciones para leer y escribir en su MEMORY.md.
Código de colores
En la terminal, cada subagente se muestra con un color distinto. Disponibles: red, blue, green, yellow, purple, orange, pink, cyan.
Ves de un vistazo quién está trabajando.
Ejemplos de subagentes personalizados (en el formato oficial)
Code Reviewer (solo lectura):
--- name: code-reviewer description: Analiza el código en busca de bugs, problemas de seguridad y calidad. Úsalo DESPUÉS de escribir cualquier código, antes del commit. tools: Read, Glob, Grep model: sonnet color: red memory: project --- You are a code reviewer. Focus on code quality, security, and best practices. Check your memory for patterns you've seen before.
Debugger:
--- name: debugger description: Debugging specialist for errors and test failures. Úsalo cuando haya un mensaje de error concreto. tools: Read, Grep, Glob, Bash model: sonnet color: yellow --- You are an expert debugger. Analyze errors, identify root causes, and provide fixes.
Build Validator (con un modelo barato):
--- name: build-validator description: Ejecuta las pruebas y verifica que el código compile. Úsalo antes de cada deploy. tools: Bash, Read model: haiku color: green --- Run tests and build checks. Report only failures with error messages.
Subagente con su propio servidor MCP:
---
name: browser-tester
description: Tests features in a real browser using Playwright
mcpServers:
- playwright:
type: stdio
command: npx
args: ["-y", "@playwright/mcp@latest"]
---
Use the Playwright tools to navigate, screenshot, and interact with pages.Llamar a un subagente: cuatro formas
1. Delegación automática: Claude decide por sí mismo con base en la descripción del subagente:
Analiza el rendimiento de la base de datos
→ Claude ve que existe el subagente db-reader → delega2. Mencionarlo en el prompt: dale una pista a Claude:
Use the code-reviewer subagent to look at my recent changes
3. @-mention: garantiza que se llame a un subagente concreto:
@"code-reviewer (agent)" revisa el módulo auth
4. Lanzar toda la sesión como subagente:
claude --agent code-reviewerEl prompt principal se reemplaza por el prompt del sistema del subagente.
Foreground vs. background y fork
- Foreground: bloquea la conversación principal hasta que termina. Las solicitudes de permiso llegan a ti.
- Background: trabaja en paralelo mientras sigues. En las sesiones interactivas actuales, los subagentes trabajan en segundo plano por defecto (fork mode activado). Las solicitudes de permiso aparecen en la sesión principal con el nombre del subagente.
Presiona Ctrl+B para mandar la tarea actual a segundo plano.
Fork: un subagente que hereda toda la conversación (prompt del sistema, historial, herramientas, modelo) en lugar de empezar desde cero. Usa la caché de prompt compartida, así que es más barato que un subagente normal. Para lanzar un fork a mano: /subtask <descripción de la tarea>.
Cuándo usar subagentes
✅ Usa subagentes cuando:
- La tarea produce un montón de salida que no hace falta en el contexto principal (pruebas, logs, documentación)
- Necesitas limitar las herramientas o los permisos disponibles
- El trabajo es autosuficiente y se puede devolver un resumen
- Son tareas que se repiten muchas veces en distintos proyectos
✅ Investigación en paralelo:
Investiga los módulos authentication, database y API en paralelo, en subagentes separados
Cada subagente investiga su área de forma independiente y luego Claude sintetiza los hallazgos.
❌ No uses subagentes cuando:
- La tarea requiere ir y venir con frecuencia (ajustes iterativos)
- Varias fases comparten mucho contexto (plan → implement → test)
- Son correcciones rápidas y puntuales (el costo extra > la tarea misma)
- Importa la velocidad: el subagente empieza desde cero y pierde tiempo reuniendo contexto
Para una pregunta rápida sobre el contexto actual usa /btw en lugar de un subagente: ve todo el contexto, pero no tiene herramientas.
Práctica
Tarea 1: crear un subagente "investigador" pidiéndoselo a Claude
- Abre Claude Code
- Pídele: "Crea un subagente personal
market-researcheren~/.claude/agents/" y describe los parámetros:- Name:
market-researcher - Description: explica cuándo usarlo (2-3 oraciones)
- Tools: solo lectura y búsqueda web
- Model: haiku (ahorro)
- Color: green
- Memory: no hace falta
- Name:
- Abre el archivo creado y revisa el frontmatter
- Pruébalo: pídele a Claude "usa el subagente market-researcher para investigar a los 3 competidores principales en el nicho de educación en línea"
- Observa en la terminal cómo el agente principal le delega la tarea al subagente (color verde)
- Comprueba que el subagente devolvió un resumen estructurado
Tarea 2: crear un subagente a mano, como archivo
- Crea el archivo
.claude/agents/code-reviewer.md:
--- name: code-reviewer description: Reviews code for quality, security, and best practices. Use proactively after code changes. tools: Read, Glob, Grep model: sonnet color: red memory: project --- You are a senior code reviewer. Analyze code and provide specific, actionable feedback on quality, security, and best practices. Update your agent memory with patterns and conventions you discover.
- Reinicia la sesión de Claude Code
- Verifica: escribe
@y comprueba que code-reviewer aparece en las sugerencias - Pruébalo:
@"code-reviewer (agent)" revisa el archivo server.ts
Tarea 3 (extra): crear un subagente con la CLI
claude --agents '{"quick-search": {"description": "Fast codebase search", "prompt": "Search the codebase and return concise findings.", "tools": ["Read", "Grep", "Glob"], "model": "haiku"}}'Herramientas y recursos
- Pedírselo a Claude: la forma principal de crear un subagente (el asistente
/agentsse eliminó en la versión 2.1.198; ahora el comando solo recuerda las carpetas) claude agents: la pantalla de todas las sesiones en segundo plano (agent view, research preview), no la lista de archivos de subagentes.claude/agents/: carpeta de subagentes del proyecto (archivos.mdcon frontmatter YAML)~/.claude/agents/: carpeta de subagentes del usuario (disponibles en todos los proyectos)- Agentes integrados: Explore (solo lectura), Plan (solo lectura), General-purpose (todas las herramientas), fork
- Documentación: https://code.claude.com/docs/en/sub-agents
Ideas clave
Un subagente es un especialista contratado. Lo contratas, le explicas la tarea, recibes el resultado y lo dejas ir. Tu contexto principal queda limpio.
El archivo de un subagente = Markdown con frontmatter YAML. 18 campos de configuración: del modelo y las herramientas a la memoria, los hooks y sus propios servidores MCP.
Principio de mínimo privilegio:
tools: Read, Grep, Glob: el researcher lee, no escribe.disallowedTools: Write, Edit: otro camino al mismo resultado.
Haiku para reunir datos, Sonnet para analizar, Opus para la estrategia. El modelo correcto = un ahorro de varias veces.
El anidamiento está limitado a tres niveles. Para empezar, mantén la cadena plana: llama a los subagentes uno tras otro desde la conversación principal.
Un subagente con
memory: projectacumula conocimiento entre sesiones. Después de 10 revisiones de código, conoce los patrones de tu proyecto.
Qué sigue
La marca se guarda solo en este navegador y no se envía a ningún sitio. Mi progreso