Arquitectura de agentes: cómo crear entornos de desarrollo impulsados por IA
# El sistema completo para crear entornos de agentes de IA listos para producción. Habilidades, hooks, memoria, subagentes, orquestación multiagente y los patrones que convierten a los agentes de programación con IA en una infraestructura confiable.
TL;DR: Claude Code no es un cuadro de chat con acceso a archivos. Es un entorno de ejecución programable con 30 eventos documentados del ciclo de vida, cada uno compatible con hooks mediante scripts de shell que el modelo no puede omitir. Agrupa hooks en dispatchers, dispatchers en skills, skills en agentes y agentes en flujos de trabajo, y obtendrás un harness de desarrollo autónomo que aplica restricciones, delega trabajo, conserva memoria entre sesiones y coordina deliberaciones multiagente. Claude Code v2.1.147 incorporó la herramienta
Workflow, desactivada de forma predeterminada (CLAUDE_CODE_WORKFLOWS=1), lo que llevó la coordinación multiagente determinista desde scripts creados íntegramente por los usuarios hacia una primitiva nativa del entorno de ejecución; v2.1.149 refuerza la misma lección desde el ámbito de la seguridad mediante correcciones para la omisión de permisos en PowerShell y para la lista de permitidos del entorno aislado de git worktree. Los hooks y evidence gates siguen siendo responsables de la corrección.5253 Esta guía abarca todas las capas de ese conjunto: desde un solo hook hasta un sistema de consenso de 10 agentes. No requiere ningún framework. Todo está hecho con bash y JSON.
Andrej Karpathy acuñó un término para describir lo que crece alrededor de un agente LLM: garras. Son los hooks, scripts y mecanismos de coordinación que permiten al agente aferrarse al mundo que existe fuera de su ventana de contexto.1 La mayoría de los desarrolladores tratan a los agentes de programación con IA como asistentes interactivos. Escriben un prompt, observan cómo editan un archivo y continúan con otra cosa. Este enfoque limita la productividad a aquello que puedes supervisar personalmente.
El modelo mental de infraestructura es diferente: un agente de programación con IA es un entorno de ejecución programable con un núcleo LLM. Cada acción que realiza el modelo pasa por hooks que tú controlas. Defines políticas, no prompts. El modelo opera dentro de tu infraestructura del mismo modo que un servidor web funciona sujeto a las reglas de nginx. No te sientas frente a nginx a escribir solicitudes. Lo configuras, lo despliegas y lo supervisas.
La diferencia importa porque los beneficios de la infraestructura se acumulan. Un hook que bloquea credenciales en comandos de bash protege cada sesión, cada agente y cada ejecución autónoma. Una skill que incorpora tus criterios de evaluación se aplica de manera uniforme, tanto si la invocas tú como si lo hace un agente. Un agente que revisa la seguridad del código ejecuta las mismas comprobaciones, estés observándolo o no.2
Puntos clave
- Los hooks garantizan la ejecución; los prompts, no. Usa hooks para linting, formateo, comprobaciones de seguridad y cualquier tarea que deba ejecutarse siempre, independientemente del comportamiento del modelo. El código de salida 2 bloquea acciones. El código de salida 1 solo muestra una advertencia.3
- Las skills incorporan conocimientos especializados del dominio y se activan automáticamente. El campo
descriptionlo determina todo. Claude utiliza razonamiento LLM (no coincidencia de palabras clave) para decidir cuándo aplicar una skill.4 - Los subagents evitan que el contexto se sature. Las ventanas de contexto aisladas para exploración y análisis mantienen ligera la sesión principal. Ejecuta subagents independientes en paralelo y utiliza equipos de agentes cuando los trabajadores necesiten una coordinación continua.5
- La memoria reside en el sistema de archivos. Los archivos persisten entre ventanas de contexto. CLAUDE.md, MEMORY.md, los directorios de reglas y los documentos de traspaso forman un sistema estructurado de memoria externa.6
- La deliberación multiagente permite detectar puntos ciegos. Un solo agente no puede cuestionar sus propias suposiciones. Dos agentes independientes con distintas prioridades de evaluación detectan fallas estructurales que los controles de calidad no pueden abordar.7
- El patrón de harness es el sistema. CLAUDE.md, hooks, skills, agentes y memoria no son funciones independientes. Se combinan para formar una capa determinista entre el modelo y tú, capaz de escalar junto con la automatización.
Cómo usar esta guía
| Experiencia | Comienza aquí | Después, explora |
|---|---|---|
| Usas Claude Code a diario y quieres aprovecharlo más | El patrón de harness | Sistema de skills, Arquitectura de hooks |
| Creas flujos de trabajo autónomos | Patrones de subagents | Coordinación multiagente, Patrones de producción |
| Evalúas la arquitectura de agentes | Por qué importa la arquitectura de agentes | Marco de decisión, Consideraciones de seguridad |
| Configuras un harness para un equipo | Diseño de CLAUDE.md | Arquitectura de hooks, Tarjeta de referencia rápida |
Cada sección se basa en la anterior. El Marco de decisión que aparece al final ofrece una tabla de consulta para elegir el mecanismo adecuado según cada tipo de problema.
La ruta dorada de cinco minutos
Antes de la inmersión profunda, aquí tienes el camino más corto desde cero hasta un harness funcional. Un hook, un skill, un subagent, un resultado.
Paso 1: crea un hook de seguridad (2 minutos)
Crea .claude/hooks/block-secrets.sh:
#!/bin/bash
INPUT=$(cat)
CMD=$(echo "$INPUT" | jq -r '.tool_input.command // empty')
if echo "$CMD" | grep -qEi '(AKIA|sk-|ghp_|password=)'; then
echo "BLOCKED: Potential secret in command" >&2
exit 2
fi
Conéctalo en .claude/settings.json:
{
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [{ "type": "command", "command": ".claude/hooks/block-secrets.sh" }]
}
]
}
}
Resultado: cada comando bash que Claude ejecuta ahora se analiza en busca de credenciales filtradas. El modelo no puede omitir esta verificación.
Paso 2: crea un skill de revisión de código (1 minuto)
Crea .claude/skills/reviewer/SKILL.md con frontmatter (name: reviewer, description: Review code for security issues, bugs, and quality problems. Use when examining changes, reviewing PRs, or auditing code., allowed-tools: Read, Grep, Glob) y una lista de verificación: inyección SQL, XSS, secretos codificados, manejo de errores ausente, funciones de más de 50 líneas.
Resultado: Claude activa automáticamente esta experiencia cada vez que mencionas revisar, verificar o auditar.
Paso 3: genera un subagent (30 segundos)
En cualquier sesión de Claude Code, pídele a Claude que revise los últimos 3 commits en busca de problemas de seguridad usando un agente separado. Claude genera un Explore agent que lee el diff, aplica tu skill de revisión y devuelve un resumen. Tu contexto principal se mantiene limpio.
Lo que ahora tienes
Un harness de tres capas: una puerta de seguridad determinista (hook), experiencia de dominio que se activa automáticamente (skill) y análisis aislado que protege tu contexto (subagent). Cada sección a continuación amplía una de estas tres capas.
Por qué importa la arquitectura de agentes
Simon Willison enmarca el momento actual en torno a una sola observación: escribir código ahora es barato.8 Correcto. Pero el corolario es que la verificación es ahora la parte costosa. El código barato sin infraestructura de verificación produce bugs a escala. La inversión que rinde no es un mejor prompt. Es el sistema que rodea al modelo y atrapa lo que el modelo pasa por alto.
Tres fuerzas hacen que la arquitectura de agentes sea necesaria:
Las ventanas de contexto son finitas y con pérdida. Cada archivo leído, salida de herramienta y turno de conversación consume tokens. Microsoft Research y Salesforce probaron 15 LLMs a través de más de 200.000 conversaciones simuladas y encontraron una caída de rendimiento promedio del 39% de la interacción de un solo turno a la interacción de múltiples turnos.9 La degradación comienza en tan solo dos turnos y sigue una curva predecible: las ediciones precisas de múltiples archivos en los primeros 30 minutos se degradan a una visión de túnel de un solo archivo para el minuto 90. Las ventanas de contexto más largas no arreglan esto. La condición “Concat” del mismo estudio (conversación completa como un único prompt) logró el 95,1% del rendimiento de un solo turno con contenido idéntico. La degradación proviene de los límites entre turnos, no de los límites de tokens.
El comportamiento del modelo es probabilístico, no determinista. Decirle a Claude “ejecuta siempre Prettier después de editar archivos” funciona aproximadamente el 80% del tiempo.3 El modelo podría olvidarlo, priorizar la velocidad o decidir que el cambio es “demasiado pequeño.” Para cumplimiento, seguridad y estándares de equipo, el 80% no es aceptable. Los hooks garantizan la ejecución: cada Edit o Write activa tu formateador, siempre, sin excepciones. Lo determinista gana a lo probabilístico.
Las perspectivas individuales pasan por alto problemas multidimensionales. Un solo agente que revisaba un endpoint API verificó la autenticación, validó el saneamiento de entrada y comprobó los encabezados CORS. Certificado de salud impecable. Un segundo agente, al que se le indicó por separado actuar como pentester, encontró que el endpoint aceptaba parámetros de consulta sin límite que podían provocar denegación de servicio mediante amplificación de consultas a la base de datos.7 El primer agente nunca lo verificó porque nada en su marco de evaluación trataba la complejidad de las consultas como una superficie de seguridad. Esa brecha es estructural. Ninguna cantidad de ingeniería de prompts la soluciona.
La arquitectura de agentes aborda las tres: los hooks imponen restricciones deterministas, los subagents gestionan el aislamiento de contexto y la orquestación multi-agente aporta perspectivas independientes. Juntos forman el harness.
El patrón harness
El harness no es un framework. Es un patrón: un conjunto componible de archivos, scripts y convenciones que envuelve a un agente de programación con IA en una infraestructura determinista. Sus componentes:
┌──────────────────────────────────────────────────────────────┐
│ THE HARNESS PATTERN │
├──────────────────────────────────────────────────────────────┤
│ ORCHESTRATION │
│ ┌────────────┐ ┌────────────┐ ┌────────────┐ │
│ │ Agent │ │ Agent │ │ Consensus │ │
│ │ Teams │ │ Spawning │ │ Validation│ │
│ └────────────┘ └────────────┘ └────────────┘ │
│ Multi-agent deliberation, parallel research, voting │
├──────────────────────────────────────────────────────────────┤
│ EXTENSION LAYER │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ Skills │ │ Hooks │ │ Memory │ │ Agents │ │
│ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │
│ Domain expertise, deterministic gates, persistent state, │
│ specialized subagents │
├──────────────────────────────────────────────────────────────┤
│ INSTRUCTION LAYER │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ CLAUDE.md + .claude/rules/ + MEMORY.md │ │
│ └──────────────────────────────────────────────────────┘ │
│ Project context, operational policy, cross-session memory │
├──────────────────────────────────────────────────────────────┤
│ CORE LAYER │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ Main Conversation Context (LLM) │ │
│ └──────────────────────────────────────────────────────┘ │
│ Your primary interaction; finite context; costs money │
└──────────────────────────────────────────────────────────────┘
Capa de instrucciones: Los archivos CLAUDE.md y los directorios de reglas definen lo que el agente sabe sobre tu proyecto. Se cargan automáticamente al iniciar la sesión y después de cada compactación. Esta es la memoria arquitectónica a largo plazo del agente.
Capa de extensiones: Los skills aportan conocimientos especializados del dominio que se activan automáticamente según el contexto. Los hooks proporcionan controles deterministas que se ejecutan en cada llamada de herramienta coincidente. Los archivos de memoria conservan el estado entre sesiones. Los agentes personalizados ofrecen configuraciones especializadas de subagents.
Capa de orquestación: Los patrones multiagente coordinan agentes independientes para tareas de investigación, revisión y deliberación. Los límites de creación evitan una recursión descontrolada. La validación por consenso garantiza la calidad.
La idea clave: la mayoría de los usuarios trabaja exclusivamente en la capa central, mientras observa cómo crecen el contexto y los costos. Los usuarios avanzados configuran las capas de instrucciones y extensiones, y luego utilizan la capa central únicamente para la orquestación y las decisiones finales.2
Harnesses administrados frente a autoalojados (abril de 2026)
Durante los primeros meses de 2026, la única opción real era «crear tu propio harness». Eso cambió en abril de 2026. Anthropic lanzó Claude Managed Agents en beta pública el 8 de abril: bucle del harness + ejecución de herramientas + contenedor sandbox + persistencia del estado como una API REST, con un costo de tokens estándar más USD 0,08 por hora de sesión. La actualización de Agents SDK de OpenAI, publicada el 16 de abril, formalizó la misma separación: el harness y la capacidad de cómputo como capas independientes, con proveedores nativos de sandbox (Blaxel, Cloudflare, Daytona, E2B, Modal, Runloop y Vercel) y funciones de instantánea y rehidratación para resistir la pérdida de un contenedor.2324
La interfaz más completa de SDK para OpenAI llegó en openai-agents Python v0.14.0 (publicada el 15 de abril de 2026 y anunciada el 16 de abril): una subclase SandboxAgent de Agent con default_manifest, instrucciones de sandbox y capacidades; un Manifest que describe el contrato de un espacio de trabajo nuevo (archivos, directorios, archivos locales, repositorios Git, entorno, usuarios y montajes); y un SandboxRunConfig para configurar en cada ejecución el cliente de sandbox, la inyección de sesiones activas, las anulaciones del manifiesto, las instantáneas y los límites de concurrencia de la materialización. Las capacidades integradas abarcan acceso al shell, edición del sistema de archivos, inspección de imágenes, skills, memoria del sandbox y compactación. La memoria del sandbox conserva las lecciones extraídas entre ejecuciones y las revela de forma progresiva; los espacios de trabajo admiten archivos locales, entradas de repositorios Git y montajes remotos (S3, R2, GCS, Azure Blob y S3 Files); las instantáneas son portátiles entre proveedores. Backends: UnixLocalSandboxClient, DockerSandboxClient y clientes alojados para Blaxel, Cloudflare, Daytona, E2B, Modal, Runloop y Vercel mediante extras opcionales.24
Para los proyectos de Python que quieran integrar el entorno de ejecución de Claude Code como una biblioteca —entre «invocar claude mediante el shell» y «usar la API REST de Managed Agents»—, claude-agent-sdk-python es la tercera opción. La serie del 28 y 29 de abril (v0.1.69 → v0.1.71) actualizó el CLI incluido a la versión v2.1.123, elevó la versión mínima de la dependencia mcp a >=1.19.0 (las versiones anteriores descartaban silenciosamente los valores CallToolResult devueltos por las herramientas MCP en proceso, por lo que el modelo solo recibía un bloque con un error de validación) y equiparó SandboxNetworkConfig con el esquema de TypeScript SDK (allowedDomains, deniedDomains, allowManagedDomainsOnly, allowMachLookup).30 Al 1 de agosto de 2026, el paquete se encuentra en la versión v0.2.128 en PyPI (incluye Claude CLI v2.1.220 y ahora exige como mínimo mcp >=1.23.0), mientras que TypeScript SDK está en la versión v0.3.220. La serie 0.2.x amplía de manera incremental la interfaz 0.1.x descrita aquí: las opciones include_hook_events, skills y de configuración del sandbox que aparecen más adelante siguen vigentes; las versiones recientes se han centrado en la limpieza de subprocesos y la confiabilidad del flujo NDJSON.86
Si tu harness incluye una capa de voz o en tiempo real, openai-agents-python v0.17.0 (8 de mayo de 2026) actualizó RealtimeAgent para usar gpt-realtime-2 de forma predeterminada.41 Las sesiones existentes en tiempo real adoptan automáticamente el nuevo valor predeterminado; especifica explícitamente el modelo anterior si necesitas conservar su comportamiento para una evaluación.
En julio de 2026, la opción administrada también incorporó una propuesta multiagente por parte de OpenAI: openai-agents-python v0.18.2 (11 de julio) y openai-agents-js v0.13.2 (10 de julio) añaden compatibilidad con múltiples agentes alojados en beta: orquestación administrada por OpenAI de varios agentes como servicio alojado, la contraparte directa de la beta pública de Managed Multiagent Orchestration de Anthropic que se aborda en la sección Orquestación multiagente.73 Ambos proveedores ofrecen ahora, en el nivel multiagente, la misma disyuntiva que la tabla siguiente describe para los agentes individuales: el proveedor ejecuta el bucle de delegación y tú renuncias a la interfaz de hooks.
La bifurcación arquitectónica ya es una realidad:
| Dimensión | Harness autoalojado (opción predeterminada de esta guía) | Harness administrado (Claude Managed Agents / OpenAI Agents SDK) |
|---|---|---|
| Carga operativa | Tú ejecutas todo | El proveedor ejecuta el bucle, el sandbox y el estado |
| Personalización | Total: tus hooks, tus skills y tu memoria | Limitada: puntos de extensión definidos por el proveedor |
| Modelo de costos | Tokens + cómputo autoalojado | Tokens + recargo por hora de ejecución |
| Persistencia del estado | Tú la diseñas | El proveedor crea puntos de control que persisten tras las desconexiones |
| Orquestación de equipos de agentes | Creas la tuya | Coordinación multiagente proporcionada por el proveedor |
Cuándo elegir cada opción: el modelo autoalojado sigue siendo adecuado para equipos que ya cuentan con una sólida capacidad de infraestructura, quieren controlar sus skills y hooks, o buscan optimizar a fondo un flujo de trabajo específico. El modelo administrado es adecuado para equipos sin ingenieros de plataforma dedicados, cuando obtener valor rápidamente importa más que la personalización o cuando las ejecuciones de los agentes necesitan continuar de forma confiable al cerrar una computadora portátil, sin que tengas que crear esa capa de persistencia. Ambas opciones son compatibles: puedes ejecutar un harness autoalojado que delegue tareas específicas de larga duración a Managed Agents mediante su API REST.
Cómo se ve el harness en el disco
~/.claude/
├── CLAUDE.md # Personal global instructions
├── settings.json # User-level hooks and permissions
├── skills/ # Personal skills (44+)
│ ├── code-reviewer/SKILL.md
│ ├── security-auditor/SKILL.md
│ └── api-designer/SKILL.md
├── agents/ # Custom subagent definitions
│ ├── security-reviewer.md
│ └── code-explorer.md
├── rules/ # Categorized rule files
│ ├── security.md
│ ├── testing.md
│ └── git-workflow.md
├── hooks/ # Hook scripts
│ ├── validate-bash.sh
│ ├── auto-format.sh
│ └── recursion-guard.sh
├── configs/ # JSON configuration
│ ├── recursion-limits.json
│ └── deliberation-config.json
├── state/ # Runtime state
│ ├── recursion-depth.json
│ └── agent-lineage.json
├── handoffs/ # Session handoff documents
│ └── deliberation-prd-7.md
└── projects/ # Per-project memory
└── {project}/memory/MEMORY.md
.claude/ # Project-level (in repo)
├── CLAUDE.md # Project instructions
├── settings.json # Project hooks
├── skills/ # Team-shared skills
├── agents/ # Team-shared agents
└── rules/ # Project rules
Cada archivo de esta estructura cumple una función. El árbol ~/.claude/ es una infraestructura personal que se aplica a todos los proyectos. El árbol .claude/ de cada repositorio es específico del proyecto y se comparte mediante git. Juntos forman el harness completo.
Sistema de skills
Los skills son extensiones invocadas por el modelo. Claude los descubre y aplica automáticamente según el contexto, sin que tengas que llamarlos de forma explícita.4 En cuanto notes que estás explicando de nuevo el mismo contexto en distintas sesiones, es momento de crear un skill.
Cuándo crear un skill
| Situación | Crea un… | Por qué |
|---|---|---|
| Pegas la misma lista de verificación en cada sesión | Skill | Conocimiento especializado del dominio que se activa automáticamente |
| Ejecutas explícitamente la misma secuencia de comandos | Comando slash | Acción invocada por el usuario con un activador predecible |
| Necesitas un análisis aislado que no deba contaminar el contexto | Subagent | Ventana de contexto independiente para trabajar con mayor concentración |
| Necesitas un prompt de una sola vez con instrucciones específicas | Nada | Simplemente escríbelo. No todo necesita una abstracción. |
Los skills sirven para el conocimiento que Claude siempre tiene disponible. Los comandos slash sirven para las acciones que activas explícitamente. Si estás decidiendo entre ambos, pregúntate: «¿Debe Claude aplicar esto automáticamente o debo decidir cuándo ejecutarlo?».
Creación de un skill
Los skills pueden residir en 4 ubicaciones, ordenadas del alcance más amplio al más específico:4
| Alcance | Ubicación | Se aplica a |
|---|---|---|
| Empresarial | Configuración administrada | Todos los usuarios de la organización |
| Personal | ~/.claude/skills/<name>/SKILL.md |
Todos tus proyectos |
| Proyecto | .claude/skills/<name>/SKILL.md |
Solo este proyecto |
| Plugin | <plugin>/skills/<name>/SKILL.md |
Donde el plugin esté habilitado |
Cada skill requiere un archivo SKILL.md con frontmatter de YAML:
---
name: code-reviewer
description: Review code for security vulnerabilities, performance issues,
and best practice violations. Use when examining code changes, reviewing
PRs, analyzing code quality, or when asked to review, audit, or check code.
allowed-tools: Read, Grep, Glob
---
# Code Review Expertise
## Security Checks
When reviewing code, verify:
### Input Validation
- All user input sanitized before database operations
- Parameterized queries (no string interpolation in SQL)
- Output encoding for rendered HTML content
### Authentication
- Session tokens validated on every protected endpoint
- Permission checks before data mutations
- No hardcoded credentials or API keys in source
Referencia del frontmatter
| Campo | Obligatorio | Propósito |
|---|---|---|
name |
Sí | Identificador único (minúsculas, guiones, máximo 64 caracteres) |
description |
Sí | Activador de descubrimiento (máximo 1024 caracteres). Claude lo utiliza para decidir cuándo aplicar el skill |
allowed-tools |
No | Restringe las capacidades de Claude (por ejemplo, Read, Grep, Glob para acceso de solo lectura) |
disable-model-invocation |
No | Impide la activación automática; el skill solo se activa mediante /skill-name |
user-invocable |
No | Establécelo como false para ocultarlo por completo del menú / |
model |
No | Reemplaza el modelo que se utilizará mientras el skill esté activo |
context |
No | Establécelo como fork para ejecutarlo en una ventana de contexto aislada |
agent |
No | Lo ejecuta como un subagent con su propio contexto aislado |
hooks |
No | Define hooks del ciclo de vida limitados a este skill |
$ARGUMENTS |
No | Sustitución de cadena: se reemplaza con la entrada del usuario después de /skill-name |
El campo de descripción lo es todo
Al iniciar la sesión, Claude Code extrae el name y la description de cada skill y los inserta en el contexto de Claude. Cuando envías un mensaje, Claude utiliza el razonamiento del modelo de lenguaje para decidir si algún skill es pertinente. Un análisis independiente del código fuente de Claude Code confirma el mecanismo: las descripciones de los skills se insertan en una sección available_skills del prompt del sistema y el modelo utiliza la comprensión estándar del lenguaje para seleccionar los skills pertinentes.10
Descripción deficiente:
description: Helps with code
Descripción eficaz:
description: Review code for security vulnerabilities, performance issues,
and best practice violations. Use when examining code changes, reviewing
PRs, analyzing code quality, or when asked to review, audit, or check code.
La descripción eficaz incluye qué hace (revisar código para detectar tipos específicos de problemas), cuándo usarlo (al examinar cambios, PR o analizar la calidad) y frases activadoras (revisar, auditar, comprobar) que los usuarios escriben de forma natural.
Ten en cuenta que la activación automática es una opción graduable, no una regla inamovible: desde la versión v2.1.215, Claude ya no invoca por sí mismo los skills incluidos /verify y /code-review; estos solo se ejecutan cuando se invocan explícitamente. Se trata de una reversión deliberada de la activación basada en descripciones para los skills de revisión intensiva, cuyas ejecuciones no solicitadas costaban más de lo que aportaban.74
Presupuesto de contexto
Todas las descripciones de los skills comparten un presupuesto de contexto que se ajusta dinámicamente al 1 % de la ventana de contexto, con un valor alternativo de 8.000 caracteres.4 Si tienes muchos skills, procura que cada descripción sea concisa y coloca primero el caso de uso principal. Puedes modificar el presupuesto mediante la variable de entorno SLASH_COMMAND_TOOL_CHAR_BUDGET,11 pero la mejor solución es escribir descripciones más breves y precisas. Ejecuta /context durante una sesión para comprobar si se está excluyendo algún skill.
Archivos auxiliares y organización
Los skills pueden hacer referencia a archivos adicionales del mismo directorio:
~/.claude/skills/code-reviewer/
├── SKILL.md # Required: frontmatter + core expertise
├── SECURITY_PATTERNS.md # Referenced: detailed vulnerability patterns
└── PERFORMANCE_CHECKLIST.md # Referenced: optimization guidelines
Haz referencia a ellos desde SKILL.md mediante enlaces relativos. Claude lee estos archivos cuando los necesita después de que se activa el skill. Mantén SKILL.md por debajo de las 500 líneas y traslada el material de referencia detallado a archivos auxiliares.12
Compartir skills mediante Git
Los skills del proyecto (.claude/skills/ en la raíz del repositorio) se comparten mediante el control de versiones:4
mkdir -p .claude/skills/domain-expert
# ... write SKILL.md ...
git add .claude/skills/
git commit -m "feat: add domain-expert skill for payment processing rules"
git push
Cuando tus compañeros de equipo hacen pull, reciben el skill automáticamente. Sin instalación ni configuración. Esta es la manera más eficaz de estandarizar el conocimiento especializado en todo un equipo.
Los skills como biblioteca de prompts
Además de los skills con un único propósito, la estructura de directorios funciona como una biblioteca organizada de prompts:
~/.claude/skills/
├── code-reviewer/ # Activates on: review, audit, check
├── api-designer/ # Activates on: design API, endpoint, schema
├── sql-analyst/ # Activates on: query, database, migration
├── deploy-checker/ # Activates on: deploy, release, production
└── incident-responder/ # Activates on: error, failure, outage, debug
Cada skill codifica una faceta distinta de tu conocimiento especializado. En conjunto, forman una base de conocimientos de la que Claude se nutre automáticamente según el contexto. Un desarrollador junior recibe orientación de nivel sénior sin tener que pedirla.
Los skills se combinan con hooks
Los skills pueden definir sus propios hooks en el frontmatter, los cuales se activan únicamente mientras se ejecuta el skill. Esto genera un comportamiento específico del dominio que no contamina otras sesiones:2
---
name: deploy-checker
description: Verify deployment readiness. Use when preparing to deploy,
release, or push to production.
hooks:
PreToolUse:
- matcher: Bash
hooks:
- type: command
command: "bash -c 'INPUT=$(cat); CMD=$(echo \"$INPUT\" | jq -r \".tool_input.command\"); if echo \"$CMD\" | grep -qE \"deploy|release|publish\"; then echo \"DEPLOYMENT COMMAND DETECTED. Running pre-flight checks.\" >&2; fi'"
---
Los skills de filosofía se activan automáticamente mediante hooks de SessionStart, que incorporan restricciones de calidad en cada sesión sin necesidad de invocarlos explícitamente. El skill es el conocimiento. El hook se encarga de aplicarlo. Juntos forman una capa de políticas.
Errores comunes con los skills
Descripciones demasiado amplias. Un skill git-rebase-helper que se activa ante cualquier prompt relacionado con Git (rebases, fusiones, cherry-picks e incluso git status) contamina el contexto en el 80 % de las sesiones. La solución consiste en hacer más específica la descripción o agregar disable-model-invocation: true y exigir una invocación explícita mediante /skill-name.4
Demasiados skills compitiendo por el presupuesto. Cuantos más skills tengas, más descripciones competirán por el presupuesto de contexto del 1 %. Si notas que algunos no se activan, consulta /context para comprobar cuáles están excluidos. Prioriza unos pocos skills bien descritos en lugar de muchos skills imprecisos.
Información crítica oculta en archivos auxiliares. Claude lee SKILL.md de inmediato, pero solo accede a los archivos auxiliares cuando los necesita. Si la información crítica está en uno de estos archivos, es posible que Claude no la encuentre. Incluye la información esencial directamente en SKILL.md.4
Superficie de skills de SDK (8 de mayo de 2026)
Los harnesses autoalojados en claude-agent-sdk-python v0.1.77 o posterior deben utilizar la opción skills de ClaudeAgentOptions para declarar los skills disponibles, en lugar del valor heredado "Skill" en allowed_tools.37 La forma abreviada "Skill" está obsoleta y la opción específica proporciona a Claude Code información más estructurada sobre los skills disponibles. La versión de CLI incluida en v0.1.77 es la v2.1.133.
Convergencia de plugins y skills en .claude/skills/ (29 de mayo de 2026)
Los skills siempre se han cargado desde el directorio .claude/skills/ de un proyecto. Claude Code v2.1.157 amplía ese directorio para admitir plugins: ahora, un plugin colocado en .claude/skills/ se carga automáticamente sin necesidad de registrarlo en un marketplace, y claude plugin init <name> crea allí la estructura inicial de uno nuevo, con el manifiesto y SKILL.md ya conectados.58 Esto cierra la brecha entre las 2 modalidades de herramientas de proyecto que antes residían en lugares distintos: por un lado, un skill independiente incorporado directamente al repositorio; por otro, un plugin que agrupa un skill, hooks y un servidor MCP, pero que antes necesitaba un marketplace para instalarse. El efecto práctico para el diseño de harnesses es que las herramientas limitadas al proyecto ya no necesitan pasar por un registro para distribuirse: escríbelas, incorpóralas al repositorio y tus compañeros de equipo obtendrán la misma superficie al ejecutar git pull. Los plugins siguen cubriendo el caso de uso de paquetes instalables (hooks + skills + servidores MCP + agentes en un solo ZIP); el cambio es que un proyecto ya no tiene que montar un marketplace solo para cargar uno desde su propio árbol.
Ocultar la superficie incluida como medida de gobernanza (8 de junio de 2026)
Los skills son capacidades, y cada capacidad amplía la superficie de ataque. Claude Code v2.1.169 incorpora una opción disableBundledSkills —y la variable de entorno correspondiente CLAUDE_CODE_DISABLE_BUNDLED_SKILLS— que oculta por completo al modelo los skills, workflows y comandos slash integrados que se incluyen de forma predeterminada.60 En un harness reforzado o regulado, esto supone una reducción deliberada de la superficie de ataque: un operador que haya auditado y aprobado un conjunto específico de skills personales y del proyecto puede suprimir todo lo que Anthropic incluye de fábrica, de modo que el modelo solo razone sobre la superficie que el operador ha validado. Trátalo de la misma manera que una lista de herramientas permitidas: la configuración predeterminada ofrece capacidades amplias, y desactivarla es una decisión de gobernanza, no una simple opción de comodidad.
.claude/skills anidados y resolución por proximidad (16 de junio de 2026)
Claude Code v2.1.178 hizo que las herramientas del proyecto fueran sensibles a la ubicación. Ahora, los skills de directorios .claude/skills anidados se cargan cuando trabajas con archivos dentro de ese directorio, no solo desde la raíz del repositorio; si hay un conflicto de nombres, el skill anidado aparece como <dir>:<name> para que ambos sigan siendo accesibles.63 La misma versión hizo que el resto de la superficie del proyecto se resolviera según su proximidad al directorio de trabajo: cuando el nombre de un agente, workflow o estilo de salida entra en conflicto entre distintos directorios .claude/ anidados, prevalece el que está más cerca del directorio de trabajo, y al guardar un workflow en el ámbito del proyecto se utiliza el directorio .claude/workflows/ existente más cercano en lugar de usar siempre el de la raíz.63 Para un monorepo o un repositorio de repositorios, esta es la diferencia entre una única superficie global plana y herramientas por paquete que se activan según el contexto: services/api/.claude/skills/ puede contener skills específicos de API que solo aparecen mientras trabajas en ese árbol, sin entrar en conflicto con un skill del mismo nombre en services/web/.
Arquitectura de hooks
Los hooks son comandos de shell que se activan mediante eventos del ciclo de vida de Claude Code.3 Se ejecutan fuera de LLM como scripts comunes, no como prompts interpretados por el modelo. ¿El modelo quiere ejecutar rm -rf /? Un script de bash de 10 líneas compara el comando con una lista de bloqueo y lo rechaza antes de que el shell llegue a verlo. El hook se activa independientemente de que el modelo quiera o no.
Eventos disponibles
Claude Code ofrece 30 eventos documentados del ciclo de vida en ocho categorías a partir de esta actualización de la guía. La lista de eventos crece con cada versión, así que considera la documentación de referencia como la fuente de verdad y consulta la hoja de referencia rápida para ver la tabla completa y actualizada antes de configurar hooks de producción:13
| Categoría | Eventos | ¿Puede bloquear? |
|---|---|---|
| Sesión | SessionStart, Setup, SessionEnd |
No |
| Usuario / finalización | UserPromptSubmit, UserPromptExpansion, Stop, StopFailure, TeammateIdle |
El prompt, la expansión, la detención y la inactividad pueden bloquear; StopFailure no |
| Herramienta | PreToolUse, PermissionRequest, PermissionDenied, PostToolUse, PostToolUseFailure, PostToolBatch |
Los eventos previos, de permisos y por lotes pueden bloquear; los eventos posteriores no |
| Subagent / tarea | SubagentStart, SubagentStop, TaskCreated, TaskCompleted |
Los eventos de detención y tarea pueden bloquear; el de inicio no |
| Contexto | PreCompact, PostCompact, InstructionsLoaded |
PreCompact puede bloquear; los eventos posteriores y de carga no |
| Sistema de archivos / espacio de trabajo | CwdChanged, DirectoryAdded, FileChanged, WorktreeCreate, WorktreeRemove |
La creación de worktrees puede bloquear; los demás eventos no |
| Configuración / notificación | ConfigChange, Notification |
Los cambios de configuración pueden bloquear, excepto la configuración de políticas; las notificaciones no |
| MCP | Elicitation, ElicitationResult |
Sí |
Dos mejoras recientes son importantes para los harnesses en segundo plano y multiagente. A partir de la v2.1.198, las sesiones de claude agents en segundo plano activan el hook Notification con los valores de activación agent_needs_input y agent_completed, de modo que un coordinador puede reaccionar en el momento en que un miembro del conjunto queda bloqueado esperando un prompt o termina; es el equivalente basado en notificaciones de consultar periódicamente claude agents --json. Además, a partir de la v2.1.199, los hooks SessionStart, Setup y SubagentStart muestran stderr cuando terminan con el código 2 (antes, esa salida se descartaba silenciosamente), por lo que ahora un hook de inicio o de lanzamiento de subagents que falle explica el motivo en lugar de hacerlo sin ninguna indicación. |
DirectoryAdded (v2.1.219) cierra la brecha del espacio de trabajo durante una sesión. La lista de eventos se había mantenido estable desde que MessageDisplay llegó en la v2.1.152; DirectoryAdded es el primer evento nuevo del ciclo de vida desde entonces y se activa después de que /add-dir —o la solicitud de control register_repo_root de SDK— registra un nuevo directorio de trabajo durante una sesión.84 La brecha que cierra es real: hasta ahora, un harness podía validar exhaustivamente un espacio de trabajo en SessionStart y luego ver cómo se incorporaba un segundo repositorio sin que se activara ningún hook. Todo lo que compruebes sobre el espacio de trabajo al inicio —verificaciones de confianza, análisis de secretos, reglas de alcance de rutas derivadas del árbol o carga de políticas por repositorio— debe volver a ejecutarse aquí, porque el conjunto de directorios de una sesión ya no queda fijo al iniciarla. El evento es informativo, no bloqueante, así que úsalo como activador para volver a derivar el estado y registrar la procedencia, no como gate; si nunca debe permitirse agregar un directorio, deniégalo en la configuración en lugar de intentar vetarlo desde un hook. La parte correspondiente a SDK llegó en la misma versión (TypeScript v0.3.219 agrega DirectoryAdded a los eventos del ciclo de vida del protocolo de control), por lo que los harnesses alojados en SDK lo reciben en igualdad de condiciones que los alojados en CLI.85
Semántica de los códigos de salida
Los códigos de salida determinan si los hooks bloquean las acciones:3
| Código de salida | Significado | Acción |
|---|---|---|
| 0 | Éxito | La operación continúa. Stdout se muestra en modo detallado. |
| 2 | Error bloqueante | La operación se detiene. Stderr se convierte en el mensaje de error que se envía a Claude. |
| 1, 3, etc. | Error no bloqueante | La operación continúa. Stderr solo se muestra en modo detallado (Ctrl+O). |
Crítico: Todo hook de seguridad debe usar exit 2, no exit 1. El código de salida 1 es una advertencia no bloqueante. El comando peligroso se ejecuta de todos modos. Este es el error más común que cometen los equipos al trabajar con hooks.14 |
Configuración de hooks
Los hooks se guardan en archivos de configuración. Usa el nivel de proyecto (.claude/settings.json) para los hooks compartidos y el nivel de usuario (~/.claude/settings.json) para los hooks personales:
{
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [
{
"type": "command",
"command": ".claude/hooks/validate-bash.sh"
}
]
}
],
"PostToolUse": [
{
"matcher": "Write|Edit",
"hooks": [
{
"type": "command",
"command": "bash -c 'if [[ \"$FILE_PATH\" == *.py ]]; then black --quiet \"$FILE_PATH\" 2>/dev/null; fi'"
}
]
}
]
}
}
El campo matcher filtra un valor específico del evento. En los eventos de herramientas, coincide con valores de tool_name como Bash, Edit, Write, Read, Glob, Grep, nombres de herramientas de MCP como mcp__server__tool o * para todas las herramientas. Los nombres simples y las listas separadas por | son coincidencias exactas; los valores con otros caracteres son expresiones regulares de JavaScript. Algunos eventos no admiten matchers y siempre se activan cuando están configurados.13 A partir de Claude Code v2.1.195, los matchers que contienen identificadores con guion (code-reviewer, mcp__brave-search) realizan una coincidencia exacta en lugar de coincidir accidentalmente con subcadenas: un hook dirigido a un agente o servidor ya no se activa con cada nombre que simplemente contenga esa cadena; para incluir todas las herramientas de un servidor MCP con guion, escribe el patrón explícito mcp__brave-search__.*.66 La v2.1.214 aplicó el mismo rigor a los patrones de rutas: una condición if: de un hook que utiliza un patrón de un solo segmento dir/** ahora coincide únicamente con <cwd>/dir, no con todos los directorios llamados dir en cualquier lugar del árbol; escribe **/dir/** cuando realmente quieras abarcar cualquier profundidad.74 Al igual que con el cambio de la v2.1.195, la corrección sustituye una amplitud accidental por una intención declarada; audita todas las condiciones de hooks que dependieran silenciosamente del comportamiento anterior a cualquier profundidad.
Protocolo de entrada/salida de hooks
Los hooks reciben JSON mediante stdin con todo el contexto:
{
"tool_name": "Bash",
"tool_input": {
"command": "npm test",
"description": "Run test suite"
},
"session_id": "abc-123",
"agent_id": "main",
"agent_type": "main"
}
Para tener un control avanzado, los hooks PreToolUse pueden generar JSON para modificar la entrada de la herramienta, inyectar contexto o tomar decisiones sobre permisos. Usa el contenedor hookSpecificOutput; el formato anterior con decision/reason en el nivel superior está obsoleto para PreToolUse:
{
"hookSpecificOutput": {
"hookEventName": "PreToolUse",
"permissionDecision": "allow",
"permissionDecisionReason": "Command validated and modified",
"updatedInput": {
"command": "npm test -- --coverage --ci"
},
"additionalContext": "Note: This database has a 5-second query timeout."
}
}
Tres tipos de garantías
Antes de escribir cualquier hook, pregúntate: ¿qué tipo de garantía necesito?14
Las garantías de formato aseguran la coherencia después de los hechos. Los hooks PostToolUse en Write/Edit ejecutan tu formateador después de cada cambio en un archivo. La salida del modelo no importa, porque el formateador normaliza todo.
{
"hooks": {
"PostToolUse": [
{
"matcher": "Write|Edit",
"hooks": [
{
"type": "command",
"command": "bash -c 'if [[ \"$FILE_PATH\" == *.py ]]; then black --quiet \"$FILE_PATH\" 2>/dev/null; elif [[ \"$FILE_PATH\" == *.js ]] || [[ \"$FILE_PATH\" == *.ts ]]; then npx prettier --write \"$FILE_PATH\" 2>/dev/null; fi'"
}
]
}
]
}
}
Las garantías de seguridad evitan acciones peligrosas antes de que se ejecuten. Los hooks PreToolUse en Bash inspeccionan los comandos y bloquean patrones destructivos con el código de salida 2:
#!/bin/bash
# validate-bash.sh — block dangerous commands
INPUT=$(cat)
CMD=$(echo "$INPUT" | jq -r '.tool_input.command')
if echo "$CMD" | grep -qE "rm\s+-rf\s+/|git\s+push\s+(-f|--force)\s+(origin\s+)?main|git\s+reset\s+--hard|DROP\s+TABLE"; then
echo "BLOCKED: Dangerous command detected: $CMD" >&2
exit 2
fi
Las garantías de calidad validan el estado en los puntos de decisión. Los hooks PreToolUse en comandos git commit ejecutan tu linter o conjunto de pruebas y bloquean el commit si las comprobaciones de calidad fallan:
#!/bin/bash
# quality-gate.sh — lint before commit
INPUT=$(cat)
CMD=$(echo "$INPUT" | jq -r '.tool_input.command')
if echo "$CMD" | grep -qE "^git\s+commit"; then
if ! LINT_OUTPUT=$(ruff check . --select E,F,W 2>&1); then
echo "LINT FAILED -- fix before committing:" >&2
echo "$LINT_OUTPUT" >&2
exit 2
fi
fi
Tipos de hooks más allá de los comandos de shell
Claude Code admite cinco tipos de hooks:13
Los hooks de comandos (type: "command") ejecutan scripts de shell. Son rápidos, deterministas y no consumen tokens.
Hooks de herramientas de MCP (type: "mcp_tool") llaman a una herramienta en un servidor MCP ya conectado. Úsalos cuando la lógica de validación ya se encuentre detrás de un límite de MCP y no necesite un script de shell independiente.
Prompt hooks (type: "prompt") envían un prompt de un solo turno a un modelo rápido de Claude. El modelo devuelve { "ok": true } para permitir la acción o { "ok": false, "reason": "..." } para bloquearla. Úsalos para evaluaciones con matices que una expresión regular no pueda representar.
Agent hooks (type: "agent") generan un subagent con acceso a herramientas (Read, Grep, Glob) para realizar verificaciones de varios turnos. Son experimentales; para los controles de producción, prefiere los command hooks y reserva los agent hooks para comprobaciones que realmente requieran inspeccionar archivos o resultados de pruebas:
{
"hooks": {
"Stop": [
{
"hooks": [
{
"type": "agent",
"prompt": "Verify all unit tests pass. Run the test suite and check results. $ARGUMENTS",
"timeout": 120
}
]
}
]
}
}
A partir de Claude Code v2.1.140, la entrada del agent hook incluye subagent_type, lo que permite que un hook compartido distinga una ejecución de security-reviewer de una de explorer o de un worker genérico sin tener que deducirlo a partir del texto del prompt.49
HTTP hooks (type: "http") envían la entrada de JSON del evento como una solicitud POST a una URL y reciben JSON como respuesta. Úsalos para webhooks, servicios externos de notificaciones o validaciones basadas en API (v2.1.63+). No son compatibles con eventos SessionStart:
{
"hooks": {
"PostToolUse": [
{
"hooks": [
{
"type": "http",
"url": "https://your-webhook.example.com/hook",
"headers": { "Authorization": "Bearer $WEBHOOK_TOKEN" },
"allowedEnvVars": ["WEBHOOK_TOKEN"],
"timeout": 10
}
]
}
]
}
}
Async Hooks
Los hooks pueden ejecutarse en segundo plano sin bloquear la ejecución. Agrega async: true para operaciones no críticas, como las notificaciones y el registro:13
{
"type": "command",
"command": ".claude/hooks/notify-slack.sh",
"async": true
}
Usa async para notificaciones, telemetría y copias de seguridad. Nunca lo uses para el formato, la validación ni ninguna operación que deba completarse antes de la siguiente acción.
Dispatchers en lugar de hooks independientes
Ejecutar siete hooks que se activan con el mismo evento y leen stdin de forma independiente genera condiciones de carrera. Si dos hooks escriben simultáneamente en el mismo archivo de estado de JSON, truncarán el JSON. Todos los hooks posteriores que analicen ese archivo dejarán de funcionar.2
La solución: un dispatcher por evento que ejecute los hooks secuencialmente a partir de una copia en caché de stdin:
#!/bin/bash
# dispatcher.sh — run hooks sequentially with cached stdin
INPUT=$(cat)
HOOK_DIR="$HOME/.claude/hooks/pre-tool-use.d"
for hook in "$HOOK_DIR"/*.sh; do
[ -x "$hook" ] || continue
echo "$INPUT" | "$hook"
EXIT_CODE=$?
if [ "$EXIT_CODE" -eq 2 ]; then
exit 2 # Propagate block
fi
done
Depuración de hooks
Cinco técnicas para depurar hooks que fallan silenciosamente:14
- Prueba los scripts de forma independiente. Pasa un JSON de ejemplo mediante una canalización:
echo '{"tool_input":{"command":"git commit -m test"}}' | bash your-hook.sh - Usa stderr para la salida de depuración. El stderr del código de salida 2 se devuelve a Claude como mensaje de error. El stderr no bloqueante (códigos de salida 1, 3, etc.) solo aparece en el modo detallado (Ctrl+O).
- Presta atención a los fallos de jq. Las rutas incorrectas de JSON devuelven
nullsilenciosamente. Prueba las expresiones dejqcon entradas reales de herramientas. - Verifica los códigos de salida. Un hook PreToolUse que usa
exit 1no aplica ninguna restricción, aunque parezca funcionar. - Mantén la rapidez de los hooks. Los hooks se ejecutan de manera síncrona. Procura que todos tarden menos de 2 segundos, idealmente menos de 500 ms.
Transmisión de eventos de hooks del lado del SDK
Los harnesses autoalojados creados con claude-agent-sdk-python (v0.1.74+, 6 de mayo de 2026) pueden suscribirse a los eventos de hooks directamente desde el flujo de mensajes, en lugar de recurrir a callbacks de scripts de shell.36 Configura include_hook_events=True en ClaudeAgentOptions, y los objetos HookEventMessage (PreToolUse, PostToolUse, Stop y otros) se producirán desde el mismo iterador que los mensajes del asistente y los resultados de las herramientas. Esto refleja la opción includeHookEvents del SDK de TypeScript; el CLI incluido se actualizó a la v2.1.129 en la misma versión.
El patrón de flujo de eventos es el adecuado cuando tu harness ya está implementado en Python y quieres incorporar las señales de hooks al mismo flujo de control que la salida del modelo. El contrato de hooks mediante scripts de shell (códigos de salida, JSON por stdin y dispatchers) sigue siendo la opción correcta para los harnesses que combinan varias herramientas, comparten hooks entre Claude Code y Codex o necesitan la semántica de los códigos de salida para bloquear acciones.
La serie de julio de 2026 (v0.3.205–v0.3.208) del SDK de TypeScript convirtió el propio protocolo transmitido en un contrato más estricto.70 Las interrupciones ahora devuelven confirmaciones tipadas: una interrupción confirma qué mensajes en cola siguen pendientes mediante UUID en still_queued, y las sesiones anuncian la capacidad interrupt_receipt_v1 en system/init, por lo que un coordinador puede distinguir entre «la interrupción se aplicó» y «la interrupción llegó tarde, después de que un mensaje ya estuviera en curso». Los frames de command_lifecycle informan los estados en cola/iniciado/completado/cancelado/descartado de cada mensaje: la primera respuesta oficial a «¿qué pasó con el mensaje que envié?» sin tener que inferirlo de la transcripción. También se incorporaron cambios menores: un tipo AgentToolCompletedOutput para las cargas útiles de finalización de los subagents, y los callbacks canUseTool ahora pueden devolver {behavior: 'allow'} sin un campo updatedInput.
Una línea de esa serie establece un mínimo de seguridad, no una función: la v0.3.208 corrigió un problema por el que la cancelación de una llamada durante un hook pendiente se convertía en un resultado exitoso del hook; esto significaba que una herramienta controlada por un hook PreToolUse podía ejecutarse después de que quien hizo la llamada la hubiera cancelado.70 Si tu harness usa hooks del lado del SDK como control de permisos y depende de la cancelación para detener el trabajo en curso, considera la v0.3.208 como la versión mínima; en versiones anteriores, «cancelado» no significaba de forma confiable «bloqueado». La v0.2.127 de Python (24 de julio de 2026) representa el segundo caso de omisión de este tipo en un mes: query() cerraba stdin al recibir el primer frame result mientras los subagents en segundo plano seguían ejecutándose, por lo que sus llamadas a herramientas de SDK-MCP fallaban con "Stream closed" y omitían por completo los hooks PreToolUse.85 Dale un nombre al patrón y vigílalo: la aplicación de hooks del lado del SDK falla de forma permisiva en los límites del ciclo de vida —cancelación, desmontaje y cierre del flujo—, donde el transporte desaparece antes de recopilar el veredicto del hook; además, falla silenciosamente, porque un hook omitido se ve exactamente igual que uno que dio su aprobación. Fija ambas versiones mínimas del SDK y conserva la capa de hooks de shell como el mecanismo de control que puedes demostrar.
Esfuerzo y procedencia de la sesión (7 y 8 de mayo de 2026)
Dos incorporaciones de las versiones v2.1.132 y v2.1.133 de Claude Code proporcionan a los hooks y subprocesos mejores señales sobre su contexto de ejecución:3839
effort.levelen la entrada del hook. Los hooks ahora reciben un campoeffort.levelde JSON en la misma entrada que contienetool_inputysession_id. El mismo valor se exporta como la variable de entorno$CLAUDE_EFFORT, para que los comandos Bash puedan leerlo sin analizar JSON. Úsalo para ajustar el costo del hook según el nivel de esfuerzo: omite las validaciones costosas enlowy ejecuta el control de seguridad completo enxhighomax.- Variable de entorno
CLAUDE_CODE_SESSION_IDen los subprocesos de Bash. Los subprocesos de la herramienta Bash ahora reciben el mismo valor desession_idque ven los hooks, expuesto comoCLAUDE_CODE_SESSION_ID. Esto elimina la brecha de procedencia de las herramientas que registran el estado por sesión y que antes no podían correlacionar los eventos de subprocesos con los eventos de hooks.
Ambas señales están disponibles sin necesidad de cambiar el código; los hooks existentes que ignoren los campos nuevos seguirán funcionando.
autoMode.hard_deny y correcciones de hooks/plugins en la v2.1.136 (8 de mayo de 2026)
La v2.1.136 de Claude Code agregó un nuevo nivel de denegación estricta al modo automático y corrigió un conjunto de problemas relacionados con plugins y MCP que afectaban a los harnesses de larga duración:40
- settings.autoMode.hard_deny. Reglas del clasificador del modo automático que bloquean incondicionalmente, sin importar la intención del usuario ni las excepciones de autorización. Se ubica por encima de los comparadores de autorización y denegación existentes como un mecanismo de gobernanza no negociable. Úsalo para reglas que nunca deben anularse (force-push a main, archivos que contienen secretos, acceso a bases de datos de producción), incluso cuando un operador haya aprobado la categoría general en su configuración personal.
- autoMode.classifyAllShell (v2.1.193). De forma predeterminada, el clasificador del modo automático solo revisa los comandos de shell que coinciden con patrones de ejecución de código arbitrario. Esta configuración envía todos los comandos de Bash/PowerShell al clasificador —la postura de cobertura máxima para un harness gobernado— y la misma versión muestra los motivos de denegación en la transcripción, la notificación emergente y /permissions, lo que convierte los bloqueos silenciosos en decisiones auditables. Codex reforzó la superficie equivalente en la versión v0.142.2: los comandos de PowerShell que contienen regiones AST ejecutables que su clasificador de seguridad no puede inspeccionar ahora requieren aprobación en lugar de permitirse silenciosamente.66
- El ask del hook establece el límite inferior del clasificador (v2.1.211). La cuestión de precedencia entre los hooks y el modo automático ya está resuelta: un hook PreToolUse que devuelve una decisión de permiso ask establece como resultado final mínimo una solicitud de confirmación; el modo automático no puede volver a elevarlo a una autorización para comandos Bash ejecutados fuera del sandbox.69 Para un harness gobernado, este es el nivel de garantía que faltaba: el ask de un hook es una detención determinista con intervención humana que se mantiene incluso con posturas de permisos completamente automáticas. Usa ask (no solo bloqueos con salida 2) para las operaciones en las que quieras una decisión humana en vez de una negativa.
- El modelo del clasificador queda fijado por sesión (v2.1.210). El clasificador del modo automático usa Sonnet 5 de forma predeterminada y queda fijado durante la sesión, por lo que cambiar de modelo a mitad de sesión ya no altera cuál realiza las clasificaciones de permisos.69 La coherencia de la clasificación es una propiedad de gobernanza; esto elimina una fuente discreta de desviación.
- Los servidores MCP ya no desaparecen después de /clear. Los servidores configurados en .mcp.json, los plugins y los conectores de claude.ai desaparecían silenciosamente del conjunto activo después de ejecutar /clear en la extensión de VS Code, el plugin de JetBrains y Agent SDK. La corrección llegó en la versión v2.1.136. Si observaste que «el servidor MCP X desapareció a mitad de la sesión», esta era la causa.
- Pérdida del token de actualización de OAuth de MCP durante actualizaciones simultáneas. Los usuarios con varios servidores MCP remotos ya no deberían tener que volver a autenticarse todos los días. Las escrituras simultáneas de las actualizaciones se sobrescribían entre sí.
- El modo de planificación ahora bloquea correctamente la escritura de archivos. Una regla de autorización Edit(...) coincidente eludía la protección contra escritura del modo de planificación. Ahora este modo se aplica independientemente de las reglas de autorización.
- Los hooks Stop y UserPromptSubmit de los plugins ya no fallan a mitad de la sesión. La limpieza de la caché eliminaba archivos de versiones de plugins que la sesión en curso todavía utilizaba, lo que afectaba específicamente a estos dos eventos de hook. La corrección mantiene fijadas las versiones en uso.
- Entrada skills en plugin.json. Configurar skills ocultaba el directorio skills/ predeterminado del plugin. Ahora la entrada se combina correctamente, y dirigirla a la ruta de un archivo genera un error explícito en lugar de fallar silenciosamente.
- Las variables de entorno de hooks SessionStart mediante CLAUDE_ENV_FILE quedaban obsoletas. Las variables exportadas por los hooks SessionStart mediante CLAUDE_ENV_FILE quedaban obsoletas después de /resume o /clear. Se corrigió en la versión v2.1.136. Ahora las sesiones vuelven a cargar el archivo de entorno cuando ocurren estos eventos.
Para los harnesses de gobernanza, los elementos de interés operativo son autoMode.hard_deny (un mecanismo nuevo) y la corrección de la desaparición de MCP (un fallo silencioso que interrumpía las sesiones largas). Todo lo demás son mejoras prácticas menores.
Argumentos estructurados de hooks y continuación después de un bloqueo (11 de mayo de 2026)
La versión v2.1.139 de Claude Code añadió dos detalles de hooks relevantes para los harnesses de producción: una forma de ejecución args: string[] para hooks de comandos y continueOnBlock para hooks PostToolUse.4244 Prefiere args cuando un hook necesite valores dinámicos o marcadores de posición de rutas. Ejecuta el comando directamente sin un shell, lo que elimina toda una clase de errores de uso de comillas e inyección.
Usa continueOnBlock cuando un hook PostToolUse deba devolverle a Claude el motivo de su rechazo y continuar el turno en lugar de finalizar el flujo. Considéralo una función para mejorar la experiencia del operador, no una forma de eludir la seguridad. Una puerta de control bloqueante debe seguir impidiendo el resultado inseguro.
La misma versión proporciona CLAUDE_PROJECT_DIR a los servidores stdio de MCP y permite que las configuraciones de plugins hagan referencia a ${CLAUDE_PROJECT_DIR} en los comandos.42 Las herramientas de MCP deben resolver las rutas relativas al proyecto a partir de ese valor, no del directorio de trabajo del proceso que haya iniciado el servidor. Las versiones de principios de julio de 2026 (v2.1.203–v2.1.206) extendieron el mismo principio al nivel del protocolo: roots/list de MCP ahora incluye los directorios de trabajo adicionales de la sesión y emite notificaciones roots/list_changed cuando cambian; así, un servidor que respete las raíces de MCP sigue la estructura real del espacio de trabajo con varios directorios en lugar de suponer que existe un único directorio de proyecto.68
La versión v2.1.140 de Claude Code es, principalmente, una versión de confiabilidad para operadores de harnesses: corrige los hooks ConfigChange que no se ejecutaban al cambiar la configuración, resuelve casos extremos en los que disableAllHooks y allowManagedHooksOnly no se combinaban correctamente entre distintos niveles de configuración, y evita que los diálogos de permisos expongan variables de entorno no previstas devueltas por los resultados de los hooks.49 Esto aumenta la confiabilidad de los patrones de gobernanza existentes en esta sección; no requiere una arquitectura de hooks nueva.
La versión v2.1.141 de Claude Code añade un campo terminalSequence a la salida de los hooks para emitir notificaciones de escritorio, cambiar títulos de ventanas y hacer sonar alertas sin una terminal controladora.50 Considéralo un mecanismo de señalización para operadores, no de aplicación de políticas. Las puertas de seguridad y calidad deben seguir comunicando los fallos mediante el contrato de bloqueo habitual: una salida estructurada del hook junto con el comportamiento de salida que impide la acción insegura. La misma versión añade claude agents --cwd <path> para limitar Agent View a un directorio, CLAUDE_CODE_PLUGIN_PREFER_HTTPS para instalar plugins en entornos sin claves de GitHub SSH, y ANTHROPIC_WORKSPACE_ID para reglas de federación de identidades de carga de trabajo que abarquen más de un espacio de trabajo.50 Estos son detalles arquitectónicos para harnesses de equipo: vistas operativas más acotadas, menos supuestos al instalar plugins y un alcance explícito de tokens empresariales.
La versión v2.1.142 de Claude Code es más importante para la orquestación de sesiones en segundo plano que para la semántica de los hooks.51 claude agents ahora puede despachar sesiones en segundo plano con indicadores explícitos de directorio, configuración, MCP, plugin, permisos, modelo y esfuerzo, en lugar de depender del estado de un wrapper. En esa versión, el modo rápido pasó a usar Opus 4.7 de forma predeterminada, con CLAUDE_CODE_OPUS_4_6_FAST_MODE_OVERRIDE=1 como opción para fijar el modelo en un harness cuya dependencia del comportamiento de Opus 4.6 se haya medido; desde la versión v2.1.219, Opus 4.7 ya no forma parte del modo rápido y /fast se aplica a Opus 5 y Opus 4.8.84 La detección de SKILL.md en la raíz de los plugins y la visibilidad de los LSP proporcionados por plugins reducen la ambigüedad del empaquetado. Las correcciones de MCP_TOOL_TIMEOUT, los worktrees preexistentes de sesiones en segundo plano, la suspensión y reactivación del daemon, la limpieza posterior a las actualizaciones y la limpieza de la caché de plugins resuelven problemas de confiabilidad que, de otro modo, parecerían errores de orquestación.
Orientación mediante hooks Stop, autoridad entre sesiones y multi-agent v2 (junio de 2026)
Cuatro cambios de principios de junio son importantes para el diseño de harnesses y sistemas multi-agent.59
Los hooks Stop/SubagentStop incorporaron un canal de orientación. Desde la versión v2.1.163 de Claude Code, un hook Stop o SubagentStop puede devolver hookSpecificOutput.additionalContext para proporcionar comentarios a Claude y mantener el turno en curso, sin que la respuesta se etiquete como un error del hook. Antes, el único mecanismo real de un hook Stop era el bloqueo con salida 2, que se presenta como un error y cuenta para el límite de bloqueos consecutivos. Para un harness con puertas de calidad, esta es una primitiva más limpia: un hook Stop que detecte «dijiste que habías terminado, pero las pruebas fallan» ahora puede inyectar «esto es lo que todavía falla; continúa» en vez de imponer un bloqueo estricto. Usa el bloqueo para condiciones que realmente deban detener la ejecución y additionalContext para indicar «todavía no has terminado; este es el motivo».
Los mensajes entre sesiones ya no transfieren autoridad prestada. La versión v2.1.166 reforzó el caso de varias sesiones: los mensajes retransmitidos mediante SendMessage desde otra sesión de Claude ya no transfieren la autoridad del usuario de origen, por lo que la sesión receptora rechaza las solicitudes de permisos retransmitidas y el modo automático las bloquea. Si tu orquestación permite que los agentes se envíen mensajes entre sí, considera cada mensaje entrante como datos no confiables, no como una instrucción autenticada. Es el mismo principio que la sección de seguridad aplica a la salida de las herramientas, extendido a la comunicación entre agentes. Desde la versión v2.1.199, Claude Code también detecta y advierte cuando un SendMessage se dirige de forma incorrecta porque dos agentes comparten el mismo nombre; es un complemento de confiabilidad para este límite de autoridad, ya que un mensaje recibido por el agente equivocado con el mismo nombre constituye una categoría propia de error de orquestación.
La resiliencia del modelo se convirtió en una configuración de primer nivel. La configuración fallbackModel ahora encadena hasta tres modelos de respaldo, que se prueban en orden cuando el principal está sobrecargado o no está disponible, y cada turno vuelve a intentarse automáticamente una vez con el modelo alternativo ante errores inesperados y no reintentables de API. Para un harness autónomo de larga ejecución, esto convierte una interrupción transitoria del modelo principal en una degradación controlada, en lugar de una ejecución perdida. claude agents --json también incorporó un campo waitingFor (v2.1.162) que muestra qué está esperando una sesión en segundo plano bloqueada, como una solicitud de permiso, lo que mejora la observabilidad de cualquier coordinador que sondee una flota de agentes.
Modo seguro para gobernanza en un entorno aislado y resolución de problemas. Claude Code v2.1.169 incorpora la opción --safe-mode (y la variable de entorno correspondiente CLAUDE_CODE_SAFE_MODE), que inicia una sesión con todas las personalizaciones deshabilitadas a la vez: CLAUDE.md, plugins, skills, hooks y servidores MCP.60 Es lo opuesto al harness: un entorno aislado deliberado. Úsalo para responder la pregunta que todo operador termina haciéndose: «¿Este comportamiento proviene del modelo o de algo que configuré?». Cuando un hook se activa de forma incorrecta, una skill se activa cuando no debería o un servidor MCP contamina el contexto, --safe-mode te ofrece una referencia conocida y vacía con la cual comparar. También funciona como un mecanismo básico de gobernanza: una forma de ejecutar el modelo sin ninguna de las facultades persistentes que normalmente le concede tu harness, algo importante cuando necesitas reproducir un resultado sin que influya ninguna estructura definida por el operador.
Una nota sobre los niveles de modelos. Desde Claude Code v2.1.197 (30 de junio de 2026), Claude Sonnet 5 es el modelo predeterminado incluido para las sesiones nuevas —contexto nativo de 1M, precio promocional de $2/$10 por MTok hasta el 31 de agosto— y reemplaza a Opus 4.8 como opción inicial. Esta guía considera Opus 5 (claude-opus-5) el modelo agentic predeterminado recomendado: el modelo con el que conviene ejecutar harnesses autónomos, salvo que elijas deliberadamente otro, porque los bucles de agentes prolongados y de alto impacto son precisamente donde la profundidad de razonamiento de Opus justifica su costo. Opus 5 se lanzó el 24 de julio de 2026 como el nuevo Opus predeterminado en Claude Code v2.1.219 —contexto de 1M, $5/$25 por MTok (el mismo precio que Opus 4.8, al que reemplaza) y modo rápido a $10/$50 con aproximadamente 2,5 veces la velocidad predeterminada—, y Anthropic informa que supera por más del doble a Opus 4.8 en Frontier-Bench v0.1, mientras queda a menos de un 0,5 % de la puntuación de Fable 5 en CursorBench 3.2 por la mitad del costo.8487 El mismo precio, más capacidad y un modelo que Anthropic describe como «mucho más sólido al verificar su trabajo e iterar con cuidado» constituyen esa rara mejora que no necesita justificarse por costos para el trabajo con harnesses; migrar desde 4.8 solo requiere cambiar el identificador. Cambia a Sonnet 5 para trabajos sensibles al costo o de alto volumen donde destaque su relación entre velocidad e inteligencia. Por encima de Opus se encuentra Claude Fable 5 (claude-fable-5), lanzado el 9 de junio de 2026: un nuevo nivel que se presenta como el modelo más potente de Anthropic, un sistema «Mythos-class» adaptado para un uso general seguro y seleccionable en Claude Code v2.1.170 mediante /model claude-fable-5.60 Recurre deliberadamente al nivel superior para aquellas decisiones en las que la profundidad bruta de razonamiento justifique el costo, no como configuración general para toda una flota. La transición a Opus 5 tiene dos consecuencias de mantenimiento: Opus 4.7 deja de admitir el modo rápido (/fast ahora se aplica a Opus 5 y Opus 4.8), y la alternativa Fable-5 del clasificador del modo automático —«el mejor modelo Opus disponible» desde v2.1.176— ahora se resuelve como Opus 5.84
Codex lanzó multi-agent v2. Codex CLI v0.137.0 mantiene la elección del entorno de ejecución en cada hilo, ofrece valores predeterminados más claros para el seguimiento y los metadatos de los agentes generados (hide_spawn_agent_metadata ahora es true de forma predeterminada) y propaga los eventos sin procesar del agente principal a los listeners secundarios. Su modelo de subagents sigue siendo explícito: tipos de agentes integrados default/worker/explorer, agentes personalizados definidos mediante TOML y controles de concurrencia (agents.max_threads con valor predeterminado 6 y agents.max_depth con valor predeterminado 1). La misma versión incorpora una extensión v1 de skills con resolución del catálogo de skills en cada turno y nuevos eventos de colaboradores del ciclo de vida para el inicio de hilos y los errores de turno, lo que reduce la brecha con la superficie de hooks y skills de Claude Code, al tiempo que mantiene como límite predeterminado la postura de aislamiento del kernel. Después, Codex v0.138.0–v0.139.0 reforzó multi-agent v2 para producción: las cargas útiles de los mensajes entre agentes ahora están cifradas, un catálogo v2 de configuración de agentes junto con una caché LRU de residencia administra qué agentes permanecen residentes, y la concurrencia se contabiliza según la ejecución activa, no según los hilos generados, por lo que los agentes inactivos ya no ocupan un espacio.61 El ciclo de vida de API también maduró: close_agent pasó a llamarse interrupt_agent (v0.139.0) para reflejar que interrumpe un agente en ejecución, en lugar de limitarse a cerrar un identificador; además, las advertencias de inicio de MCP generadas por un subagent ahora quedan restringidas al hilo propietario, en vez de duplicarse en la transcripción del agente principal.61 Para quienes desarrollan orquestación con Codex, estas son las diferencias entre una demostración y una flota: transporte cifrado de mensajes, residencia limitada, concurrencia contabilizada por ejecución y advertencias que no atraviesan los límites del hilo. Codex v0.140.0 abrió entonces un punto de integración entre herramientas: /import incorpora de forma selectiva la configuración inicial, la configuración del proyecto y los chats recientes de Claude Code en Codex, y las sesiones ahora pueden eliminarse permanentemente (codex delete / /delete, con medidas de confirmación).64 /import es el primer reconocimiento oficial de que los operadores alternan entre harnesses: la configuración que creas para uno ya no queda atrapada allí.
Memoria y contexto
Toda conversación con IA opera dentro de una ventana de contexto finita. A medida que la conversación crece, el sistema comprime los turnos anteriores para dejar espacio al contenido nuevo. Esta compresión implica pérdida de información. Es posible que las decisiones de arquitectura documentadas en el turno 3 no sobrevivan hasta el turno 15.9
Los tres mecanismos del colapso en múltiples turnos
El estudio de MSR/Salesforce identificó tres mecanismos independientes, cada uno de los cuales requiere una intervención diferente:9
| Mecanismo | Qué sucede | Intervención |
|---|---|---|
| Compresión del contexto | Se descarta información anterior para dar cabida al contenido nuevo | Guardado de puntos de control del estado en el sistema de archivos |
| Pérdida de coherencia del razonamiento | El modelo contradice sus propias decisiones anteriores entre turnos | Iteración con contexto nuevo (Ralph loop) |
| Falla de coordinación | Varios agentes mantienen distintas instantáneas del estado | Protocolos de estado compartido entre agentes |
Estrategia 1: el sistema de archivos como memoria
La memoria más confiable entre límites de contexto reside en el sistema de archivos. Claude Code lee CLAUDE.md y los archivos de memoria al inicio de cada sesión y después de cada compactación.6
~/.claude/
├── configs/ # 14 JSON configs (thresholds, rules, budgets)
│ ├── deliberation-config.json
│ ├── recursion-limits.json
│ └── consensus-profiles.json
├── hooks/ # 95 lifecycle event handlers
├── skills/ # 44 reusable knowledge modules
├── state/ # Runtime state (recursion depth, agent lineage)
├── handoffs/ # 49 multi-session context documents
├── docs/ # 40+ system documentation files
└── projects/ # Per-project memory directories
└── {project}/memory/
└── MEMORY.md # Always loaded into context
El archivo MEMORY.md registra errores, decisiones y patrones entre sesiones. Cuando descubres que ((VAR++)) falla con set -e en bash cuando VAR es 0, lo registras. Tres sesiones después, cuando encuentras un caso límite similar con números enteros en Python, la entrada de MEMORY.md vuelve a mostrar ese patrón.15
Auto Memory (v2.1.32+): Claude Code registra y recupera automáticamente el contexto del proyecto. Mientras trabajas, Claude escribe observaciones en ~/.claude/projects/{project-path}/memory/MEMORY.md. Auto memory carga las primeras 200 líneas en tu system prompt al inicio de la sesión. Mantenlo conciso y enlaza archivos temáticos independientes para las notas detalladas.6 A partir de la versión v2.1.210, una escritura en MEMORY.md que supera el límite de tamaño genera un error en lugar de truncarse silenciosamente69: la falla se manifiesta al escribir, en vez de provocar que algunas entradas de memoria desaparezcan sin aviso. Si tu harness automatiza las escrituras en memoria, controla ese error; la plataforma te está indicando que el archivo necesita depuración, no otro intento.
Depuración de la memoria por encima de su volumen (mayo de 2026): Un preprint reciente de arXiv sobre la cooperación entre agentes LLM plantea que ampliar la información recuperada puede convertirse en un modo de falla: en los experimentos de los autores, un historial visible más extenso perjudicó la cooperación en 18 de 28 configuraciones de juegos entre modelos.48 Tómalo como una advertencia de diseño, no como una ley definitiva. La regla para producción ya es bastante clara: mantén MEMORY.md breve, enlaza los detalles y coloca resúmenes que permitan tomar decisiones en los documentos de traspaso. Los volcados de transcripciones sin procesar, los registros de herramientas y los extensos flujos de información recuperada deben estar en un almacenamiento donde puedan buscarse, no incorporarse automáticamente al prompt activo.
Estrategia 2: compactación proactiva
El comando /compact de Claude Code resume la conversación y libera espacio de contexto, a la vez que conserva las decisiones clave, el contenido de los archivos y el estado de la tarea.15
Cuándo compactar: - Después de completar una subtarea independiente (función implementada, error corregido) - Antes de comenzar a trabajar en una nueva área del código base - Cuando Claude empieza a repetirse o a olvidar el contexto anterior - Aproximadamente cada 25-30 minutos durante sesiones intensivas
Instrucciones personalizadas de compactación en CLAUDE.md:
# Summary Instructions
When using compact, focus on:
- Recent code changes
- Test results
- Architecture decisions made this session
La compactación protege la conversación; el comando /cd (Claude Code v2.1.169) protege la caché del prompt. Permite trasladar una sesión a un nuevo directorio de trabajo mientras está en curso, sin afectar la caché acumulada durante el turno.60 Antes, cambiar de directorio implicaba iniciar una sesión nueva con la caché vacía. En una sesión prolongada que pasa de un repositorio a otro relacionado —algo habitual al trabajar con monorepos y múltiples servicios—, /cd conserva intacto el costoso prefijo almacenado en caché mientras redirige el contexto del sistema de archivos.
Estrategia 3: traspasos entre sesiones
Para las tareas que abarcan varias sesiones, crea documentos de traspaso que registren el estado completo:
## Handoff: Deliberation Infrastructure PRD-7
**Status:** Hook wiring complete, 81 Python unit tests passing
**Files changed:** hooks/post-deliberation.sh, hooks/deliberation-pride-check.sh
**Decision:** Placed post-deliberation in PostToolUse:Task, pride-check in Stop
**Blocked:** Spawn budget model needs inheritance instead of depth increment
**Next:** PRD-8 integration tests in tests/test_deliberation_lib.py
La estructura Status/Files/Decision/Blocked/Next proporciona a la sesión sucesora todo el contexto con un costo mínimo de tokens. Al iniciar una nueva sesión con claude -c (continuar) o leer el documento de traspaso, puedes pasar directamente a la implementación.15
Estrategia 4: iteración con contexto nuevo (el Ralph loop)
Para sesiones que superan los 60-90 minutos, inicia una instancia nueva de Claude en cada iteración. El estado persiste mediante el sistema de archivos, no mediante la memoria de la conversación. Cada iteración recibe el presupuesto completo de contexto:16
Iteration 1: [200K tokens] -> writes code, creates files, updates state
Iteration 2: [200K tokens] -> reads state from disk, continues
Iteration 3: [200K tokens] -> reads updated state, continues
...
Iteration N: [200K tokens] -> reads final state, verifies criteria
Compáralo con una sola sesión prolongada:
Minute 0: [200K tokens available] -> productive
Minute 30: [150K tokens available] -> somewhat productive
Minute 60: [100K tokens available] -> degraded
Minute 90: [50K tokens available] -> significantly degraded
Minute 120: [compressed, lossy] -> errors accumulate
El enfoque de usar un contexto nuevo en cada iteración intercambia una sobrecarga del 15-20 % en el paso de orientación (leer los archivos de estado y revisar el historial de git) por disponer de todos los recursos cognitivos en cada iteración.16 El cálculo de costo-beneficio es el siguiente: para sesiones de menos de 60 minutos, una sola conversación resulta más eficiente. Después de 90 minutos, trabajar con un contexto nuevo genera resultados de mayor calidad a pesar de la sobrecarga.
Estrategia 5: depuración administrada de la memoria (Dreaming)
Los Claude Managed Agents de Anthropic incorporaron Dreaming como Research Preview el 6 de mayo de 2026.35 Según Anthropic: «Dreaming es un proceso programado que revisa las sesiones y los almacenes de memoria de tus agentes, extrae patrones y depura los recuerdos para que tus agentes mejoren con el tiempo».35
Dreaming se ejecuta en segundo plano entre sesiones, no en la ruta crítica. Complementa el patrón del sistema de archivos como memoria en lugar de sustituirlo: tu archivo MEMORY.md sigue siendo la superficie fundamental; Dreaming escribe entradas de memoria depuradas en el almacén de memoria de Managed Agents, que el agente lee al inicio de la sesión. Ambos patrones coexisten en los harnesses que combinan el estado del sistema de archivos alojado por cuenta propia con la depuración administrada.
| Memoria del sistema de archivos | Dreaming (administrado) | |
|---|---|---|
| Dónde reside la memoria | En tu repositorio, bajo control de versiones | Almacén de memoria administrado por Anthropic |
| Cuándo se actualiza | Escribes las entradas manualmente o mediante hooks | Proceso en segundo plano entre sesiones |
| Qué registra | Decisiones, errores y patrones que señalas | Patrones extraídos del historial de sesiones |
| Ideal para | Conocimiento institucional específico del proyecto | Descubrir entre sesiones patrones que no detectarías manualmente |
Dreaming está en Research Preview, por lo que su comportamiento puede cambiar. Los patrones de traspaso entre sesiones y CLAUDE.md documentados anteriormente siguen siendo el mecanismo de memoria de referencia para los harnesses alojados por cuenta propia.
Los antipatrones
Leer archivos completos cuando solo necesitas 10 líneas. Leer un único archivo de 2.000 líneas consume entre 15.000 y 20.000 tokens. Usa desplazamientos de línea: Read file.py offset=100 limit=20 ahorra la gran mayoría de ese costo.15
Mantener resultados de error detallados en el contexto. Después de depurar un error, el contexto puede contener más de 40 stack traces de intentos fallidos. Ejecutar /compact una sola vez tras corregirlo elimina ese peso muerto.
Comenzar cada sesión leyendo todos los archivos. Deja que las herramientas glob y grep de Claude Code encuentren los archivos relevantes cuando sean necesarios; así evitarás precargar innecesariamente más de 100.000 tokens.15
Patrones de subagents
Los subagents son instancias especializadas de Claude que se encargan de tareas complejas de forma independiente. Comienzan con un contexto limpio (sin contaminación de la conversación principal), operan con las herramientas especificadas y devuelven los resultados como resúmenes. Los resultados de la exploración no sobrecargan la conversación principal; solo regresan las conclusiones.5
Tipos de subagents integrados
| Tipo | Modelo | Modo | Herramientas | Úsalo para |
|---|---|---|---|---|
| Explore | Haiku (rápido) | Solo lectura | Glob, Grep, Read, bash seguro | Explorar la base de código y encontrar archivos |
| General-purpose | Heredado | Lectura/escritura completa | Todas las disponibles | Investigación compleja + modificación |
| Plan | Heredado (u Opus) | Solo lectura | Read, Glob, Grep, Bash | Planificar antes de ejecutar |
Creación de subagents personalizados
Define los subagents en .claude/agents/ (proyecto) o ~/.claude/agents/ (personal):
---
name: security-reviewer
description: Expert security code reviewer. Use PROACTIVELY after any code
changes to authentication, authorization, or data handling.
tools: Read, Grep, Glob, Bash
model: opus
permissionMode: plan
---
You are a senior security engineer reviewing code for vulnerabilities.
When invoked:
1. Identify the files that were recently changed
2. Analyze for OWASP Top 10 vulnerabilities
3. Check for secrets, hardcoded credentials, SQL injection
4. Report findings with severity levels and remediation steps
Focus on actionable security findings, not style issues.
Campos de configuración de subagents
| Campo | Obligatorio | Propósito |
|---|---|---|
name |
Sí | Identificador único (minúsculas + guiones) |
description |
Sí | Cuándo invocarlo (incluye “PROACTIVELY” para fomentar la delegación automática) |
tools |
No | Lista separada por comas. Hereda todas las herramientas si se omite. Admite Agent(agent_type) para restringir los agentes que puede crear |
disallowedTools |
No | Herramientas que se deben denegar; se eliminan de la lista heredada o especificada. Desde la versión v2.1.178, las especificaciones de MCP a nivel de servidor (mcp__server, mcp__server__*, mcp__*) se reconocen correctamente aquí; las versiones anteriores las ignoraban silenciosamente, por lo que una regla de denegación destinada a bloquear un servidor MCP no hacía nada.63 |
model |
No | sonnet, opus, haiku, inherit (valor predeterminado: inherit) |
permissionMode |
No | default (etiquetado como “Manual” en CLI/IDEs desde la versión v2.1.200; manual es un alias aceptado para el valor de configuración, que no cambió), acceptEdits, delegate, dontAsk, bypassPermissions, plan. Desde la versión v2.1.212, el parámetro mode por invocación de la herramienta Task está obsoleto: los subagents heredan el modo de permisos de la sesión principal y este campo de frontmatter funciona como la anulación específica de cada agente69 |
maxTurns |
No | Número máximo de turnos agénticos antes de que el subagent se detenga |
memory |
No | Alcance de la memoria persistente: user, project, local |
skills |
No | Carga automáticamente el contenido de skills en el contexto del subagent al iniciarse. Desde la versión v2.1.133, los subagents también descubren skills del proyecto, del usuario y de plugins mediante la herramienta Skill, del mismo modo que la sesión principal. Las versiones anteriores las omitían silenciosamente del contexto del subagent.39 |
hooks |
No | hooks del ciclo de vida limitados a la ejecución de este subagent |
background |
No | Fuerza una tarea en segundo plano. Desde la versión v2.1.198, los subagents se ejecutan en segundo plano de forma predeterminada —la sesión principal sigue trabajando y recibe una notificación al finalizar—, por lo que ahora este campo fija explícitamente el comportamiento en lugar de habilitarlo |
isolation |
No | Establécelo en worktree para usar una copia aislada del worktree de git |
Aislamiento mediante worktree
Los subagents pueden operar en worktrees temporales de git, lo que proporciona una copia completa y aislada del repositorio:5
---
name: experimental-refactor
description: Attempt risky refactoring in isolation
isolation: worktree
tools: Read, Write, Edit, Bash, Grep, Glob
---
You have an isolated copy of the repository. Make changes freely.
If the refactoring succeeds, the changes can be merged back.
If it fails, the worktree is discarded with no impact on the main branch.
El aislamiento mediante worktree es esencial para el trabajo experimental que podría dañar la base de código.
El aislamiento solo es aislamiento si se mantiene. Claude Code v2.1.210 corrigió un error que permitía que los subagents aislados mediante worktree modificaran el checkout principal, exactamente el fallo que este mecanismo existe para evitar.69 Si dependes de isolation: worktree como límite de seguridad y no solo como una comodidad, considera v2.1.210 como la versión mínima. El cambio complementario en los permisos va en la dirección contraria: desde v2.1.211, las reglas de “permitir siempre” persisten en la raíz del repositorio entre worktrees, por lo que una regla aceptada dentro de un worktree se aplica a los worktrees hermanos del mismo repositorio.69 Esta es la ergonomía adecuada para agentes que trabajan en paralelo mediante worktrees, pero significa que un permiso concedido durante un experimento desechable perdura más allá del experimento; concédelo pensando en todo el repositorio, no solo en el worktree que tienes delante.
v2.1.216 terminó el trabajo y llevó el aislamiento mediante worktree de una simple corrección de errores a un mecanismo con garantías estrictas.74 La corrección de v2.1.210 impidió que los subagents en worktrees modificaran el checkout principal mediante invocaciones normales de git, pero el propio git ofrece redirecciones explícitas —git -C <path>, --git-dir y las variables de entorno GIT_DIR/GIT_WORK_TREE—, y un subagent aislado mediante worktree todavía podía dirigir cualquiera de ellas al checkout compartido. Ahora todas esas vías de escape están cerradas. La misma versión corrigió que las sesiones de worktree terminaran ocasionalmente en un worktree residual de otro proyecto, impidió que las escrituras de workflows y tareas programadas siguieran un enlace simbólico colocado en .claude hacia un destino externo al proyecto e hizo que /rewind se negara a atravesar enlaces simbólicos y enlaces físicos. El patrón en las cuatro correcciones es el mismo: un límite de aislamiento debe resistir la redirección deliberada —anulaciones mediante el entorno de git, colocación de enlaces simbólicos—, no solo el comportamiento predeterminado. Si isolation: worktree es un límite de seguridad en tu harness y no una comodidad, v2.1.216 es la nueva versión mínima.
Subagents en paralelo
Usa subagents en paralelo para tareas de investigación independientes que no necesiten coordinarse entre sí:5
> Have three explore agents search in parallel:
> 1. Authentication code
> 2. Database models
> 3. API routes
Cada agente se ejecuta en su propia ventana de contexto, encuentra el código pertinente y devuelve un resumen. El contexto principal se mantiene limpio.
El recursion guard
Sin límites de creación, los agentes delegan en agentes que, a su vez, delegan en otros agentes; cada uno pierde contexto y consume tokens. El patrón recursion guard impone presupuestos:16
#!/bin/bash
# recursion-guard.sh — enforce spawn budget
CONFIG_FILE="${HOME}/.claude/configs/recursion-limits.json"
STATE_FILE="${HOME}/.claude/state/recursion-depth.json"
MAX_DEPTH=2
MAX_CHILDREN=5
DELIB_SPAWN_BUDGET=2
DELIB_MAX_AGENTS=12
# Read current depth
current_depth=$(jq -r '.depth // 0' "$STATE_FILE" 2>/dev/null)
if [[ "$current_depth" -ge "$MAX_DEPTH" ]]; then
echo "BLOCKED: Maximum recursion depth ($MAX_DEPTH) reached" >&2
exit 2
fi
# Increment depth using safe arithmetic (not ((VAR++)) with set -e)
new_depth=$((current_depth + 1))
jq --argjson d "$new_depth" '.depth = $d' "$STATE_FILE" > "${STATE_FILE}.tmp"
mv "${STATE_FILE}.tmp" "$STATE_FILE"
Lección fundamental: Usa presupuestos de creación, no solo límites de profundidad. Los límites basados en profundidad rastrean las cadenas entre padres e hijos (bloqueadas al alcanzar una profundidad de 3), pero no controlan la amplitud: 23 agentes con profundidad 1 siguen estando en una “profundidad de 1”. Un presupuesto de creación rastrea el total de hijos activos por cada padre y lo limita a un máximo configurable. El modelo presupuestario corresponde al modo de fallo real (demasiados agentes en total), en lugar de usar una métrica indirecta (demasiados niveles de anidamiento).7
El valor predeterminado de profundidad de anidamiento ha cambiado tres veces; no construyas sobre él. Claude Code v2.1.172 (10 de junio de 2026) permitió que los sub-agents crearan sus propios sub-agents, con hasta 5 niveles de anidamiento, cuando antes la delegación se limitaba, en la práctica, a un solo nivel.62 Esto se mantuvo desde v2.1.172 hasta v2.1.216. v2.1.217 (21 de julio de 2026) redujo el valor a 1 y desactivó de forma predeterminada la creación anidada. Después, v2.1.219 (24 de julio de 2026) encontró un punto intermedio: “Subagents can now spawn nested subagents up to depth 3 by default (was 1); set CLAUDE_CODE_MAX_SUBAGENT_SPAWN_DEPTH=1 to disable nesting.”84 Cinco, luego uno y después tres; los últimos dos cambios ocurrieron en un plazo de tres días.
La interpretación útil no es que alguno de esos números sea el correcto, sino que la plataforma todavía está buscando el valor predeterminado adecuado, por lo que “lo que venga de fábrica” es precisamente lo que un harness no debería heredar. Trata la profundidad de anidamiento como una partida presupuestaria explícita: establece CLAUDE_CODE_MAX_SUBAGENT_SPAWN_DEPTH según la profundidad que realmente necesite tu arquitectura —para la mayoría de las orquestaciones será 1 o 2—, de modo que una actualización no pueda cambiar silenciosamente hasta dónde delega tu flota. El argumento central no cambia con esta inestabilidad: las cadenas de agentes que delegan en otros agentes consumen contexto y tokens más rápido de lo que producen resultados, y la profundidad es un riesgo que debes presupuestar, no una capacidad que debas intentar aprovechar. El recursion guard anterior evita que un árbol profundo se despliegue en cientos de agentes activos, sin importar hacia dónde cambie después el valor predeterminado; además, un límite que establezcas tú mismo es el único valor de profundidad que seguirá significando lo que crees después de la próxima versión.
Ahora el modo automático evalúa las creaciones antes de iniciarlas. Claude Code v2.1.178 cerró la brecha de gobernanza correspondiente: en el modo automático, el clasificador de permisos evalúa la creación de subagents antes de que se inicien, no solo cuando comienzan a realizar acciones.63 Antes se podía crear un subagent para solicitar una acción que la sesión principal no habría podido realizar; la creación en sí era el mecanismo de evasión. La evaluación en el momento de la creación hace que el recursion guard y el modelo de permisos finalmente converjan: no se puede usar un hijo para encubrir una acción que la política prohíbe.
La plataforma ahora incluye un presupuesto de creación nativo. Claude Code v2.1.212 (julio de 2026) incorporó protecciones propias contra bucles descontrolados: las sesiones tienen un límite predeterminado de 200 creaciones de subagents (CLAUDE_CODE_MAX_SUBAGENTS_PER_SESSION permite ajustarlo y /clear reinicia el contador), mientras que WebSearch tiene un límite de 200 llamadas por sesión (CLAUDE_CODE_MAX_WEB_SEARCHES_PER_SESSION).69 El patrón de presupuesto de creación que esta sección documenta como scripting de usuario desde v1.0 ahora está integrado en la plataforma, lo que valida el modelo basado en presupuestos frente al modelo basado en profundidad. Pero ten en cuenta la calibración: 200 creaciones son un orden de magnitud superior al presupuesto de 12 agentes de la configuración anterior. Los límites nativos son fusibles contra un bucle verdaderamente descontrolado, no presupuestos adaptados a tu arquitectura. Conserva el mecanismo de protección de usuario para presupuestos por padre, seguimiento de profundidad y límites que reflejen lo que tu orquestación debería hacer en realidad; deja que el límite de la plataforma atrape lo que consiga superarlo.
El conjunto de protecciones propias ahora abarca cuatro ejes. Tres respaldan exactamente lo que rastrea el mecanismo de protección de usuario de esta sección: creaciones totales por sesión (v2.1.212, límite de 200, CLAUDE_CODE_MAX_SUBAGENTS_PER_SESSION), profundidad de anidamiento (CLAUDE_CODE_MAX_SUBAGENT_SPAWN_DEPTH, cuyo valor predeterminado actual es 3 y ha demostrado ser inestable) y ejecución concurrente (v2.1.217, valor predeterminado de 20, CLAUDE_CODE_MAX_CONCURRENT_SUBAGENTS; un mensaje ya no puede desplegar sin límites agentes en segundo plano).7884 v2.1.219 añade un cuarto eje que los mecanismos de protección de usuario generalmente no tenían: la amplitud de la orquestación, es decir, la cantidad de agentes que puede contener un único workflow planificado, distribuida como una pauta predeterminada de “aspira a usar menos de 15 agentes” y configurable desde cualquier archivo de configuración mediante workflowSizeGuideline (se explica en la sección sobre la herramienta Workflow más adelante). El patrón de presupuesto de creación ahora cuenta con respaldo en todos los ejes para los que fue diseñado, más uno que no contemplaba.
La observación sobre la calibración sigue vigente, aunque de manera desigual. Las 200 creaciones y los 20 agentes concurrentes son fusibles: un orden de magnitud por encima del presupuesto de deliberación de 12 agentes de la configuración anterior, dimensionados para detectar un bucle descontrolado en vez de definir una arquitectura. La pauta de amplitud es el primer valor nativo que opera en la misma escala que un presupuesto real: 15 agentes por workflow está justo al lado de los 12 de esta guía, lo bastante cerca como para que adoptar el valor predeterminado de la plataforma no te cueste nada y discrepar de él exija una razón concreta. Ajusta los tres fusibles a valores que puedas defender; ajusta la pauta de amplitud a la forma de la orquestación que querías construir.
Agent Teams (versión preliminar de investigación)
Agent Teams coordina varias instancias de Claude Code que trabajan de forma independiente, se comunican mediante un Mailbox y una lista de tareas compartidos, y pueden cuestionar los hallazgos de los demás:5
| Componente | Función |
|---|---|
| Líder del equipo | Sesión principal que crea el equipo, crea compañeros y coordina el trabajo |
| Compañeros | Instancias independientes de Claude Code que trabajan en las tareas asignadas |
| Lista de tareas | Elementos de trabajo compartidos que los compañeros reclaman y completan (con bloqueo de archivos) |
| Mailbox | Sistema de mensajería para la comunicación entre agentes |
Habilítalo con: export CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1
Cuándo usar Agent Teams y cuándo usar subagents:
| Subagents | Agent Teams | |
|---|---|---|
| Comunicación | Solo informan los resultados | Los compañeros se envían mensajes directamente |
| Coordinación | El agente principal gestiona todo el trabajo | Lista de tareas compartida con coordinación autónoma |
| Ideal para | Tareas específicas donde solo importa el resultado | Trabajo complejo que requiere debate y colaboración |
| Costo en tokens | Menor | Mayor (cada compañero = una ventana de contexto independiente) |
Agent View y bucles de objetivos (mayo de 2026)
Claude Code v2.1.139 añadió Agent View, una interfaz en versión preliminar de investigación que se inicia con claude agents y muestra en una sola pantalla las sesiones de Claude Code en ejecución, bloqueadas y completadas.4243 La documentación oficial la presenta como una forma de despachar y gestionar muchas sesiones, ver qué está haciendo cada una e identificar cuáles necesitan intervención del operador.43 Esto ofrece al trabajo multiagente una vista operativa que los resúmenes finales no pueden proporcionar.
Usa Agent View cuando implementes formalmente un patrón de subagents o de equipo: inspecciona qué sesiones están bloqueadas, cuáles siguen en ejecución y si la distribución del trabajo coincide con la arquitectura prevista. No lo consideres una prueba de calidad. Ofrece observabilidad; las pruebas, los review gates y los informes de evidencia siguen determinando si el trabajo es sólido.
La misma versión añadió /goal, que establece una condición de finalización y permite que Claude continúe durante varios turnos hasta cumplirla, incluso en usos interactivos, con -p y mediante Remote Control.42 Trata /goal como un bucle de finalización limitado a la sesión, no como sustituto de gates deterministas. Resulta útil para mantener al agente enfocado en un objetivo, pero las pruebas, las comprobaciones de citas y despliegues, y los hooks de seguridad deben seguir respaldados por comandos o scripts cuando un fallo tenga que bloquear el proceso.
Herramienta Workflow (v2.1.147+)
Claude Code v2.1.147 añade una herramienta Workflow, desactivada de forma predeterminada, para la orquestación multiagente determinista. Habilítala con CLAUDE_CODE_WORKFLOWS=1.52 Esto es importante desde el punto de vista arquitectónico porque proporciona a Claude Code una primitiva propia de orquestación para flujos que antes requerían scripts de despacho personalizados, estado en Mailbox y convenciones de coordinación entre subagents.
No elimines el harness que la rodea. Un Workflow puede estructurar la ejecución, pero no reemplaza tu modelo de seguridad. Conserva los hooks PreToolUse y PostToolUse como capa de bloqueo, mantén presupuestos de creación o presupuestos de pasos del workflow para evitar una amplitud descontrolada, conserva un estado auditable del sistema de archivos y mantén los informes finales de evidencia fuera de la autoevaluación del modelo. En la práctica: usa Workflow para definir la forma de la orquestación; usa hooks, pruebas y review gates para determinar la verdad.
Ahora los workflows dinámicos incorporan una postura sobre la amplitud (v2.1.219). Los workflows dinámicos usan de manera predeterminada una pauta de tamaño mediano —“aspira a usar menos de 15 agentes”—, con otros tamaños y una opción sin restricciones disponibles en Dynamic workflow size dentro de /config; además, la pauta actual aparece en la línea de estado del workflow en ejecución.84 El número es orientativo, no obligatorio: guía al planificador en lugar de bloquear un plan amplio. Lo que hace que valga la pena configurarlo es el mecanismo de distribución: la nueva clave de configuración workflowSizeGuideline puede establecerse desde cualquier archivo de configuración —incluidos los ajustes administrados y los del proyecto—, y está incluida en los tipos de configuración de TypeScript SDK desde v0.3.219, por lo que la amplitud de la orquestación puede convertirse en algo que un equipo o una organización estandaricen, en lugar de algo que cada operador tenga que redescubrir.85 Establécela a nivel de proyecto para codificar cómo se descompone realmente el trabajo de tu base de código. Dos observaciones para el operador: la fila de /config se oculta cuando un archivo de configuración controla el valor, lo cual es el comportamiento correcto, pero parece indicar que falta un ajuste si no sabes el motivo; además, como la pauta guía al planificador en vez de controlar la ejecución, pertenece a la columna de forma, no a la de seguridad. El límite de creaciones sigue siendo el encargado de contener una amplitud descontrolada.
Conviene conservar la idea de que este es un cuarto eje de protección propio: la amplitud de la orquestación, junto con la cantidad de creaciones, la profundidad de anidamiento y la ejecución concurrente; además, es el primero que Anthropic ha calibrado con un tamaño de trabajo plausible en vez de como fusible contra un descontrol. Quince agentes por workflow está en el mismo orden de magnitud que el presupuesto de deliberación de 12 agentes que esta guía utiliza desde v1.0. Cuando el valor predeterminado de la plataforma y tu propio presupuesto convergen desde direcciones opuestas, eso es lo más cercano a una corroboración independiente que pueden alcanzar estas cifras.
Bifurcación de sesiones y MCP en segundo plano automático (julio de 2026)
Claude Code v2.1.212 reformuló dos primitivas de orquestación.69 Ahora /fork crea una nueva sesión en segundo plano a partir del estado actual de la conversación: la línea bifurcada se ejecuta de manera independiente mientras la original sigue trabajando, y el comportamiento anterior dentro de la sesión pasó a llamarse /subtask. La distinción es importante para el diseño de la orquestación: /subtask es un desvío acotado dentro del ciclo de vida de una sesión; /fork es una forma económica de crear una sesión paralela en segundo plano que hereda todo el contexto, más parecida a la creación de un bucle Ralph que a un subagent. Si los scripts de tu harness suponían que /fork permanecía dentro de la sesión, ahora despacharán trabajo en segundo plano.
La misma versión envía automáticamente a segundo plano las llamadas lentas a MCP: una llamada a una herramienta MCP que dure más de dos minutos se traslada automáticamente a una ejecución en segundo plano (ajusta el umbral con CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS).69 Un servidor MCP lento ya no detiene el bucle agéntico, pero esto también significa que “la herramienta respondió” y “el turno continuó” ya no son el mismo evento; por lo tanto, los hooks o scripts que daban por supuesta la finalización síncrona de MCP deben basarse en el resultado de la herramienta, no en el límite del turno.
Para la orquestación sin interfaz, v2.1.211 añadió --forward-subagent-text (variable de entorno: CLAUDE_CODE_FORWARD_SUBAGENT_TEXT), que reenvía el texto del asistente del subagent a la salida de stream-json.69 Ahora, un proceso coordinador que consume el flujo del agente principal puede observar directamente el progreso de los subagents, en vez de consultar las transcripciones o esperar el resumen final: el complemento de observabilidad para los subagents que se ejecutan en segundo plano de forma predeterminada. v2.1.219 lo amplió más allá del primer nivel: los subagents creados a una profundidad de 2 o mayor ahora también aparecen en el flujo reenviado, identificados mediante el id de tool_use del Agent que los creó.84 Esa clave es la base sobre la que debes construir. Con el anidamiento nuevamente activado de forma predeterminada, un flujo plano de texto de subagents resulta ambiguo: el id le indica al coordinador qué padre produjo cada hijo, de modo que el árbol de delegación pueda reconstruirse a partir del flujo en vez de inferirse. Si tu consumidor del flujo se diseñó para un solo nivel de subagents, ahora verá texto de agentes cuya existencia desconocía; agrupa por el id de tool_use que originó la creación, en lugar de asumir que cada línea reenviada pertenece a un hijo directo.
Orquestación multiagente
Los sistemas de IA de un solo agente tienen un punto ciego estructural: no pueden cuestionar sus propias suposiciones.7 La deliberación multiagente fuerza una evaluación independiente desde múltiples perspectivas antes de que cualquier decisión quede fijada.
Orquestación entre herramientas (abril de 2026): Google liberó Scion como código abierto el 7 de abril — un hipervisor multiagente que ejecuta Claude Code, Gemini CLI y otros “deep agents” como procesos concurrentes, cada uno con contenedor aislado, git worktree y credenciales propias. Se ejecuta en local, hub o Kubernetes. Filosofía explícita: “aislamiento sobre restricciones” — los agentes operan con alta autonomía dentro de límites impuestos en la capa de infraestructura, no en el prompt.25 Esto extiende directamente el argumento de aislamiento de subagentes a distintos proveedores de herramientas. Si tu flujo de trabajo abarca Claude y modelos de OpenAI, Scion es la primera implementación de referencia real para subagentes entre herramientas con worktree y aislamiento de credenciales por agente.
El debate no es una bala de plata: El cluster de investigación M3MAD-Bench (principios de 2026) descubrió que el debate multiagente se estanca y puede ser subvertido por un consenso engañoso — los argumentos válidos pierden cuando otros agentes afirman con seguridad la respuesta equivocada.26 Tool-MAD mejora esto al dar a cada agente acceso heterogéneo a herramientas y al usar puntajes de Faithfulness/Relevance en la etapa del juez. Si estás construyendo orquestación tipo debate, invierte en (a) heterogeneidad de herramientas por agente y (b) puntuación cuantitativa del juez, en lugar de asumir que más agentes = mejores respuestas.
Orquestación multiagente gestionada y Outcomes (Beta pública)
Si no quieres construir la infraestructura de deliberación descrita a continuación, Multiagent Orchestration entró en Beta pública en Claude Managed Agents el 6 de mayo de 2026.35 Según Anthropic: “Cuando hay demasiado trabajo para que un solo agente lo haga bien, la orquestación multiagente permite que un agente líder divida el trabajo en piezas y delegue cada una a un especialista con su propio modelo, prompt y herramientas”.35 Los especialistas “trabajan en paralelo sobre un sistema de archivos compartido y contribuyen al contexto general del agente líder”.35
El tracing viene incluido. Según Anthropic: “también puedes rastrear cada paso en la Claude Console: qué agente hizo qué, en qué orden y por qué, lo que te da visibilidad completa de cómo se delegó y ejecutó tu tarea”.35
La función complementaria en Beta pública es Outcomes. Según Anthropic: “escribes una rúbrica que describe cómo se ve el éxito y el agente trabaja hacia ella. Un evaluador independiente compara la salida con tus criterios en su propia ventana de contexto, de modo que no se ve influenciado por el razonamiento del agente”.35 Esta es la versión gestionada del patrón de validación de dos puertas documentado más adelante en esta sección: la rúbrica reemplaza la puerta escrita a mano, el evaluador independiente reemplaza el validador de consenso.
| Deliberación autohospedada (esta sección) | Multiagent gestionado + Outcomes | |
|---|---|---|
| Enrutamiento de especialistas | Tú escribes la lógica de spawn | El agente líder divide el trabajo en piezas |
| Validación | Hooks de dos puertas + puntuación de consenso | Rúbrica + evaluador en contexto separado |
| Tracing | Tú lo instrumentas | Claude Console |
| Mejor para | Patrones que necesitan control total o composición específica de herramientas | Patrones de delegación estándar donde la rúbrica de validación es el contrato |
| Precios | Solo costo de tokens + harness | Tokens estándar más la tarifa por hora de sesión de Managed Agents (base de lanzamiento del 8 de abril; ver 23) |
La deliberación autohospedada sigue siendo la respuesta correcta cuando la validación necesita integrarse con tu propia superficie de hooks (bloqueo PreToolUse, semántica de códigos de salida, dispatchers personalizados) o cuando el harness debe ejecutarse sin dependencias externas. Multiagent gestionado es la respuesta correcta cuando la delegación estándar más la evaluación por rúbrica es el contrato que realmente necesitas.
Deliberación mínima viable
Empieza con 2 agentes y 1 regla: los agentes deben evaluar de forma independiente antes de ver el trabajo del otro.7
Decision arrives
|
v
Confidence check: is this risky, ambiguous, or irreversible?
|
+-- NO -> Single agent decides (normal flow)
|
+-- YES -> Spawn 2 agents with different system prompts
Agent A: "Argue FOR this approach"
Agent B: "Argue AGAINST this approach"
|
v
Compare findings
|
+-- Agreement with different reasoning -> Proceed
+-- Genuine disagreement -> Investigate the conflict
+-- Agreement with same reasoning -> Suspect herding
Este patrón cubre el 80% del valor. Todo lo demás aporta una mejora incremental.
El disparador de confianza
No toda tarea necesita deliberación. Un módulo de puntuación de confianza evalúa cuatro dimensiones:17
- Ambigüedad - ¿La consulta tiene múltiples interpretaciones válidas?
- Complejidad del dominio - ¿Requiere conocimiento especializado?
- Riesgo - ¿Es reversible la decisión?
- Dependencia del contexto - ¿Requiere comprender el sistema más amplio?
La puntuación se asigna a tres niveles:
| Nivel | Umbral | Acción |
|---|---|---|
| ALTO | 0,85+ | Proceder sin deliberación |
| MEDIO | 0,70-0,84 | Proceder con nota de confianza registrada |
| BAJO | Menor a 0,70 | Activar deliberación multiagente completa |
El umbral se adapta según el tipo de tarea. Las decisiones de seguridad requieren un consenso de 0,85. Los cambios de documentación solo necesitan 0,50. Esto evita sobreingeniería en tareas simples y a la vez asegura que las decisiones riesgosas reciban escrutinio.7
La máquina de estados
Siete fases, cada una bloqueada por la anterior:7
IDLE -> RESEARCH -> DELIBERATION -> RANKING -> PRD_GENERATION -> COMPLETE
|
(or FAILED)
RESEARCH: Agentes independientes investigan el tema. Cada agente recibe una persona distinta (Arquitecto Técnico, Analista de Seguridad, Ingeniero de Performance, entre otros). El aislamiento de contexto garantiza que los agentes no puedan ver los hallazgos de los demás durante la investigación.
DELIBERATION: Los agentes ven todos los hallazgos de la investigación y generan alternativas. El agente Debate identifica conflictos. El agente Synthesis combina los hallazgos no contradictorios.
RANKING: Cada agente puntúa cada enfoque propuesto a través de 5 dimensiones ponderadas:
| Dimensión | Peso |
|---|---|
| Impacto | 0,25 |
| Calidad | 0,25 |
| Viabilidad | 0,20 |
| Reusabilidad | 0,15 |
| Riesgo | 0,15 |
La arquitectura de validación de dos puertas
Dos puertas de validación capturan problemas en distintas etapas:7
Puerta 1: Validación de consenso (hook PostToolUse). Se ejecuta inmediatamente después de que cada agente de deliberación completa: 1. La fase debe haber alcanzado al menos RANKING 2. Mínimo 2 agentes completados (configurable) 3. La puntuación de consenso cumple el umbral adaptable a la tarea 4. Si algún agente disintió, las preocupaciones deben estar documentadas
Puerta 2: Pride Check (hook Stop). Se ejecuta antes de que la sesión pueda cerrarse: 1. Métodos diversos: múltiples personas únicas representadas 2. Transparencia de contradicciones: los disensos tienen razones documentadas 3. Manejo de complejidad: al menos 2 alternativas generadas 4. Confianza del consenso: clasificada como fuerte (sobre 0,85) o moderada (0,70-0,84) 5. Evidencia de mejora: la confianza final supera la confianza inicial
Dos hooks en distintos puntos del ciclo de vida coinciden con cómo ocurren los fallos en realidad: algunos son instantáneos (mal puntaje) y otros son graduales (baja diversidad, falta de documentación de disenso).7
Por qué el acuerdo es peligroso
Charlan Nemeth estudió el disenso minoritario desde 1986 hasta su libro de 2018 In Defense of Troublemakers. Los grupos con disidentes toman mejores decisiones que los grupos que llegan a un acuerdo rápido. El disidente no necesita tener razón. El acto de discrepar fuerza a la mayoría a examinar suposiciones que de otro modo omitirían.18
Wu et al. probaron si los agentes LLM pueden debatir genuinamente y descubrieron que, sin incentivos estructurales para el desacuerdo, los agentes convergen hacia la respuesta inicial que suena con más confianza, sin importar si es correcta.19 Liang et al. identificaron la causa raíz como “Degeneration-of-Thought”: una vez que un LLM establece confianza en una posición, la autorreflexión no puede generar contraargumentos novedosos, lo que hace estructuralmente necesaria la evaluación multiagente.20
La independencia es la restricción crítica de diseño. Dos agentes evaluando la misma estrategia de despliegue con visibilidad de los hallazgos del otro produjeron puntajes de 0,45 y 0,48. Los mismos agentes sin visibilidad: 0,45 y 0,72. La brecha entre 0,48 y 0,72 es el costo del herding.7
Detección de acuerdo falso
Un módulo de detección de conformidad rastrea patrones que sugieren que los agentes están de acuerdo sin una evaluación genuina:7
Agrupación de puntajes: Que cada agente puntúe dentro de 0,3 puntos en una escala de 10 señala contaminación de contexto compartido en lugar de evaluación independiente. Cuando cinco agentes que evaluaban una refactorización de autenticación puntuaron el riesgo de seguridad entre 7,1 y 7,4, al volver a ejecutarlo con aislamiento de contexto fresco los puntajes se dispersaron a 5,8-8,9.
Disenso boilerplate: Agentes que copian el lenguaje de preocupación de otros en lugar de generar objeciones independientes.
Perspectivas minoritarias ausentes: Aprobación unánime desde personas con prioridades en conflicto (un Analista de Seguridad y un Ingeniero de Performance rara vez coinciden en todo).
El detector de conformidad atrapa los casos obvios (aproximadamente el 10-15% de las deliberaciones donde los agentes convergen demasiado rápido). Para el 85-90% restante, las puertas de consenso y pride check ofrecen validación suficiente.
Lo que no funcionó en la deliberación
Rondas de debate libre. Tres rondas de texto de ida y vuelta para una discusión sobre indexación de bases de datos produjeron 7.500 tokens de debate. Ronda 1: desacuerdo genuino. Ronda 2: posiciones reformuladas. Ronda 3: argumentos idénticos con palabras distintas. La puntuación estructurada por dimensiones reemplazó al debate libre, reduciendo el costo en un 60% mientras mejoraba la calidad del ranking.7
Puerta de validación única. La primera implementación ejecutaba un único hook de validación al final de la sesión. Un agente completó la deliberación con un puntaje de consenso de 0,52 (bajo el umbral) y luego continuó con tareas no relacionadas durante 20 minutos antes de que el hook de fin de sesión marcara el fallo. Dividirlo en dos puertas (una al completar la tarea, otra al final de la sesión) capturó los mismos problemas en distintos puntos del ciclo de vida.7
El costo de la deliberación
Cada agente de investigación procesa aproximadamente 5.000 tokens de contexto y genera 2.000-3.000 tokens de hallazgos. Con 3 agentes, eso son 15.000-24.000 tokens adicionales por decisión. Con 10 agentes, aproximadamente 50.000-80.000 tokens.7
A los precios actuales de Opus, una deliberación de 3 agentes cuesta aproximadamente entre $0,68 y $0,90. Una deliberación de 10 agentes cuesta entre $2,25 y $3,00. El sistema activa deliberación en aproximadamente el 10% de las decisiones, por lo que el costo amortizado sobre todas las decisiones es de $0,23-0,30 por sesión. Si vale la pena o no depende de cuánto cuesta una mala decisión.
Cuándo deliberar
| Deliberar | Omitir |
|---|---|
| Arquitectura de seguridad | Erratas en documentación |
| Diseño de esquema de base de datos | Renombrado de variables |
| Cambios de contrato API | Actualizaciones de mensajes de log |
| Estrategias de despliegue | Reescritura de comentarios |
| Actualizaciones de dependencias | Actualizaciones de fixtures de prueba |
Diseño de CLAUDE.md
CLAUDE.md es una política operativa para un agente de IA, no un README para humanos.21 El agente no necesita entender por qué usas commits convencionales. Necesita conocer el comando exacto que debe ejecutar y cómo se define que una tarea está “terminada”.
Jerarquía de precedencia
| Ubicación | Alcance | Compartido | Caso de uso |
|---|---|---|---|
| Configuración administrada de la empresa | Organización | Todos los usuarios | Estándares de la empresa |
./CLAUDE.md o ./.claude/CLAUDE.md |
Proyecto | Mediante git | Contexto del equipo |
~/.claude/CLAUDE.md |
Usuario | Todos los proyectos | Preferencias personales |
./CLAUDE.local.md |
Proyecto local | Nunca | Notas personales del proyecto |
.claude/rules/*.md |
Reglas del proyecto | Mediante git | Políticas categorizadas |
~/.claude/rules/*.md |
Reglas del usuario | Todos los proyectos | Políticas personales |
Los archivos de reglas se cargan automáticamente y proporcionan contexto estructurado sin saturar CLAUDE.md.6
Qué se ignora
Estos patrones no producen ningún cambio observable en el comportamiento del agente de manera consistente:21
Párrafos de texto sin comandos. “Valoramos el código limpio y bien probado” es documentación, no una instrucción operativa. El agente lo lee y procede a escribir código sin pruebas porque no hay ninguna instrucción que pueda ejecutar.
Directivas ambiguas. “Ten cuidado con las migraciones de la base de datos” no es una restricción. “Ejecuta alembic check antes de aplicar migraciones. Cancela el proceso si falta la ruta de reversión.” sí lo es.
Prioridades contradictorias. “Avanza rápido y publica cuanto antes”, además de “Garantiza una cobertura de pruebas completa”, “Mantén el tiempo de ejecución por debajo de 5 minutos” y “Ejecuta todas las pruebas de integración antes de cada commit”. El agente no puede cumplir las cuatro condiciones a la vez, por lo que termina omitiendo la verificación.21
Guías de estilo sin mecanismos de cumplimiento. “Sigue la guía de estilo de Google para Python” sin ruff check --select D no le proporciona al agente ningún mecanismo para verificar su cumplimiento.
Qué funciona
Instrucciones que comienzan con comandos:
## Build and Test Commands
- Install: `pip install -r requirements.txt`
- Lint: `ruff check . --fix`
- Format: `ruff format .`
- Test: `pytest -v --tb=short`
- Type check: `mypy app/ --strict`
- Full verify: `ruff check . && ruff format --check . && pytest -v`
Definiciones de cierre:
## Definition of Done
A task is complete when ALL of the following pass:
1. `ruff check .` exits 0
2. `pytest -v` exits 0 with no failures
3. `mypy app/ --strict` exits 0
4. Changed files have been staged and committed
5. Commit message follows conventional format: `type(scope): description`
Secciones organizadas por tarea:
## When Writing Code
- Run `ruff check .` after every file change
- Add type hints to all new functions
## When Reviewing Code
- Check for security issues: `bandit -r app/`
- Verify test coverage: `pytest --cov=app --cov-fail-under=80`
## When Releasing
- Update version in `pyproject.toml`
- Run full suite: `pytest -v && ruff check . && mypy app/`
Reglas de escalamiento:
## When Blocked
- If tests fail after 3 attempts: stop and report the failing test with full output
- If a dependency is missing: check `requirements.txt` first, then ask
- Never: delete files to resolve errors, force push, or skip tests
Orden de redacción
Si partes desde cero, agrega las secciones en este orden de prioridad:21
- Comandos de compilación y pruebas (el agente los necesita antes de poder hacer algo útil)
- Definición de terminado (evita falsos cierres)
- Reglas de escalamiento (evitan soluciones alternativas destructivas)
- Secciones organizadas por tarea (reducen el procesamiento de instrucciones irrelevantes)
- Delimitación por directorios (en monorepos, mantiene aisladas las instrucciones de cada servicio)
Omite las preferencias de estilo hasta que las primeras cuatro funcionen.
La plataforma ahora audita tu CLAUDE.md por ti. Desde las versiones de principios de julio de 2026 (v2.1.203–v2.1.206), /doctor analiza CLAUDE.md y propone recortar el contenido que el modelo puede deducir por sí mismo del código base: estructuras de directorios repetidas, convenciones del framework que el código ya refleja y listas de comandos que duplican los scripts de los paquetes.68 Esta es una confirmación directa del planteamiento de esta sección: las instrucciones justifican los tokens que consumen cuando codifican aquello que el agente no puede inferir —políticas, umbrales y definiciones de cierre—, no lo que puede leer del disco. Ejecuta /doctor después de un crecimiento considerable de CLAUDE.md y toma sus propuestas de recorte como punto de partida; aun así, conserva las reglas operativas que pueda marcar como “deducibles” si son restricciones esenciales y no simples descripciones.
Importaciones de archivos
Haz referencia a otros archivos desde CLAUDE.md:
See @README.md for project overview
Coding standards: @docs/STYLE_GUIDE.md
API documentation: @docs/API.md
Personal preferences: @~/.claude/preferences.md
Sintaxis de importación: relativa (@docs/file.md), absoluta (@/absolute/path.md) o desde el directorio personal (@~/.claude/file.md). Profundidad máxima: 5 niveles de importaciones.6
Compatibilidad de instrucciones entre herramientas
AGENTS.md es un estándar abierto reconocido por todas las herramientas principales de programación con IA.21 Si tu equipo utiliza varias herramientas, adopta AGENTS.md como fuente canónica y replica las secciones pertinentes en los archivos específicos de cada herramienta:
| Herramienta | Archivo nativo | ¿Lee AGENTS.md? |
|---|---|---|
| Codex CLI | AGENTS.md | Sí (nativo) |
| Cursor | .cursor/rules |
Sí (nativo) |
| GitHub Copilot | .github/copilot-instructions.md |
Sí (nativo) |
| Amp | AGENTS.md | Sí (nativo) |
| Windsurf | .windsurfrules |
Sí (nativo) |
| Claude Code | CLAUDE.md | No (formato independiente) |
Los patrones de AGENTS.md —comandos primero, cierre definido y organización por tareas— funcionan en cualquier archivo de instrucciones, sin importar la herramienta. No mantengas conjuntos paralelos de instrucciones que terminen divergiendo. Escribe una única fuente autoritativa y replícala.
Notas sobre la paridad con Codex
Codex ya cuenta con equivalentes nativos para las principales capas del harness, pero migrar exige traducir patrones, no copiar archivos. Codex lee AGENTS.md antes de comenzar a trabajar y combina las directrices globales de ~/.codex con las instrucciones del proyecto y las de los repositorios anidados.31 Los skills de Codex utilizan el mismo modelo mental de SKILL.md con divulgación progresiva: Codex comienza con el nombre, la descripción y la ruta del archivo del skill; después carga el skill completo solo cuando decide utilizarlo.32 Codex también ofrece hooks nativos, hooks incluidos en plugins, hooks administrados, compatibilidad con MCP y flujos de trabajo explícitos con subagents.3334
Codex v0.138.0–v0.139.0 reforzó ese proceso de detección de AGENTS.md en espacios de trabajo no triviales: la carga ahora se realiza mediante la abstracción del sistema de archivos del entorno y conserva las rutas lógicas durante el recorrido de detección, por lo que selecciona el archivo correcto incluso cuando el espacio de trabajo se encuentra en un sistema de archivos remoto o en un árbol con enlaces simbólicos.61 Esto es importante siempre que tu AGENTS.md canónico sea la fuente autoritativa y el agente opere sobre un repositorio montado, materializado en un contenedor o enlazado simbólicamente: casos en los que un recorrido ingenuo de las rutas selecciona silenciosamente el archivo de instrucciones equivocado o no selecciona ninguno. Si replicas un único AGENTS.md autoritativo entre distintos servicios, considera esta versión como el mínimo necesario para confiar en que el archivo que el agente cargó realmente sea el que escribiste.
Codex v0.141.0 reforzó después la propia ruta de ejecución remota: los ejecutores remotos ahora se conectan mediante canales Noise-relay autenticados y cifrados de extremo a extremo (el plano de control y el ejecutor ya no confían en el relay que los conecta), la ejecución remota multiplataforma conserva el directorio de trabajo y el shell nativos del ejecutor, y TLS acepta firmas de certificados P-521 para proxies empresariales.65 Si tu orquestación controla ejecutores de Codex a través de un límite de red, esto marca la diferencia entre asumir que el relay es confiable y disponer de cifrado de extremo a extremo; considéralo el punto de partida para cualquier topología de ejecutores remotos.
Las versiones de julio de 2026 muestran cómo los dos entornos de ejecución convergen en los mismos componentes fundamentales desde direcciones opuestas.72 Codex v0.143.0 hace que las herramientas MCP se carguen mediante búsqueda de herramientas de forma predeterminada: los esquemas de las herramientas se posponen y se recuperan bajo demanda, en lugar de cargarse de antemano en el contexto. Es el mismo patrón de carga diferida de herramientas que Claude Code ofrece mediante su interfaz ToolSearch, y la solución adecuada en ambos entornos ante la saturación del contexto cuando existe un gran número de herramientas MCP. Codex v0.144.0 agrega un modo de aprobación de aplicaciones writes: las acciones de solo lectura se ejecutan sin solicitar confirmación, mientras que las escrituras requieren aprobación. Es un componente de permisos realmente nuevo, situado entre el modo de solo lectura y la aprobación automática, que la lista de modos de Claude Code no expresa directamente (su equivalente más cercano es el modo plan, que bloquea por completo las escrituras en vez de solicitar aprobación para cada una). La misma versión lleva la autenticación interactiva de MCP a disponibilidad general. Además, v0.144.5 amplía la detección de comandos peligrosos y refleja las protecciones contra comandos destructivos que Claude Code incorporó en v2.1.183 y v2.1.208. Para diseñar un harness que funcione en distintos entornos de ejecución, la convergencia es lo importante: la carga diferida de herramientas, la aprobación gradual de escrituras y el bloqueo de comandos peligrosos según su intención se están convirtiendo en requisitos básicos, no en elementos diferenciadores entre proveedores.
Codex v0.145.0 profundiza la convergencia en dos frentes.76 La interfaz opcional multi-agent V2 se estabilizó: ahora se pueden configurar los modelos de los sub-agents, los niveles de razonamiento y la concurrencia, y se restauraron los roles de agentes que se habían eliminado anteriormente. Esta es la respuesta de Codex a la configuración del modelo y el nivel de esfuerzo de cada subagent en el frontmatter de .claude/agents/. Además, /import evolucionó hasta ofrecer una migración completa entre distintos harnesses: más allá de la importación de la configuración de Claude Code incorporada en v0.140.0, ahora migra la configuración tanto de Claude Code como de Cursor, incluidos servidores MCP, plugins, sesiones, comandos y memorias específicas del proyecto. Para los equipos que utilizan ambos entornos, el costo de migración entre ellos continúa disminuyendo en una dirección; las capas del harness que construyas sobre Claude Code —servidores, skills como comandos y memoria— son cada vez más un estado portátil en vez de una dependencia exclusiva de un proveedor.
La correspondencia práctica:
| Capa del harness de Claude Code | Equivalente en Codex | Regla de migración |
|---|---|---|
CLAUDE.md / .claude/rules/ |
AGENTS.md / AGENTS.override.md anidados |
Mantén canónicos los comandos y las reglas de finalización; sepáralos solo cuando el alcance de los directorios sea realmente diferente |
.claude/skills/<name>/SKILL.md |
.agents/skills/<name>/SKILL.md o skill de un plugin |
Migra los flujos de trabajo reutilizables, pero adapta las descripciones a la redacción de activación y al presupuesto de Codex |
Hooks de .claude/settings.json |
config.toml de Codex, hooks de plugins o hooks de requisitos administrados |
Migra primero las validaciones deterministas; prueba cada hook con eventos reales de las herramientas antes de habilitarlo ampliamente |
.claude/agents/*.md |
~/.codex/agents/*.toml, .codex/agents/*.toml o worker / explorer integrados |
Migra solo los agentes que aporten valor reiteradamente; prefiere la delegación explícita porque los subagents de Codex son explícitos |
| Plugins | Plugins de Codex | Utiliza plugins como unidad de distribución después de comprobar los hooks y skills locales |
La diferencia importante: los subagents de Claude pueden seleccionarse automáticamente a partir de sus descripciones, mientras que Codex actualmente documenta los flujos de trabajo con subagents como explícitos. Esto hace que los skills y hooks sean la opción predeterminada adecuada para el comportamiento permanente del harness en Codex; los subagents quedan reservados para trabajos paralelos deliberados, revisiones y exploración.
Cómo probar tus instrucciones
Verifica que el agente realmente lea y siga tus instrucciones:
# Check active instructions
claude --print "What instructions are you following for this project?"
# Verify specific rules are active
claude --print "What is your definition of done?"
La prueba de fuego: Pídele al agente que explique tus comandos de compilación. Si no puede reproducirlos literalmente, las instrucciones son demasiado extensas —y el contenido quedó fuera del contexto—, demasiado ambiguas —por lo que el agente no puede extraer instrucciones ejecutables— o no están siendo detectadas. El análisis de GitHub sobre 2.500 repositorios determinó que la ambigüedad causa la mayoría de los fallos.21
Patrones de producción
Patrones de largo alcance de Opus 4.7 (abril de 2026)
Claude Opus 4.7 (16 de abril de 2026) se lanzó con capacidades específicas que cambian aquello contra lo que debe protegerse un harness:29
- Resiliencia ante fallos de herramientas: Opus 4.7 continúa trabajando tras fallos de herramientas que detenían las sesiones de Opus 4.6. Puedes reducir —pero no eliminar— los envoltorios defensivos de reintentos en el código de subagents. Conserva las protecciones a nivel de hooks; recorta el andamiaje dentro del prompt del tipo «si la herramienta falla, inténtalo de nuevo tres veces».
- Nivel de esfuerzo
xhigh(solo Opus-4.7): Se sitúa entrehighymax. Es el valor predeterminado recomendado para programación y cargas de trabajo basadas en agentes. En subagents de larga duración,xhighsupera de manera significativa ahighcon un costo de tokens proporcionalmente menor.maxsigue siendo la opción adecuada para razonamientos difíciles de una sola ejecución;xhighes mejor para tareas sostenidas. - Límite del presupuesto de tokens: Se puede configurar para cada ejecución del agente mediante
output_config.task_budget(encabezado betatask-budgets-2026-03-13). El modelo ve una cuenta regresiva en curso y adapta de manera gradual el alcance del trabajo al presupuesto, en lugar de agotarlo inesperadamente. Úsalo en bucles basados en agentes cuando quieras un gasto de tokens predecible sin sacrificar la calidad en prompts breves. - Detección de necesidades implícitas: Es el primer modelo de Claude que supera las pruebas de «necesidades implícitas», es decir, reconoce cuándo la solicitud literal del usuario no especifica por completo lo que realmente necesita. Esto hace menos necesaria la sección de «reglas de aclaración» de CLAUDE.md. Si tu CLAUDE.md contiene 200 líneas de protecciones del tipo «también considera X cuando el usuario solicite Y», elimina las que el modelo ya cubre de forma nativa.
Base de worktrees, rutas del sandbox y configuración administrativa (7 de mayo de 2026)
Claude Code v2.1.133 incorpora cuatro opciones de configuración de nivel administrativo que conviene conocer para los harnesses de producción:39
| Configuración | Valores | Qué hace |
|---|---|---|
worktree.baseRef |
fresh (predeterminado) | head |
Los worktrees nuevos vuelven a crear ramas desde origin/<default>. Revierte el cambio incompatible del valor predeterminado de v2.1.128, que utilizaba el HEAD local. Configura worktree.baseRef: "head" si tu equipo depende de que los commits sin subir estén disponibles en los worktrees nuevos. |
sandbox.bwrapPath |
ruta absoluta | Fija la ubicación del binario Bubblewrap en hosts Linux/WSL donde no está incluido en $PATH o donde distribuyes una versión incorporada. |
sandbox.socatPath |
ruta absoluta | La misma idea para el binario socat que utiliza la red del sandbox. |
parentSettingsBehavior |
'first-wins' (predeterminado) | 'merge' |
Control de nivel administrativo sobre cómo se combinan los managedSettings de SDK con la configuración principal de la empresa o el equipo. 'merge' permite que una sesión secundaria herede y amplíe la configuración; 'first-wins' mantiene la autoridad de la configuración principal. |
La reversión de worktree.baseRef es la que debes señalar a los usuarios: los agentes que dependían del comportamiento de v2.1.128-v2.1.132 —worktrees que creaban ramas desde el HEAD local— pierden acceso al trabajo sin subir en los worktrees nuevos, a menos que vuelvan a habilitarlo explícitamente.
Encuesta de comentarios de OTel para la observabilidad empresarial (8 de mayo de 2026)
Claude Code v2.1.136 añadió CLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTEL para volver a habilitar la encuesta de calidad dentro de la sesión en empresas que capturan las respuestas mediante OpenTelemetry.40 Si tu organización envía los eventos de OTel a una plataforma central de observabilidad, esta variable de entorno reincorpora la encuesta al flujo de datos para que la señal de calidad atraviese la misma canalización que las métricas de latencia y errores. Trátala como una opción voluntaria: el valor predeterminado mantiene la encuesta deshabilitada, lo cual es correcto para implementaciones que no usan OTel.
Lanzadores corporativos y rendimiento a escala de MCP (julio de 2026)
Dos cambios de v2.1.207 son importantes para las implementaciones de producción.68 CLAUDE_CODE_PROCESS_WRAPPER permite que los entornos administrados inicien el proceso de Claude Code mediante un binario envoltorio corporativo: el punto de integración para agentes de endpoints, comprobaciones de políticas durante el inicio y entornos donde cada proceso debe ejecutarse bajo un supervisor obligatorio. Si antes tu empresa simulaba esto con alias del shell o scripts de inicio bifurcados, este es el punto de integración compatible.
La misma versión redujo la sobrecarga de ejecución donde más se percibe en los harnesses: rondas de uso de herramientas hasta 7 veces más rápidas en sesiones con una gran cantidad de herramientas de MCP y transcripciones de sesión 79 veces más pequeñas.68 Esto atenúa —sin invalidar— las recomendaciones de El costo como arquitectura: priorizar CLI sigue siendo la mejor opción para operaciones sin estado de una sola ejecución, pero un harness que incorpora decenas de herramientas de MCP ya no paga la penalización por ronda que tenía en primavera, y almacenar transcripciones deja de ser un costo oculto de las ejecuciones autónomas prolongadas.
El quality loop
Un proceso de revisión obligatorio para todos los cambios que no sean triviales:
- Implementar - Escribe el código
- Revisar - Vuelve a leer cada línea. Detecta errores tipográficos, fallos lógicos y secciones poco claras
- Evaluar - Ejecuta el evidence gate. Comprueba los patrones, los casos límite y la cobertura de las pruebas
- Perfeccionar - Corrige todos los problemas. Nunca los pospongas para «más adelante»
- Ampliar la perspectiva - Revisa los puntos de integración, las importaciones y el código adyacente para detectar regresiones
- Repetir - Si algún criterio del evidence gate falla, vuelve al paso 4
- Informar - Enumera qué cambió y cómo se verificó, y cita evidencia específica
El evidence gate
«Creo» y «debería» no constituyen evidencia. Cita rutas de archivos, resultados de pruebas o código específico.
| Criterio | Evidencia requerida |
|---|---|
| Sigue los patrones del código base | Indica el patrón y el archivo donde existe |
| Es la solución funcional más sencilla | Explica qué alternativas más sencillas se descartaron y por qué |
| Maneja los casos límite | Enumera casos límite específicos y cómo se maneja cada uno |
| Las pruebas pasan | Pega el resultado de las pruebas que muestre 0 fallos |
| No hay regresiones | Indica los archivos y las funciones revisados |
| Resuelve el problema real | Explica la necesidad del usuario y cómo la solución la satisface |
Si no puedes proporcionar evidencia para alguna fila, vuelve a Perfeccionar.22
Autoridad humana para fusionar cambios
Un estudio de arXiv de mayo de 2026 sobre 29.585 ciclos de vida de solicitudes de incorporación de cambios de agentes de IA separa la autonomía operativa de la gobernanza de las fusiones.47 La lección arquitectónica útil es sencilla: los agentes pueden iniciar el trabajo, hacer avanzar las ramas, abrir PRs, revisar el trabajo y resumir los riesgos, mientras que la autoridad para fusionar cambios permanece como un límite de gobernanza independiente.
Haz explícito ese límite en el harness. Permite que los agentes preparen PRs y recopilen evidencia; exige aprobación humana para las fusiones, los lanzamientos y las operaciones destructivas en repositorios, salvo que la organización tenga una política de automatización auditada por separado. Cuando la automatización ejecute una fusión, conserva registros que distingan al ejecutor de la persona o política que la autorizó.
Patrones de manejo de errores
Escrituras atómicas de archivos. Cuando varios agentes escriben simultáneamente en el mismo archivo de estado, se corrompe JSON. Escribe en archivos .tmp y luego usa mv de forma atómica. El sistema operativo garantiza que mv sea atómico dentro del mismo sistema de archivos.17
# Atomic state update
jq --argjson d "$new_depth" '.depth = $d' "$STATE_FILE" > "${STATE_FILE}.tmp"
mv "${STATE_FILE}.tmp" "$STATE_FILE"
Recuperación tras la corrupción del estado. Si el estado se corrompe, el patrón de recuperación lo vuelve a crear a partir de valores predeterminados seguros en lugar de bloquearse:16
if ! jq -e '.depth' "$RECURSION_STATE_FILE" &>/dev/null; then
# Corrupted state file, recreate with safe defaults
echo '{"depth": 0, "agent_id": "root", "parent_id": null}' > "$RECURSION_STATE_FILE"
echo "- Recursion state recovered (was corrupted)"
fi
La trampa de bash con ((VAR++)). ((VAR++)) devuelve el código de salida 1 cuando VAR es 0 porque 0++ se evalúa como 0, valor que bash considera falso. Con set -e habilitado, esto termina el script. Usa VAR=$((VAR + 1)) en su lugar.16
Clasificación del radio de impacto
Clasifica cada acción del agente según su radio de impacto y aplica los controles correspondientes:2
| Clasificación | Ejemplos | Control |
|---|---|---|
| Local | Escrituras de archivos, ejecuciones de pruebas, linting | Aprobar automáticamente |
| Compartido | Commits de Git, creación de ramas | Advertir y continuar |
| Externo | Git push, llamadas de API, implementaciones | Exigir aprobación humana |
Remote Control (conexión a una instancia local de Claude Code desde cualquier navegador o aplicación móvil) convierte el control «Externo», que normalmente causa una espera bloqueante, en una notificación asíncrona. El agente continúa trabajando en la siguiente tarea mientras revisas la anterior desde tu teléfono.2
Especificación de tareas para ejecuciones autónomas
Las tareas autónomas eficaces incluyen tres elementos: objetivo, criterios de finalización y referencias de contexto:16
OBJECTIVE: Implement multi-agent deliberation with consensus validation.
COMPLETION CRITERIA:
- All tests in tests/test_deliberation_lib.py pass (81 tests)
- post-deliberation.sh validates consensus above 70% threshold
- recursion-guard.sh enforces spawn budget (max 12 agents)
- No Python type errors (mypy clean)
CONTEXT:
- Follow patterns in lib/deliberation/state_machine.py
- Consensus thresholds in configs/deliberation-config.json
- Spawn budget model: agents inherit budget, not increment depth
Los criterios deben poder verificarse mediante una máquina: aprobación o fallo de pruebas, resultados del linter, códigos de estado HTTP y comprobaciones de existencia de archivos. Una tarea inicial que pedía al agente «escribir pruebas que pasen» produjo assert True y assert 1 == 1. Técnicamente correcto. En la práctica, inútil.16
| Calidad de los criterios | Ejemplo | Resultado |
|---|---|---|
| Vagos | «Las pruebas pasan» | El agente escribe pruebas triviales |
| Medibles pero incompletos | «Las pruebas pasan Y la cobertura es >80 %» | Las pruebas cubren líneas, pero no comprueban nada significativo |
| Exhaustivos | «Todas las pruebas pasan Y la cobertura es >80 % Y no hay errores de tipos Y el linter no informa problemas Y cada clase de prueba comprueba un módulo distinto» | Resultado con calidad de producción |
Modos de fallo que debes vigilar
| Modo de fallo | Descripción | Prevención |
|---|---|---|
| Espiral de atajos | Omitir pasos del quality loop para terminar más rápido | El evidence gate exige pruebas para cada criterio |
| Espejismo de confianza | Decir «tengo confianza» sin ejecutar la verificación | Prohibir el lenguaje evasivo en los informes de finalización |
| Verificación fantasma | Afirmar que las pruebas pasan sin haberlas ejecutado en esta sesión | El hook Stop ejecuta las pruebas de forma independiente |
| Deuda postergada | TODO/FIXME/HACK en el código incluido en commits | El hook PreToolUse de git commit analiza el diff |
| Contaminación del sistema de archivos | Artefactos sin utilidad de iteraciones abandonadas | Paso de limpieza en los criterios de finalización |
Traza concreta de una sesión
Traza de una sesión de una ejecución autónoma que procesa un PRD con 5 historias:2
-
Se activa SessionStart. El dispatcher incorpora la fecha actual, la detección del proyecto, las restricciones filosóficas y la inicialización del seguimiento de costos. Cinco hooks, 180 ms en total.
-
El agente lee el PRD y planifica la primera historia. Se activa
UserPromptSubmit. El dispatcher incorpora el contexto activo del proyecto y la línea base de desviación de la sesión. -
El agente llama a Bash para ejecutar las pruebas. Se activa
PreToolUse:Bash. Comprobación de credenciales, validación del sandbox y detección del proyecto. 90 ms. Se ejecutan las pruebas. Se activaPostToolUse:Bash: se registra la señal periódica de actividad y se comprueba la desviación. -
El agente llama a Write para crear un archivo. Se activa
PreToolUse:Write: comprobación del alcance de los archivos. Se activaPostToolUse:Write: comprobación del linting y seguimiento de commits. -
El agente termina la historia. Se activa
Stop. El quality gate comprueba si el agente citó evidencia, si utilizó lenguaje evasivo y si hay comentarios TODO en el diff. Si alguna comprobación falla, devuelve el código de salida 2 y el agente continúa. -
Verificación independiente: Un agente nuevo ejecuta el conjunto de pruebas sin confiar en el informe del agente anterior.
-
Se inician en paralelo tres agentes de revisión de código. Cada uno revisa el diff de manera independiente. Si algún revisor señala un problema CRITICAL, la historia vuelve a la cola.
-
La historia supera las comprobaciones. Se carga la siguiente. El ciclo se repite con las 5 historias.
Total de hooks activados en las 5 historias: ~340. Tiempo total dedicado a los hooks: ~12 segundos. Esa sobrecarga evitó tres filtraciones de credenciales, un comando destructivo y dos implementaciones incompletas en una sola ejecución nocturna.
Caso práctico: procesamiento nocturno de PRD
Un harness de producción procesó 12 PRDs (47 historias) en 8 sesiones nocturnas. Las métricas comparan los primeros 4 PRDs (harness mínimo: solo CLAUDE.md) con los últimos 8 (harness completo: hooks, skills, quality gates y revisión multiagente).
| Métrica | Mínimo (4 PRDs) | Harness completo (8 PRDs) | Cambio |
|---|---|---|---|
| Filtraciones de credenciales | 2 se filtraron a git | 7 bloqueadas antes del commit | De reactivo a preventivo |
| Comandos destructivos | 1 force-push a main | 4 bloqueados | Aplicación del código de salida 2 |
| Tasa de finalizaciones falsas | El 35 % tuvo pruebas fallidas | 4 % | Evidence gate + hook Stop |
| Rondas de revisión/historia | 2,1 | 0,8 | Skills + quality loop |
| Degradación del contexto | 6 incidentes | 1 incidente | Memoria del sistema de archivos |
| Sobrecarga de tokens | 0 % | ~3,2 % | Insignificante |
| Tiempo de hooks/historia | 0 s | ~2,4 s | Insignificante |
Las dos filtraciones de credenciales obligaron a rotar las claves de API y auditar los servicios dependientes: aproximadamente 4 horas de respuesta a incidentes. La sobrecarga del harness que evitó un incidente equivalente fue de 2,4 segundos de bash por historia. La tasa de finalizaciones falsas cayó del 35 % al 4 % porque el hook Stop ejecutó las pruebas de forma independiente antes de permitir que el agente informara que había terminado.
Consideraciones de seguridad
Los cinco principios de los agentes confiables (Anthropic, abril de 2026)
Anthropic publicó un marco formal para la confiabilidad de los agentes el 9 de abril de 2026.27 Los cinco principios reflejan —y amplían— el enfoque de evidence gate de esta guía:
| Principio | Qué significa | Cómo lo cumple este harness |
|---|---|---|
| Control humano | Capacidad real de intervención humana en cada punto de decisión | Los hooks controlan las llamadas a herramientas; bloqueo mediante PreCompact; clasificador de Auto Mode como check-layer |
| Alineación de valores | Las acciones del agente siguen la intención del usuario, no objetivos adyacentes | CLAUDE.md como especificación explícita de la intención; skills para delimitar capacidades |
| Seguridad | Resistencia a entradas adversarias y prompt injection | Sandbox + reglas de denegación + validación de entradas en la capa de hooks |
| Transparencia | Registros auditables de decisiones y acciones | Registros de hooks; transcripciones de sesiones; rastros de invocación de skills |
| Privacidad | Tratamiento y gobernanza adecuados de los datos | Depuración de variables de entorno con credenciales; detección de secretos en la capa de hooks |
Anthropic también donó MCP a la Agentic AI Foundation de la Linux Foundation, donde se sumó a AGENTS.md (ahora administrado conjuntamente con OpenAI, Google, Cursor, Factory y Sourcegraph). Los estándares de interoperabilidad entre agentes ahora son neutrales respecto al proveedor.27
Turno sin estado e identidad autodeclarada de MCP (julio de 2026). La especificación de MCP está en plena transición hacia un núcleo sin estado (SEP-2575), que elimina el protocolo de enlace de inicialización con estado que antes comunicaba la identidad del servidor. Un cambio en el borrador de la especificación, integrado el 16 de julio (PR #3002), restaura la identidad como una superficie opcional: los servidores pueden incluir un objeto io.modelcontextprotocol/serverInfo en el campo _meta de la respuesta, mientras que clientInfo pasa a ser opcional en las solicitudes.71 Lo relevante para la seguridad es lo que la especificación establece sobre la confianza: esta identidad es autodeclarada y no está verificada; sirve únicamente para su visualización y registro, y NO DEBE determinar decisiones de seguridad. Si tu harness basa listas de permitidos, reglas de permisos o auditorías mediante registros en el nombre declarado por un servidor MCP, ese nombre es una afirmación, no una credencial. Vincula la confianza al transporte y a la configuración (qué servidor configuraste tú y en qué endpoint), nunca a lo que el servidor afirma ser. La revisión definitiva de la especificación sin estado está programada para el 28 de julio de 2026; se espera que los detalles del protocolo incluidos en esta sección queden consolidados en la próxima actualización.
Herramientas de sandbox para skills: Para los equipos que consideran los skills una superficie de ataque, SandyClaw de Permiso (lanzado el 2 de abril de 2026) ejecuta los skills en un sandbox dedicado y proporciona veredictos respaldados por evidencia mediante detección con Sigma/YARA/Nova/Snort. Es el primer producto de la categoría de sandbox para skills.28
El sandbox
Claude Code admite un modo sandbox opcional (que se habilita mediante settings.json o el comando /sandbox) que restringe el acceso a la red y las operaciones del sistema de archivos mediante aislamiento a nivel del sistema operativo (seatbelt en macOS y bubblewrap en Linux). Cuando está habilitado, el sandbox impide que el modelo realice solicitudes de red arbitrarias o acceda a archivos fuera del directorio del proyecto. Sin el sandbox, Claude Code utiliza un modelo basado en permisos en el que apruebas o rechazas cada llamada a una herramienta.13
Base mínima de seguridad de mayo de 2026. Claude Code v2.1.149 corrigió una evasión de permisos del directorio de trabajo en PowerShell, varias deficiencias en el análisis de permisos relacionadas con reglas de autorización y variables obsoletas de PowerShell, y un error en la lista de escritura permitida del sandbox para worktrees de git, que abarcaba toda la raíz del repositorio principal en lugar de limitarse a los componentes internos compartidos de git.53 Si tu harness permite PowerShell o agentes aislados mediante worktrees, considera la versión v2.1.149 o posterior como el mínimo y mantén restringidas las reglas del shell. Las excepciones amplias como PowerShell(*) y los permisos de escritura para todo el repositorio son atajos de orquestación, no límites de seguridad.
Refuerzo del sandbox de OpenAI Agents SDK (v0.17.0, 8 de mayo de 2026). Por parte de OpenAI, openai-agents-python v0.17.0 reforzó un límite paralelo: LocalFile.src y LocalDir.src ahora deben permanecer dentro del base_dir de materialización (el directorio de trabajo actual del proceso SDK cuando se aplica el manifiesto), salvo que se conceda acceso explícito al origen mediante Manifest.extra_path_grants con SandboxPathGrant.41 Los orígenes locales relativos se resuelven desde base_dir; las rutas absolutas deben estar ya dentro de ese directorio o contar con una concesión. Esto resuelve un problema del límite de los artefactos locales: las versiones anteriores permitían que los manifiestos incorporaran rutas arbitrarias del host al espacio de trabajo del sandbox. Para migrar, declara las raíces confiables del host en el nivel del manifiesto mediante SandboxPathGrant(path=..., read_only=True) para montajes de solo lectura. Considera extra_path_grants una configuración confiable de la aplicación; nunca generes concesiones a partir de resultados del modelo ni de entradas de manifiesto que no sean confiables.
Base mínima posterior de OpenAI Agents SDK (v0.17.3). Las versiones 0.17.1 a 0.17.3 añadieron más refuerzos para el sandbox y las sesiones: límites para la extracción de archivos comprimidos, validación de subrutas de GitRepo, errores más claros de los proveedores de sandbox, exclusión de las credenciales de los puntos de montaje de los comandos del sandbox, rechazo de raíces relativas para el espacio de trabajo del sandbox y manejo del estado terminal del sandbox de Vercel.54 Si utilizas sandboxes alojados por OpenAI o respaldados por proveedores, en lugar de depender únicamente de los hooks de Claude Code, considera la versión 0.17.3 como la base mínima actual para los patrones de esta sección.
Tres patrones de contención entre productos (Anthropic, mayo de 2026)
La publicación de ingeniería de Anthropic, «Cómo contenemos Claude en distintos productos» (25 de mayo de 2026), es la formulación del propio proveedor de los principios que esta sección enseña de manera fragmentada: el sandbox definido en la configuración que se describió antes, la base mínima del aislamiento mediante worktrees y el enfoque de tratar todo como no confiable.81 Su idea central consiste en ajustar la solidez de la contención a la superficie del producto; ese ajuste constituye en sí mismo la lección: no existe un único diseño de aislamiento correcto, sino un aislamiento adaptado a quién supervisa y a qué puede salir mal.
- Contenedores efímeros de gVisor (claude.ai). La ejecución del lado del servidor se realiza en contenedores de gVisor sobre infraestructura aislada, con un sistema de archivos efímero para cada sesión. El modelo de amenazas se centra en el aislamiento de la infraestructura y entre inquilinos; nunca se puede acceder a la computadora del usuario, por lo que no hay nada local que proteger.
- Sandbox del sistema operativo con intervención humana (Claude Code). El patrón descrito en el párrafo anterior sobre el sandbox, expresado como política: Seatbelt en macOS y bubblewrap en Linux, con lectura permitida, escritura limitada al espacio de trabajo y red denegada de forma predeterminada; la persona aprueba aquello que el límite no cubre. Anthropic publicó el código fuente del entorno de ejecución (
sandbox-runtime) para que el límite pueda auditarse. La publicación reconoce con franqueza el eslabón débil: se aprueba cerca del 93 % de las solicitudes de permisos, y el clasificador de auto mode —que detecta alrededor del 83 % de los comportamientos excesivamente entusiastas antes de su ejecución y reduce en un 84 % las solicitudes de aprobación— existe precisamente porque la fatiga ante las aprobaciones es una propiedad de seguridad, no una queja de UX. Esta es la postura de check-layer que la guía ha seguido desde la versión v2.1.193. - Máquinas virtuales selladas (Claude Cowork). Máquinas virtuales completas sobre hipervisores de la plataforma —el framework Virtualization de Apple en macOS y HCS en Windows— que solo tienen montados el espacio de trabajo seleccionado y la carpeta
.claude; ningún otro elemento del host es visible. Las credenciales nunca entran en la máquina virtual: permanecen en el llavero del host y cada sesión recibe un token con alcance limitado que puede revocarse de forma independiente. Un proxy MITM defensivo dentro de la máquina virtual lo hace cumplir y solo permite solicitudes que contengan el token de sesión aprovisionado para esa máquina virtual. Una clave incorporada por un atacante se rechaza en el límite porque solo la máquina virtual conoce su procedencia.
Los principios de diseño que sustentan esta clasificación son la parte transferible. Contén primero en la capa del entorno y orienta después en la capa del modelo: toda defensa probabilística tiene una tasa de error distinta de cero, por lo que los límites deterministas deben detener lo que la orientación mediante prompts no detecte; es el argumento de esta guía de que los hooks garantizan la ejecución, reformulado por el proveedor. Adapta la solidez del aislamiento a la capacidad de supervisión del usuario: un desarrollador puede evaluar un comando de bash antes de aprobarlo; un trabajador del conocimiento no puede hacerlo, por lo que Code muestra un diálogo de permisos y Cowork utiliza una máquina virtual sellada. Prefiere mecanismos ampliamente probados en lugar de código de aislamiento personalizado: los hipervisores, seccomp y entornos de ejecución de contenedores han resistido mejor el escrutinio adversario que los proxies personalizados con listas de permitidos y los analizadores de configuración de Anthropic. Trata la configuración local del proyecto y los resultados de las herramientas como no confiables: la publicación indica que se debe tratar la apertura de un proyecto y la carga de configuración como cualquier solicitud entrante de internet, y los resultados de las herramientas como una superficie de ataque incluso cuando la herramienta sea confiable. Es la misma postura que esta guía aplica a los mensajes entre agentes, el contenido leído por subagents y la identidad autodeclarada de MCP. Mantén las credenciales fuera del sandbox: utiliza tokens con alcance limitado, revocables y específicos de cada sesión, en lugar de claves generales que el agente pudiera filtrar.
La superficie de configuración está alcanzando al primer principio (v2.1.219). «Contén primero en la capa del entorno» es una idea fácil de respaldar, pero hasta ahora ha resultado incómoda de configurar porque el sandbox de Claude Code resolvía lo que sus reglas no cubrían mediante preguntas; una solicitud de permisos es una defensa probabilística disfrazada de determinista, como admite la cifra de aprobación del 93 % citada antes. sandbox.network.strictAllowlist elimina la pregunta para el tráfico saliente: cuando se configura, se rechaza directamente la solicitud de un comando dentro del sandbox dirigida a un host que no está en la lista de permitidos, en lugar de solicitar aprobación.84 Combínala con sandbox.filesystem.disabled, incorporada en v2.1.216, y ambas configuraciones formarán una postura de seguridad en lugar de un conjunto de opciones inconexas: la contención del sistema de archivos y la red pueden seleccionarse de manera independiente, y ahora es posible hacer determinista la contención de red. Para un harness sin supervisión, esta última es la más importante porque el tráfico saliente es el punto en el que una instrucción inyectada se convierte en una filtración de datos, y el caso límite de la fatiga ante las aprobaciones es que no haya nadie frente al teclado que pueda sufrirla. El costo es el habitual de un límite determinista: la lista de permitidos debe ser correcta y, si olvidas un host, la operación falla con una denegación opaca en lugar de una pregunta. Enumera los hosts que tus agentes necesitan legítimamente y elimina la solicitud.
Nada de esto sustituye la capa de hooks; se ubica por debajo de ella. Los patrones de contención constituyen la base determinista, y el historial de aplicación mediante worktrees de esta guía contiene la misma lección a menor escala: un límite solo cuenta si resiste la redirección deliberada, y los mecanismos con más probabilidades de resistir son aquellos que no se crearon específicamente para la ocasión.
Límites de permisos
El sistema de permisos controla las operaciones en varios niveles:
| Nivel | Qué controla | Ejemplo |
|---|---|---|
| Permisos de herramientas | Qué herramientas pueden utilizarse | Limitar el subagent a Read, Grep y Glob |
| Permisos de archivos | Qué archivos pueden modificarse | Bloquear la escritura en .env y credentials.json |
| Permisos de comandos | Qué comandos de bash pueden ejecutarse | Bloquear rm -rf y git push --force |
| Permisos de red | A qué dominios se puede acceder | Lista de permitidos para conexiones con servidores MCP |
Reglas de permisos a nivel de parámetros (junio de 2026)
Claude Code v2.1.178 amplió las reglas de permisos desde el nivel de las herramientas hasta el nivel de los parámetros: Tool(param:value) busca coincidencias en los parámetros de entrada de una herramienta y utiliza * como comodín. El ejemplo canónico es Agent(model:opus), una regla que impide iniciar subagents con un nivel específico de modelo.63 Desde el punto de vista arquitectónico, esto resuelve una limitación que la tabla anterior de cuatro niveles no podía expresar: antes se permitía o denegaba una herramienta por completo, pero no era posible restringir cómo se invocaba. Ahora, una política de gobernanza puede establecer «los subagents pueden iniciarse, pero no con el nivel Fable 5» o «Bash está permitido, pero no con este indicador» como una regla determinista, en vez de una solicitud incluida en el prompt.
Una configuración administrada complementaria, enforceAvailableModels (v2.1.175), restringe la selección de modelos desde el nivel superior: fija el modelo Default e impide que la configuración del usuario o del proyecto amplíe la lista administrada availableModels.63 Ambas medidas se complementan: la lista de permitidos define qué niveles existen en la sesión, mientras que las reglas a nivel de parámetros limitan cómo los subagents pueden utilizarlos. Desde la versión v2.1.196, los administradores también pueden definir un modelo predeterminado para toda la organización desde la consola de la organización, que aparece como «Org default» en /model. De este modo, toda una flota hereda un valor predeterminado administrado sin que cada operador tenga que fijar uno: una base mínima que complementa el límite máximo de la lista de permitidos.
Las reglas de autorización limitadas por ruta se anclan al directorio de trabajo (julio de 2026)
Claude Code v2.1.214 corrigió una coincidencia excesiva y poco visible en las reglas de permisos limitadas por ruta: una regla de autorización con un patrón dir/** de un solo segmento —por ejemplo, Edit(src/**)— aprobaba automáticamente las modificaciones en cualquier directorio llamado src, a cualquier profundidad, incluidos vendor/some-package/src/ y todos los demás directorios src/ anidados que el autor de la regla nunca pretendió autorizar. Ahora estas reglas solo se anclan a <cwd>/dir; si realmente quieres que coincidan a cualquier profundidad, debes declararlo mediante **/dir/**.74 Las reglas de denegación y consulta conservan deliberadamente la coincidencia anterior a cualquier profundidad. Esa asimetría constituye el diseño seguro correcto: una regla de autorización que coincide de forma demasiado restringida falla de manera segura (recibes una solicitud), mientras que una regla de denegación demasiado restringida falla de manera insegura (una ruta bloqueada logra pasar). Por eso las autorizaciones se volvieron más estrictas y las denegaciones conservaron su amplitud. Si tu configuración depende de patrones de autorización de un solo segmento para abarcar rutas anidadas, estos dejaron de hacerlo silenciosamente en v2.1.214. La corrección funciona según lo previsto, pero conviene revisar tus listas de permitidos y volver a declarar la amplitud que realmente deseas.
Medidas de protección de auto mode contra comandos destructivos (junio de 2026)
Claude Code v2.1.183 redujo el radio de impacto de auto mode para las operaciones que pueden eliminar trabajo o desmantelar entornos silenciosamente. Ahora auto mode bloquea por completo, salvo que las hayas solicitado explícitamente durante la sesión: las operaciones destructivas de git (git reset --hard, git checkout -- ., git clean -fd, git stash drop); git commit --amend cuando el agente no creó el commit durante esta sesión; y el desmantelamiento de infraestructura (terraform destroy, pulumi destroy, cdk destroy), a menos que hayas indicado la pila específica.65 Desde el punto de vista arquitectónico, esto complementa la evaluación de inicios y las reglas a nivel de parámetros descritas antes: en vez de controlar qué herramienta se usa o cómo se inicia, controla por intención un pequeño conjunto de comandos irreversibles específicos. El agente todavía puede ejecutarlos, pero únicamente cuando recibe una instrucción explícita, no por iniciativa propia. En un harness autónomo, incorpora el mismo principio en tus propios hooks PreToolUse: los comandos que destruyen estado merecen una regla de denegación predeterminada que solo pueda levantarse mediante una señal explícita del operador.
Julio de 2026: auto mode llega al entorno empresarial y una solicitud se vuelve irrenunciable. Auto mode alcanzó la disponibilidad general en Amazon Bedrock, Google Vertex AI y Microsoft Foundry con la versión v2.1.207, junto con la configuración administrada disableAutoMode para que las empresas puedan desactivarlo. La postura del clasificador como check-layer ya está disponible en todas las plataformas empresariales oficiales, y deshabilitarla constituye una decisión explícita de gobernanza, no una limitación de la plataforma.68 Después, v2.1.208 convirtió la protección contra eliminaciones catastróficas en una restricción absoluta: las solicitudes de confirmación para eliminaciones catastróficas ahora se imponen tanto sobre --dangerously-skip-permissions como sobre auto mode.68 Se trata de un precedente notable: es la primera confirmación de Claude Code que ninguna postura de permisos puede omitir, ni siquiera el indicador explícito para evadirlos. Los diseños de harnesses autónomos que asumían que --dangerously-skip-permissions significaba literalmente cero solicitudes deben contemplar esta excepción; se activa precisamente cuando un ciclo sin supervisión puede causar el daño más irreversible.
Medidas de protección contra la fabricación de evidencia (julio de 2026)
Las versiones v2.1.203 a v2.1.206 cerraron dos vías mediante las cuales un agente podía fabricar su propio registro de auditoría.68 En primer lugar, una regla de auto mode ahora impide la manipulación de los archivos de transcripción: el registro de la sesión ya no puede ser reescrito por las llamadas a herramientas de esa misma sesión. En segundo lugar, las notificaciones de tareas en segundo plano ahora indican expresamente que no hubo intervención humana mientras se ejecutaba la tarea. Esta segunda medida aborda una falla sutil: anteriormente, un modelo que resumía una tarea en segundo plano podía presentar (o inventar) una «aprobación» dentro de la transcripción que nunca ocurrió, sin que nada en la notificación la contradijera. Ahora la propia notificación funciona como evidencia en contra.
La lección arquitectónica se extiende al evidence gate: las transcripciones, las notificaciones y los registros son superficies de auditoría, y aquello que se audita no debe poder modificarlas. La plataforma ya aplica esta regla a su propia transcripción; haz lo mismo en tu harness: los informes de evidencia, los resultados de pruebas y los registros de deliberación deben quedar fuera de las rutas en las que el modelo puede escribir.
Defensa contra prompt injection
Los skills y hooks proporcionan defensa en profundidad contra prompt injection:
Los skills con restricciones de herramientas impiden que un prompt comprometido obtenga acceso de escritura:
allowed-tools: Read, Grep, Glob
Los hooks PreToolUse validan cada llamada a una herramienta, sin importar cómo se haya instruido al modelo:
# Block credential file access regardless of prompt
if echo "$FILE_PATH" | grep -qE "\.(env|pem|key|credentials)$"; then
echo "BLOCKED: Sensitive file access" >&2
exit 2
fi
El aislamiento de subagents limita el radio de impacto. Un subagent con permissionMode: plan no puede realizar cambios aunque su prompt esté comprometido.
La base de seguridad de la plataforma aumentó en julio de 2026. Claude Code v2.1.210 reforzó el Agent tool contra la prompt injection indirecta transportada en contenido leído por un subagent: un archivo, una página web o el resultado de una herramienta que estén contaminados y que un subagent incorpore tienen menos capacidad para influir en la propia superficie de delegación.69 Además, v2.1.211 reforzó el eslabón humano de la cadena: las vistas previas de permisos ahora neutralizan caracteres Unicode de anulación bidireccional, ancho cero y apariencia similar, por lo que ya no es posible crear un comando que parezca inofensivo en el diálogo de aprobación mientras ejecuta algo distinto.69 La segunda corrección es especialmente importante en los harnesses donde una persona aprueba rápidamente las vistas previas renderizadas: la propia visualización también era una superficie de inyección. Ningún cambio sustituye las defensas de la capa de hooks descritas antes; ambos elevan la base de seguridad que las sustenta.
Los registros y las medidas de protección de los agentes son superficies de seguridad
Dos avisos de mayo de 2026 refuerzan un mismo patrón: la infraestructura de agentes crea nuevos lugares desde los que el contenido confidencial y las políticas ejecutables pueden filtrarse o escapar. El aviso GHSA-f3jg-756w-gm35 de GitHub describe un problema en el filtro de cargas útiles de Gryph Agents, por el cual el contenido confidencial de las cargas útiles de herramientas podía permanecer en registros locales de SQLite con el comportamiento de registro predeterminado.45 OSV GHSA-wxxx-gvqv-xp7p documenta una evasión del sandbox de medidas de protección con código personalizado de LiteLLM en un endpoint de proxy protegido para administradores.46
La regla para producción es tratar las transcripciones de agentes, las cargas útiles de herramientas, los registros de SQLite y la ejecución de medidas de protección como infraestructura confidencial. Oculta los datos sensibles antes de almacenarlos, aplica límites de retención y mantén el código personalizado de las medidas de protección dentro de un sandbox y disponible para revisión. Una regla en el prompt que diga «no registres secretos» no basta; la ruta de registro y de las medidas de protección necesita pruebas deterministas.
Seguridad de los hooks
Los hooks HTTP que interpolan variables de entorno en encabezados necesitan una lista allowedEnvVars explícita para impedir la filtración arbitraria de variables de entorno:13
{
"type": "http",
"url": "https://api.example.com/notify",
"headers": {
"Authorization": "Bearer $MY_TOKEN"
},
"allowedEnvVars": ["MY_TOKEN"]
}
División de responsabilidades entre personas y agentes
La seguridad en las arquitecturas de agentes exige una división clara de responsabilidades entre las personas y los agentes:17
| Responsabilidad humana | Responsabilidad del agente |
|---|---|
| Definición del problema | Ejecución del pipeline |
| Umbrales de confianza | Ejecución dentro de los umbrales |
| Requisitos de consenso | Cálculo del consenso |
| Criterios del quality gate | Aplicación del quality gate |
| Análisis de errores | Detección de errores |
| Decisiones de arquitectura | Opciones de arquitectura |
| Incorporación del contexto del dominio | Generación de documentación |
El patrón es el siguiente: las personas son responsables de las decisiones que exigen contexto organizacional, juicio ético o dirección estratégica. Los agentes se encargan de las decisiones que requieren búsquedas computacionales en espacios amplios de posibilidades. Los hooks hacen cumplir el límite.
Aplicación recursiva de hooks
Los hooks también se activan con las acciones de los subagents.13 Si Claude inicia un subagent mediante el Agent tool, tus hooks PreToolUse y PostToolUse se ejecutan con cada herramienta que utilice el subagent. Sin la aplicación recursiva de hooks, un subagent podría evadir tus controles de seguridad. El evento SubagentStop te permite ejecutar tareas de limpieza o validación cuando termina un subagent.
Esto no es opcional. Un agente que inicia un subagent sin tus hooks de seguridad puede forzar un push a main, leer archivos de credenciales o ejecutar comandos destructivos mientras tus controles observan cómo la conversación principal no hace nada.
El costo como arquitectura
El costo es una decisión arquitectónica, no un detalle operativo posterior.2 Hay tres niveles:
Nivel de tokens. Comprime el prompt del sistema. Elimina ejemplos de código didácticos (el modelo conoce los APIs), consolida las reglas duplicadas entre archivos y sustituye las explicaciones por restricciones. «Rechaza las llamadas a herramientas que coincidan con rutas confidenciales» cumple la misma función que una explicación de 15 líneas sobre por qué no deben leerse las credenciales.
Nivel de agentes. Prefiere inicios nuevos en vez de conversaciones largas. Cada historia de una ejecución autónoma recibe un agente nuevo con un contexto limpio. El contexto nunca crece sin control porque cada agente comienza desde cero. Usa briefings en lugar de memoria: los modelos ejecutan mejor un briefing claro que navegar por 30 pasos de contexto acumulado.
Nivel de arquitectura. Prioriza CLI sobre MCP cuando la operación no tiene estado. Una llamada a claude --print para una evaluación puntual cuesta menos y no añade sobrecarga de conexión. MCP resulta apropiado cuando la herramienta necesita un estado persistente o streaming.
Marco de decisión
Cuándo usar cada mecanismo:
| Problema | Usa | Por qué |
|---|---|---|
| Formatear código después de cada edición | PostToolUse hook | Debe ocurrir siempre, de forma determinista |
| Bloquear comandos bash peligrosos | PreToolUse hook | Debe bloquear antes de la ejecución, código de salida 2 |
| Aplicar patrones de revisión de seguridad | Skill | Experiencia de dominio que se activa automáticamente según el contexto |
| Explorar el codebase sin contaminar el contexto | Explore subagent | Contexto aislado, devuelve solo un resumen |
| Ejecutar refactorizaciones experimentales de forma segura | Worktree-isolated subagent | Los cambios se pueden descartar si fallan |
| Revisar código desde múltiples perspectivas | Parallel subagents o Agent Team | La evaluación independiente evita puntos ciegos |
| Decidir sobre arquitectura irreversible | Multi-agent deliberation | Activador de confianza + validación por consenso |
| Persistir decisiones entre sesiones | MEMORY.md | El filesystem sobrevive a los límites del contexto |
| Compartir estándares del equipo | Project CLAUDE.md + .claude/rules/ | Distribuido por Git, se carga automáticamente |
| Definir comandos de compilación/pruebas del proyecto | CLAUDE.md | Instrucciones centradas en comandos que el agente puede verificar |
| Ejecutar desarrollo autónomo prolongado | Ralph loop (iteración con contexto nuevo) | Presupuesto completo de contexto por iteración, estado del filesystem |
| Notificar a Slack cuando termina la sesión | Async Stop hook | No bloqueante, no ralentiza la sesión |
| Validar calidad antes de hacer commit | PreToolUse hook en git commit | Bloquea el commit si lint/tests fallan |
| Aplicar criterios de finalización | Stop hook | Evita que el agente se detenga antes de terminar la tarea |
Skills vs Hooks vs Subagents
| Dimensión | Skills | Hooks | Subagents |
|---|---|---|---|
| Invocación | Automática (razonamiento de LLM) | Determinista (basada en eventos) | Explícita o delegada automáticamente |
| Garantía | Probabilística (el modelo decide) | Determinista (siempre se dispara) | Determinista (contexto aislado) |
| Costo de contexto | Se inyecta en el contexto principal | Cero (se ejecuta fuera de LLM) | Ventana de contexto separada |
| Costo de tokens | Presupuesto de descripción (1% de la ventana, fallback de 8.000 caracteres) | Cero | Contexto completo por subagent |
| Ideal para | Experiencia de dominio | Aplicación de políticas | Trabajo enfocado, exploración |
Preguntas frecuentes
¿Cuántos hooks son demasiados?
La restricción es el rendimiento, no la cantidad. Cada hook se ejecuta de forma síncrona, así que el tiempo total de ejecución de hooks se suma a cada llamada de herramienta coincidente. 95 hooks entre la configuración de nivel de usuario y de proyecto se ejecutan sin latencia perceptible cuando cada hook termina en menos de 200 ms. El umbral que debes vigilar: si un PostToolUse hook agrega más de 500 ms a cada edición de archivo, la sesión se siente lenta. Perfila tus hooks con time antes de implementarlos.14
¿Pueden los hooks bloquear que Claude Code ejecute un comando?
Sí. Los PreToolUse hooks bloquean cualquier acción de herramienta al salir con código 2. Claude Code cancela la acción pendiente y muestra la salida stderr del hook al modelo. Claude ve el motivo del rechazo y sugiere una alternativa más segura. La salida 1 es una advertencia no bloqueante donde la acción continúa de todos modos.3
¿Dónde debo poner los archivos de configuración de hooks?
Las configuraciones de hooks van en .claude/settings.json para hooks de nivel de proyecto (confirmados en tu repositorio, compartidos con tu equipo) o en ~/.claude/settings.json para hooks de nivel de usuario (personales, aplicados a todos los proyectos). Los hooks de nivel de proyecto tienen prioridad cuando ambos existen. Usa rutas absolutas para los archivos de script a fin de evitar problemas con el directorio de trabajo.14
¿Toda decisión necesita deliberation?
No. El módulo de confianza puntúa las decisiones en cuatro dimensiones (ambigüedad, complejidad, impacto, dependencia del contexto). Solo las decisiones con una confianza general inferior a 0,70 activan deliberation, aproximadamente el 10% del total de decisiones. Las correcciones de documentación, los cambios de nombre de variables y las ediciones rutinarias omiten deliberation por completo. La arquitectura de seguridad, los cambios de esquema de base de datos y los despliegues irreversibles la activan de forma consistente.7
¿Cómo pruebo un sistema diseñado para producir desacuerdo?
Prueba tanto las rutas exitosas como las de fallo. Éxito: los agentes discrepan de forma productiva y alcanzan consenso. Fallo: los agentes convergen demasiado rápido, nunca convergen o exceden los presupuestos de spawn. Las pruebas end-to-end simulan cada escenario con respuestas de agente deterministas y verifican que ambas puertas de validación detecten todos los modos de fallo documentados. Un sistema de deliberation de producción ejecuta 141 pruebas en tres capas: 48 pruebas de integración bash, 81 pruebas unitarias de Python y 12 simulaciones de pipeline end-to-end.7
¿Cuál es el impacto de latencia de deliberation?
Una deliberation de 3 agentes agrega entre 30 y 60 segundos de tiempo de reloj (los agentes se ejecutan secuencialmente mediante Agent tool). Una deliberation de 10 agentes agrega entre 2 y 4 minutos. Los hooks de consenso y pride check se ejecutan cada uno en menos de 200 ms. El cuello de botella principal es el tiempo de inferencia de LLM por agente, no la sobrecarga de orquestación.7
¿Qué tan largo debe ser un archivo CLAUDE.md?
Mantén cada sección por debajo de 50 líneas y el archivo total por debajo de 150 líneas. Los archivos largos se truncan por las ventanas de contexto, así que coloca primero las instrucciones más críticas: comandos y definiciones de cierre antes que preferencias de estilo.21
¿Esto puede funcionar con herramientas distintas de Claude Code?
Los principios arquitectónicos (hooks como puertas deterministas, skills como experiencia de dominio, subagents como contextos aislados, filesystem como memoria) se aplican conceptualmente a cualquier sistema agentic. La implementación específica usa los eventos de ciclo de vida, patrones de matcher y Agent tool de Claude Code. AGENTS.md lleva los mismos patrones a Codex, Cursor, Copilot, Amp y Windsurf.21 El patrón de harness es independiente de la herramienta, aunque los detalles de implementación sean específicos de cada herramienta.
Tarjeta de referencia rápida
Configuración de hooks
{
"hooks": {
"PreToolUse": [{"matcher": "Bash", "hooks": [{"type": "command", "command": "script.sh"}]}],
"PostToolUse": [{"matcher": "Write|Edit", "hooks": [{"type": "command", "command": "format.sh"}]}],
"Stop": [{"matcher": "", "hooks": [{"type": "agent", "prompt": "Verify tests pass. $ARGUMENTS"}]}],
"SessionStart": [{"matcher": "", "hooks": [{"type": "command", "command": "setup.sh"}]}]
}
}
Frontmatter de Skill
---
name: my-skill
description: What it does and when to use it. Include trigger phrases.
allowed-tools: Read, Grep, Glob
---
Definición de subagent
---
name: my-agent
description: When to invoke. Include PROACTIVELY for auto-delegation.
tools: Read, Grep, Glob, Bash
model: opus
permissionMode: plan
---
Instructions for the subagent.
Códigos de salida
| Código | Significado | Úsalo para |
|---|---|---|
| 0 | Éxito | Permitir la operación |
| 2 | Bloqueo | Puertas de seguridad, puertas de calidad |
| 1 | Advertencia no bloqueante | Registro, mensajes consultivos |
Comandos clave
| Comando | Propósito |
|---|---|
/compact |
Comprimir contexto, preservar decisiones |
/context |
Ver la asignación de contexto y skills activos |
edit .claude/agents/ |
Gestionar subagents — el asistente /agents se eliminó en v2.1.198; crea o edita definiciones directamente, o pídele a Claude que lo haga |
/goal <condition> |
Mantener a Claude trabajando hacia una condición de finalización |
claude agents |
Abrir Agent View para sesiones en ejecución, bloqueadas y completadas |
CLAUDE_CODE_WORKFLOWS=1 |
Habilitar Workflow tool para orquestación multi-agent determinista |
claude -c |
Continuar la sesión más reciente |
claude --print |
Invocación puntual de CLI (sin conversación) |
# <note> |
Agregar nota al archivo de memoria |
/memory |
Ver y gestionar auto-memory |
Ubicaciones de archivos
| Ruta | Propósito |
|---|---|
~/.claude/CLAUDE.md |
Instrucciones globales personales |
.claude/CLAUDE.md |
Instrucciones del proyecto (compartidas por Git) |
.claude/settings.json |
Hooks y permisos del proyecto |
~/.claude/settings.json |
Hooks y permisos del usuario |
~/.claude/skills/<name>/SKILL.md |
Skills personales |
.claude/skills/<name>/SKILL.md |
Skills del proyecto (compartidas por Git) |
~/.claude/agents/<name>.md |
Definiciones personales de subagent |
.claude/agents/<name>.md |
Definiciones de subagent del proyecto |
.claude/rules/*.md |
Archivos de reglas del proyecto |
~/.claude/rules/*.md |
Archivos de reglas del usuario |
~/.claude/projects/{path}/memory/MEMORY.md |
Auto-memory |
Registro de cambios
| Fecha | Cambio | Fuente |
|---|---|---|
| 2026-08-01 | Corrección de información desactualizada: una afirmación de versión «a julio de 2026» que ya había quedado rezagada respecto del resto de la guía. El párrafo sobre Python SDK afirmaba que el paquete había «avanzado a la versión 0.2.111 en PyPI (que incluía Claude CLI v2.1.202) y TypeScript SDK a la versión 0.3.203»: ambas líneas estaban 17 versiones atrasadas, mientras que otras secciones de esta misma guía documentaban correctamente las versiones 0.2.128 y 0.3.220. Ahora indica v0.2.128 (con CLI v2.1.220 incluido y el mínimo de mcp elevado a >=1.23.0) y v0.3.220, con la fecha de una comprobación verificada en lugar de un mes abierto. La nueva 86 cita PyPI, npm y el registro de cambios de Python SDK. No hubo nuevas versiones upstream durante este período: Claude Code v2.1.220, Codex v0.146.0 estable (solo versiones alfa de v0.147.0), FastAPI 0.141.1, XcodeBuildMCP 2.7.0, MCPVault 0.12.4, hermes-agent 0.19.0, Midjourney Version 8.2, Suno V5.5 y Apple 26.6 estable permanecen sin cambios. |
86 |
| 2026-07-29 | Corrección de integridad: tres campos de TS SDK v0.3.216 que se omitieron en la entrada del 21 de julio. Al volver a comparar el registro de cambios de claude-agent-sdk-typescript con esta guía, se descubrió que faltaban tres campos en la lista de v0.3.216: las respuestas de rewindFiles incluyen un recuento opcional skippedLinks para las rutas que los mecanismos de seguridad de rebobinado se negaron a restaurar o eliminar, y el mensaje del resultado satisfactorio incluye los campos opcionales user_message_uuid y request_sent_wall_ms para correlacionar entre hosts la latencia de las solicitudes. Se añadieron tanto a la lista principal como a 75, sin crear una nota al pie nueva. Todo lo demás del intervalo v0.3.215-v0.3.220 ya estaba cubierto, incluido el historial de profundidad de anidamiento de subagents (se lanzó con 5, se redujo a 1 en v2.1.217 y se estableció en 3 en v2.1.219) y el límite de concurrencia de 20; la línea «depth cap lowered from 5 to 1» del registro de cambios de SDK es una instantánea desactualizada de un valor cuya evolución posterior ya registra esta guía. Se confirmó que las versiones más recientes de Agent SDK son 0.3.220 en npm (24 de julio) y 0.2.128 en PyPI; no hubo una versión posterior durante este período. |
75 |
| 2026-07-27 | Corrección de renderizado, sin cambios de contenido. El encabezado de este registro de cambios declaraba dos columnas, pero sus filas proporcionaban tres, por lo que python-markdown truncaba cada fila a Date y Change y descartaba silenciosamente la celda Source, llevándose consigo nueve citas de notas al pie ([^83], [^84], [^85], [^103], [^105], [^107], [^108], [^110], [^111]). Como esas nueve no se citaban en ningún otro lugar, cada una se renderizaba como una entrada de la lista de referencias cuya flecha de retorno apuntaba a un ancla inexistente en la página. El encabezado ahora es Date \| Change \| Source, lo que restaura las nueve. Se verificó renderizando la guía con la propia configuración de Markdown del sitio y comparando id="fn:N" con id="fnref:N": 77 referencias activas antes, 86 después y ninguna huérfana. En esta revisión se encontró y corrigió el mismo defecto en las guías de FastAPI + HTMX y Obsidian; ios-agent-development presenta una brecha de citas distinta y aún sin corregir, documentada en su propio informe. |
– |
| 2026-07-25 | Guía v1.27: corrección de la profundidad de anidamiento predeterminada (3, no 1), Claude Opus 5 y un cuarto eje de protección. Corrección: la profundidad de generación de subagents volvió a ser 3 (v2.1.219): «Ahora los subagents pueden generar subagents anidados hasta una profundidad predeterminada de 3 (antes era 1); configura CLAUDE_CODE_MAX_SUBAGENT_SPAWN_DEPTH=1 para desactivar el anidamiento». El valor predeterminado se lanzó en 5 (v2.1.172), se redujo a 1 (v2.1.217) y se estableció en 3 (v2.1.219); los dos últimos cambios ocurrieron en apenas tres días. La subsección Recursion Guard ya no presenta ningún valor predeterminado como definitivo; ahora sostiene que la profundidad es un parámetro inestable de la plataforma y que debe fijarse explícitamente mediante CLAUDE_CODE_MAX_SUBAGENT_SPAWN_DEPTH, en vez de heredarse. Corrección relacionada: --forward-subagent-text ahora también reenvía los subagents de profundidad 2 o superior, identificados mediante el id de tool_use del Agent que los generó; agrupa el texto reenviado por ese id en lugar de asumir que todas las líneas provienen de un hijo directo. Hook DirectoryAdded (CC v2.1.219 + TS SDK v0.3.219): el primer evento nuevo del ciclo de vida desde MessageDisplay (v2.1.152), que se activa después de que /add-dir o la solicitud de control register_repo_root de SDK registran un directorio de trabajo durante una sesión; las comprobaciones iniciales del espacio de trabajo (verificaciones de confianza, análisis de secretos, reglas limitadas por ruta y políticas por repositorio) deben volver a ejecutarse cuando ocurra; la tabla de eventos ahora contiene 30. sandbox.network.strictAllowlist (v2.1.219): deniega los hosts que no figuran en la lista de permitidos para los comandos en sandbox sin solicitar confirmación: una denegación determinista de salida que se combina con sandbox.filesystem.disabled de v2.1.216; se añadió a la subsección sobre patrones de contención como la superficie de configuración que finalmente alcanza el principio de «contener primero en la capa del entorno». La amplitud de la orquestación es un cuarto eje de protección (v2.1.219): los flujos de trabajo dinámicos adoptan de forma predeterminada una recomendación de tamaño medio («procura usar menos de 15 agentes»), configurable desde cualquier archivo de configuración mediante la nueva clave workflowSizeGuideline (también presente en los tipos de configuración de TS SDK) y visible en la línea de estado del flujo de trabajo en ejecución; el modelo de tres ejes (cantidad de generaciones, profundidad y concurrencia) ahora tiene cuatro, y 15 por fin está en el mismo orden de magnitud que el presupuesto de deliberación de 12 agentes de esta guía, en lugar de funcionar como un fusible descontrolado. Claude Opus 5 (claude-opus-5, 24 de julio): el nuevo Opus predeterminado: contexto de 1M, $5/$25 por MTok (el mismo precio que Opus 4.8) y fast mode a $10/$50 con una velocidad aproximada 2,5 veces mayor; supera por más del doble a Opus 4.8 en Frontier-Bench v0.1 y queda a menos del 0,5 % de la puntuación de Fable 5 en CursorBench 3.2 por la mitad del costo. El valor predeterminado recomendado para tareas con agentes cambia de Opus 4.8 a Opus 5 en esta guía; Opus 4.7 queda fuera de fast mode (/fast ahora se aplica a Opus 5 y Opus 4.8), y el fallback a Fable-5 del clasificador de auto-mode se resuelve como Opus 5. Solo en el registro de cambios: Py SDK v0.2.127; las tareas en segundo plano eludían silenciosamente los hooks PreToolUse: query() cerraba stdin al recibir el primer frame result mientras los subagents en segundo plano aún se ejecutaban, por lo que sus llamadas a herramientas de SDK-MCP fallaban con "Stream closed" y omitían el hook (#1103). Es la segunda omisión de los mecanismos de aplicación de hooks en un mes, después de que abort→hook-success de TS v0.3.208 hiciera lo mismo; el patrón ahora se describe en la advertencia sobre la transmisión de hooks de SDK: la aplicación del lado de SDK falla de forma permisiva en los límites del ciclo de vida y lo hace silenciosamente, porque un hook omitido parece uno que dio su aprobación. TS SDK v0.3.219: opción voluntaria cancel_queued en la solicitud de control de interrupción (capacidad interrupt_cancel_queued_v1); fast_mode_disabled_reason en el resultado y la inicialización; la respuesta de inicialización ya no informa fast_mode_state a partir del modelo usado al generar el proceso después de cambiarlo. Diagnósticos de MCP en CC v2.1.219: mcp_server_errors en el evento de inicialización stream-json sin interfaz gráfica; estado HTTP y texto del error en claude mcp list / /mcp cuando falla la conexión; advertencia sobre espacios en blanco ocultos en los valores de configuración de MCP. Alcance de managed-settings: las entradas ${VAR} de las listas de permitidos y denegados de MCP administradas ahora se resuelven a partir del entorno inicial y del entorno de managed-settings, en vez del entorno del archivo de configuración; un cambio en el orden de resolución relevante para la gobernanza. Varios: claude -p ya no descarta el texto producido cuando un turno termina durante la transmisión; CLAUDE_CODE_GIT_BASH_PATH se ignora con una advertencia cuando no corresponde a un binario bash/sh; el skill claude-api incluido usa Opus 5 de forma predeterminada. CC v2.1.220 / TS v0.3.220 / Py v0.2.128 (25 de julio): solo correcciones de errores y actualizaciones de paridad. MCP: no hubo integraciones normativas; la especificación sin estado sigue prevista para el 28 de julio de 2026. |
84 85 87 |
| 2026-07-24 | Guía v1.26: Publicación de Anthropic sobre patrones de contención incorporada + Claude Code v2.1.218. Se agregó la subsección «Tres patrones de contención entre productos» a Consideraciones de seguridad, a partir de la publicación de ingeniería de Anthropic «Cómo contenemos Claude entre productos» (25 de mayo de 2026): contenedores efímeros gVisor del lado del servidor (claude.ai), aislamiento del sistema operativo con intervención humana (Claude Code: Seatbelt/bubblewrap y el sandbox-runtime de código abierto) y máquinas virtuales selladas en hipervisores de plataforma (Claude Cowork: framework Apple Virtualization / Windows HCS, credenciales en el llavero del host con tokens de sesión revocables y de alcance limitado, aplicados por un proxy MITM defensivo dentro de la máquina virtual); además de los principios de diseño de harness que articula la publicación: priorizar la contención en la capa del entorno, adaptar el aislamiento a la capacidad de supervisión del usuario, preferir componentes probados en producción frente a código de aislamiento personalizado, tratar la configuración local del proyecto y los resultados de las herramientas como entradas no confiables y mantener las credenciales fuera del entorno aislado. Solo en el registro de cambios: CC v2.1.218 (22 de julio) — el clasificador del modo automático resuelve las comprobaciones de rm peligroso, & en segundo plano y rutas sospechosas de Windows, en lugar de abrir diálogos de permisos; el modo de planificación con modo automático envía al clasificador los comandos Bash que el analizador estático no puede demostrar que sean de solo lectura; los hooks del frontmatter de un agente requieren que se haya aceptado la confianza del espacio de trabajo para la carpeta propia del archivo del agente; las skills con context: fork se ejecutan en segundo plano de forma predeterminada (background: false desactiva este comportamiento); /code-review se ejecuta como un subagent en segundo plano; /deep-research ya no se invoca a sí misma; se conserva el linaje de las sesiones bifurcadas después de la compactación en sesiones sin interfaz gráfica/de SDK; Ctrl+B respeta los límites de shells en segundo plano al enviar tareas a segundo plano. TS SDK v0.3.218 (22 de julio): indicador SkillToolOutput.background; api_error_status informa errores 429/529 a mitad del flujo; canonicalModel + provider en modelUsage. Py SDK v0.2.126 (22 de julio): ResultMessage.terminal_reason; model_usage tipado con canonicalModel/provider; incluye CLI v2.1.218. MCP: sin fusiones normativas; la especificación sin estado sigue prevista para el 28 de julio de 2026. |
81 82 83 |
| 2026-07-22 | Guía v1.25: Claude Code v2.1.217 — reversión de subagents recursivos + límite de concurrencia. Generación anidada desactivada de forma predeterminada: los subagents ya no generan sus propios subagents; el valor predeterminado de cinco niveles de recursión de v2.1.172 se mantuvo hasta v2.1.216; ahora, un anidamiento más profundo requiere activarse mediante CLAUDE_CODE_MAX_SUBAGENT_SPAWN_DEPTH (se reescribió la subsección Recursion Guard). Límite de concurrencia: la cantidad de subagents que se ejecutan simultáneamente queda limitada a 20 de forma predeterminada (CLAUDE_CODE_MAX_CONCURRENT_SUBAGENTS), para que un mensaje no pueda desplegar una cantidad ilimitada de agentes en segundo plano. El conjunto de medidas de protección propias ahora abarca los tres ejes que supervisa el control de presupuesto de generación del espacio de usuario: generaciones totales por sesión (v2.1.212, límite de 200), profundidad de anidamiento (v2.1.217, un nivel de forma predeterminada) y amplitud concurrente (v2.1.217, 20 de forma predeterminada). Solo en el registro de cambios: en CC v2.1.217, --max-budget-usd ahora sí detiene los subagents en segundo plano (cuando se alcanza el límite, se rechazan nuevas generaciones y se detienen los agentes en segundo plano que estén ejecutándose); el aislamiento de sesiones en segundo plano normaliza los directorios de trabajo con enlaces simbólicos. Py SDK v0.2.125 incluye CLI v2.1.217 sin cambios en la superficie de SDK; TS SDK v0.3.217 se publica al mismo tiempo. PR #3092 de MCP (fusionado el 21 de julio): corrección normativa que armoniza los códigos de error de SEP-2575 con el esquema de borrador renumerado y el conjunto de pruebas de conformidad; continúan los preparativos para el lanzamiento del 28 de julio. |
78 79 80 |
| 2026-07-21 | Guía v1.24: Endurecimiento del alcance de rutas y la aplicación de worktrees en Claude Code v2.1.214–v2.1.216, multi-agent V2 de Codex v0.145.0 + importación entre harness. Las reglas con alcance de ruta se anclan al cwd (v2.1.214): las reglas de permiso dir/** de un solo segmento (por ejemplo, Edit(src/**)) aprobaban automáticamente escrituras en cualquier carpeta dir/ anidada en cualquier parte del árbol; ahora se anclan únicamente a <cwd>/dir; del mismo modo, las condiciones if: de los hooks con dir/** de un solo segmento ahora se limitan al cwd (usa **/dir/** para cualquier profundidad); las reglas de denegación/consulta conservan deliberadamente la coincidencia a cualquier profundidad (protección asimétrica: ante un fallo, los permisos deben solicitar confirmación y las denegaciones no deben permitir la operación). El aislamiento mediante worktrees alcanza un nivel apto para aplicar restricciones (v2.1.216): los subagents de worktrees podían redirigir git al checkout compartido mediante git -C, --git-dir o GIT_DIR/GIT_WORK_TREE; esto se corrigió; las sesiones de worktrees ya no terminan en un worktree residual de otro proyecto; las escrituras de flujos de trabajo y tareas programadas ya no siguen enlaces simbólicos colocados en .claude; /rewind rechaza enlaces simbólicos y enlaces físicos. Reversión de la activación automática de skills (v2.1.215): Claude ya no invoca por sí mismo las skills incluidas /verify y /code-review; ahora solo se ejecutan mediante invocación explícita. Codex v0.145.0: se estabilizó multi-agent V2, que requiere activación (modelos de subagentes, niveles de razonamiento y concurrencia configurables, además de roles restaurados); /import ahora migra la configuración de Claude Code y Cursor, servidores MCP, plugins, sesiones, comandos y memorias con alcance de proyecto: una migración completa entre harness que amplía la de v0.140.0. Solo en el registro de cambios: herramienta EndConversation de CC v2.1.214; conjunto de medidas de endurecimiento de Bash/PowerShell con fallo seguro (las redirecciones de descriptores de archivo fallan de forma segura, los comandos de más de 10.000 caracteres siempre solicitan confirmación, los subíndices de zsh solicitan confirmación, se eliminó la autorización automática de help/man, los indicadores de redirección del daemon de docker/Podman solicitan confirmación, file -m/-f requiere permiso y se corrigió una omisión de controles en PowerShell 5.1); la salida 2 de un hook bloquea la operación incluso cuando el JSON de stdout no supera la validación del esquema; el frontmatter de memoria incorpora la marca de tiempo ISO modified, sin truncamiento silencioso ante un # en línea; OTel incorpora message.uuid/client_request_id/tool_source + CLAUDE_CODE_OTEL_CONTENT_MAX_LENGTH. CC v2.1.216 incorpora sandbox.filesystem.disabled (control de salida de red sin aislamiento del sistema de archivos); las sesiones reanudadas de agentes en segundo plano restauran las restricciones de instrucciones y herramientas del agente; los cambios realizados en skills/comandos durante una sesión aparecen en el menú de comandos con barra sin necesidad de reiniciar. TS SDK v0.3.214/v0.3.216: set_permission_mode rechaza modos desconocidos; aborted: true en mensajes truncados por una interrupción; subagent_type/subagent_retry en tool_progress; subtipo scheduled-trigger de notificación de tareas; origen "fork" de SessionStart; información complementaria tool_result_meta (non_execution_kind, user_feedback); rewindFiles informa skippedLinks para las rutas que las medidas de seguridad de rewind se negaron a restaurar o eliminar; los resultados correctos incluyen user_message_uuid y request_sent_wall_ms para correlacionar la latencia de solicitudes entre hosts. Py SDK v0.2.124: corrección de clase BatBadBut en Windows (rechaza la ejecución de .bat/.cmd; los metacaracteres de cmd.exe en resume/session_id generan ValueError; los valores de extra_args que comienzan con guion se vinculan como --flag=value). Endurecimiento de Codex v0.145.0: tiempos de espera al iniciar MCP, actualizaciones serializadas de OAuth, descubrimiento no bloqueante de OAuth, detección más robusta de eliminaciones forzadas mediante rm, conservación de los motivos de rechazo e historial experimental paginado de conversaciones. Preparativos para el lanzamiento de MCP del 28 de julio de 2026 (PR de documentación #3064/#3066/#3098, fusionados el 21 de julio): se finalizó la especificación para presentar Tasks como una extensión opcional io.modelcontextprotocol/tasks; HTTP+SSE queda obsoleto en favor de Streamable HTTP. |
74 75 76 77 |
| 2026-07-17 | Guía v1.23: Claude Code v2.1.203–v2.1.212: protecciones contra bucles descontrolados + refuerzo contra inyecciones, superficies del protocolo SDK para TS, borrador de identidad sin estado de MCP, paridad con Codex/OpenAI. Protecciones nativas contra bucles descontrolados (v2.1.212): límite de creación de subagents por sesión (200 de forma predeterminada, CLAUDE_CODE_MAX_SUBAGENTS_PER_SESSION; /clear lo restablece) y límite de WebSearch (200, CLAUDE_CODE_MAX_WEB_SEARCHES_PER_SESSION); el patrón de presupuesto de creación en el espacio del usuario ahora cuenta con un mecanismo de respaldo nativo; el parámetro mode de la herramienta Task quedó obsoleto (los subagents heredan el modo de permisos de la sesión principal); /fork ahora crea una nueva sesión en segundo plano (la variante dentro de la sesión pasó a llamarse /subtask); las llamadas a MCP que superan los 2 min pasan automáticamente a segundo plano (CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS). Precedencia entre hooks y modo automático (v2.1.211): ask de PreToolUse establece como mínimo una solicitud de confirmación (el modo automático no puede anularla para Bash fuera del entorno aislado); --forward-subagent-text / CLAUDE_CODE_FORWARD_SUBAGENT_TEXT para stream-json; las reglas de «permitir siempre» se conservan en la raíz del repositorio entre worktrees; las vistas previas de permisos neutralizan la suplantación mediante texto bidireccional, caracteres de ancho cero y caracteres visualmente similares. v2.1.210: se corrigió el problema por el que los subagents con aislamiento mediante worktree modificaban el checkout principal; Agent tool se reforzó contra inyecciones indirectas provenientes de contenido leído por subagents; el clasificador del modo automático usa Sonnet 5 de forma predeterminada y queda fijado por sesión; las escrituras que exceden el límite de MEMORY.md generan un error en vez de truncarse silenciosamente. v2.1.207/v2.1.208: disponibilidad general del modo automático en Bedrock/Vertex/Foundry (se puede desactivar con disableAutoMode); las solicitudes de confirmación para eliminaciones catastróficas prevalecen sobre --dangerously-skip-permissions y el modo automático; lanzador corporativo CLAUDE_CODE_PROCESS_WRAPPER; rondas de herramientas hasta 7 veces más rápidas con cantidades elevadas de herramientas MCP y transcripciones 79 veces más pequeñas. v2.1.203–v2.1.206: medidas contra la fabricación de información (se bloqueó la manipulación de archivos de transcripción; las notificaciones de tareas en segundo plano indican explícitamente que no hubo intervención humana); roots/list de MCP incluye directorios de trabajo adicionales con roots/list_changed; /doctor propone recortar el contenido de CLAUDE.md que pueda derivarse del código base. SDK para TS v0.3.205–v0.3.208: confirmaciones de interrupción tipadas (still_queued, interrupt_receipt_v1), tramas command_lifecycle, AgentToolCompletedOutput, canUseTool con {behavior:'allow'} sin updatedInput; corrección de seguridad en v0.3.208: la cancelación del llamador durante un hook pendiente se convertía en una ejecución correcta del hook, lo que permitía ejecutar después de la cancelación herramientas protegidas por PreToolUse. Borrador de la especificación de MCP (PR #3002, fusionado el 16 de julio): _meta opcional y declarado por el propio servidor en la respuesta io.modelcontextprotocol/serverInfo + clientInfo opcional; solo para visualización y registros, y NO DEBERÍA orientar decisiones de seguridad; la especificación final sin estado se publica el 2026-07-28. Codex: v0.143.0: herramientas MCP disponibles de forma predeterminada mediante búsqueda de herramientas (carga diferida de herramientas); v0.144.0: modo de aprobación de aplicaciones writes + disponibilidad general de la autenticación interactiva de MCP; v0.144.5: detección ampliada de comandos peligrosos. Beta de múltiples agentes alojada por OpenAI: openai-agents-python v0.18.2 (11 de julio) + openai-agents-js v0.13.2 (10 de julio). Solo en el registro de cambios: correcciones de inyección de indicadores argv en SDK (TS 0.3.212 / Py 0.2.121; los valores de resume/session_id que comienzan con guion ahora se pasan con el formato de signo igual); BashToolOutput.timedOutAfterMs; SDKAssistantMessage.timestamp; corrección de la transmisión de SessionStart sin interfaz en CC v2.1.204; valores predeterminados de GPT-5.6 en openai-agents; orientación sobre rechazo y reintento de Mcp-Param-* en MCP. |
68 69 70 71 72 73 |
| 2026-07-07 | Guía v1.22: Claude Code v2.1.196–v2.1.202. Sonnet 5 es el modelo predeterminado incluido (v2.1.197); se reformuló la nota sobre los niveles de modelos (esta guía sigue recomendando Opus 4.8 como valor predeterminado agéntico para harnesses autónomos). Los subagents se ejecutan en segundo plano de forma predeterminada (v2.1.198): el campo background ahora fija el comportamiento en vez de habilitarlo; el agente Explore hereda el modelo de la sesión (con Opus como límite); los subagents y la compactación heredan la configuración de razonamiento extendido; las sesiones claude agents en segundo plano confirman y envían automáticamente los cambios, abren un borrador de PR y activan el hook Notification con agent_needs_input/agent_completed; se eliminó el asistente /agents (edita .claude/agents/ directamente). v2.1.199: los hooks SessionStart/Setup/SubagentStart muestran stderr cuando el código de salida es 2; se agregó la detección de direccionamiento incorrecto por reutilización de nombres en SendMessage a la nota sobre autoridad entre sesiones; se cargan hasta 5 slash-skills apiladas. v2.1.200: el modo de permisos default se etiqueta como «Manual» (alias manual) en la lista permissionMode de los subagents. v2.1.196: se documentaron los modelos predeterminados para toda la organización en la sección de gobernanza; se cerró la autoaprobación de MCP. Actualidad de SDK: claude-agent-sdk v0.2.111 (Python, incluye CLI v2.1.202) / @anthropic-ai/claude-agent-sdk v0.3.203 (TS), con cambios incrementales respecto de la superficie 0.1.x documentada. |
67 |
| 2026-07-02 | Guía v1.21: actualizaciones de gobernanza para los comparadores de hooks y el clasificador. Claude Code v2.1.195: los comparadores de identificadores con guiones buscan coincidencias exactas en vez de subcadenas (consulta Arquitectura de hooks — semántica de los comparadores). Claude Code v2.1.193: autoMode.classifyAllShell dirige todo el shell al clasificador del modo automático y muestra los motivos de rechazo en la transcripción, la notificación emergente y /permissions (consulta Consideraciones de seguridad). Codex v0.142.2: PowerShell ahora requiere aprobación cuando contiene regiones del AST que no pueden inspeccionarse. Todos los elementos se verificaron con los registros de cambios canónicos durante este ciclo de actualización. |
66 |
| 2026-06-20 | Guía v1.20: Claude Code v2.1.183 + Codex v0.141.0: gobernanza y seguridad de ejecución remota. Se agregaron protecciones del modo automático contra comandos destructivos (CC v2.1.183 bloquea por completo git reset --hard/checkout -- ./clean -fd/stash drop, git commit --amend en confirmaciones que no pertenecen al agente y terraform/pulumi/cdk destroy sin una pila identificada, salvo que lo hayas solicitado) a Consideraciones de seguridad, presentadas como el complemento a nivel de intención de las reglas a nivel de parámetros y la evaluación previa a la creación; también se agregaron ejecutores remotos con retransmisión Noise cifrada (Codex v0.141.0: canales de ejecutores cifrados de extremo a extremo, conservación de cwd/shell entre plataformas, TLS P-521) a las Notas de paridad de Codex. |
65 |
| 2026-06-16 | Guía v1.19: primitivas de gobernanza y delimitación de alcance de Claude Code v2.1.173–v2.1.179, además de la importación entre herramientas de Codex v0.140.0. Se integró la versión v2.1.178 en el contenido: reglas de permisos a nivel de parámetros Tool(param:value) con el comodín * (por ejemplo, Agent(model:opus) para bloquear un nivel de modelo), además de la configuración administrada enforceAvailableModels (v2.1.175), ambas en Seguridad → Límites de permisos; el modo automático ahora evalúa la creación de subagents antes de iniciarlos, lo que cierra la brecha que permitía eludir controles mediante su creación (Patrones de subagents); carga anidada de .claude/skills + resolución por proximidad para skills/agentes/flujos de trabajo/estilos de salida en árboles .claude/ anidados (Sistema de skills); y la corrección de coincidencia con la especificación del servidor MCP en disallowedTools (Campos de configuración de subagents). Se agregó la portabilidad entre herramientas mediante /import de Codex + eliminación permanente de sesiones (v0.140.0) a la nota de paridad de Codex. |
63 64 |
| 2026-06-10 | Guía v1.18: subagents recursivos (Claude Code v2.1.172). Se agregó una nota a la subsección Protección contra recursión: los subagents de Claude Code ahora pueden crear sus propios subagents, con hasta 5 niveles de anidación; antes, la delegación estaba limitada en la práctica a un solo nivel (v2.1.172, 10 de junio). El patrón de presupuesto de creación y límite de profundidad en el espacio del usuario se reformuló como el control que evita que un árbol de 5 niveles se ramifique sin control, considerando esos 5 niveles como el límite máximo de la plataforma y no como el valor predeterminado. | 62 |
| 2026-06-09 | Guía v1.17: Claude Code v2.1.169–v2.1.170 + Codex v0.138.0–v0.139.0: gobernanza y refuerzo de multi-agent-v2. Se integraron en el contenido cinco cambios verificados en la arquitectura de harnesses. El Sistema de skills incorporó una subsección «Ocultar la superficie incluida como medida de gobernanza»: la configuración disableBundledSkills (y la variable de entorno CLAUDE_CODE_DISABLE_BUNDLED_SKILLS) oculta al modelo las skills, los flujos de trabajo y los comandos slash integrados para reducir deliberadamente la superficie de ataque (v2.1.169). La subsección de junio sobre Arquitectura de hooks agregó el indicador --safe-mode (y CLAUDE_CODE_SAFE_MODE), que inicia una sesión con todas las personalizaciones deshabilitadas —CLAUDE.md, plugins, skills, hooks, MCP— para realizar diagnósticos y tareas de gobernanza en un entorno limpio (v2.1.169), además de una nota sobre niveles de modelos: Claude Fable 5 de Anthropic (claude-fable-5) se lanzó el 9 de junio como un nivel de clase Mythos superior a Opus, seleccionable mediante /model claude-fable-5 en v2.1.170, mientras que Opus 4.8 sigue siendo el valor predeterminado agéntico de Claude Code. Memoria y contexto incorporó el comando /cd (v2.1.169), que traslada una sesión a un nuevo directorio de trabajo sin interrumpir la caché de instrucciones a mitad de la sesión. Orquestación multiagente / Paridad con Codex se reforzó para producción: close_agent pasó a llamarse interrupt_agent (v0.139.0), cargas útiles cifradas para mensajes entre agentes, un catálogo v2 de configuraciones de agentes, LRU para la residencia de agentes y concurrencia contabilizada según la ejecución activa (v0.138.0), descubrimiento de AGENTS.md dirigido a través de los sistemas de archivos del entorno, conservando las rutas lógicas para seleccionar correctamente los archivos en espacios de trabajo remotos o con enlaces simbólicos (v0.138.0/v0.139.0), y advertencias de inicio de MCP para subagents limitadas al hilo propietario en vez de duplicarse en el principal (v0.139.0). |
60 61 |
| 2026-06-08 | Guía v1.16: Patrones de arquitectura de agentes de junio de Claude Code v2.1.162–v2.1.166 + Codex v0.137.0. Se agregó la subsección «Orientación mediante Stop hooks, autoridad entre sesiones y multi-agent v2», que abarca cuatro cambios relevantes para el harness: (1) los hooks Stop/SubagentStop pueden devolver hookSpecificOutput.additionalContext para inyectar comentarios del tipo «aún no ha terminado; este es el motivo» y continuar el turno sin un bloque de error del hook (v2.1.163); (2) se reforzó la mensajería entre sesiones para que los mensajes retransmitidos mediante SendMessage desde otra sesión ya no conserven la autoridad del usuario de origen; trata los mensajes entrantes entre agentes como datos no confiables (v2.1.166); (3) la configuración fallbackModel encadena hasta tres modelos de respaldo con un único reintento alternativo ante errores no reintentables de API, y claude agents --json agrega un campo waitingFor para observar la flota (v2.1.162/166); (4) Codex multi-agent v2 (v0.137.0) mantiene el entorno de ejecución con cada hilo, establece hide_spawn_agent_metadata en true de forma predeterminada, propaga los eventos del agente principal a los listeners secundarios y agrega una extensión de skills v1 con resolución del catálogo en cada turno y eventos de colaboradores del ciclo de vida al iniciar el hilo o producirse un error en el turno. No hubo cambios en la especificación de AGENTS.md (sigue bajo la gestión de Agentic-AI-Foundation y sin un changelog con versiones). |
59 |
| 2026-05-31 | Guía v1.15: Parches de Claude Code v2.1.157 + Hermes v0.15.1/v0.15.2. Se agregó la subsección «Convergencia de plugins y Skills en .claude/skills/»: Claude Code v2.1.157 hace que cualquier carpeta del directorio .claude/skills/ de un proyecto se cargue automáticamente como plugin sin registrarse en un marketplace, mientras que claude plugin init <name> crea allí la estructura de un plugin nuevo con su manifest + SKILL.md. La implicación para el harness es concreta: las herramientas de proyecto con alcance reducido ya no tienen que asumir el costo de un manifest para residir en el control de versiones; los plugins siguen siendo responsables del formato ZIP empaquetado e instalable. La misma versión incorpora EnterWorktree para cambiar a mitad de sesión entre worktrees administrados por Claude y deja desbloqueados los worktrees en segundo plano cuando el agente termina, de modo que git worktree remove/prune funcionen correctamente. Hermes Agent v0.15.1 (29 de mayo) es el hotfix de Velocity publicado ese mismo día: corrección del bucle de recarga con error 401 del panel en modo loopback, Docker ahora requiere HERMES_DASHBOARD_INSECURE=1 de forma explícita, los comandos directos de MCP (npx, npm, node) se resuelven en Docker, se restauró la página Skills, los workers de Kanban responden correctamente a SIGTERM y el catálogo Skills.sh aumentó de 858 a 19.932 entradas mediante el sitemap. Hermes v0.15.2 (29 de mayo) es un hotfix exclusivo de empaquetado que incluye los manifests plugin.yaml en las distribuciones wheel y sdist. |
58 |
| 2026-05-28 | Guía v1.14: Revisión de patrones de arquitectura de Claude Code v2.1.152-v2.1.154 + Codex v0.134.0-v0.135.0 + Hermes v0.15.0. Claude Code modificó los valores predeterminados y agregó primitivas de orquestación: Opus 4.8 es ahora el modelo predeterminado, con esfuerzo alto por defecto y un nuevo /effort xhigh; los flujos de trabajo dinámicos orquestan de decenas a cientos de agentes en segundo plano mediante /workflows; el system prompt reducido ahora es el predeterminado para todos los modelos, excepto Haiku/Sonnet/Opus 4.7 y versiones anteriores; el nuevo evento de hook MessageDisplay permite que los hooks transformen u oculten el texto del asistente mientras se muestra; disallowed-tools en el frontmatter de una skill o un comando elimina herramientas mientras la skill está activa; /reload-skills vuelve a examinar los directorios de skills sin reiniciar; los hooks SessionStart pueden devolver reloadSkills: true y establecer hookSpecificOutput.sessionTitle; --fallback-model cambia de modelo a mitad de sesión cuando el principal no está disponible; el modo automático ya no requiere consentimiento previo; la configuración administrada pluginSuggestionMarketplaces establece una lista de marketplaces permitidos por la organización para ofrecer sugerencias según el contexto; claude agents admite sesiones de shell en segundo plano con ! <command>; los plugins pueden declarar defaultEnabled: false; el entorno de los subprocesos stdio de MCP ahora incluye CLAUDE_CODE_SESSION_ID y CLAUDECODE=1. Codex v0.134.0 convirtió --profile en el selector principal de perfiles en CLI, los permisos de la TUI y los flujos del sandbox (las configuraciones heredadas se rechazan con instrucciones de migración), agregó búsqueda en el historial local de conversaciones, mejoró la configuración de MCP con selección del entorno por servidor y OAuth para servidores HTTP con streaming, y permitió ejecutar simultáneamente herramientas de solo lectura de MCP cuando anuncian readOnlyHint; v0.135.0 incorporó diagnósticos más completos en codex doctor, detalles remotos en /status, edición de objetos de texto de vim, perfiles de permisos con nombre en /permissions y ajustes preestablecidos de Sandbox en el Python SDK. Hermes Agent v0.15.0 (28 de mayo) presenta la versión Velocity: run_agent.py se refactorizó en un 76 % a lo largo de 14 módulos, Kanban multi-agent v2 incluye descomposición automática y topología de enjambre, Bitwarden Secrets Manager sustituye las claves individuales de cada proveedor por un único token de arranque, la defensa contra Promptware protege frente a la inyección de prompts de la clase Brainworm en tres puntos críticos de seguridad, se agregaron paquetes de skills, un orquestador de sesiones mediante TUI para administrar varias sesiones desde una sola terminal y una búsqueda session_search 4.500 veces más rápida tras eliminar la dependencia LLM. Implicaciones para la arquitectura del harness: el patrón de perfiles con nombre (Codex --profile, Claude Code pluginSuggestionMarketplaces) se está convirtiendo en la primitiva de configuración estándar para entornos de ejecución de agentes multiusuario; las herramientas simultáneas de solo lectura de MCP (Codex readOnlyHint) son el patrón adecuado para distribuir consultas de contexto que no producen cambios; el hook MessageDisplay ofrece a los operadores una superficie de transformación de primera clase que no estaba disponible desde PostToolUse ni Stop; y el system prompt reducido predeterminado elimina la antigua disyuntiva entre el contexto definido por el operador y la estructura proporcionada por el proveedor. |
55 56 57 |
| 2026-05-24 | Guía v1.13: Revisión de seguridad y vigencia de Claude Code v2.1.150 + OpenAI Agents SDK v0.17.3. La ejecución local de claude --version devolvió 2.1.144 (Claude Code), mientras que la versión más reciente de npm para @anthropic-ai/claude-code devolvió 2.1.150 y la versión más reciente de GitHub devolvió v2.1.150. Se agregaron pautas para el harness de v2.1.149 sobre las correcciones de omisión de permisos en PowerShell, las correcciones del análisis de permisos para reglas de autorización y variables obsoletas de PowerShell, y la corrección de la lista de escritura permitida del sandbox para git worktrees; también se indicó que v2.1.150 solo contiene cambios de infraestructura interna y no incluye cambios anunciados para los usuarios. La versión más reciente de PyPI para openai-agents devolvió 0.17.3, por lo que la sección del sandbox de OpenAI ahora menciona el refuerzo adicional de las versiones 0.17.1-0.17.3 para la extracción de archivos comprimidos, las subrutas de GitRepo, las credenciales del sandbox, las raíces relativas del espacio de trabajo y la gestión de estados terminales del proveedor.5354 |
|
| 2026-05-21 | Guía v1.12: Revisión de Workflow de Claude Code v2.1.147. La ejecución local de claude --version devolvió 2.1.144 (Claude Code), mientras que la versión más reciente de npm para @anthropic-ai/claude-code devolvió 2.1.147. Se agregó la herramienta Workflow, desactivada de forma predeterminada, como una primitiva propia para la orquestación multi-agent determinista, y se aclaró que los hooks, las pruebas, las puertas de revisión, los presupuestos de generación y los informes de evidencia siguen constituyendo el límite de corrección.52 |
|
| 2026-05-15 | Guía v1.11: Revisión de confiabilidad de sesiones en segundo plano y plugins de Claude Code v2.1.142. La ejecución local de claude --version devolvió 2.1.141 (Claude Code), mientras que la versión más reciente de npm para @anthropic-ai/claude-code devolvió 2.1.142. Se agregaron pautas para operadores sobre las nuevas opciones de despacho de claude agents, el uso predeterminado del modo Fast de Opus 4.7, la detección del archivo SKILL.md de los plugins en el nivel raíz, la visibilidad de LSP para los plugins, el comportamiento de HTTP/SSE remoto de MCP_TOOL_TIMEOUT y las correcciones de confiabilidad para las sesiones en segundo plano, los daemons y la caché de plugins.51 |
|
| 2026-05-14 | Guía v1.10: Revisión de señalización para operadores y delimitación del alcance de Claude Code v2.1.141. La ejecución local de claude --version devolvió 2.1.141 (Claude Code) y la versión más reciente de npm para @anthropic-ai/claude-code devolvió 2.1.141. Se agregaron pautas para hooks sobre el uso de terminalSequence como señalización para el operador, no como mecanismo de cumplimiento; se mencionó claude agents --cwd <path> para delimitar Agent View por directorio y se documentó el impacto arquitectónico de CLAUDE_CODE_PLUGIN_PREFER_HTTPS junto con ANTHROPIC_WORKSPACE_ID en la instalación de plugins y la delimitación de la federación de identidades de carga de trabajo.50 |
|
| 2026-05-13 | Guía v1.9: Revisión de confiabilidad de Claude Code v2.1.140. La ejecución local de claude --version devolvió 2.1.140 (Claude Code). Se agregó subagent_type a las pautas de los hooks de agentes y se actualizó la sección de gobernanza de hooks con las correcciones de v2.1.140 para ConfigChange, disableAllHooks, allowManagedHooksOnly, la visualización de variables de entorno en el diálogo de permisos, el restablecimiento del estilo personalizado tras sincronizar la configuración, el mecanismo alternativo de paquetes nativos de Windows Git Bash y el comportamiento de /scroll-speed.49 |
|
| 2026-05-11 | Guía v1.8: Revisión de vigencia de Claude Code v2.1.139 + análisis específico de seguridad y memoria de agentes. Se verificó que la ejecución local de claude --version devolviera 2.1.139 y se agregaron los cambios operativos de v2.1.139: Agent View mediante claude agents, bucles de finalización con /goal, args para hooks de comandos, continueOnBlock en PostToolUse, CLAUDE_PROJECT_DIR de MCP y la corrección del tiempo activo de OpenTelemetry.424344 Se agregó una advertencia sobre la depuración de memoria basada en el preprint de arXiv «The Memory Curse», pautas sobre la autoridad humana para hacer merge basadas en el preprint de arXiv acerca del ciclo de vida de las PR y recomendaciones sobre seguridad para los registros y guardrails de agentes basadas en los avisos de Gryph Agents y LiteLLM.45464748 Se corrigió la fila obsoleta del presupuesto de tokens de Skills frente a Hooks frente a Subagents, que pasó del 2 % al presupuesto actual del 1 % / 8.000 caracteres para la descripción de skills. |
|
| 2026-05-09 | Guía v1.7: Seguimiento del día 3 de Claude Code v2.1.136 + openai-agents-python v0.17.0. Se añadió la subsección sobre autoMode.hard_deny y las correcciones de hooks/plugins de v2.1.136 a Arquitectura de Hooks, que abarca el nuevo nivel de bloqueo incondicional, la corrección de la desaparición de MCP después de /clear en VS Code/JetBrains/Agent SDK, la pérdida del token de actualización de MCP OAuth durante actualizaciones simultáneas, la corrección del bloqueo de escritura en modo de planificación cuando coincidía una regla de permiso Edit(...), la condición de carrera en la limpieza de caché de Stop/UserPromptSubmit del plugin, la ocultación de la carpeta predeterminada skills/ por parte de la entrada skills y la desactualización de las variables de entorno de hooks SessionStart de CLAUDE_ENV_FILE después de /resume//clear.40 Se añadió la subsección Encuesta de comentarios de OTel a Patrones de Producción, que abarca CLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTEL.40 Se amplió la subsección El Sandbox con las restricciones de openai-agents-python v0.17.0: LocalFile.src / LocalDir.src quedan limitados al interior de base_dir, salvo que se conceda acceso mediante Manifest.extra_path_grants con SandboxPathGrant.41 Se añadió la nota sobre el modelo predeterminado de RealtimeAgent (gpt-realtime-2) a Harnesses Gestionados frente a Autohospedados.41 Solo en el registro de cambios: Claude Code v2.1.137 (corrección de activación de Win VSCode), v2.1.138 (correcciones internas); claude-agent-sdk-python v0.1.78 (paquete de CLI v2.1.136), v0.1.79 (paquete de CLI v2.1.137), v0.1.80 (paquete de CLI v2.1.138). |
|
| 2026-05-08 | Guía v1.6: Seguimiento del día 2 de Claude Code v2.1.132/v2.1.133 + SDK v0.1.77. Se añadió la subsección Superficie de Skills de SDK a Sistema de Skills, que abarca la opción skills de ClaudeAgentOptions y la obsolescencia de "Skill" en allowed_tools.37 Se añadió la subsección Esfuerzo y Procedencia de la Sesión a Arquitectura de Hooks, que abarca el nuevo campo JSON effort.level + la variable de entorno $CLAUDE_EFFORT en la entrada del hook, y la variable de entorno CLAUDE_CODE_SESSION_ID en los subprocesos de Bash.3839 Se añadió la corrección del descubrimiento de skills por subagents a la tabla Campos de Configuración de Subagents (ahora los subagents descubren los skills del proyecto, del usuario y de plugins mediante la herramienta Skill; antes de v2.1.133 se descartaban silenciosamente).39 Se añadió la subsección Base del Worktree, Rutas del Sandbox y Configuración Administrativa a Patrones de Producción, que abarca worktree.baseRef (reversión del cambio incompatible del valor predeterminado, de HEAD local nuevamente a origin/<default>), sandbox.bwrapPath, sandbox.socatPath y parentSettingsBehavior.39 |
|
| 2026-05-07 | Guía v1.5: Agentes Gestionados de Claude, ampliación de SF del 6 de mayo. Se añadió la Estrategia 5 (Curación Gestionada de Memoria: Dreaming, versión preliminar de investigación) a Memoria y Contexto, con una tabla que contrasta el sistema de archivos como memoria frente a Dreaming.35 Se añadieron Orquestación Multiagent Gestionada (beta pública) y Resultados (beta pública) al principio de Orquestación Multiagente, con citas textuales de Anthropic sobre especialistas con un sistema de archivos compartido y el rastreo de la Consola de Claude, además de una tabla comparativa frente a la deliberación autohospedada. Se añadió una subsección sobre la transmisión de eventos de hooks desde SDK, que abarca include_hook_events y HookEventMessage de claude-agent-sdk-python v0.1.74.36 Solo en el registro de cambios: Claude Code v2.1.124-v2.1.131 (claude project purge, --dangerously-skip-permissions para carpetas de proyectos, skill_activated invocation_trigger, corrección de formato al guardar de PostToolUse, corrección del bloqueo de PreToolUse con JSON+salida 2, configuración skillOverrides); claude-agent-sdk-python v0.1.72 (CLI 2.1.126), v0.1.73 (session_store_flush), v0.1.75 (CLI 2.1.131), v0.1.76 (api_error_status); openai-agents-python v0.15.0-v0.16.1, con v0.16.0 (7 de mayo) usando gpt-5.4-mini de forma predeterminada, eliminando el límite implícito de max_turns y añadiendo concurrencia en la ejecución de herramientas desde SDK. |
|
| 2026-05-07 | Guía v1.4: Se actualizaron los mecanismos de hooks y skills de Claude Code conforme a la documentación oficial vigente y la evidencia del entorno de ejecución local (claude --version 2.1.132, codex --version devolvió codex-cli 0.128.0). Se actualizó la superficie de hooks de 22/26+ a 29 eventos documentados, se corrigió el presupuesto de descripción de skills de 2 %/16.000 a 1 %/8.000, se cambió el número de tipos de hooks de cuatro a cinco con mcp_tool, se eliminó la afirmación no sustentada del límite fijo de «10 subagents paralelos» y se añadió una sección pública y segura sobre la paridad con Codex que abarca AGENTS.md, skills, hooks, plugins y flujos de trabajo explícitos con subagents. |
|
| 2026-04-29 | Guía v1.3: Se amplió la cobertura de OpenAI Agents SDK en la sección Harnesses Gestionados frente a Autohospedados con la superficie identificada de SDK de openai-agents Python v0.14.0 (15 de abril): SandboxAgent, Manifest, SandboxRunConfig, memoria de sandbox con divulgación progresiva, montajes de espacios de trabajo (S3/R2/GCS/Azure), instantáneas portátiles y los backends de cliente local/Docker/alojado (Blaxel, Cloudflare, Daytona, E2B, Modal, Runloop, Vercel). Se reemplazó la cita secundaria de Help Net Security por la cita principal de las notas de la versión v0.14.0. Se añadió una nota breve sobre claude-agent-sdk-python v0.1.69-v0.1.71 (28-29 de abril) como la tercera opción autohospedada (incorporar el entorno de ejecución de Claude Code como una biblioteca de Python): el CLI de Claude incluido se actualizó a v2.1.123, se elevó la versión mínima de la dependencia mcp a >=1.19.0 (las versiones anteriores descartaban silenciosamente CallToolResult de las herramientas MCP en proceso), se corrigió la cancelación del nursery de Trio y se incorporó la paridad de los campos de la lista de permitidos de SandboxNetworkConfig con TS SDK. Los ajustes de SDK v0.14.7-v0.14.8 están documentados en [^58]. |
|
| 2026-04-25 | Guía v1.2: Google Cloud Next 2026 (22-24 de abril) — Vertex AI cambió de nombre a Gemini Enterprise Agent Platform; Agentspace se integró en la plataforma unificada Gemini Enterprise; Workspace Studio (constructor de agentes sin código); más de 200 modelos en Model Garden, incluido Anthropic Claude; agentes de socios como Box, Workday, Salesforce y ServiceNow; ADK v1.0 estable en cuatro lenguajes; Project Mariner (agente de navegación web); servidores MCP gestionados con Apigee como puente de API a agentes; protocolo A2A v1.0 en producción en 150 organizaciones. Microsoft Agent Framework 1.0 (abril de 2026): APIs estables, compromiso de soporte a largo plazo, compatibilidad total con MCP, .NET + Python. La DevUI basada en navegador, que visualiza en tiempo real la ejecución de agentes y las llamadas a herramientas, se distribuye como versión preliminar junto con la superficie estable 1.0. Salesforce Headless 360 (15 de abril, TDX): todas las capacidades de Salesforce (CRM, servicio, marketing y comercio electrónico) expuestas como herramientas API/MCP/comandos CLI, para que agentes como Claude Code, Cursor y Codex puedan desarrollar sobre la plataforma sin un navegador. (TDX 2026 se celebró del 15 al 16 de abril; el anuncio de Headless 360 está fechado el 15 de abril). MetaComp StableX KYA (21 de abril): marco de gobernanza Know Your Agent para servicios financieros regulados (pagos, cumplimiento normativo y gestión patrimonial), el primero de su tipo creado por una institución financiera autorizada; disponible en Claude, Claude Code, OpenClaw y otras plataformas de IA compatibles. Precios de Agentes Gestionados de Claude: 0,08 USD por hora de sesión mientras esta se encuentra en ejecución, sin cargo de ejecución durante la inactividad, además de las tarifas normales por tokens del modelo Claude. (Según la página de precios de Claude de Anthropic; la beta pública se lanzó el 8 de abril de 2026). Memoria para Agentes Gestionados entró en beta pública el 23 de abril de 2026 bajo el encabezado beta managed-agents-2026-04-01. Ahora todos los endpoints de Agentes Gestionados requieren este encabezado beta. |
|
| 2026-04-16 | Guía v1.1: Se añadió la sección Harnesses Gestionados frente a Autohospedados, que abarca los Agentes Gestionados de Claude (beta del 8 de abril) y la separación entre harness y capacidad de cómputo de OpenAI Agents SDK (16 de abril). Se añadió Scion, un hipervisor multiagente compatible con distintas herramientas (7 de abril, Google). Se documentó el hallazgo de M3MAD-Bench sobre el estancamiento del debate. Se añadieron Los Cinco Principios de los Agentes Confiables (Anthropic, 9 de abril) + la gobernanza de MCP/AGENTS.md de la Linux Foundation. Referencia al sandbox de skills Permiso SandyClaw. Nuevos Patrones de Largo Horizonte de Opus 4.7: resiliencia ante fallas de herramientas, nivel de esfuerzo xhigh, límite máximo del presupuesto de tokens (beta de task_budget) y conciencia de necesidades implícitas que reduce la estructura auxiliar de CLAUDE.md. |
|
| 2026-03-24 | Publicación inicial | |
| — |
Referencias
-
Andrej Karpathy sobre los “claws” como una nueva capa construida sobre los agentes LLM. Discusión en HN (406 puntos, 917 comentarios). ↩
-
Implementación del autor. 84 hooks, 48 skills, 19 agentes y alrededor de 15.000 líneas de orquestación. Documentada en Claude Code como infraestructura. ↩↩↩↩↩↩↩↩
-
Anthropic, “Hooks de Claude Code: códigos de salida”. code.claude.com/docs/en/hooks. Para la mayoría de los eventos, el código de salida 0 permite continuar, el 2 bloquea y el 1 muestra una advertencia;
WorktreeCreatees más estricto. ↩↩↩↩↩ -
Anthropic, “Amplía Claude con Skills”. code.claude.com/docs/en/skills. Estructura de los skills, campos de frontmatter, coincidencia basada en LLM y presupuesto para la descripción del 1 % o 8.000 caracteres. ↩↩↩↩↩↩↩
-
Anthropic, “Sub-agents de Claude Code”. code.claude.com/docs/en/sub-agents. Contexto aislado, compatibilidad con worktrees y equipos de agentes. ↩↩↩↩↩
-
Anthropic, “Documentación de Claude Code”. docs.anthropic.com/en/docs/claude-code. Archivos de memoria, CLAUDE.md y memoria automática. ↩↩↩↩↩
-
Sistema de deliberación multiagente del autor. 10 perfiles de investigación, una máquina de estados de 7 fases y 141 pruebas. Documentado en Deliberación multiagente. ↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩
-
Simon Willison, “Escribir código ahora es barato”. Patrones de ingeniería agéntica. ↩
-
Laban, Philippe, et al., “Los LLMs se pierden en conversaciones de múltiples turnos”, arXiv:2505.06120, mayo de 2025. Microsoft Research y Salesforce. 15 LLMs, más de 200.000 conversaciones y una caída promedio del rendimiento del 39 %. ↩↩↩
-
Mikhail Shilkov, “Dentro de los Skills de Claude Code: estructura, prompts e invocación”. mikhail.io. Análisis independiente del descubrimiento de skills, la inyección de contexto y la sección
available_skillsdel prompt. ↩ -
Código fuente de Claude Code,
SLASH_COMMAND_TOOL_CHAR_BUDGET. github.com/anthropics/claude-code. ↩ -
Anthropic, “Prácticas recomendadas para crear Skills”. platform.claude.com. Límite de 500 líneas, archivos auxiliares y convenciones de nomenclatura. ↩
-
Anthropic, “Hooks de Claude Code: eventos del ciclo de vida”. code.claude.com/docs/en/hooks. 30 eventos documentados del ciclo de vida, tipos de hooks, comportamiento de los comparadores, hooks asíncronos, hooks HTTP, hooks de prompts, hooks de agentes y hooks de herramientas de MCP. ↩↩↩↩↩↩↩
-
Tutorial del autor sobre hooks de Claude Code. 5 hooks para producción creados desde cero. Documentado en Tutorial sobre hooks de Claude Code. ↩↩↩↩↩
-
Gestión de la ventana de contexto del autor a lo largo de 50 sesiones. Documentada en Gestión de la ventana de contexto. ↩↩↩↩↩
-
Implementación del Ralph Loop del autor. Iteraciones con contexto nuevo, estado en el sistema de archivos y presupuestos de creación. Documentada en El Ralph Loop. ↩↩↩↩↩↩↩
-
Arquitectura del sistema de deliberación del autor. 3.500 líneas de Python, 12 módulos, activador de confianza y validación del consenso. Documentada en Construcción de sistemas de IA: de RAG a agentes. ↩↩↩
-
Nemeth, Charlan, En defensa de los inconformes: el poder del disenso en la vida y los negocios, Basic Books, 2018. ↩
-
Wu, H., Li, Z. y Li, L., “¿Realmente pueden debatir los agentes LLM?” arXiv:2511.07784, 2025. ↩
-
Liang, T. et al., “Fomento del pensamiento divergente en modelos de lenguaje de gran escala mediante el debate multiagente”, EMNLP 2024. ↩
-
Análisis del autor sobre AGENTS.md en repositorios reales. Documentado en Patrones de AGENTS.md. Consulta también: Blog de GitHub, “Cómo escribir un excelente agents.md: lecciones de más de 2.500 repositorios”. ↩↩↩↩↩↩↩↩
-
Metodología del autor para el quality loop y el evidence gate. Parte del sistema de artesanía Jiro. ↩
-
Anthropic, “Descripción general de los agentes administrados de Claude”. Beta pública lanzada el 8 de abril de 2026. Harness como servicio con puntos de control de sesión, sandbox incluido y API REST. Precio: tokens estándar + USD 0,08 por hora de sesión. Encabezado beta
managed-agents-2026-04-01. ↩↩ -
OpenAI, “Notas de la versión v0.14.0 de openai-agents Python”. Publicada el 15 de abril de 2026; el anuncio se difundió el 16 de abril. Introduce la superficie SDK de Sandbox Agents como una capa beta sobre el flujo existente de
Agent/Runner:SandboxAgent,Manifest(contrato del espacio de trabajo),SandboxRunConfig, capacidades (shell, edición del sistema de archivos, inspección de imágenes, skills, memoria del sandbox y compactación), montajes del espacio de trabajo (local, Git y remoto: S3, R2, GCS, Azure Blob, S3 Files), instantáneas portátiles con normalización de rutas y conservación de enlaces simbólicos, y serialización del estado de ejecución para reanudarla. Backends:UnixLocalSandboxClient,DockerSandboxClienty clientes alojados para Blaxel, Cloudflare, Daytona, E2B, Modal, Runloop y Vercel mediante extras opcionales. El anuncio del 16 de abril se resumió en Help Net Security. ↩↩ -
Google Cloud, “Scion: hipervisor multiagente”. Publicado como código abierto el 7 de abril de 2026. Orquesta Claude Code, Gemini CLI y otros agentes profundos como procesos aislados, cada uno con su propio contenedor, git worktree y credenciales. Modos de implementación local, hub y Kubernetes. Cobertura de InfoQ. ↩
-
Conjunto de investigaciones sobre el debate multiagente, primer y segundo trimestre de 2026. Wu et al., “¿Realmente pueden debatir los agentes LLM?” (arXiv 2511.07784); M3MAD-Bench, un benchmark de debate multiagente y multimodelo que muestra estancamientos del rendimiento y vulnerabilidad ante consensos engañosos; Tool-MAD, asignación heterogénea de herramientas por agente + puntuaciones de Fidelidad/Relevancia otorgadas por un juez. ↩
-
Anthropic, “Nuestro marco para desarrollar agentes seguros y confiables”. 9 de abril de 2026. Cinco principios: control humano, alineación de valores, seguridad, transparencia y privacidad. Donación de MCP a la Agentic AI Foundation de la Linux Foundation. ↩↩
-
Permiso Security, “SandyClaw: primer sandbox dinámico para Skills de agentes de IA”. 2 de abril de 2026. Sandbox para la ejecución de skills con detección mediante Sigma/YARA/Nova/Snort y veredictos respaldados por evidencia. ↩
-
Anthropic, “Presentamos Claude Opus 4.7”. 16 de abril de 2026. Mejoras para agentes que trabajan durante periodos prolongados: resolución de tareas de producción de SWE-Bench 3 veces superior a Opus 4.6, resiliencia ante fallos de herramientas, nivel de esfuerzo
xhigh, presupuestos de tareas (beta) y reconocimiento de necesidades implícitas. Consulta también Novedades de Opus 4.7 para conocer los cambios incompatibles de Messages API. ↩ -
Referencia compuesta — OpenAI
openai-agents-pythonv0.14.7 (28 de abril de 2026) y v0.14.8 (29 de abril de 2026); Anthropicclaude-agent-sdk-pythonv0.1.69 (28 de abril), v0.1.70 (28 de abril) y v0.1.71 (29 de abril). Aspectos destacados de v0.14.7: propiedades prácticastool_name/call_iden los elementos de herramientas, aumento del límite de turnos para la consolidación de memoria de la Fase 2, alias de GPT-5.5 para la compactación del sandbox, validación más estricta de los miembros de archivos tar/zip, rechazo de enlaces simbólicos en fuentesLocalFiley eliminación de los campos sin definir en las llamadas de Responses API. Aspectos destacados de v0.14.8: conservación de los errores de importación al reexportar MCP y delimitación de las secciones de instrucciones del prompt del sandbox. claude-agent-sdk-python v0.1.69 añadió docstrings a los campos deClaudeAgentOptionsy actualizó el CLI incluido a v2.1.121; v0.1.70 elevó la versión mínima de la dependenciamcpa>=1.19.0(las versiones anteriores descartaban silenciosamente los valoresCallToolResultdevueltos por los controladores de herramientas MCP en proceso), corrigió la corrupción del nursery de Trio durante una cancelación anticipada al iterarquery()conoptions.stderrconfigurado (ahora se usaspawn_detached()para el lector de stderr) y actualizó el CLI incluido a v2.1.122; v0.1.71 añadió campos de listas de dominios permitidos (allowedDomains,deniedDomains,allowManagedDomainsOnly,allowMachLookup) aSandboxNetworkConfigpara mantener la paridad con el esquema de TypeScript, y actualizó el CLI incluido a v2.1.123. ↩ -
OpenAI, “Instrucciones personalizadas con AGENTS.md”. Codex lee los archivos globales y del proyecto
AGENTS.md/AGENTS.override.mdantes de comenzar el trabajo, combina las directrices desde la raíz hasta el directorio actual y limita el tamaño de la documentación del proyecto medianteproject_doc_max_bytes. ↩ -
OpenAI, “Agent Skills”. Las skills de Codex usan
SKILL.md, divulgación progresiva, invocación explícita mediante$skilly activación implícita a partir de sus descripciones. ↩ -
OpenAI, “Codex Hooks”. Los hooks de Codex admiten hooks de comandos en la configuración, hooks de plugins, hooks administrados, matchers para eventos compatibles, entrada JSON mediante stdin y campos de salida JSON. ↩
-
OpenAI, “Codex Subagents” y “Registro de cambios de Codex CLI 0.128.0”. Codex admite flujos de trabajo explícitos con subagents en paralelo, agentes integrados
default,workeryexplorer, agentes TOML personalizados, políticas de sandbox heredadas, hooks incluidos en plugins, el estado de habilitación de los hooks y flujos de trabajo persistentes de/goalen la versión 0.128.0. ↩ -
Anthropic, “Novedades de los agentes administrados de Claude”. 6 de mayo de 2026. Dreaming (vista previa de investigación): proceso programado en segundo plano que revisa las sesiones de los agentes y los almacenes de memoria, extrae patrones y depura los recuerdos. Outcomes (beta pública): evaluación basada en rúbricas en la que un evaluador independiente califica el resultado con respecto a la rúbrica dentro de su propia ventana de contexto, de modo que el razonamiento del agente no influya en la evaluación. Orquestación multiagente (beta pública): un agente principal delega partes de una tarea a especialistas, cada uno con su propio modelo, prompt y conjunto de herramientas; los especialistas trabajan en paralelo sobre un sistema de archivos compartido y contribuyen al contexto general del agente principal, con seguimiento completo de cada paso en la consola de Claude. ↩↩↩↩↩↩↩↩
-
Anthropic,
claude-agent-sdk-pythonv0.1.74. 6 de mayo de 2026. Añadeinclude_hook_eventsaClaudeAgentOptions; cuando se configura, el CLI emite los eventos de hooks (PreToolUse, PostToolUse, Stop y otros), que se entregan desde el flujo de mensajes comoHookEventMessage, replicando el comportamiento deincludeHookEventsen TypeScript SDK. El Claude CLI incluido se actualizó a v2.1.129. ↩↩ -
Anthropic,
claude-agent-sdk-pythonv0.1.77. 8 de mayo de 2026. Declara obsoleto el valor"Skill"deallowed_toolsen favor de una opción específicaskillsenClaudeAgentOptions, proporciona a Claude Code información más estructurada sobre las skills disponibles, mejora los mensajes de error de las excepcionesCommand failede incluye Claude CLI v2.1.133. ↩↩ -
Anthropic, Claude Code v2.1.132. 6 de mayo de 2026. Añade la variable de entorno
CLAUDE_CODE_SESSION_IDa los subprocesos de la herramienta Bash (coincide con elsession_idque ya reciben los hooks),CLAUDE_CODE_DISABLE_ALTERNATE_SCREENpara mantener la conversación en el historial de desplazamiento nativo, un banner de inicio renovado para/tui fullscreen(menor consumo de memoria, compatibilidad con el mouse y copia automática al seleccionar) y cerca de veinte correcciones de errores que abarcan el cierre ordenado mediante SIGINT, la corrupción de emojis sustitutos con--resume, la bandera--permission-modedel modo de planificación, el manejo del cursor con caracteres índicos y secuencias ZWJ, las operaciones de vim con NFD, la omisión del pegado que comienza con/, el consumo ilimitado de memoria de MCP, los reintentos detools/listde MCP, el error 400 deENABLE_PROMPT_CACHING_1Hcon Bedrock + Vertex y el campocontext_windowde la línea de estado que mostraba tokens acumulados. ↩↩ -
Anthropic, Claude Code v2.1.133. 7 de mayo de 2026. Ahora los hooks reciben la entrada JSON
effort.levely la variable de entorno$CLAUDE_EFFORT(también disponible para los comandos Bash). Los subagents descubren las skills del proyecto, del usuario y de los plugins mediante la herramientaSkill(corrección de una regresión). Nueva configuración administrativa:worktree.baseRef(fresh|head) restablece la base del worktree aorigin/<default>después de que v2.1.128 la cambiara alHEADlocal;sandbox.bwrapPathysandbox.socatPathfijan los binarios del sandbox en Linux/WSL;parentSettingsBehavior('first-wins' | 'merge') controla cómo se combinan losmanagedSettingsde SDK con la configuración superior. Otras correcciones: error 401 en sesiones paralelas tras una condición de carrera al renovar el token, ámbito de las reglas de autorización en la raíz de una unidad, compatibilidad del proxy/mTLS de OAuth de MCP, finalización de la cancelación al detener o interrumpir Remote Control, filtración de/effortentre sesiones y aparición de--remote-controlen--help. ↩↩↩↩↩↩ -
Anthropic, Claude Code v2.1.136. 8 de mayo de 2026. Añade
settings.autoMode.hard_denypara las reglas del clasificador del modo automático que bloquean incondicionalmente, independientemente de la intención del usuario o de las excepciones de autorización, yCLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTELpara volver a habilitar la encuesta de calidad durante la sesión en empresas que recopilan las respuestas mediante OpenTelemetry. Correcciones relevantes para operadores: los servidores MCP de.mcp.json, los plugins y los conectores de claude.ai desaparecían silenciosamente después de/clearen VS Code, JetBrains y Agent SDK; se perdían los tokens de actualización de OAuth de MCP durante actualizaciones simultáneas; el modo de planificación no bloqueaba la escritura de archivos cuando existía una regla de autorizaciónEdit(...)coincidente; los hooksStop/UserPromptSubmitde plugins fallaban cuando la limpieza de caché eliminaba una versión todavía en ejecución; una entradaskillsenplugin.jsonocultaba el directorioskills/predeterminado del plugin; las variables de entorno de hooks SessionStart definidas medianteCLAUDE_ENV_FILEquedaban obsoletas después de/resumeo/clear. Además, incluye cerca de treinta mejoras y correcciones adicionales de fiabilidad que abarcan la TUI, el autocompletado y la representación en la terminal. Versiones complementarias: v2.1.137 (9 de mayo, corrección de la activación en Windows de la extensión de VSCode), v2.1.138 (9 de mayo, correcciones internas);claude-agent-sdk-pythonv0.1.78, v0.1.79 y v0.1.80 actualizaron el Claude CLI incluido a v2.1.136, v2.1.137 y v2.1.138, respectivamente. ↩↩↩↩ -
OpenAI,
openai-agents-pythonv0.17.0. 8 de mayo de 2026.RealtimeAgentusagpt-realtime-2de manera predeterminada. Ahora la materialización de fuentes locales del sandbox restringeLocalFile.srcyLocalDir.srcalbase_dirdel manifiesto (el directorio de trabajo actual del proceso SDK cuando se aplica el manifiesto), salvo que la fuente se autorice explícitamente medianteManifest.extra_path_grantsconSandboxPathGrant. Las fuentes locales relativas se resuelven desdebase_dir; las fuentes absolutas deben encontrarse dentro de este directorio o bajo una autorización explícita. Migración: declara las raíces de confianza del host en el nivel del manifiesto, preferentemente como solo lectura. Trataextra_path_grantscomo configuración confiable de la aplicación; no la completes con resultados del modelo ni con entradas de manifiestos que no sean de confianza. También incluye una corrección para la colisión deextra_argsen la administración de contexto de Responses. ↩↩↩↩ -
Anthropic, Claude Code v2.1.139. Mayo de 2026. Evidencia local de la sesión actual del 11 de mayo de 2026:
claude --versiondevolvió2.1.139 (Claude Code). Las notas de la versión incorporan Agent View (claude agents),/goal,args: string[]para hooks,continueOnBlockparaPostToolUse,CLAUDE_PROJECT_DIRpara servidores stdio de MCP, interpolación de comandos de plugins para${CLAUDE_PROJECT_DIR}y correcciones que incluyen la emisión de OpenTelemetryclaude_code.active_time.totalen el modo--print. ↩↩↩↩↩ -
Anthropic, “Administrar varios agentes con Agent View”. La documentación de Agent View describe cómo distribuir y administrar muchas sesiones de Claude Code desde una sola pantalla, ver qué está haciendo cada sesión e identificar cuáles necesitan la intervención de un operador. La página identifica Agent View como Research Preview y documenta las limitaciones de las sesiones locales. ↩↩↩
-
Anthropic, “Hooks de Claude Code”. Documentación de hooks que abarca los campos de los hooks de comandos,
PreToolUse,PostToolUse, el comportamiento de los códigos de salida, la entrada y salida de hooks y las rutas de expansión directa de comandos con barra diagonal. ↩↩ -
Base de datos de avisos de GitHub, GHSA-f3jg-756w-gm35 / CVE-2026-45046. «El filtro de cargas útiles de Gryph Agents no elimina la carga útil de las herramientas cuando contiene información confidencial». Publicado en mayo de 2026; describe cómo el contenido confidencial de las cargas útiles de
file-writepermanecía en los registros locales de SQLite con el comportamiento de registro predeterminado y cómo se corrigió en Gryph v0.7.0. ↩↩ -
OSV, GHSA-wxxx-gvqv-xp7p / CVE-2026-40217. «LiteLLM permite escapar del entorno aislado en la barrera de protección de código personalizado». Publicado el 11 de mayo de 2026; describe un endpoint
POST /guardrails/test_custom_code, protegido para administradores, que ejecuta Python proporcionado por el usuario en un entorno aislado creado de forma artesanal, y recomienda actualizar o bloquear el endpoint si no es posible hacerlo. ↩↩ -
Young Jo (seph) Chung y Safwat Hassan, “¿Colaborador o asistente? Cómo los agentes de programación con IA dividen el trabajo durante el ciclo de vida de las solicitudes de incorporación de cambios”, arXiv:2605.08017v1, mayo de 2026. El resumen presenta un análisis de los ciclos de vida de 29.585 solicitudes de incorporación de cambios en OpenAI, Copilot, Devin, Cursor y Claude Code, y distingue la capacidad operativa de la gobernanza de la integración. ↩↩
-
Jiayuan Liu et al., “La maldición de la memoria: cómo una mayor capacidad de recuerdo erosiona la intención cooperativa en agentes LLM”, arXiv:2605.08060v1, mayo de 2026. El resumen presenta experimentos con 7 LLMs y 4 juegos durante 500 rondas, en los que ampliar el historial accesible redujo la cooperación en 18 de las 28 configuraciones de modelo y juego. ↩↩
-
Anthropic, Claude Code v2.1.140. 12 de mayo de 2026. Añade
subagent_typea la entrada de los hooks de agentes y corrige los hooksConfigChange,disableAllHooks,allowManagedHooksOnly, la visualización en el cuadro de diálogo de permisos de las variables de entorno procedentes de los resultados de hooks, el restablecimiento de estilos personalizados después de actualizar la configuración, la alternativa para resolver paquetes nativos en Windows Git Bash y/scroll-speed. ↩↩↩ -
Anthropic, Claude Code v2.1.141. 13 de mayo de 2026. Añade
terminalSequencea la salida JSON de los hooks para notificaciones de escritorio, títulos de ventanas y sonidos;CLAUDE_CODE_PLUGIN_PREFER_HTTPSpara clonar fuentes de plugins de HTTPS;ANTHROPIC_WORKSPACE_IDpara delimitar el espacio de trabajo en la federación de identidades de cargas de trabajo;claude agents --cwd <path>para filtrar directorios en Agent View; opciones de/feedbackpara adjuntar sesiones de las últimas 24 horas o de los últimos 7 días; además de correcciones relacionadas con agentes, trabajos en segundo plano, hooks, MCP, Remote Control, el cuadro de diálogo de permisos y la representación de la terminal. Verificación en la sesión actual del 14 de mayo de 2026:claude --versiondevolvió2.1.141 (Claude Code)ynpm view @anthropic-ai/claude-code version dist-tags.latest time.modified --jsondevolvió2.1.141como la versión más reciente. ↩↩↩ -
Anthropic, Claude Code v2.1.142. 14 de mayo de 2026. Añade indicadores de distribución a
claude agentspara sesiones en segundo plano (--add-dir,--settings,--mcp-config,--plugin-dir,--permission-mode,--model,--effort,--dangerously-skip-permissions), cambia el modo Fast para que use Opus 4.7 de manera predeterminada, conCLAUDE_CODE_OPUS_4_6_FAST_MODE_OVERRIDE=1como opción para mantener fija la versión anterior, expone como skills los archivosSKILL.mdubicados en la raíz de los plugins cuando no existe un directorioskills/, muestra los servidores LSP proporcionados por plugins en sus detalles, advierte antes de reemplazar una conexión existente de la aplicación GitHub y corrige problemas deMCP_TOOL_TIMEOUT, los árboles de trabajo de las sesiones en segundo plano, la suspensión y reactivación del daemon, la limpieza del daemon después de una actualización, la caché de plugins y la confiabilidad de Agent View. Verificación en la sesión actual del 15 de mayo de 2026:claude --versiondevolvió2.1.141 (Claude Code)y npm devolvió2.1.142como la versión más reciente. ↩↩ -
Anthropic, Claude Code v2.1.147. 21 de mayo de 2026. Añade la herramienta
Workflow, desactivada de forma predeterminada, para la orquestación multiagente determinista (CLAUDE_CODE_WORKFLOWS=1), sesiones en segundo plano fijadas,/code-review [effort] --commenten sustitución de/simplify, refuerzos del entorno aislado de REPL y Workflow, diagnósticos del actualizador automático, mejoras en la representación de diferencias extensas, eliminación de duplicados en el historial de prompts y correcciones para restricciones de inicio de sesión empresarial, el comportamiento de PowerShell, la paginación de MCP, Agent View, plugins, condiciones de hooks, texto pegado y bucles de imágenes eliminadas. Verificación en la sesión actual del 21 de mayo de 2026:claude --versiondevolvió2.1.144 (Claude Code)ynpm view @anthropic-ai/claude-code version dist-tags.latest time.modified --jsondevolvió2.1.147como la versión más reciente, contime.modified2026-05-21T20:38:35.053Z. ↩↩↩ -
Anthropic, Claude Code v2.1.148, v2.1.149, v2.1.150 y CHANGELOG de Claude Code. v2.1.148 corrige una regresión en el código de salida de Bash introducida en v2.1.147. v2.1.149 añade a
/usageel uso de límites por categoría, desplazamiento mediante el teclado en/diff, representación de listas de tareas de GFM yallowAllClaudeAiMcpspara Enterprise; entre las correcciones relevantes para el harness se incluyen omisiones de permisos decden PowerShell, análisis de permisos para prefijos, comodines y variables obsoletas de PowerShell, el alcance de la lista de rutas permitidas para escritura del entorno aislado en árboles de trabajo de git, el agotamiento de vnodes causado porfindde Bash en macOS, bloqueos de aprobación de la configuración administrada, diagnósticos de espacios en rutas deotelHeadersHelpery sincronización del cambio de nombre de sesiones de Remote Control. v2.1.150 solo contiene cambios de infraestructura interna. Verificación en la sesión actual del 24 de mayo de 2026:claude --versionlocal devolvió2.1.144 (Claude Code), mientras que npm devolvió2.1.150como la versión más reciente, contime.modified2026-05-23T04:03:10.243Z; la versión más reciente de GitHub fuev2.1.150, publicada el2026-05-23T04:03:51Z. ↩↩↩ -
OpenAI,
openai-agents-pythonv0.17.1, v0.17.2 y v0.17.3. v0.17.1 añade detalles de errores del proveedor del entorno aislado, límites para la extracción de archivos comprimidos, validación de subrutas de GitRepo y correcciones para el seguimiento, las sesiones y el funcionamiento en tiempo real. v0.17.2 corrige la persistencia del razonamiento en Conversations, los motivos de rechazo de aprobaciones locales, la configuración de AsyncSQLiteSession y el comportamiento en tiempo real ante herramientas desconocidas. v0.17.3 evita que las credenciales de puntos de montaje aparezcan en comandos del entorno aislado, rechaza raíces relativas del espacio de trabajo del entorno aislado, gestiona estados terminales de entornos aislados de Vercel y corrige casos extremos relacionados con el esquema de salida, las barreras de protección, el entorno de ejecución y la importación de memoria. Verificación en la sesión actual del 24 de mayo de 2026:python3 -m pip index versions openai-agentsdevolvió0.17.3como la versión más reciente; la versión más reciente de GitHub fuev0.17.3, publicada el2026-05-19T01:27:36Z. ↩↩ -
Registro de cambios de Claude Code (canónico), notas de la versión v2.1.152, notas de la versión v2.1.153, notas de la versión v2.1.154. La versión v2.1.152 (27 de mayo) incorpora el evento de hook
MessageDisplay,disallowed-toolsen el frontmatter de skills y comandos,/reload-skills, las salidasreloadSkillsysessionTitledel hookSessionStart, la aplicación de/code-review --fixal árbol de trabajo, la configuración administradapluginSuggestionMarketplaces, la eliminación de la suscripción al modo automático y el cambio de--fallback-modeldurante una sesión. La versión v2.1.153 (28 de mayo) hace que/modelguarde el modelo como predeterminado para las sesiones nuevas y permite usarspara limitarlo a la sesión actual, agregaskipLfsa los marketplaces de plugins, exponeCOLUMNS/LINESen el entorno de la línea de estado y conserva los permisos de Privacidad y seguridad de los agentes en segundo plano de macOS. La versión v2.1.154 (28 de mayo) establece Opus 4.8 como modelo predeterminado con un nivel de esfuerzo alto de forma predeterminada y un nuevo/effort xhigh, introduce flujos de trabajo dinámicos mediante/workflows, habilita el modo Fast en Opus 4.8 con una tarifa 2 veces mayor a cambio de una velocidad 2,5 veces superior, usa de forma predeterminada el prompt de sistema reducido en todos los modelos excepto Haiku/Sonnet/Opus 4.7 y versiones anteriores, permite queclaude agentsacepte! <command>para sesiones de shell en segundo plano, permite que los plugins declarendefaultEnabled: false, pasaCLAUDE_CODE_SESSION_IDyCLAUDECODE=1al entorno de los subprocesos stdio de MCP y marcaCLAUDE_CODE_OPUS_4_6_FAST_MODE_OVERRIDEcomo obsoleto (se eliminó el 1 de junio). ↩ -
Registro de cambios de Codex (OpenAI Developers) y versiones de openai/codex. Codex CLI 0.134.0 (26 de mayo de 2026) agregó la búsqueda local en el historial de conversaciones, convirtió
--profileen el selector principal de perfiles para los flujos de CLI/TUI/sandbox, con migración de la configuración heredada, mejoró la configuración de MCP con selección del entorno por servidor y OAuth para servidores HTTP con transmisión, aumentó la confiabilidad de los esquemas de herramientas de los conectores al conservar$ref/$defslocales y compactar los esquemas demasiado grandes antes de exponerlos, y habilitó la ejecución simultánea de herramientas de MCP de solo lectura que anuncianreadOnlyHint. Codex CLI 0.135.0 (28 de mayo de 2026) agregó diagnósticos más detallados encodex doctor, mostró en/statuslos detalles de la conexión remota y la versión del servidor, incorporó la edición de objetos de texto de vim con mejoras en el comportamiento de palabras y finales de línea y una opción configurable para interrumpir el turno, hizo que/permissionsreconociera perfiles de permisos con nombre, incluyó un asistente de zsh modificado para las versiones compatibles de macOS y Linux, y agregó ajustes preestablecidos sencillos deSandboxa la Python SDK para los APIs de hilos y turnos. ↩ -
Notas de la versión Hermes Agent v0.15.0. «La versión Velocity». 1.302 commits, 747 PR fusionados y 321 colaboradores de la comunidad.
run_agent.pyse refactorizó en un 76 % (de 16.083 a 3.821 líneas distribuidas en 14 módulos). Plataforma Kanban multiagente con descomposición automática, topología de enjambre, modelos configurables por tarea, tareas programadas y administración de árboles de trabajo.session_searchse rediseñó para ser 4.500 veces más rápido y se eliminó la dependencia LLM. Defensa contra promptware para inyecciones de prompts de la clase Brainworm en 3 puntos críticos de seguridad. Integración con Bitwarden Secrets Manager, que sustituye las claves por proveedor por un único token de arranque. Paquetes de skills para cargar varias skills con un solo comando de barra diagonal. Orquestador de sesiones en la TUI para administrar varias sesiones desde una sola terminal. Proveedores de generación de imágenes Krea 2 y FAL; ronda de integración con xAI (plugin de búsqueda web, OAuth ascendente, detección de modelos retirados y pausas naturales de TTS). ↩ -
Notas de la versión Claude Code v2.1.157 y Registro de cambios de Claude Code (canónico). 29 de mayo de 2026. Los plugins ubicados en el directorio
.claude/skills/de un proyecto ahora se cargan automáticamente sin requerir un marketplace;claude plugin init <name>genera la estructura inicial de un nuevo plugin en ese directorio;/pluginincorporó el autocompletado de argumentos. Además,EnterWorktreepuede cambiar entre árboles de trabajo administrados por Claude durante una sesión, los árboles de trabajo en segundo plano quedan desbloqueados cuando el agente termina para quegit worktree remove/prunefuncionen correctamente y los eventos de telemetríatool_decisionincluyentool_parameterscuandoOTEL_LOG_TOOL_DETAILS=1. También incluye correcciones para imágenes que no se pueden procesar (ahora se sustituyen por marcadores de posición de texto), solicitudes de permisos de red del sandbox en los modos automático y de omisión, finalización de sesiones en segundo plano al estacionarlas y renderizado de la terminal en tmux / VS Code / Cursor / Windsurf. ↩↩ -
Registro de cambios de Claude Code (canónico) y notas de la versión Codex CLI v0.137.0, junio de 2026. Claude Code v2.1.162 (3 de junio) agregó
waitingForaclaude agents --json; v2.1.163 (4 de junio) agregóhookSpecificOutput.additionalContextpara comentarios que no representan errores deStop/SubagentStop; v2.1.166 (6 de junio) reforzó la autoridad deSendMessageentre sesiones (los mensajes retransmitidos ya no llevan la autoridad del usuario) y agregó la configuraciónfallbackModel(hasta 3 alternativas y un único reintento ante errores no reintentables). Codex CLI v0.137.0 (4 de junio) lanzó multi-agent v2 (entorno de ejecución con hilo,hide_spawn_agent_metadataestablecido en true de forma predeterminada y propagación de eventos del agente principal a los secundarios), una extensión v1 de skills con resolución del catálogo en cada turno y eventos de colaboradores del ciclo de vida para el inicio de hilos y los errores de turno; la documentación de subagents de Codex confirma los tipos de agente default/worker/explorer y los controles de simultaneidadagents.max_threads/max_depth. AGENTS.md (agents.md) no publica ningún cambio de especificación con versión. Verificado en la sesión actual el 8 de junio de 2026. ↩↩ -
Anthropic, notas de la versión Claude Code v2.1.169 y notas de la versión v2.1.170, 8 y 9 de junio de 2026. La versión v2.1.169 agrega la configuración
disableBundledSkillsyCLAUDE_CODE_DISABLE_BUNDLED_SKILLS(oculta al modelo las skills incluidas, los flujos de trabajo y los comandos de barra diagonal integrados); la opción--safe-modeyCLAUDE_CODE_SAFE_MODE(inicia una sesión con todas las personalizaciones deshabilitadas: CLAUDE.md, plugins, skills, hooks y servidores MCP); y el comando/cd(traslada una sesión a un nuevo directorio de trabajo sin invalidar la caché de prompts). La versión v2.1.170 permite seleccionar Claude Fable 5 (claude-fable-5) mediante/model claude-fable-5, mientras que Opus 4.8 sigue siendo el modelo agéntico predeterminado de Claude Code. Lanzamiento del nivel de modelo: Anthropic, «Claude Fable 5», 9 de junio de 2026: un nivel «Mythos-class» superior a Opus, descrito como el modelo más potente de Anthropic que es seguro para uso general. ↩↩↩↩↩ -
OpenAI, notas de la versión Codex CLI rust-v0.138.0 (8 de junio de 2026) y notas de la versión rust-v0.139.0 (9 de junio de 2026). La versión v0.138.0 refuerza multi-agent v2 con cargas de mensajes cifradas entre agentes, un catálogo v2 de configuración de agentes, una caché LRU de residencia de agentes y un cálculo de simultaneidad basado en la ejecución activa en lugar de los hilos iniciados. La versión v0.139.0 cambia el nombre del API del ciclo de vida
close_agentainterrupt_agenty limita las advertencias de inicio de MCP de los subagents al hilo propietario para que ya no se dupliquen en el agente principal. La detección de AGENTS.md se refuerza en ambas versiones: la carga se canaliza a través de los sistemas de archivos del entorno y conserva las rutas lógicas durante la detección, lo que garantiza la selección correcta de archivos en espacios de trabajo remotos y con enlaces simbólicos. ↩↩↩↩ -
Anthropic, notas de la versión Claude Code v2.1.172 (10 de junio de 2026). Los sub-agents ahora pueden iniciar sus propios sub-agents, con delegación recursiva de hasta 5 niveles de profundidad; antes, la delegación se limitaba en la práctica a un solo nivel. ↩↩
-
Anthropic, notas de la versión Claude Code v2.1.175 y notas de la versión v2.1.178, del 12 al 15 de junio de 2026. La versión v2.1.175 agrega la configuración administrada
enforceAvailableModels(fija el modelo predeterminado e impide que la configuración del usuario o del proyecto amplíe la lista administrada de modelos permitidosavailableModels). La versión v2.1.178 agrega la sintaxis de reglas de permisosTool(param:value), que compara los parámetros de entrada de una herramienta mediante el comodín*(por ejemplo,Agent(model:opus)); carga skills desde directorios.claude/skillsanidados y usa<dir>:<name>para desambiguar nombres repetidos; en caso de conflicto, selecciona los agents, flujos de trabajo y estilos de salida de directorios.claude/anidados que estén más cerca del directorio de trabajo actual (los flujos de trabajo guardados en el ámbito del proyecto se almacenan en el directorio.claude/workflows/existente más cercano); evalúa el inicio de subagents con el clasificador del modo automático antes de ejecutarlos; y corrige el problema por el que las especificaciones de servidor MCP (mcp__server,mcp__server__*,mcp__*) endisallowedToolsde los subagents se ignoraban silenciosamente. ↩↩↩↩↩↩↩ -
OpenAI, notas de la versión rust-v0.140.0 de Codex CLI, 15 de junio de 2026 (promovida a estable desde la línea v0.140.0-alpha). Agrega
/importpara importar de forma selectiva la configuración inicial, la configuración del proyecto y los chats recientes desde Claude Code; eliminación permanente de sesiones mediantecodex delete,/deleteythread/deletedel servidor de la aplicación, con medidas de confirmación; un menú unificado de menciones con@para archivos, plugins y skills; y vistas de actividad de tokens con/usage. ↩↩ -
Anthropic, notas de la versión v2.1.183 de Claude Code, 19 de junio de 2026 — el modo automático bloquea comandos destructivos de git (
git reset --hard,git checkout -- .,git clean -fd,git stash drop) cuando no pediste descartar el trabajo,git commit --amenden commits que el agente no haya creado durante esta sesión yterraform destroy/pulumi destroy/cdk destroy, salvo que hayas solicitado la pila específica. OpenAI, notas de la versión rust-v0.141.0 de Codex CLI, 18 de junio de 2026 (promovida a estable desde la línea v0.141.0-alpha) — los ejecutores remotos usan canales de retransmisión Noise autenticados y cifrados de extremo a extremo; la ejecución remota multiplataforma conserva los directorios de trabajo y shells nativos del ejecutor; TLS admite firmas de certificados P-521 para proxies empresariales. ↩↩↩ -
Registro de cambios de Claude Code (canónico) — v2.1.193 (25 de junio de 2026): configuración
autoMode.classifyAllShell; motivos de rechazo del modo automático en la transcripción, la notificación emergente y/permissions. v2.1.195 (26 de junio de 2026): los comparadores de hooks con identificadores que contienen guiones (p. ej.,code-reviewer,mcp__brave-search) ahora buscan coincidencias exactas en vez de subcadenas; usamcp__brave-search__.*para hacer coincidir todas las herramientas de un servidor MCP cuyo nombre contenga guiones. Notas de la versión v0.142.2 de Codex CLI (25 de junio de 2026): los comandos de PowerShell que contienen regiones ejecutables del AST que el clasificador de seguridad no puede inspeccionar ahora requieren aprobación. Verificado con ambas fuentes canónicas el 1 y 2 de julio de 2026 (PST). ↩↩↩ -
Registro de cambios de Claude Code (canónico) y versiones de GitHub. v2.1.196 (29 de junio de 2026): modelos predeterminados para toda la organización (definidos por el administrador y mostrados como «Org default» en
/model);claude mcp list/getya no inicia servidores.mcp.jsonautoaprobados por el repositorio en espacios de trabajo que no sean de confianza. v2.1.197 (30 de junio): Claude Sonnet 5 pasa a ser el modelo predeterminado incluido (contexto nativo de 1M y precios promocionales de $2/$10 hasta el 31 de agosto). v2.1.198 (1 de julio): los subagents se ejecutan en segundo plano de forma predeterminada; el agente Explore integrado hereda el modelo de la sesión (con Opus como límite); los subagents y la compactación heredan la configuración de razonamiento extendido de la sesión; las sesionesclaude agentsen segundo plano crean commits, los envían y abren un PR en borrador después de trabajar con código en un worktree, además de activar el hookNotificationconagent_needs_input/agent_completed; se eliminó el asistente de/agents(edita.claude/agents/directamente o pídeselo a Claude). v2.1.199 (2 de julio): las invocaciones encadenadas de slash skills cargan hasta 5 skills iniciales; se detecta el direccionamiento erróneo deSendMessagecuando se reutiliza el nombre de un agente; los hooksSessionStart/Setup/SubagentStartmuestran stderr al producirse el código de salida 2. v2.1.200 (3 de julio): el modo de permisosdefaultaparece como «Manual» en CLI,--help, VS Code y JetBrains, y se aceptamanualjunto con el valor de configuración, que no cambia; los cuadros de diálogoAskUserQuestionya no continúan automáticamente de forma predeterminada. v2.1.202 (6 de julio): control «Dynamic workflow size» en/config;/review <pr>vuelve a realizar una revisión de una sola pasada, mientras que/code-review <level> <pr#>ejecuta la pasada multiagente.claude-agent-sdkde Anthropic está en la versión v0.2.111 (6 de julio de 2026; incluye Claude CLI v2.1.202) y@anthropic-ai/claude-agent-sdkde TypeScript, en la versión v0.3.203; las líneas 0.2.x y 0.3.x incorporan mejoras incrementales sobre la interfaz documentada de la versión 0.1.x (el trabajo reciente se centra en la limpieza de subprocesos y la confiabilidad de la transmisión NDJSON). Verificación de la sesión actual realizada el 7 de julio de 2026 (PST). ↩ -
Registro de cambios de Claude Code (canónico), versiones v2.1.207 y v2.1.208 de GitHub, y Novedades de Claude Code. Julio de 2026. v2.1.203–v2.1.206 (principios de julio): una regla del modo automático bloquea la manipulación de archivos de transcripción; las notificaciones de tareas en segundo plano indican explícitamente que no hubo intervención humana mientras se ejecutaba la tarea;
roots/listde MCP incluye los directorios de trabajo adicionales de la sesión y envía notificacionesroots/list_changed;/doctorpropone recortar el contenido de CLAUDE.md que pueda deducirse del código base; v2.1.204 también corrigió la transmisión deSessionStarten modo sin interfaz. v2.1.207: disponibilidad general del modo automático en Amazon Bedrock, Google Vertex AI y Microsoft Foundry, con la configuración administradadisableAutoModepara desactivarlo;CLAUDE_CODE_PROCESS_WRAPPERpara iniciadores de procesos corporativos; rondas de uso de herramientas hasta 7 veces más rápidas cuando hay una gran cantidad de herramientas MCP y transcripciones de sesión 79 veces más pequeñas. v2.1.208: las solicitudes de confirmación ante eliminaciones catastróficas prevalecen incluso con--dangerously-skip-permissionsy el modo automático. ↩↩↩↩↩↩↩↩ -
Registro de cambios de Claude Code (canónico) y versiones v2.1.210, v2.1.211 y v2.1.212 de GitHub. Julio de 2026. v2.1.210: los subagents aislados mediante worktrees ya no pueden modificar el checkout principal; Agent tool se reforzó contra la inyección indirecta de prompts procedente del contenido leído por un subagent; el clasificador del modo automático usa Sonnet 5 de forma predeterminada y queda fijado durante cada sesión; las escrituras en
MEMORY.mdque superen el límite de tamaño generan un error en vez de truncarse silenciosamente. v2.1.211: las decisionesaskdel hookPreToolUseestablecen como resultado mínimo de permisos una solicitud de confirmación: el modo automático no puede sustituirla por una autorización para Bash sin sandbox;--forward-subagent-text/CLAUDE_CODE_FORWARD_SUBAGENT_TEXTreenvía el texto de los subagents a la salida stream-json; las reglas de «permitir siempre» se conservan en la raíz del repositorio entre distintos worktrees; las vistas previas de permisos neutralizan caracteres de anulación bidireccional, de ancho cero y visualmente similares. v2.1.212: límite de creación de subagents por sesión (200 de forma predeterminada,CLAUDE_CODE_MAX_SUBAGENTS_PER_SESSION, se restablece con/clear); límite de WebSearch por sesión (200,CLAUDE_CODE_MAX_WEB_SEARCHES_PER_SESSION); el parámetromodede Task tool queda obsoleto en favor de heredar el modo de permisos de la sesión principal;/forkcrea una nueva sesión en segundo plano y la variante dentro de la sesión pasa a llamarse/subtask; las llamadas de MCP que superan los 2 minutos pasan automáticamente a segundo plano (CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS). ↩↩↩↩↩↩↩↩↩↩↩↩↩ -
Anthropic, versiones v0.3.205–v0.3.208 de
@anthropic-ai/claude-agent-sdkpara TypeScript. Julio de 2026. Confirmaciones tipadas de interrupción (UUIDstill_queued; capacidadinterrupt_receipt_v1anunciada ensystem/init); tramascommand_lifecycleque informan los estados en cola/iniciado/completado/cancelado/descartado de cada mensaje; tipoAgentToolCompletedOutput;canUseToolpuede devolver{behavior: 'allow'}sinupdatedInput. Corrección de seguridad en v0.3.208: una cancelación del llamador recibida durante un hook pendiente se convertía en una ejecución correcta del hook, por lo que las herramientas controladas por un hookPreToolUsepodían ejecutarse después de que el llamador cancelara la operación. ↩↩↩ -
Model Context Protocol, PR #3002. Incorporado el 16 de julio de 2026 al borrador de la especificación. Agrega un objeto opcional
io.modelcontextprotocol/serverInfoen_metade la respuesta y hace queclientInfosea opcional en las solicitudes, lo que restaura la identidad del servidor después de que el núcleo sin estado de SEP-2575 eliminara el protocolo de enlace de inicialización con estado. La identidad es autodeclarada y no está verificada: está destinada únicamente a su visualización y registro, y NO DEBERÍA orientar decisiones de seguridad. La revisión definitiva de la especificación sin estado está programada para el 28 de julio de 2026. ↩↩ -
OpenAI, versiones rust-v0.143.0, rust-v0.144.0 y rust-v0.144.5 de Codex CLI. Julio de 2026. v0.143.0: las herramientas MCP se cargan mediante la búsqueda de herramientas de forma predeterminada (carga diferida de herramientas en vez de esquemas precargados). v0.144.0: nuevo modo de aprobación de aplicaciones
writes— las acciones de solo lectura se ejecutan sin solicitar confirmación y las escrituras requieren aprobación — y disponibilidad general de la autenticación interactiva de MCP. v0.144.5: detección ampliada de comandos peligrosos. ↩↩ -
OpenAI,
openai-agents-pythonv0.18.2 (11 de julio de 2026) yopenai-agents-jsv0.13.2 (10 de julio de 2026). Ambas versiones incorporan compatibilidad beta con sistemas multiagente alojados: la orquestación de varios agentes administrada por OpenAI como servicio alojado, equivalente a la beta pública de Managed Multiagent Orchestration de Anthropic. ↩↩ -
Registro de cambios de Claude Code (canónico), v2.1.214–v2.1.216, julio de 2026. v2.1.214: las reglas de permisos y las condiciones
if:de hooks con patrones de rutadir/**de un solo segmento ahora se anclan a<cwd>/dir(escribe**/dir/**para cualquier nivel de profundidad); el comportamiento anterior aprobaba automáticamente reglas de permiso comoEdit(src/**)para cualquierdir/anidado en el árbol; las reglas de denegación y consulta mantienen la coincidencia a cualquier profundidad. Además: herramientaEndConversation; un conjunto de medidas de refuerzo de permisos de Bash/PowerShell con cierre seguro ante fallos; el código de salida 2 de un hook bloquea incluso cuando JSON de stdout no supera la validación del esquema; marcas de tiempo ISOmodifieden el frontmatter de la memoria sin truncamiento silencioso; ymessage.uuid,client_request_id,tool_sourceyCLAUDE_CODE_OTEL_CONTENT_MAX_LENGTHde OTel. v2.1.215: los skills integrados/verifyy/code-reviewya no se invocan por sí solos; solo se ejecutan mediante invocación explícita. v2.1.216: los subagents aislados mediante worktrees ya no pueden redirigir git al checkout compartido por medio degit -C,--git-diroGIT_DIR/GIT_WORK_TREE; las sesiones de worktree ya no se resuelven en un worktree residual de otro proyecto; las escrituras de flujos de trabajo y tareas programadas rechazan un.claudeque sea un enlace simbólico y apunte fuera del proyecto;/rewindya no atraviesa enlaces simbólicos ni enlaces físicos;sandbox.filesystem.disabledpermite aislar únicamente la salida de red; las sesiones reanudadas de agentes en segundo plano restauran el prompt y las restricciones de herramientas del agente; los cambios realizados durante la sesión en skills o comandos aparecen en el menú de comandos con barra sin necesidad de reiniciar. Verificado con el registro de cambios canónico el 21 de julio de 2026 (PST). ↩↩↩↩↩ -
Anthropic, versiones v0.3.214–v0.3.216 de
@anthropic-ai/claude-agent-sdkpara TypeScript yclaude-agent-sdkpara Python v0.2.124. Julio de 2026. TypeScript:set_permission_moderechaza los modos desconocidos;aborted: trueen mensajes truncados por una interrupción;tool_progressincluyesubagent_typeysubagent_retry; subclasescheduled-triggerpara las notificaciones de tareas; fuente"fork"deSessionStart; objeto auxiliartool_result_metaconnon_execution_kindyuser_feedback; recuento opcionalskippedLinksen las respuestas derewindFiles; y valores opcionalesuser_message_uuidyrequest_sent_wall_msen el mensaje de resultado satisfactorio. Python v0.2.124 (Windows, clase BatBadBut): se niega a ejecutar archivos.bat/.cmd; los metacaracteres decmd.exeen valores deresume/session_idgeneran unValueError; los valores deextra_argsque comienzan con un guion se vinculan como--flag=value. ↩↩↩ -
OpenAI, notas de la versión rust-v0.145.0 de Codex CLI, julio de 2026. Estabiliza la interfaz multiagente V2 opcional (modelos de subagents, niveles de razonamiento y concurrencia configurables; restauración de los roles de agente); amplía
/importpara migrar la configuración, los servidores MCP, los plugins, las sesiones, los comandos y las memorias específicas del proyecto desde Claude Code y Cursor. Refuerzo: tiempos de espera de inicio de MCP, renovaciones de OAuth serializadas, detección de OAuth sin bloqueo, detección más sólida de eliminaciones forzadas mediante rm, conservación de los motivos de rechazo e historial experimental paginado de conversaciones. ↩↩ -
Model Context Protocol, PR de documentación de la versión de la especificación #3064, #3066 y #3098, fusionadas el 21 de julio de 2026 antes del lanzamiento de la especificación del 28 de julio. La revisión definitiva presentará Tasks como una extensión opcional
io.modelcontextprotocol/tasksen lugar de una función principal y marcará como obsoleto el transporte HTTP+SSE en favor de Streamable HTTP. ↩ -
Registro de cambios de Claude Code (canónico), v2.1.217, 21 de julio de 2026. Los subagents ya no generan subagents anidados de forma predeterminada; configura
CLAUDE_CODE_MAX_SUBAGENT_SPAWN_DEPTHpara permitir un anidamiento más profundo. Se incorporó un nuevo límite para los subagents que se ejecutan simultáneamente (20 de forma predeterminada,CLAUDE_CODE_MAX_CONCURRENT_SUBAGENTS), de modo que un solo mensaje no pueda desplegar una cantidad ilimitada de agentes en segundo plano. Ahora--max-budget-usdsí detiene los subagents en segundo plano: una vez alcanzado el límite, se rechaza la creación de nuevos agentes y se detienen los que estén ejecutándose en segundo plano. El aislamiento de las sesiones en segundo plano canoniza los directorios de trabajo enlazados simbólicamente, lo que impide escapar de la carpeta del espacio de trabajo. Verificado con el registro de cambios canónico el 22 de julio de 2026 (PST). ↩↩ -
Anthropic,
claude-agent-sdkpara Python v0.2.125 y@anthropic-ai/claude-agent-sdkpara TypeScript v0.3.217, 21 de julio de 2026. Python v0.2.125 incluye CLI v2.1.217 sin cambios en la interfaz de SDK; la versión TS v0.3.217 se publica al mismo tiempo. Ambas heredan los nuevos valores predeterminados de anidamiento y concurrencia de subagents de CLI. ↩ -
Model Context Protocol, PR #3092, fusionada el 21 de julio de 2026. Corrección normativa que alinea los códigos de error de SEP-2575 con el esquema preliminar renumerado y el conjunto de pruebas de conformidad, como parte de la preparación para el lanzamiento de la especificación del 28 de julio de 2026. ↩
-
Ingeniería de Anthropic, “Cómo contenemos a Claude en nuestros productos”, 25 de mayo de 2026. Tres patrones de contención adaptados a las interfaces de los productos: contenedores efímeros gVisor con sistemas de archivos por sesión en el servidor (claude.ai); aislamiento del sistema operativo con intervención humana (Claude Code: Seatbelt en macOS, bubblewrap en Linux y
sandbox-runtime, publicado como código abierto); máquinas virtuales selladas en hipervisores de plataforma (Claude Cowork: framework Apple Virtualization en macOS, HCS en Windows, con el espacio de trabajo y.claudemontados, y nada más). Principios de diseño: contener primero en la capa del entorno y orientar después en la capa del modelo; adaptar la solidez del aislamiento a la capacidad de supervisión del usuario; preferir componentes de eficacia comprobada (hipervisores, seccomp y entornos de ejecución de contenedores) en lugar de código de aislamiento personalizado; tratar como no confiables la configuración local del proyecto y los resultados de las herramientas; mantener las credenciales fuera del sandbox mediante tokens por sesión con alcance limitado y revocables de manera independiente, una medida aplicada en Cowork mediante un proxy MITM defensivo dentro de la máquina virtual que rechaza las solicitudes que no incluyan el token aprovisionado para esa máquina virtual. ↩↩ -
Registro de cambios de Claude Code (canónico), v2.1.218, 22 de julio de 2026. Las comprobaciones de operaciones rm peligrosas,
&en segundo plano y rutas sospechosas de Windows ya no abren cuadros de diálogo de permisos: el clasificador del modo automático toma la decisión; el modo de planificación con la opción automática ya no solicita confirmación para los comandos Bash que el analizador estático no puede demostrar que sean de solo lectura: el clasificador los evalúa; los hooks del frontmatter del agente exigen que la carpeta del propio archivo del agente tenga la confianza del espacio de trabajo aceptada; los skills concontext: forkse ejecutan en segundo plano de forma predeterminada (background: falsedesactiva este comportamiento para cada skill);/code-reviewse ejecuta como un subagent en segundo plano;/deep-researchsolo se inicia cuando se invoca manualmente; el linaje de las sesiones bifurcadas se conserva después de la compactación en sesiones sin interfaz y de SDK; el envío al segundo plano medianteCtrl+Baplica los mismos límites del shell en segundo plano que las demás rutas. Verificado con el registro de cambios canónico el 24 de julio de 2026 (PST). ↩ -
Anthropic,
@anthropic-ai/claude-agent-sdkpara TypeScript v0.3.218 yclaude-agent-sdkpara Python v0.2.126, 22 de julio de 2026. TypeScript: indicadorSkillToolOutput.background;api_error_statusinforma de errores 429/529 ocurridos durante la transmisión;canonicalModelyproviderenmodelUsage. Python:ResultMessage.terminal_reason; entradas tipadas demodel_usageconcanonicalModel/provider; incluye CLI v2.1.218. ↩ -
Changelog de Claude Code (canónico), v2.1.219 (24 de julio de 2026) y v2.1.220 (25 de julio de 2026). v2.1.219: «Los subagents ahora pueden crear subagents anidados hasta una profundidad de 3 de forma predeterminada (antes era 1); configura
CLAUDE_CODE_MAX_SUBAGENT_SPAWN_DEPTH=1para desactivar el anidamiento»; se agregó Claude Opus 5 (claude-opus-5) como modelo Opus predeterminado: contexto de 1M y modo rápido a $10/$50 por MTok;sandbox.network.strictAllowlistrechaza, sin solicitar confirmación, los hosts que no están en la lista de permitidos para los comandos ejecutados en el sandbox; nuevo hookDirectoryAdded, que se activa después de que/add-diro la solicitud de controlregister_repo_rootde SDK registra un directorio de trabajo durante una sesión; los flujos de trabajo dinámicos adoptan de forma predeterminada una directriz de tamaño medio («procura usar menos de 15 agentes»), configurable desde cualquier archivo de configuración medianteworkflowSizeGuideline(la fila correspondiente de/configse oculta mientras se hace esto) y visible en la línea de estado del flujo de trabajo en ejecución; reenvío de subagents anidados en stream-json: los subagents de profundidad 2 o superior aparecen con--forward-subagent-text, identificados mediante el id detool_usedel Agent que los creó;mcp_server_errorsen el evento de inicialización stream-json sin interfaz, donde se enumeran las entradas de--mcp-configomitidas por la validación de la configuración, junto con una advertencia de inicio en las ejecuciones desde la terminal; estado HTTP y texto del error enclaude mcp listy/mcpcuando falla la conexión, además de una advertencia para los valores de configuración de MCP que contienen espacios en blanco ocultos al principio o al final; las entradas${VAR}de las listas administradas de permitidos y denegados de MCP ahora se resuelven a partir del entorno de inicio y del entorno de la configuración administrada, en lugar del entorno del archivo de configuración;claude -pya no descarta el texto que ya se había generado cuando un turno termina debido a un error de API durante la transmisión;CLAUDE_CODE_GIT_BASH_PATHse ignora y genera una advertencia cuando la ruta no corresponde a un binario bash/sh; Opus 4.7 se eliminó del modo rápido (/fastahora se aplica a Opus 5 y Opus 4.8); el skill claude-api incluido utiliza Opus 5 de forma predeterminada e incorpora una ruta de migración desde Opus 4.8. v2.1.220: únicamente correcciones de errores y mejoras de confiabilidad. El uso alternativo automático del «mejor modelo Opus disponible» en el modo automático de Fable-5 se remonta a la versión v2.1.176 y ahora selecciona Opus 5. Verificado con el changelog canónico el 25 de julio de 2026. ↩↩↩↩↩↩↩↩↩↩ -
Anthropic,
@anthropic-ai/claude-agent-sdkTypeScript v0.3.219 y v0.3.220;claude-agent-sdkPython v0.2.127 y v0.2.128. 24–25 de julio de 2026. TypeScript v0.3.219: se agregó al protocolo de control el evento del hook de ciclo de vidaDirectoryAdded; la opción voluntariacancel_queueden la solicitud de control de interrupción (capacidadinterrupt_cancel_queued_v1) cancela los mensajes en cola y pendientes de envío junto con la interrupción;fast_mode_disabled_reasonen los mensajes de resultado e inicialización; la respuesta de inicialización ya no informa elfast_mode_statedel modelo usado al crear el proceso después de cambiar de modelo; se agregaronsandbox.network.strictAllowlistyworkflowSizeGuidelinea los tipos de configuración de SDK. Python v0.2.127: se corrigió el cierre prematuro de stdin cuando había tareas en segundo plano en curso:query()cerraba stdin al recibir el primer frameresultmientras los subagents en segundo plano seguían ejecutándose, lo que provocaba que sus llamadas a herramientas SDK-MCP fallaran con"Stream closed"y omitieran silenciosamente los hooksPreToolUse; ahora stdin permanece abierto hasta que se completan todas las tareas en curso y llega el frame de resultado final (#1103). v0.3.220 / v0.2.128: actualizaciones de paridad con CLI v2.1.220. ↩↩↩↩ -
claude-agent-sdken PyPI y su CHANGELOG;@anthropic-ai/claude-agent-sdken npm. Verificado el 1 de agosto de 2026: Python 0.2.128 (changelog: «Se actualizó el Claude CLI incluido a la versión 2.1.220»; requieremcp<2.0.0,>=1.23.0), TypeScript 0.3.220 (publicado el 24 de julio de 2026, «paridad con Claude Code v2.1.220»). Las cifras anteriores de este párrafo (Python v0.2.111, que incluía CLI v2.1.202, y TypeScript v0.3.203) estaban atrasadas 17 versiones en cada caso, mientras que el resto de esta guía ya registraba las versiones 0.2.128 y 0.3.220. ↩↩↩ -
Anthropic, «Presentamos Claude Opus 5». 24 de julio de 2026.
claude-opus-5; «$5 por millón de tokens de entrada y $25 por millón de tokens de salida»; el modo rápido funciona «aproximadamente 2,5 veces más rápido que la velocidad predeterminada» por «el doble del precio base de Opus 5» ($10/$50 por MTok según el changelog de Claude Code v2.1.219, que también indica la ventana de contexto de 1M). Pruebas de rendimiento: «En Frontier-Bench v0.1, Opus 5 supera a todos los demás modelos y más que duplica el rendimiento de Opus 4.8»; en CursorBench 3.2 queda «a menos del 0,5 % de la puntuación máxima de Fable 5, pero a la mitad del costo»; «En ARC-AGI 3… la puntuación de Opus 5 triplica la del segundo mejor modelo»; en OSWorld 2.0 supera «el mejor resultado de Fable 5 con poco más de un tercio del costo». Se lo describe como «un modelo reflexivo y proactivo» que es «mucho más eficaz para verificar su trabajo e iterar cuidadosamente». ↩↩