agent:~/.claude$ cat agent-architecture.md

Arquitectura de agentes: cómo crear sistemas de desarrollo impulsados por IA

# El sistema completo para crear sistemas de agentes de IA listos para producción: habilidades, hooks, memoria, subagentes y los patrones de orquestación que hacen que los agentes sean confiables.

author: words: 40376 read_time: 186m updated: 2026-08-18 21:15

Part 2 of Agentic Engineering

$ less agent-architecture.md

TL;DR: Claude Code no es un cuadro de chat con acceso a archivos. Es un entorno de ejecución programable con 31 eventos de ciclo de vida documentados, cada uno conectable mediante scripts de shell que el modelo no puede omitir. Apila 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 organiza la deliberación multiagente. Los flujos de trabajo dinámicos de Claude Code (v2.1.154+) convirtieron la orquestación determinista multiagente en una primitiva nativa: decenas o cientos de agentes en segundo plano mediante /workflows; además, la plataforma ahora ejecuta subagents en segundo plano de forma predeterminada (20 simultáneos, anidamiento de profundidad 3), permite que tus sesiones se envíen mensajes entre sí como pares (v2.1.224) y ejecuta sesiones en la nube en runners autohospedados. Los hooks y los evidence gates siguen siendo responsables de la corrección.525387 Esta guía cubre cada capa de esa pila: desde un solo hook hasta un sistema de consenso de 10 agentes. No se requieren frameworks. Todo con bash y JSON.

Andrej Karpathy acuñó un término para lo que crece alrededor de un agente LLM: claws. Los hooks, scripts y la orquestación que permiten al agente aferrarse al mundo 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 edita un archivo y continúan. Ese 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 kernel LLM. Cada acción que realiza el modelo pasa por hooks que controlas. Defines políticas, no prompts. El modelo opera dentro de tu infraestructura del mismo modo que un servidor web opera dentro de las reglas de nginx. No te sientas frente a nginx a escribir solicitudes. Lo configuras, lo implementas y lo supervisas.

La diferencia importa porque la infraestructura se acumula. Un hook que bloquea credenciales en comandos bash protege cada sesión, cada agente y cada ejecución autónoma. Una skill que codifica tu criterio de evaluación se aplica de forma consistente, tanto si la invocas tú como si lo hace un agente. Un agente que revisa código en busca de problemas de seguridad ejecuta las mismas comprobaciones, estés observando o no.2


Conclusiones clave

  • Los hooks garantizan la ejecución; los prompts no. Usa hooks para linting, formato, comprobaciones de seguridad y todo lo que deba ejecutarse siempre, sin importar el comportamiento del modelo. El código de salida 2 bloquea acciones. El código de salida 1 solo advierte.3
  • Las skills codifican experiencia de dominio que se activa automáticamente. El campo description lo determina todo. Claude usa razonamiento LLM (no coincidencia de palabras clave) para decidir cuándo aplicar una skill.4
  • Los subagents evitan la saturación de contexto. Las ventanas de contexto aisladas para exploración y análisis mantienen la sesión principal liviana. Ejecuta subagents independientes en paralelo y usa equipos de agentes cuando los trabajadores necesiten coordinación sostenida.5
  • La memoria vive en el sistema de archivos. Los archivos persisten entre ventanas de contexto. CLAUDE.md, MEMORY.md, directorios de reglas y documentos de transferencia forman un sistema estructurado de memoria externa.6
  • La deliberación multiagente detecta puntos ciegos. Los agentes individuales no pueden cuestionar sus propias suposiciones. Dos agentes independientes con distintas prioridades de evaluación detectan fallas estructurales que los quality gates 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 en una capa determinista entre tú y el modelo que escala con la automatización.

Cómo usar esta guía

Experiencia Comienza aquí Luego explora
Usas Claude Code a diario y quieres más El patrón de harness Sistema de skills, Arquitectura de hooks
Creas flujos de trabajo autónomos Patrones de subagents Orquestación multiagente, Patrones de producción
Evalúas 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 al final ofrece una tabla de consulta para elegir el mecanismo adecuado para 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 envuelven a un agente de programación con IA en infraestructura determinista. Los 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 inicio de la sesión y después de cada compactación. Esta es la memoria arquitectónica de largo plazo del agente.

Capa de extensión: Las skills aportan experiencia de dominio y se activan automáticamente según el contexto. Los hooks proporcionan compuertas deterministas que se ejecutan en cada llamada a 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 investigación, revisión y deliberación. Los presupuestos de creación evitan la recursión descontrolada. La validación por consenso asegura la calidad.

La idea clave: la mayoría de los usuarios trabaja por completo en la Capa central, mientras observa cómo crece el contexto y aumentan los costos. Los usuarios avanzados configuran las capas de Instrucciones y Extensiones, y luego usan la Capa central solo para la orquestación y las decisiones finales.2

Harnesses administrados frente a autoalojados (abril de 2026)

Durante los primeros meses de 2026, la ruta de «crear tu propio harness» era la única opción real. En abril de 2026, eso cambió. Anthropic lanzó Claude Managed Agents en beta pública (8 de abril): bucle de harness + ejecución de herramientas + contenedor sandbox + persistencia de estado como una REST API, facturado con tokens estándar más $0,08 por hora de sesión. La actualización de Agents SDK de OpenAI (16 de abril) formalizó la misma separación: harness y cómputo como capas independientes, con proveedores sandbox nativos (Blaxel, Cloudflare, Daytona, E2B, Modal, Runloop, Vercel) y snapshot/rehydrate para sobrevivir a la pérdida de contenedores.2324

La superficie más profunda de SDK para OpenAI llegó en openai-agents Python v0.14.0 (publicada el 15 de abril de 2026; anunciada el 16 de abril): una subclase SandboxAgent de Agent con default_manifest, instrucciones y capacidades sandbox; un Manifest que describe el contrato de un espacio de trabajo nuevo (archivos, directorios, archivos locales, repositorios Git, variables de entorno, usuarios y montajes); un SandboxRunConfig para la conexión por ejecución del cliente sandbox, la inyección de sesiones activas, las sustituciones de manifest, los snapshots y los límites de concurrencia de materialización. Las capacidades integradas cubren acceso al shell, edición del sistema de archivos, inspección de imágenes, skills, memoria sandbox y compactación. La memoria sandbox conserva las lecciones extraídas entre ejecuciones y las revela progresivamente; los espacios de trabajo admiten archivos locales, entradas de repositorios Git y montajes remotos (S3, R2, GCS, Azure Blob, S3 Files); los snapshots son portables entre proveedores. Backends: UnixLocalSandboxClient, DockerSandboxClient y clientes alojados para Blaxel, Cloudflare, Daytona, E2B, Modal, Runloop y Vercel mediante extras opcionales.24

Para proyectos de Python que quieran integrar el tiempo de ejecución de Claude Code como una biblioteca —entre «ejecutar claude desde el shell» y «REST API a 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 v2.1.123, elevó el requisito mínimo de la dependencia mcp a >=1.19.0 (las versiones anteriores descartaban silenciosamente los retornos CallToolResult de las herramientas MCP en proceso y dejaban al modelo con un bloque de error de validación), e incorporó SandboxNetworkConfig con paridad de esquema respecto de TypeScript SDK (allowedDomains, deniedDomains, allowManagedDomainsOnly, allowMachLookup).30 Al 2026-08-12, el paquete está en v0.2.137 en PyPI y TypeScript SDK en v0.3.229 (ambos verificados en los registros activos); la línea 0.2.x es incremental sobre la superficie 0.1.x descrita aquí: las opciones include_hook_events, skills y de configuración sandbox que aparecen a continuación siguen vigentes, y las versiones recientes se han centrado en la limpieza de subprocesos y la fiabilidad de los streams NDJSON.9086

Si tu harness incluye una capa de voz o 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 de tiempo real existentes adoptan automáticamente el nuevo valor predeterminado; fija explícitamente el modelo anterior si necesitas mantener el comportamiento antiguo para evaluación.

En julio de 2026, la columna administrada también obtuvo una historia multiagente del lado de OpenAI: openai-agents-python v0.18.2 (11 de julio) y openai-agents-js v0.13.2 (10 de julio) agregan soporte multiagente alojado en beta: orquestación administrada por OpenAI de varios agentes como servicio alojado, la contraparte directa de la beta pública Managed Multiagent Orchestration de Anthropic tratada en la sección Orquestación multiagente.73 Ambos proveedores ofrecen ahora en el nivel multiagente la misma alternativa que la tabla siguiente describe para agentes individuales: el proveedor ejecuta el bucle de delegación y tú renuncias a la superficie de hooks.

La bifurcación arquitectónica ahora es real:

Dimensión Harness autoalojado (predeterminado de esta guía) Harness administrado (Claude Managed Agents / OpenAI Agents SDK)
Carga operativa Tú ejecutas todo El proveedor ejecuta el bucle, sandbox y estado
Personalización Total: tus hooks, tus skills, tu memoria Limitada: puntos de extensión definidos por el proveedor
Modelo de costos Token + cómputo autoalojado Token + recargo por hora de ejecución
Durabilidad del estado Tú la diseñas El proveedor crea puntos de control entre desconexiones
Orquestación de equipos de agentes La creas tú Coordinación multiagente proporcionada por el proveedor

Cuándo elegir cada uno: el autoalojamiento sigue siendo adecuado para equipos que ya cuentan con capacidad de infraestructura, quieren skills/hooks bajo su control u optimizan profundamente un flujo de trabajo específico. La opción administrada es adecuada para equipos sin ingenieros de plataforma dedicados, cuando el tiempo hasta obtener valor importa más que la personalización, o cuando las ejecuciones de agentes deben sobrevivir de forma confiable al cierre de laptops sin que construyas esa capa de persistencia. Ambos son compatibles: puedes ejecutar un harness autoalojado que delegue tareas específicas de larga duración a Managed Agents mediante su REST API.

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 tiene un propósito. El árbol ~/.claude/ es 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, conforman el harness completo.

Sistema de skills

Las skills son extensiones invocadas por el modelo. Claude las detecta y aplica automáticamente según el contexto, sin que tengas que llamarlas explícitamente.4 En cuanto notes que estás explicando de nuevo el mismo contexto entre sesiones, es momento de crear una skill.

Cuándo crear una skill

Situación Crea una… Motivo
Pegas la misma lista de verificación en cada sesión Skill Conocimiento especializado que se activa automáticamente
Ejecutas explícitamente la misma secuencia de comandos Slash command Acción invocada por el usuario con un desencadenante predecible
Necesitas análisis aislado que no debería contaminar el contexto Subagent Ventana de contexto separada para trabajo enfocado
Necesitas un prompt de una sola vez con instrucciones específicas Nada Simplemente escríbelo. No todo necesita abstracción.

Las skills son para el conocimiento que Claude siempre tiene disponible. Los slash commands son para las acciones que activas explícitamente. Si estás decidiendo entre ambos, pregúntate: “¿Claude debería aplicar esto automáticamente o debería decidir yo cuándo ejecutarlo?”

Crear una skill

Las skills se encuentran en cuatro posibles ubicaciones, de la mayor a la menor amplitud:4

Alcance Ubicación Se aplica a
Empresa 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 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 de frontmatter

Campo Obligatorio Propósito
name Identificador único (minúsculas, guiones, máximo 64 caracteres)
description Desencadenante de detección (máximo 1024 caracteres). Claude lo usa para decidir cuándo aplicar la skill
allowed-tools No Restringe las capacidades de Claude (p. ej., Read, Grep, Glob para solo lectura)
disable-model-invocation No Evita la activación automática; la skill solo se activa mediante /skill-name
user-invocable No Establécelo en false para ocultarla por completo del menú /
model No Anula qué modelo usar cuando la skill está activa
context No Establécelo en fork para ejecutarla en una ventana de contexto aislada
agent No Se ejecuta como un subagent con su propio contexto aislado
hooks No Define hooks de ciclo de vida limitados a esta 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 inicio de la sesión, Claude Code extrae el name y la description de cada skill y los inyecta en el contexto de Claude. Cuando envías un mensaje, Claude usa razonamiento de modelo de lenguaje para decidir si alguna skill es relevante. Un análisis independiente del código fuente de Claude Code confirma el mecanismo: las descripciones de las skills se inyectan en una sección available_skills del prompt del sistema, y el modelo usa comprensión estándar del lenguaje para seleccionar las skills relevantes.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 tipos de problemas específicos), cuándo usarla (al examinar cambios, PRs y análisis de calidad) y frases desencadenantes (revisar, auditar, verificar) que los usuarios escriben de forma natural.

Ten en cuenta que la activación automática es un control gradual, no una ley: desde la versión v2.1.215, Claude ya no se autoinvoca las skills incluidas /verify y /code-review; se ejecutan solo mediante invocación explícita, un retroceso deliberado de la activación basada en descripciones para skills de revisión pesadas cuyos usos no solicitados costaban más de lo que aportaban.74

Presupuesto de contexto

Todas las descripciones de skills comparten un presupuesto de contexto que escala dinámicamente al 1 % de la ventana de contexto, con un límite alternativo de 8.000 caracteres.4 Si tienes muchas skills, mantén cada descripción concisa y coloca primero el caso de uso clave. Puedes anular el presupuesto mediante la variable de entorno SLASH_COMMAND_TOOL_CHAR_BUDGET,11 pero la mejor solución son descripciones más breves y precisas. Ejecuta /context durante una sesión para comprobar si se está excluyendo alguna skill.

Archivos de apoyo y organización

Las skills pueden hacer referencia a archivos adicionales en el 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 bajo demanda cuando se activa la skill. Mantén SKILL.md por debajo de 500 líneas y mueve el material de referencia detallado a archivos de apoyo.12

Compartir skills mediante Git

Las skills de proyecto (.claude/skills/ en la raíz del repositorio) se comparten mediante 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 los integrantes del equipo hacen pull, reciben la skill automáticamente. Sin instalación ni configuración. Esta es la forma más efectiva de estandarizar conocimiento especializado en un equipo.

Las skills como biblioteca de prompts

Más allá de las skills de propósito único, la estructura de directorios funciona como una biblioteca de prompts organizada:

~/.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 conocimiento de la que Claude se nutre automáticamente según el contexto. Un desarrollador junior recibe orientación de nivel senior sin tener que pedirla.

Las skills se combinan con hooks

Las skills pueden definir sus propios hooks en el frontmatter, que se activan solo mientras se ejecuta la skill. Esto crea 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'"
---

Las skills de filosofía se activan automáticamente mediante hooks SessionStart, inyectando restricciones de calidad en cada sesión sin invocación explícita. La skill en sí es conocimiento. El hook es cumplimiento. Juntos, forman una capa de políticas.

Errores comunes con las skills

Descripciones demasiado amplias. Una skill git-rebase-helper que se activa ante cualquier prompt relacionado con git (rebases, merges, cherry-picks, incluso git status) contamina el contexto en el 80 % de las sesiones. La solución es restringir la descripción o agregar disable-model-invocation: true y requerir la invocación explícita mediante /skill-name.4

Demasiadas skills compitiendo por el presupuesto. Más skills significan más descripciones compitiendo por el 1 % del presupuesto de contexto. Si notas que las skills no se activan, revisa /context para ver las excluidas. Prioriza menos skills bien descritas por encima de muchas imprecisas.

Información crítica oculta en archivos de apoyo. Claude lee SKILL.md de inmediato, pero solo accede a los archivos de apoyo cuando los necesita. Si la información crítica está en un archivo de apoyo, Claude podría no encontrarla. Coloca la información esencial directamente en SKILL.md.4

Superficie de skills de SDK (8 de mayo de 2026)

Los harnesses autohospedados en claude-agent-sdk-python v0.1.77+ deben usar la opción skills en ClaudeAgentOptions para declarar las skills disponibles, no el valor heredado "Skill" en allowed_tools.37 La abreviatura "Skill" está obsoleta y la opción dedicada brinda a Claude Code información más estructurada sobre cuáles skills están disponibles. El CLI incluido en v0.1.77 es v2.1.133.

Convergencia de plugins y skills en .claude/skills/ (29 de mayo de 2026)

Las skills siempre se han cargado desde el directorio .claude/skills/ de un proyecto. Claude Code v2.1.157 extiende ese directorio a los plugins: un plugin colocado en .claude/skills/ ahora se carga automáticamente sin registro en marketplace, y claude plugin init <name> crea allí uno nuevo con el manifiesto y SKILL.md ya conectados.58 Eso cierra la brecha entre las dos formas de herramientas de proyecto que antes vivían en lugares diferentes: una skill simple confirmada directamente en el repositorio, frente a un plugin que agrupa una skill junto con hooks y un servidor MCP, pero que antes necesitaba un marketplace para instalarse. El efecto práctico para el diseño de harnesses: las herramientas con alcance de proyecto ya no necesitan un desvío por un registro para distribuirse; escríbelas, confírmalas y los integrantes del equipo obtendrán la misma superficie con git pull. Los plugins siguen siendo propietarios del caso de uso de instalación empaquetada (hooks + skills + servidores MCP + agents en un ZIP); el cambio es que un proyecto ya no tiene que crear un marketplace solo para cargar uno desde su propio árbol. Esa convergencia ahora tiene una base entre proveedores: Agent Plugins 1.0.0 (publicado el 6 de agosto de 2026) estandariza la misma forma de paquete —un manifiesto plugin.json, directorios skills/ de carpetas SKILL.md, mcp.json opcional— como “el formato de paquete portátil para agentes de IA”, adoptado en el lanzamiento por VS Code, Cursor, GitHub Copilot, ChatGPT & Codex y Kiro. Es explícitamente una capa de empaquetado alrededor de Agent Skills y MCP, no un reemplazo; ten en cuenta que Anthropic, autor de la especificación Agent Skills, aún no forma parte de la coalición, así que trata la portabilidad hacia afuera de Claude-Code como compatibilidad a nivel de formato, no como un contrato bidireccional oficial.89

Ocultar la superficie incluida como gobernanza (8 de junio de 2026)

Las skills son capacidad, y la capacidad es superficie de ataque. Claude Code v2.1.169 agrega una configuración disableBundledSkills (y la variable de entorno correspondiente CLAUDE_CODE_DISABLE_BUNDLED_SKILLS) que oculta por completo del modelo las skills incluidas, los workflows y los slash commands integrados.60 Para un harness reforzado o regulado, esto constituye una reducción deliberada de la superficie de ataque: un operador que haya auditado y aprobado un conjunto específico de skills de proyecto y personales puede suprimir todo lo que Anthropic incluye de fábrica, de modo que el modelo solo razone sobre la superficie que el operador evaluó. Trátalo igual que una lista de herramientas permitidas: el valor predeterminado ofrece capacidades amplias, y desactivarlo es una decisión de gobernanza, no un simple interruptor de comodidad.

.claude/skills anidadas y resolución de la más cercana (16 de junio de 2026)

Claude Code v2.1.178 hizo que las herramientas de proyecto fueran conscientes de la ubicación. Las skills en directorios .claude/skills anidados ahora se cargan cuando trabajas en archivos bajo ese directorio, no solo desde la raíz del repositorio; cuando hay un conflicto de nombres, la skill anidada aparece como <dir>:<name> para que ambas sigan siendo accesibles.63 La misma versión hizo que el resto de la superficie del proyecto se resuelva desde el directorio más cercano al directorio de trabajo: cuando un nombre de agent, workflow o estilo de salida entra en conflicto entre directorios .claude/ anidados, gana el que esté más cerca del directorio de trabajo, y un guardado de workflow con alcance de proyecto se dirige al .claude/workflows/ existente más cercano en vez de dirigirse siempre a la raíz.63 Para un monorepo o un repositorio de repositorios, esta es la diferencia entre una superficie global plana y herramientas por paquete que se activan según el contexto: un services/api/.claude/skills/ puede contener skills específicas de API que aparezcan solo mientras trabajas en ese árbol, sin entrar en conflicto con una 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 del LLM como scripts simples, no como prompts interpretados por el modelo. ¿El modelo quiere ejecutar rm -rf /? Un script bash de 10 líneas comprueba el comando con una lista de bloqueo y lo rechaza antes de que el shell siquiera lo vea. El hook se activa independientemente de que el modelo lo quiera o no.

Eventos disponibles

Claude Code expone 31 eventos documentados del ciclo de vida en ocho categorías a la fecha de esta actualización de la guía. La lista de eventos crece con las versiones, así que considera la documentación de referencia como la fuente de verdad y consulta la hoja de referencia para ver la tabla completa actual antes de conectar hooks de producción:13

Categoría Eventos ¿Puede bloquear?
Sesión SessionStart, Setup, SessionEnd No
Usuario / finalización UserPromptSubmit, UserPromptExpansion, Stop, StopFailure, TeammateIdle Prompt/expansión/stop/idle pueden bloquear; StopFailure no puede
Herramienta PreToolUse, PermissionRequest, PermissionDenied, PostToolUse, PostToolUseFailure, PostToolBatch Pre/permission/batch pueden bloquear; los eventos post no pueden
Subagent / tarea SubagentStart, SubagentStop, TaskCreated, TaskCompleted Los eventos stop/task pueden bloquear; start no puede
Contexto PreCompact, PostCompact, InstructionsLoaded PreCompact puede bloquear; post/load no pueden
Sistema de archivos / espacio de trabajo CwdChanged, DirectoryAdded, FileChanged, WorktreeCreate, WorktreeRemove La creación de worktree puede bloquear; los demás no pueden
Configuración / notificación ConfigChange, Notification, MessageDisplay Los cambios de configuración pueden bloquear, excepto los ajustes de políticas; las notificaciones no pueden; MessageDisplay solo transforma el texto mostrado (displayContent, v2.1.152)
MCP Elicitation, ElicitationResult
Dos refinamientos recientes son importantes para los harnesses en segundo plano y multiagente. A partir de v2.1.198, las sesiones en segundo plano de claude agents activan el hook Notification con los valores de activación agent_needs_input y agent_completed, por lo que un coordinador puede reaccionar en el momento en que un miembro de la flota se bloquea en un prompt o termina: el equivalente impulsado por notificaciones de consultar claude agents --json. Además, a partir de 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 un hook de inicio o de lanzamiento de subagent que falla ahora explica el motivo en lugar de fallar a ciegas.

DirectoryAdded (v2.1.219) cierra la brecha del espacio de trabajo a mitad de sesión. La lista de eventos se había mantenido estable desde que llegó MessageDisplay en 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— registre 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 añadía un segundo repositorio sin que se activara ningún hook. Todo lo que afirmes sobre el espacio de trabajo al inicio —comprobaciones de confianza, análisis de secretos, reglas de alcance de rutas derivadas del árbol, carga de políticas por repositorio— debe volver a ejecutarse aquí, porque el conjunto de directorios de una sesión ya no es fijo al iniciarse. El evento es informativo en lugar de bloqueante, así que trátalo como un disparador para volver a derivar el estado y registrar la procedencia, no como una barrera; si nunca debe poder añadirse un directorio, niégalo en la configuración en lugar de intentar vetarlo desde un hook. La parte de SDK llegó en la misma versión (TypeScript v0.3.219 añade DirectoryAdded a los eventos del ciclo de vida del protocolo de control), por lo que los harnesses alojados en SDK lo ven en las mismas condiciones que los de CLI.85

Semántica de los códigos de salida

Los códigos de salida determinan si los hooks bloquean 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 enviado a Claude.
1, 3, etc. Error no bloqueante La operación continúa. Stderr se muestra solo en modo detallado (Ctrl+O).
Crítico: Todo hook de seguridad debe usar exit 2, no exit 1. La salida 1 es una advertencia no bloqueante. El comando peligroso igual se ejecuta. Este es el error más común con hooks entre los equipos.14

Configuración de hooks

Los hooks se encuentran en archivos de configuración. A nivel de proyecto (.claude/settings.json) para hooks compartidos. A nivel de usuario (~/.claude/settings.json) para 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. Para eventos de herramientas, coincide con valores de tool_name como Bash, Edit, Write, Read, Glob, Grep, nombres de herramientas 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 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 guiones (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 para cada nombre que simplemente contiene la cadena; para cubrir todas las herramientas de un servidor MCP con guiones, escribe el patrón explícito mcp__brave-search__.*.66 v2.1.214 aplicó la misma disciplina a los patrones de ruta: una condición if: de un hook que usa un patrón de un solo segmento dir/** ahora coincide solo con <cwd>/dir, no con cada directorio llamado dir en cualquier parte del árbol; escribe **/dir/** cuando realmente quieras indicar cualquier profundidad.74 Al igual que con el cambio de v2.1.195, la corrección cambia una amplitud accidental por una intención declarada; audita cualquier condición de hook que dependiera silenciosamente del comportamiento anterior de cualquier profundidad.

Protocolo de entrada/salida de hooks

Los hooks reciben JSON en stdin con el contexto completo:

{
  "tool_name": "Bash",
  "tool_input": {
    "command": "npm test",
    "description": "Run test suite"
  },
  "session_id": "abc-123",
  "agent_id": "main",
  "agent_type": "main"
}

Para un control avanzado, los hooks PreToolUse pueden generar JSON para modificar la entrada de la herramienta, inyectar contexto o tomar decisiones de permisos. Usa el envoltorio hookSpecificOutput: el formato anterior de decision/reason de 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 consistencia después del hecho. Los hooks PostToolUse en Write/Edit ejecutan tu formateador después de cada cambio de 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 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 suite de pruebas y bloquean el commit si fallan las comprobaciones de calidad:

#!/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 tienen costo de tokens.

Los hooks de herramientas de MCP (type: "mcp_tool") llaman a una herramienta en un servidor de MCP ya conectado. Úsalos cuando la lógica de validación ya se encuentra detrás de un límite de MCP y no necesita un script de shell independiente.

Los hooks de prompt (type: "prompt") envían un prompt de un solo turno a un modelo rápido de Claude. El modelo devuelve { "ok": true } para permitir o { "ok": false, "reason": "..." } para bloquear. Úsalos para evaluaciones matizadas que regex no puede expresar.

Los hooks de agente (type: "agent") generan un subagent con acceso a herramientas (Read, Grep, Glob) para una verificación de varios turnos. Son experimentales; prefiere los hooks de comandos para los gates de producción y reserva los hooks de agente para verificaciones que realmente requieran inspeccionar archivos reales o la salida de pruebas:

{
  "hooks": {
    "Stop": [
      {
        "hooks": [
          {
            "type": "agent",
            "prompt": "Verify all unit tests pass. Run the test suite and check results. $ARGUMENTS",
            "timeout": 120
          }
        ]
      }
    ]
  }
}

Desde Claude Code v2.1.140, la entrada de los hooks de agente incluye subagent_type, lo que permite que un hook compartido distinga una ejecución de security-reviewer de un explorer o un worker genérico sin tener que inferirlo a partir del texto del prompt.49

Los hooks HTTP (type: "http") envían la entrada de JSON del evento como una solicitud POST a una URL y reciben JSON de vuelta. Úsalos para webhooks, servicios externos de notificaciones o validación basada 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
          }
        ]
      }
    ]
  }
}

Hooks asíncronos

Los hooks pueden ejecutarse en segundo plano sin bloquear la ejecución. Agrega async: true para operaciones no críticas, como notificaciones y registro:13

{
  "type": "command",
  "command": ".claude/hooks/notify-slack.sh",
  "async": true
}

Usa async para notificaciones, telemetría y respaldos. Nunca uses async para formateo, validación ni nada que deba completarse antes de la siguiente acción.

Dispatchers en lugar de hooks independientes

Ejecutar siete hooks que se disparan en el mismo evento, cada uno leyendo stdin de forma independiente, crea condiciones de carrera. Dos hooks que escriben simultáneamente en el mismo archivo de estado de JSON truncarán JSON. Todos los hooks posteriores que analicen ese archivo fallarán.2

La solución: un dispatcher por evento que ejecute hooks secuencialmente desde stdin almacenado en caché:

#!/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 de forma silenciosa:14

  1. Prueba los scripts de forma independiente. Envía una muestra de JSON mediante una tubería: echo '{"tool_input":{"command":"git commit -m test"}}' | bash your-hook.sh
  2. Usa stderr para la salida de depuración. El stderr con código de salida 2 se devuelve a Claude como mensaje de error. El stderr no bloqueante (salida 1, 3, etc.) aparece solo en modo detallado (Ctrl+O).
  3. Presta atención a los fallos de jq. Las rutas incorrectas de JSON devuelven null silenciosamente. Prueba las expresiones de jq con entradas reales de herramientas.
  4. Verifica los códigos de salida. Un hook PreToolUse que usa exit 1 no aplica ninguna restricción aunque parezca funcionar.
  5. Mantén los hooks rápidos. Los hooks se ejecutan de forma síncrona. Mantén todos los hooks por debajo de 2 segundos, idealmente por debajo de 500 ms.

Streaming de eventos de hooks del lado de SDK

Los harnesses autohospedados creados con claude-agent-sdk-python (v0.1.74+, 6 de mayo de 2026) pueden suscribirse a eventos de hooks directamente desde el flujo de mensajes, en lugar de pasar por callbacks de scripts de shell.36 Configura include_hook_events=True en ClaudeAgentOptions, y los objetos HookEventMessage (PreToolUse, PostToolUse, Stop y otros) se generan desde el mismo iterador que los mensajes del asistente y los resultados de herramientas. Esto refleja la opción includeHookEvents de TypeScript SDK; CLI incluido se actualizó a v2.1.129 en la misma versión.

El patrón de flujo de eventos es adecuado cuando tu harness ya se encuentra en Python y quieres las señales de hooks en el mismo flujo de control que la salida del modelo. El contrato de hooks de scripts de shell (códigos de salida, stdin de JSON, dispatchers) sigue siendo la respuesta adecuada para harnesses que combinan varias herramientas, comparten hooks entre Claude Code y Codex, o necesitan la semántica de códigos de salida para bloquear.

La serie de julio de 2026 de TypeScript SDK (v0.3.205–v0.3.208) hizo que el protocolo de streaming fuera más contractual.70 Las interrupciones ahora devuelven recibos tipados: una interrupción confirma qué mensajes en cola siguen pendientes mediante UUID still_queued, y las sesiones anuncian la capacidad interrupt_receipt_v1 en system/init, de modo que un coordinador puede distinguir entre «la interrupción llegó» y «la interrupción se cruzó con un mensaje que ya estaba en curso». Los marcos command_lifecycle informan queued/started/completed/cancelled/discarded por mensaje: la primera respuesta propia a «¿qué ocurrió con el mensaje que envié?» sin inferirlo a partir de la transcripción. También se incorporaron superficies menores: un tipo AgentToolCompletedOutput para cargas útiles de finalización de subagents, y los callbacks canUseTool ahora pueden devolver {behavior: 'allow'} sin un campo updatedInput.

Una línea de esa serie es un mínimo de seguridad, no una función: v0.3.208 corrigió el caso en que un aborto del llamador durante un hook pendiente se convertía en éxito del hook; esto significaba que una herramienta controlada por un hook PreToolUse podía ejecutarse después de que el llamador hubiera abortado.70 Si tu harness usa hooks del lado de SDK como gate de permisos y depende de abortar para cancelar trabajo en curso, considera v0.3.208 como la versión mínima; por debajo de ella, «abortado» no significaba de forma fiable «bloqueado». Python v0.2.127 (24 de julio de 2026) es el segundo bypass de esta forma en un mes: query() cerraba stdin en el primer marco result mientras los subagents en segundo plano seguían ejecutándose, por lo que sus llamadas de herramientas SDK-MCP fallaban con "Stream closed" y omitían por completo los hooks PreToolUse.85 Nombra el patrón y vigílalo: la aplicación de hooks del lado de SDK falla de forma abierta en los bordes del ciclo de vida —aborto, desmontaje, cierre del flujo—, donde el transporte muere antes de recopilar el veredicto del hook, y falla silenciosamente, porque un hook omitido se ve exactamente igual que uno que aprobó. Fija ambas versiones mínimas de SDK y conserva la capa de hooks de shell como la aplicación que puedes demostrar.

Esfuerzo y procedencia de la sesión (7-8 de mayo de 2026)

Dos incorporaciones en Claude Code v2.1.132 y v2.1.133 proporcionan a los hooks y subprocesses mejores señales sobre su contexto de ejecución:3839

  • effort.level en la entrada del hook. Los hooks ahora reciben un campo de JSON effort.level en la misma entrada que contiene tool_input y session_id. El mismo valor se exporta como la variable de entorno $CLAUDE_EFFORT, por lo que los comandos Bash pueden leerlo sin analizar JSON. Úsalo para escalar el costo del hook según el nivel de esfuerzo: omite la validación costosa en low y ejecuta el gate de seguridad completo en xhigh o max.
  • Variable de entorno CLAUDE_CODE_SESSION_ID en subprocesses de Bash. Los subprocesses de herramientas Bash ahora reciben el mismo valor session_id que reciben los hooks, expuesto como CLAUDE_CODE_SESSION_ID. Esto cierra la brecha de procedencia para las herramientas que registran estado por sesión y que antes no podían correlacionar los eventos de subprocesses con los eventos de hooks.

Ambas señales están disponibles sin cambios de código; los hooks existentes que ignoran los nuevos campos siguen funcionando.

autoMode.hard_deny y correcciones de hooks/plugins de v2.1.136 (8 de mayo de 2026)

Claude Code v2.1.136 añadió un nuevo nivel de denegación estricta al modo automático y corrigió un grupo de problemas de plugins y MCP que afectaban a los harnesses de larga duración:40 - settings.autoMode.hard_deny. Reglas del clasificador de modo automático que bloquean incondicionalmente, sin importar la intención del usuario ni las excepciones permitidas. Se ubica por encima de los comparadores allow/deny existentes como una palanca de gobernanza no negociable. Úsalo para reglas que nunca deben anularse (force-push a main, archivos con secretos, acceso a bases de datos de producción), incluso cuando un operador haya aprobado la categoría más amplia en su configuración personal. - autoMode.classifyAllShell (v2.1.193). De forma predeterminada, el clasificador de modo automático solo revisa los comandos de shell que coinciden con patrones de ejecución de código arbitrario. Esta configuración dirige todos los comandos de Bash/PowerShell a través del clasificador —la postura de máxima cobertura para un harness gobernado—, y la misma versión muestra los motivos de denegación en la transcripción, la notificación y /permissions, lo que convierte bloqueos silenciosos en decisiones auditables. Codex reforzó la superficie equivalente en 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 pasar silenciosamente.66 - Hook ask establece un mínimo para el clasificador (v2.1.211). La cuestión de precedencia entre hooks y modo automático ya está resuelta: un hook PreToolUse que devuelve una decisión de permiso ask fija el resultado final en una solicitud —el modo automático no puede elevarlo nuevamente a allow para comandos Bash sin sandbox.69 Para un harness gobernado, esta es la capa 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 totalmente automáticas. Usa ask (no solo bloques con exit-2) para las operaciones en las que quieres una decisión humana en lugar de una negativa. - El modelo del clasificador se fija por sesión (v2.1.210). El clasificador de modo automático usa Sonnet 5 de forma predeterminada y queda fijado para la sesión, de modo que los cambios de modelo a mitad de sesión ya no alteran qué modelo realiza las clasificaciones de permisos.69 La consistencia de la clasificación es una propiedad de gobernanza; esto elimina una fuente silenciosa de desviación. - Los servidores MCP ya no desaparecen después de /clear. Los servidores configurados en .mcp.json, plugins y conectores de claude.ai desaparecían silenciosamente del conjunto activo después de un /clear en la extensión de VS Code, el plugin de JetBrains y Agent SDK. La corrección llega en v2.1.136. Si viste que “MCP server X disappeared mid-session”, esta era la causa. - Pérdida del refresh token de MCP OAuth durante una actualización simultánea. Los usuarios con varios servidores MCP remotos ya no deberían necesitar volver a autenticarse a diario. Las escrituras de actualización simultánea se sobrescribían entre sí. - El modo Plan ahora bloquea correctamente las escrituras de archivos. Una regla allow coincidente de Edit(...) estaba eludiendo la protección de escritura del modo Plan. El modo Plan ahora se aplica sin importar las reglas allow. - Los hooks Stop y UserPromptSubmit de plugins ya no fallan a mitad de sesión. La limpieza de caché eliminaba archivos de versiones de plugins que la sesión en ejecución todavía usaba, lo que rompía específicamente estos dos eventos de hook. La corrección mantiene fijadas las versiones en uso. - Entrada skills en plugin.json. Configurar skills ocultaba la carpeta skills/ predeterminada del plugin. Ahora la entrada se compone correctamente, y apuntarla a una ruta de archivo genera un error explícito en lugar de fallar silenciosamente. - Variables de entorno del hook SessionStart mediante CLAUDE_ENV_FILE que quedaban obsoletas. Las variables exportadas por hooks SessionStart a través de CLAUDE_ENV_FILE quedaban obsoletas después de /resume o /clear. Corregido en v2.1.136. Las sesiones ahora vuelven a cargar el archivo de entorno en estos eventos.

Para los harnesses de gobernanza, los elementos operativamente interesantes son autoMode.hard_deny (nueva palanca) y la corrección de desaparición de MCP (fallo silencioso que interrumpía sesiones largas). Todo lo demás es una limpieza de calidad de vida.

Argumentos estructurados de hooks y continuación tras bloqueos (11 de mayo de 2026)

Claude Code v2.1.139 añadió dos detalles de hooks importantes para 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. Genera el comando directamente sin un shell, lo que elimina toda una clase de errores de comillas e inyección.

Usa continueOnBlock cuando un hook PostToolUse deba devolver su motivo de rechazo a Claude y continuar el turno en lugar de finalizar el flujo. Trátalo como una función de experiencia del operador, no como una evasión de seguridad. Una puerta de bloqueo debe seguir bloqueando el resultado inseguro.

La misma versión pasa 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 rutas relativas al proyecto a partir de ese valor, en vez de hacerlo desde cualquier 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 de protocolo: roots/list de MCP ahora incluye los directorios de trabajo adicionales de la sesión, con notificaciones roots/list_changed cuando cambian; así, un servidor que respeta las raíces de MCP sigue la forma real del espacio de trabajo con múltiples directorios en lugar de asumir un único directorio de proyecto.68

Claude Code v2.1.140 es principalmente una versión de confiabilidad para operadores de harnesses: corrige que los hooks ConfigChange no se activaran ante cambios de configuración, cierra casos límite en los que disableAllHooks y allowManagedHooksOnly no se componían correctamente entre niveles de configuración, e impide que los diálogos de permisos expongan variables de entorno no intencionadas devueltas por resultados de hooks.49 Esto hace más fiables los patrones de gobernanza existentes en esta sección; no requiere una nueva arquitectura de hooks.

Claude Code v2.1.141 añade un campo terminalSequence en la salida de hooks para notificaciones de escritorio, títulos de ventana y campanas sin una terminal de control.50 Trátalo como señalización para el operador, no como aplicación de reglas. Las puertas de seguridad y calidad deben seguir comunicando fallos mediante el contrato normal de bloqueo: salida estructurada del hook más el comportamiento de salida que impide la acción insegura. La misma versión añade claude agents --cwd <path> para delimitar Agent View a un directorio, CLAUDE_CODE_PLUGIN_PREFER_HTTPS para instalaciones de plugins en entornos sin claves de GitHub SSH, y ANTHROPIC_WORKSPACE_ID para reglas de federación de identidad de carga de trabajo que abarcan más de un espacio de trabajo.50 Son detalles de arquitectura para harnesses de equipo: vistas operativas más acotadas, menos supuestos sobre la instalación de plugins y delimitación explícita de tokens empresariales.

Claude Code v2.1.142 es más importante para la orquestación de sesiones en segundo plano que para la semántica de hooks.51 claude agents ahora puede despachar sesiones en segundo plano con indicadores explícitos de directorio, configuración, MCP, plugin, permiso, modelo y esfuerzo, en lugar de depender del estado de un wrapper. El modo rápido usaba Opus 4.7 de forma predeterminada en esa versión, con CLAUDE_CODE_OPUS_4_6_FAST_MODE_OVERRIDE=1 como fijación para un harness con dependencia medida del comportamiento de Opus 4.6; a partir de v2.1.219, Opus 4.7 ya no está en modo rápido y /fast se aplica a Opus 5 y Opus 4.8.84 El descubrimiento de SKILL.md de plugins en el nivel raíz y la visibilidad de LSP proporcionada por plugins reducen la ambigüedad de empaquetado. Las correcciones para MCP_TOOL_TIMEOUT, worktrees preexistentes de sesiones en segundo plano, suspensión/reactivación de daemons y limpieza posterior a actualizaciones, así como limpieza de caché de plugins, cierran brechas de confiabilidad que de otro modo parecen errores de orquestación.

Dirección mediante hooks Stop, autoridad entre sesiones y multi-agent v2 (junio de 2026)

Cuatro cambios de principios de junio importan para el diseño de harnesses y multi-agent.59

Los hooks Stop/SubagentStop obtuvieron un canal de dirección. A partir de Claude Code v2.1.163, un hook Stop o SubagentStop puede devolver hookSpecificOutput.additionalContext para dar retroalimentación a Claude y mantener el turno en curso, sin que la respuesta se etiquete como error del hook. Antes de esto, la única palanca real de un hook Stop era el bloque exit-2, que se interpreta como un error y cuenta para el límite de bloqueos consecutivos. Para un harness con puertas de calidad, esta es la primitiva más limpia: un hook Stop que detecta “dijiste que terminaste, pero las pruebas fallan” ahora puede inyectar “esto es lo que aún falla, continúa” en lugar de bloquear de forma rígida. Usa el bloqueo para condiciones de detención genuinas y additionalContext para “aún no has terminado; esta es la razón”.

La mensajería entre sesiones ya no transporta autoridad prestada. v2.1.166 reforzó el caso de múltiples sesiones: los mensajes retransmitidos mediante SendMessage desde otra sesión de Claude ya no llevan la autoridad del usuario de origen, por lo que una sesión receptora rechaza las solicitudes de permisos retransmitidas y el modo automático las bloquea. Si tu orquestación hace que los agentes se envíen mensajes entre sí, trata un mensaje entrante como datos no confiables, no como una instrucción autenticada. Es el mismo principio que aplica la sección de seguridad a la salida de herramientas, extendido a la mensajería entre agentes. A partir de v2.1.199, Claude Code también detecta y advierte cuando un SendMessage se enruta incorrectamente porque dos agentes comparten el mismo nombre; es un complemento de confiabilidad para este límite de autoridad, ya que un mensaje que llega al agente equivocado con el mismo nombre constituye su propia clase de error de orquestación. Las sesiones ahora son pares de primera clase (v2.1.224+). La mensajería entre sesiones evolucionó de reforzar los relés a una superficie completa: SendMessage/ListAgents permiten que tus sesiones se descubran y envíen mensajes entre sí desde tus máquinas (macOS/Linux), con controles crossSessionInbound de aceptar/mantener/rechazar del lado receptor; además, los runners autohospedados permiten que las sesiones web y móviles de Claude Code se ejecuten en hardware que controlas. Para la arquitectura del harness, esto convierte «una sesión» en un nodo direccionable: el descubrimiento, la política de entrada y el límite de autoridad anterior ahora son primitivas de la plataforma, no scripts de buzón de correo (la guía de Claude Code documenta el contrato completo).87 Junto a ello llega un cambio de postura: el modo automático pasa a ser el modo de permisos predeterminado en los planes Pro, Max y Team el 14 de agosto de 2026; un harness que cuenta con las solicitudes del modo Manual como respaldo humano en el circuito debe fijar defaultMode explícitamente en lugar de asumirlo.87

La resiliencia del modelo se convirtió en una configuración de primera clase. 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 un turno se vuelve a intentar automáticamente una vez con el respaldo ante errores inesperados no reintentables de API. Para un harness autónomo de larga duración, esto transforma una interrupción transitoria del modelo principal en una degradación gradual, en lugar de una ejecución perdida. claude agents --json también añadió un campo waitingFor (v2.1.162) que muestra qué espera una sesión en segundo plano bloqueada, como una solicitud de permiso: una mejora de observabilidad para cualquier coordinador que sondee una flota de agentes.

Modo seguro para gobernanza de sala limpia y diagnóstico. Claude Code v2.1.169 añade una 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 el inverso del harness: una sala limpia deliberada. Ú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 incorrectamente, una skill se activa cuando no debería o un servidor MCP contamina el contexto, --safe-mode te da una línea base conocida y vacía con la que comparar. También es una primitiva de gobernanza: una forma de ejecutar el modelo sin ninguna de las autorizaciones persistentes que normalmente concede tu harness, algo importante cuando necesitas reproducir un resultado sin que influya ningún andamiaje definido por el operador.

Una nota sobre los niveles de modelos. A partir de Claude Code v2.1.197 (30 de junio de 2026), Claude Sonnet 5 es el modelo predeterminado distribuido para sesiones nuevas —contexto nativo de 1M, precio promocional de $2/$10 por MTok hasta el 31 de agosto—, reemplazando a Opus 4.8 como la opción predeterminada. Esta guía considera Opus 5 (claude-opus-5) como el valor predeterminado recomendado para agentes: el modelo en el que ejecutar harnesses autónomos salvo que elijas deliberadamente otra opción, porque los ciclos de agentes de largo horizonte y alto riesgo 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 el Opus 4.8 al que reemplaza), modo rápido a $10/$50 para aproximadamente 2,5× la velocidad predeterminada; además, Anthropic informa que más que duplica a Opus 4.8 en Frontier-Bench v0.1 y queda a menos de 0,5 % de la puntuación de Fable 5 en CursorBench 3.2 por la mitad del costo.8491 El mismo precio, más capacidad y un modelo que Anthropic caracteriza como «mucho más fuerte al verificar su trabajo e iterar con cuidado» constituyen la rara actualización que no necesita un argumento de costo para el trabajo con harnesses; la migración desde 4.8 es un cambio de id. Baja a Sonnet 5 para trabajo sensible al costo o de alto rendimiento, donde su relación velocidad-inteligencia gana. Por encima de Opus está Claude Fable 5 (claude-fable-5), lanzado el 9 de junio de 2026: un nuevo nivel descrito como el modelo más potente de Anthropic, un sistema de «clase Mythos» seguro para uso general, seleccionable en Claude Code v2.1.170 mediante /model claude-fable-5.60 Recurre deliberadamente al nivel superior en las decisiones donde la profundidad de razonamiento en bruto justifique el costo, no como una configuración general para una flota. El cambio a Opus 5 tiene dos consecuencias de mantenimiento: Opus 4.7 queda fuera del modo rápido (/fast ahora se aplica a Opus 5 y Opus 4.8), y el respaldo Fable-5 del clasificador de modo automático —«el mejor modelo Opus disponible» desde v2.1.176— ahora se resuelve en Opus 5.84

Codex lanzó multiagente v2. Codex CLI v0.137.0 conserva la elección de runtime en cada hilo, ofrece valores predeterminados más limpios para los seguimientos y los metadatos de los agentes generados (hide_spawn_agent_metadata ahora tiene el valor predeterminado true) y propaga eventos sin procesar del padre a los listeners secundarios. Su modelo de subagents sigue siendo explícito: tipos de agentes integrados default/worker/explorer, agentes personalizados definidos en TOML y controles de concurrencia (agents.max_threads con valor predeterminado de 6, agents.max_depth con valor predeterminado de 1). La misma versión añade una extensión de skills v1 con resolución del catálogo de skills por turno y nuevos eventos contribuidores del ciclo de vida al inicio de hilo/error de turno, reduciendo la brecha con la superficie de hooks/skills de Claude Code mientras conserva la postura de sandbox del kernel como límite predeterminado. Codex v0.138.0–v0.139.0 luego reforzó multiagente v2 para producción: las cargas útiles de mensajes entre agentes ahora están cifradas, un catálogo de configuración de agentes v2 más un LRU de residencia de agentes gestionan qué agentes permanecen residentes, y la concurrencia se cuenta por ejecución activa en lugar de por hilos generados, de modo que los agentes inactivos ya no consumen 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 a un agente en ejecución en vez de simplemente cerrar un identificador, y las advertencias de inicio de MCP generadas por un subagente ahora permanecen limitadas al hilo propietario en lugar de duplicarse en la transcripción del padre.61 Para quien construya orquestación del lado de Codex, estas son las diferencias entre una demostración y una flota: transporte de mensajes cifrado, residencia acotada, concurrencia contada por ejecución y advertencias que no se filtran a través del límite entre hilos. Codex v0.140.0 abrió luego una unión entre herramientas: /import incorpora de forma selectiva la configuración inicial, la configuración del proyecto y chats recientes desde Claude Code a Codex, y las sesiones pasaron a poder eliminarse permanentemente (codex delete / /delete, con salvaguardas de confirmación).64 /import es el primer reconocimiento oficial de que los operadores se mueven entre harnesses: la configuración que construyes 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 a contenido nuevo. La compresión implica pérdidas. Las decisiones arquitectónicas documentadas en el turno 3 quizá 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 de contexto Se descarta información anterior para incluir contenido nuevo Puntos de control de 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 (bucle Ralph)
Falla de coordinación Varios agentes mantienen distintas instantáneas de 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 captura 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 te encuentras con un caso límite similar de enteros en Python, la entrada de MEMORY.md hace visible el 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 prompt del sistema al iniciar la sesión. Mantenlo conciso y enlaza archivos de temas separados para notas detalladas.6 Desde 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 aparece al momento de escribir, en vez de manifestarse como entradas de memoria que desaparecieron sin aviso. Si tu harness automatiza escrituras de memoria, maneja ese error; la plataforma te está indicando que el archivo necesita curación, no un reintento.

Curación de memoria por encima del volumen de memoria (mayo de 2026): Un preprint reciente de arXiv sobre cooperación entre agentes LLM plantea el recuerdo ampliado como un posible modo de falla: en los experimentos de los autores, un historial visible más extenso degradó la cooperación en 18 de 28 configuraciones de juegos de modelos.48 Tómalo como una advertencia de diseño, no como una ley definitiva. La regla de producción ya es suficientemente clara: mantén MEMORY.md breve, enlaza los detalles y coloca resúmenes listos para tomar decisiones en los handoffs. Los volcados de transcripciones sin procesar, los registros de herramientas y las fuentes extensas de recuperación deben ir en almacenamiento consultable, no automáticamente en el prompt activo.

Estrategia 2: Compactación proactiva

El comando /compact de Claude Code resume la conversación y libera espacio de contexto mientras preserva decisiones clave, contenido de archivos y estado de la tarea.15

Cuándo compactar: - Después de completar una subtarea diferenciada (función implementada, error corregido) - Antes de comenzar una nueva área de la base de código - Cuando Claude comienza a repetir u 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é de prompts. Mueve una sesión a un nuevo directorio de trabajo a mitad de la sesión sin romper la caché acumulada durante el turno.60 Antes de esto, cambiar de directorio implicaba una sesión nueva y una caché fría. Para una sesión de larga duración que pasa de un repositorio a uno hermano —algo común en trabajos con monorepositorios y múltiples servicios—, /cd mantiene intacto el costoso prefijo almacenado en caché mientras redirige el contexto del sistema de archivos.

Estrategia 3: Handoffs de sesión

Para tareas que abarcan varias sesiones, crea documentos de handoff que capturen 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 Estado/Archivos/Decisión/Bloqueado/Siguiente proporciona a la sesión sucesora todo el contexto con un costo mínimo de tokens. Iniciar una nueva sesión con claude -c (continuar) o leer el documento de handoff permite pasar directamente a la implementación.15

Estrategia 4: Iteración con contexto nuevo (el bucle Ralph)

Para sesiones que superen los 60-90 minutos, inicia una instancia nueva de Claude por iteración. El estado persiste mediante el sistema de archivos, no a través de la memoria conversacional. Cada iteración obtiene el presupuesto completo de contexto:16

Iteration 1: [fresh context] -> writes code, creates files, updates state
Iteration 2: [fresh context] -> reads state from disk, continues
Iteration 3: [fresh context] -> reads updated state, continues
...
Iteration N: [fresh context] -> reads final state, verifies criteria

Compáralo con una única sesión larga:

Minute 0:   [fresh context]        -> productive
Minute 30:  [context filling]      -> somewhat productive
Minute 60:  [mostly consumed]      -> degraded
Minute 90:  [compaction pending]   -> significantly degraded
Minute 120: [compressed, lossy]    -> errors accumulate

El enfoque de contexto nuevo por iteración intercambia una sobrecarga del 15-20 % para el paso de orientación (leer archivos de estado, revisar el historial de git) por recursos cognitivos completos en cada iteración.16 El cálculo de costo-beneficio: para sesiones de menos de 60 minutos, una sola conversación es más eficiente. Más allá de los 90 minutos, el contexto nuevo produce resultados de mayor calidad pese a la sobrecarga.

Estrategia 5: Curación administrada de memoria (Dreaming)

Los Managed Agents de Anthropic y Claude añadieron Dreaming como Research Preview el 6 de mayo de 2026.35 Según Anthropic: “Dreaming es un proceso programado que revisa las sesiones de tus agentes y los almacenes de memoria, extrae patrones y selecciona memorias para que tus agentes mejoren con el tiempo.”35

Dreaming se ejecuta en segundo plano entre sesiones, no en la ruta crítica. Complementa, en lugar de reemplazar, el patrón de sistema de archivos como memoria: tu archivo MEMORY.md sigue siendo la superficie fundamental; Dreaming escribe entradas de memoria curadas en el almacén de memoria de Managed Agents, que el agente lee al inicio de la sesión. Ambos patrones coexisten para harnesses que combinan estado autohospedado en el sistema de archivos con curación del lado administrado.

Memoria del sistema de archivos Dreaming (Managed)
Dónde reside la memoria Tu repositorio, con control de versiones Almacén de memoria administrado por Anthropic
Cuándo se actualiza Escribes entradas manualmente o mediante hooks Proceso en segundo plano entre sesiones
Qué captura Decisiones, errores y patrones que señalas Patrones extraídos del historial de sesiones
Ideal para Conocimiento institucional específico del proyecto Descubrimiento de patrones entre sesiones que no detectarías manualmente

Dreaming está en Research Preview, por lo que su comportamiento puede cambiar. Los patrones de handoffs de sesión y CLAUDE.md documentados anteriormente siguen siendo el mecanismo de memoria autorizado para harnesses autohospedados.

Antipatrones

Leer archivos completos cuando necesitas 10 líneas. Una sola lectura de un 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 extensos en el contexto. Después de depurar un error, tu contexto contiene más de 40 rastros de pila de iteraciones fallidas. Un solo /compact después de corregir el error libera ese peso muerto.

Iniciar cada sesión leyendo todos los archivos. Deja que las herramientas glob y grep de Claude Code encuentren los archivos relevantes cuando los necesites, lo que ahorra más de 100.000 tokens de precarga innecesaria.15


Patrones de subagents

Los subagents son instancias especializadas de Claude que gestionan tareas complejas de forma independiente. La mayoría comienza con un contexto limpio (sin contaminación de la conversación principal); la excepción es el tipo fork que se describe a continuación, que hereda todo deliberadamente. Operan con las herramientas especificadas y devuelven los resultados en forma de resúmenes. Los resultados de la exploración no saturan la conversación principal; solo regresan las conclusiones.5

Tipos de subagents integrados

Tipo Modelo Modo Herramientas Úsalo para
Explore Hereda el modelo de la sesión, con Opus como límite (v2.1.198; antes de eso, siempre Haiku) Solo lectura Glob, Grep, Read, bash seguro Explorar la base de código, encontrar archivos
General-purpose Hereda Lectura y escritura completas Todas las disponibles Investigación compleja + modificaciones
Plan Hereda (u Opus) Solo lectura Read, Glob, Grep, Bash Planificar antes de ejecutar
Fork Siempre usa el modelo del padre Lectura y escritura completas Las mismas que la sesión principal Trabajo que necesita toda la conversación: hereda el historial completo, el system prompt, las herramientas y el prompt cache, mientras que sus propias llamadas a herramientas quedan fuera de tu contexto. Está activado de forma predeterminada en sesiones interactivas desde v2.1.232; desactivado en -p y SDK88

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 Identificador único (minúsculas + guiones)
description 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 generar
disallowedTools No Herramientas que se denegarán y se quitarán de la lista heredada o especificada. Desde 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 de MCP no hacía nada sin avisar.63
model No sonnet, opus, haiku, inherit (valor predeterminado: inherit)
permissionMode No default (etiquetado como “Manual” en CLI/los IDE desde v2.1.200; manual es un alias aceptado para el valor de configuración, que no cambió), acceptEdits, delegate, dontAsk, bypassPermissions, plan. Desde 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 del frontmatter permite sobrescribirlo para cada agente69
maxTurns No Número máximo de turnos agénticos antes de que se detenga el subagent
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 v2.1.133, los subagents también descubren skills del proyecto, del usuario y de plugins mediante la herramienta Skill, de la misma manera que la sesión principal. Las versiones anteriores las descartaban 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 v2.1.198, los subagents se ejecutan en segundo plano de forma predeterminada —la sesión principal continúa trabajando y recibe una notificación al terminar—, así que ahora este campo fija el comportamiento explícitamente en lugar de habilitarlo
isolation No Establécelo en worktree para obtener una copia aislada del git worktree

Aislamiento mediante worktree

Los subagents pueden operar en git worktrees temporales, 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 romper 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: precisamente el fallo que este mecanismo existe para evitar.69 Si dependes de isolation: worktree como límite de seguridad y no como simple comodidad, considera v2.1.210 como la versión mínima. El cambio complementario de permisos actúa en sentido contrario: desde v2.1.211, las reglas de “permitir siempre” persisten en la raíz del repositorio entre distintos worktrees, por lo que una regla aceptada dentro de un worktree se aplica a los worktrees hermanos del mismo repositorio.69 Esa es la ergonomía adecuada para agentes que trabajan en paralelo mediante worktrees, pero significa que un permiso concedido durante un experimento desechable sobrevive al experimento; concédelo teniendo en cuenta todo el repositorio, no solo el worktree que tienes delante.

v2.1.216 terminó el trabajo y llevó el aislamiento mediante worktree de una 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 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. Todas esas vías de escape ahora están cerradas. La misma versión corrigió que las sesiones de worktree terminaran ocasionalmente en el 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 duros. El patrón de las cuatro correcciones es el mismo: un límite de aislamiento debe resistir las redirecciones deliberadas —sobrescrituras del 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 relevante y devuelve un resumen. El contexto principal se mantiene limpio.

El Recursion Guard

Sin límites de generación, los agentes delegan en otros agentes que, a su vez, delegan en más 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 crítica: usa presupuestos de generación, no solo límites de profundidad. Los límites basados en profundidad rastrean las cadenas padre-hijo (bloqueadas al alcanzar una profundidad de 3), pero no detectan la amplitud: 23 agentes con profundidad 1 siguen teniendo una “profundidad de 1”. Un presupuesto de generación registra el total de hijos activos por padre y lo limita a un máximo configurable. El modelo de presupuesto 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 la profundidad de anidamiento ha cambiado 3 veces; no construyas sobre él. Claude Code v2.1.172 (10 de junio de 2026) permitió que los sub-agents generaran sus propios sub-agents, con hasta 5 niveles de profundidad, cuando antes la delegación estaba limitada, 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 límite a 1 y desactivó de forma predeterminada la generación anidada. Después, v2.1.219 (24 de julio de 2026) se quedó en 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 Primero 5, luego 1 y después 3; los 2 últimos cambios ocurrieron en un plazo de 3 días.

La interpretación útil no es que alguno de esos números sea el correcto, sino que la plataforma aún busca el valor predeterminado adecuado, lo que convierte “lo que venga de fábrica” en una mala opción para que un harness la herede. Trata la profundidad de anidamiento como una partida presupuestaria explícita: establece CLAUDE_CODE_MAX_SUBAGENT_SPAWN_DEPTH en la profundidad que tu arquitectura realmente necesite —para la mayoría de las orquestaciones será 1 o 2—, de modo que una actualización no pueda cambiar silenciosamente hasta qué nivel delega tu flota. El argumento de fondo no cambia pese a toda 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 debe presupuestarse, no una capacidad que debas perseguir. El recursion guard anterior evita que un árbol profundo se ramifique hasta producir cientos de agentes activos, sin importar hacia dónde cambie después el valor predeterminado; además, un límite establecido por ti es el único número de profundidad que seguirá significando lo que crees después de la próxima versión.

El modo automático ahora evalúa las generaciones 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 generación de subagents antes de iniciar el subagent, no solo cuando comienza a realizar acciones.63 Antes, se podía generar un subagent para solicitar una acción que la sesión principal no tenía permitido realizar; la propia generación servía como vía de elusión. La evaluación al generar significa que el recursion guard y el modelo de permisos por fin convergen: no se puede usar un hijo como paso de blanqueo para una acción prohibida por la política.

La plataforma ahora incluye un presupuesto de generación nativo. Claude Code v2.1.212 (julio de 2026) añadió mecanismos propios de protección contra bucles descontrolados: de forma predeterminada, las sesiones tienen un límite de 200 generaciones 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 generación que esta sección documenta como scripting de usuario desde v1.0 ahora forma parte de la plataforma, lo que valida el modelo de presupuesto por encima del modelo de profundidad. Sin embargo, observa la calibración: 200 generaciones es un orden de magnitud superior al presupuesto de 12 agentes de la configuración anterior. Los límites nativos son fusibles contra un bucle realmente descontrolado, no presupuestos ajustados a tu arquitectura. Conserva el mecanismo de protección de usuario para los presupuestos por padre, el seguimiento de profundidad y los límites que correspondan a lo que tu orquestación debería hacer; deja que el límite de la plataforma detenga lo que consiga escapar.

El conjunto propio de mecanismos de protección ahora abarca 4 ejes. Tres de ellos respaldan exactamente lo que rastrea el mecanismo de protección de usuario de esta sección: generaciones 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 cuya inestabilidad está demostrada) y ejecución simultánea (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 solo workflow planificado. Se distribuye con la pauta predeterminada de “intentar usar menos de 15 agentes” y puede configurarse desde cualquier archivo de configuración mediante workflowSizeGuideline (se aborda en la sección sobre la herramienta Workflow que aparece más adelante). El patrón de presupuesto de generación ahora cuenta con respaldo en cada eje para el que fue diseñado, además de uno para el que no lo fue.

La observación sobre la calibración sigue siendo válida, aunque de manera desigual. Las 200 generaciones y los 20 agentes simultáneos son fusibles: superan por un orden de magnitud el presupuesto de deliberación de 12 agentes de la configuración anterior y están dimensionados para detener un bucle descontrolado, no para dar forma a una arquitectura. La pauta de amplitud es el primer número nativo que se encuentra en el mismo rango que un presupuesto real: 15 agentes por workflow está justo al lado de los 12 de esta guía; es lo bastante cercano como para que adoptar el valor predeterminado de la plataforma no te cueste nada y para que discrepar de él exija una razón concreta. Configura los 3 fusibles con valores que puedas defender; ajusta la pauta de amplitud a la forma de la orquestación que pretendías construir.

Agent Teams (versión preliminar de investigación)

Agent Teams coordina varias instancias de Claude Code que trabajan de manera 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, genera 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 archivo)
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 en lugar de subagents:

Subagents Agent Teams
Comunicación Solo devuelven 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 en las que 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 Goal Loops (mayo de 2026)

Claude Code v2.1.139 añadió Agent View, una interfaz 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 distribuir y gestionar muchas sesiones, ver qué está haciendo cada una e identificar cuáles necesitan intervención del operador.43 Esto proporciona al trabajo con múltiples agentes una vista operativa que los resúmenes finales no pueden ofrecer.

Usa Agent View cuando lleves un patrón de subagents o de equipo a producción: revisa qué sesiones están bloqueadas, cuáles siguen ejecutándose y si la distribución del trabajo coincide con la arquitectura prevista. No lo consideres una prueba de calidad. Es 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 que se cumpla, incluso en el uso interactivo, con -p y mediante Remote Control.42 Trata /goal como un completion loop limitado a la sesión, no como sustituto de gates deterministas. Resulta útil para mantener a un agente concentrado en un objetivo, pero las pruebas, las verificaciones de citas, las comprobaciones de despliegue y los hooks de seguridad deben seguir respaldados por comandos o scripts cuando un fallo deba bloquear el proceso.

Herramienta Workflow (v2.1.147+)

Los workflows dinámicos de Claude Code son una función disponible y activada de forma predeterminada: desde v2.1.154, orquestan decenas o cientos de agentes en segundo plano, se supervisan mediante /workflows y cuentan con un control “Dynamic workflow size” en /config (v2.1.202), además de una clave de configuración workflowSizeGuideline cuya pauta predeterminada es mediana: intenta usar menos de 15 agentes salvo que se indique lo contrario (v2.1.219). La función debutó una versión antes como la herramienta Workflow desactivada de forma predeterminada en v2.1.147 y protegida por CLAUDE_CODE_WORKFLOWS=1; la época de esa flag ya quedó atrás, pero la idea arquitectónica que planteó sigue vigente.52 Proporciona a Claude Code una primitiva de orquestación propia para flujos que antes requerían scripts de distribución personalizados, estado en un mailbox y convenciones de coordinación entre subagents.

No elimines el harness que la rodea. Un Workflow puede estructurar la ejecución, pero no sustituye tu modelo de seguridad. Conserva los hooks PreToolUse y PostToolUse como capa de bloqueo, mantén presupuestos de generación o 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.

Los workflows dinámicos ahora incluyen una postura sobre la amplitud (v2.1.219). De forma predeterminada, los workflows dinámicos usan una pauta de tamaño mediano —“intenta usar menos de 15 agentes”—, con otros tamaños y una opción sin restricciones disponibles en Dynamic workflow size dentro de /config; la pauta actual también 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 —incluidas las configuraciones administradas y las del proyecto, y desde v0.3.219 forma parte de los tipos de configuración de TypeScript SDK—, por lo que la amplitud de la orquestación se convierte en algo que un equipo o una organización puede estandarizar, en lugar de algo que cada operador debe redescubrir.85 Configúrala a nivel del proyecto para representar 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 una configuración ausente si no sabes el motivo; además, como la pauta orienta al planificador en lugar de controlar la ejecución, pertenece a la columna de forma, no a la de seguridad. El límite de generación sigue siendo el responsable de contener una amplitud descontrolada.

Conviene conservar la idea de que este es un cuarto eje propio de protección —la amplitud de la orquestación, junto con el número de generaciones, la profundidad de anidamiento y la ejecución simultánea— y el primero que Anthropic ha calibrado con un tamaño de trabajo plausible, en lugar de tratarlo como un fusible contra desbordamientos. Quince agentes por workflow pertenece al 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 ofrecer estas cifras.

Bifurcación de sesiones y MCP automático en segundo plano (julio de 2026)

Claude Code v2.1.212 reformuló 2 primitivas de orquestación.69 /fork ahora crea una nueva sesión en segundo plano a partir del estado actual de la conversación: la línea bifurcada se ejecuta de forma independiente mientras la original sigue trabajando, y el comportamiento anterior dentro de la sesión pasó a llamarse /subtask. La diferencia es importante para diseñar 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 una generación de un Ralph-loop que a un subagent. Si tus scripts del harness suponían que /fork permanecía dentro de la sesión, ahora distribuirán trabajo en segundo plano.

La misma versión envía automáticamente a segundo plano las llamadas lentas de MCP: una llamada a una herramienta de MCP que tarde más de 2 minutos pasa automáticamente a ejecutarse en segundo plano (ajusta el umbral con CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS).69 Un servidor lento de MCP ya no bloquea el agentic loop, pero esto también significa que “la herramienta devolvió un resultado” y “el turno continuó” ya no son el mismo evento, por lo que los hooks o scripts que suponían 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 headless, v2.1.211 añadió --forward-subagent-text (variable de entorno: CLAUDE_CODE_FORWARD_SUBAGENT_TEXT), que reenvía el texto del asistente de los subagents a la salida stream-json.69 Ahora, un proceso coordinador que consuma el flujo del padre puede observar directamente el progreso de los subagents, en lugar de sondear transcripciones o esperar el resumen final: es el complemento de observabilidad para los subagents que se ejecutan en segundo plano de forma predeterminada. v2.1.219 lo extendió más allá del primer nivel: los subagents generados con una profundidad de 2 o superior ahora también aparecen en el flujo reenviado, identificados mediante el id de tool_use del Agent que los generó.84 Esa clave es la parte sobre la que debes construir. Con el anidamiento nuevamente activado de forma predeterminada, un flujo plano de texto de subagents resulta ambiguo: el id indica al coordinador qué padre produjo cada hijo, por lo que el árbol de delegación puede reconstruirse a partir del flujo en lugar de inferirse. Si tu consumidor del flujo fue escrito para un solo nivel de subagents, ahora verá texto de agentes cuya existencia desconocía; agrupa por el id de tool_use que inició la generación, en lugar de suponer que cada línea reenviada pertenece a un hijo directo.


Orquestación Multi-Agent

Los sistemas de IA de un solo agente tienen un punto ciego estructural: no pueden cuestionar sus propias suposiciones.7 La deliberación multiagente obliga a una evaluación independiente desde múltiples perspectivas antes de consolidar cualquier decisión.

Orquestación entre herramientas (abril de 2026): Google liberó como código abierto Scion el 7 de abril: un hipervisor multiagente que ejecuta Claude Code, Gemini CLI y otros “agentes profundos” como procesos simultáneos, cada uno con su contenedor, git worktree y credenciales aislados. Se ejecuta de forma local, en un hub o en Kubernetes. Su filosofía explícita es: “aislamiento por encima de restricciones”; los agentes operan con gran autonomía dentro de límites aplicados en la capa de infraestructura, no en el prompt.25 Esto extiende directamente el argumento de aislamiento de subagents entre 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 subagents entre herramientas con aislamiento de worktree + credenciales por agente.

El debate no es una solución milagrosa: El grupo de investigación M3MAD-Bench (inicios de 2026) descubrió que el debate multiagente se estanca y puede ser manipulado mediante consensos engañosos: los argumentos válidos pierden cuando otros agentes afirman con seguridad una respuesta incorrecta.26 Tool-MAD mejora esto al proporcionar a cada agente acceso heterogéneo a herramientas y usar puntuaciones de Fidelidad/Relevancia en la etapa de evaluación. Si estás creando una orquestación basada en debate, invierte en (a) heterogeneidad de herramientas por agente y (b) puntuación cuantitativa del evaluador, en lugar de asumir que más agentes = mejores respuestas.

Orquestación Multiagente Gestionada y Outcomes (beta pública)

Si no quieres crear 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 partes y delegue cada una a un especialista con su propio modelo, prompt y herramientas.”35 Los especialistas “trabajan en paralelo en un sistema de archivos compartido y contribuyen al contexto general del agente líder.”35

El trazado 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 es el éxito y el agente trabaja para lograrlo. Un evaluador independiente examina el resultado según tus criterios en su propia ventana de contexto, por lo que no recibe influencia del razonamiento del agente.”35 Esta es la versión de servicio gestionado del patrón de validación de dos puertas documentado más adelante en esta sección: la rúbrica sustituye la puerta escrita a mano y el evaluador independiente sustituye al validador de consenso.

Deliberación autohospedada (esta sección) Multiagente gestionado + Outcomes
Enrutamiento a especialistas Escribes la lógica de creación El agente líder divide el trabajo en partes
Validación Hooks de dos puertas + puntuación de consenso Rúbrica + evaluador en contexto independiente
Trazado Lo instrumentas Claude Console
Ideal para Patrones que necesitan control total o una composición de herramientas específica Patrones de delegación estándar donde la rúbrica de validación es el contrato
Precio Solo costo de tokens + harness Tokens estándar más la tarifa por hora de sesión de Managed Agents (base del lanzamiento del 8 de abril; consulta 23)

La deliberación autohospedada sigue siendo la respuesta adecuada cuando la validación debe integrarse con tu propia superficie de hooks (bloqueo PreToolUse, semántica de código de salida, dispatchers personalizados) o cuando el harness debe ejecutarse sin dependencias externas. Multiagent gestionado es la respuesta adecuada 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

Comienza con 2 agentes y 1 regla: los agentes deben evaluar de forma independiente antes de ver el trabajo de los demás.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 añade mejoras incrementales.

El desencadenante de confianza

No todas las tareas necesitan deliberación. Un módulo de puntuación de confianza evalúa cuatro dimensiones:17

  1. Ambigüedad - ¿La consulta tiene múltiples interpretaciones válidas?
  2. Complejidad del dominio - ¿Requiere conocimientos especializados?
  3. Riesgo - ¿La decisión es reversible?
  4. Dependencia del contexto - ¿Requiere comprender el sistema más amplio?

La puntuación se asigna a tres niveles:

Nivel Umbral Acción
HIGH 0,85+ Proceder sin deliberación
MEDIUM 0,70-0,84 Proceder registrando una nota de confianza
LOW Por debajo de 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 en documentación solo necesitan 0,50. Esto evita sobrediseñar tareas simples y, al mismo tiempo, garantiza que las decisiones riesgosas reciban escrutinio.7

La máquina de estados

Siete fases, cada una condicionada por la anterior:7

IDLE -> RESEARCH -> DELIBERATION -> RANKING -> PRD_GENERATION -> COMPLETE
                                                                    |
                                                              (or FAILED)

RESEARCH: Agentes independientes investigan el tema. Cada agente recibe una persona diferente (arquitecto técnico, analista de seguridad, ingeniero de rendimiento y otras). 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 investigación y generan alternativas. El agente Debate identifica conflictos. El agente Synthesis combina los hallazgos que no se contradicen.

RANKING: Cada agente puntúa cada enfoque propuesto en 5 dimensiones ponderadas:

Dimensión Peso
Impacto 0,25
Calidad 0,25
Viabilidad 0,20
Reutilización 0,15
Riesgo 0,15

La arquitectura de validación de dos puertas

Dos puertas de validación detectan 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 termina: 1. La fase debe haber alcanzado al menos RANKING 2. Deben haber terminado al menos 2 agentes (configurable) 3. La puntuación de consenso cumple el umbral adaptativo de la tarea 4. Si algún agente disintió, las inquietudes deben estar documentadas

Puerta 2: Pride Check (hook Stop). Se ejecuta antes de que la sesión pueda cerrarse: 1. Métodos diversos: se representan múltiples personas únicas 2. Transparencia de contradicciones: los disensos tienen motivos documentados 3. Gestión de complejidad: se generaron al menos 2 alternativas 4. Confianza del consenso: clasificada como sólida (por encima de 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 corresponden a cómo ocurren realmente los fallos: algunos son inmediatos (puntuación deficiente) y otros son graduales (baja diversidad, falta de documentación de disensos).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 personas disidentes toman mejores decisiones que los grupos que alcanzan acuerdos rápidos. La persona disidente no necesita tener razón. El acto de discrepar obliga a la mayoría a examinar suposiciones que, de otro modo, omitiría.18

Wu et al. probaron si los agentes LLM pueden debatir de verdad y descubrieron que, sin incentivos estructurales para discrepar, los agentes convergen hacia la respuesta inicial que parece más segura, 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 postura, la autorreflexión no puede generar contraargumentos novedosos, lo que hace estructuralmente necesaria la evaluación multiagente.20

La independencia es la restricción de diseño crítica. Dos agentes que evaluaron la misma estrategia de despliegue con visibilidad de los hallazgos del otro produjeron puntuaciones de 0,45 y 0,48. Los mismos agentes sin visibilidad: 0,45 y 0,72. La diferencia entre 0,48 y 0,72 es el costo del comportamiento gregario.7

Detección de acuerdos falsos

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

Agrupamiento de puntuaciones: Que todos los agentes puntúen dentro de 0,3 puntos en una escala de 10 puntos indica contaminación de contexto compartido, en lugar de una evaluación independiente. Cuando cinco agentes que evaluaban una refactorización de autenticación calificaron el riesgo de seguridad entre 7,1 y 7,4, volver a ejecutar con aislamiento de contexto nuevo dispersó las puntuaciones entre 5,8 y 8,9.

Disenso estereotipado: Los agentes copian el lenguaje de inquietudes de los demás en lugar de generar objeciones independientes.

Ausencia de perspectivas minoritarias: Aprobación unánime de personas con prioridades en conflicto (un analista de seguridad y un ingeniero de rendimiento rara vez coinciden en todo).

El detector de conformidad detecta los casos evidentes (aproximadamente el 10-15% de las deliberaciones en las que los agentes convergen demasiado rápido). Para el 85-90% restante, las puertas de consenso y Pride Check proporcionan validación suficiente.

Lo que no funcionó en la deliberación

Rondas de debate de forma libre. Tres rondas de texto de ida y vuelta para una discusión sobre índices de base de datos produjeron 7.500 tokens de debate. Ronda 1: desacuerdo genuino. Ronda 2: posturas reformuladas. Ronda 3: argumentos idénticos con palabras distintas. La puntuación estructurada por dimensiones reemplazó el debate libre, reduciendo el costo en un 60% y mejorando la calidad de la clasificación.7

Una sola puerta de validación. La primera implementación ejecutaba un hook de validación al final de la sesión. Un agente completó la deliberación con una puntuación de consenso de 0,52 (por debajo del umbral), luego continuó con tareas no relacionadas durante 20 minutos antes de que el hook de final de sesión señalara el fallo. Dividirlo en dos puertas (una al completar la tarea y otra al final de la sesión) detectó los mismos problemas en distintos puntos del ciclo de vida.7

Costo de la deliberación

Cada agente de investigación procesa aproximadamente 5.000 tokens de contexto y genera entre 2.000 y 3.000 tokens de hallazgos. Con 3 agentes, son entre 15.000 y 24.000 tokens adicionales por decisión. Con 10 agentes, aproximadamente entre 50.000 y 80.000 tokens.7

Con los precios actuales de Opus 5 ($5/$25 por MTok), una deliberación de 3 agentes cuesta aproximadamente $0,23-0,30. Una deliberación de 10 agentes cuesta $0,75-1,00. El sistema activa la deliberación en aproximadamente el 10% de las decisiones, por lo que el costo amortizado en todas las decisiones es de $0,08-0,10 por sesión. (Las ediciones anteriores indicaban 3 veces estas cifras, calculadas con los precios heredados de Opus 4.x de $15/$75). Que valga la pena depende de cuánto cuesta una mala decisión.

Cuándo deliberar

Deliberar Omitir
Arquitectura de seguridad Errores tipográficos en documentación
Diseño de esquema de base de datos Cambio de nombre de variables
Cambios de contrato de API Actualizaciones de mensajes de registro
Estrategias de despliegue Reformulación de comentarios
Actualizaciones de dependencias Actualizaciones de fixtures de pruebas

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

  1. Comandos de compilación y pruebas (el agente los necesita antes de poder hacer algo útil)
  2. Definición de terminado (evita falsos cierres)
  3. Reglas de escalamiento (evitan soluciones alternativas destructivas)
  4. Secciones organizadas por tarea (reducen el procesamiento de instrucciones irrelevantes)
  5. 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 horizonte largo de Opus 4.7 (abril de 2026)

Claude Opus 4.7 (16 de abril de 2026) incorporó capacidades específicas que cambian aquello contra lo que un harness debe protegerse:29

  • Resiliencia ante fallos de herramientas: Opus 4.7 continúa tras fallos de herramientas que detenían sesiones de Opus 4.6. Puedes reducir —pero no eliminar— los wrappers defensivos de reintento en el código de subagents. Conserva las protecciones a nivel de hook; reduce la estructura de prompts de «si la herramienta falla, inténtalo de nuevo tres veces».
  • Nivel de esfuerzo xhigh: Se introdujo junto con Opus 4.7 y ahora es compatible con los modelos Opus actuales (Opus 4.8 se lanzó con él como /effort xhigh en v2.1.154; Opus 5 lo hereda). Se sitúa entre high y max. Es el valor predeterminado recomendado para cargas de trabajo de programación y agentic. En subagents de larga duración, xhigh supera de forma significativa a high con un costo de tokens subproporcional. max sigue siendo la elección correcta para razonamiento difícil de una sola ejecución; xhigh es mejor para tareas sostenidas.
  • Límite de presupuesto de tokens: Configurable por ejecución de agente mediante output_config.task_budget (encabezado beta task-budgets-2026-03-13). El modelo ve una cuenta regresiva en curso y ajusta el alcance del trabajo al presupuesto de forma elegante, en lugar de quedarse sin tokens inesperadamente. Úsalo en bucles agentic cuando busques un gasto de tokens predecible sin sacrificar calidad en prompts cortos.
  • Conciencia de necesidades implícitas: El primer modelo Claude que superó las pruebas de «necesidad implícita»: reconoce cuándo la solicitud literal del usuario no especifica suficientemente lo que en realidad necesita. Esto hace menos necesaria la sección de «reglas de aclaración» de CLAUDE.md. Si tu CLAUDE.md tiene 200 líneas de barreras de protección tipo «considera también X cuando el usuario pida Y», elimina las que ahora están cubiertas de forma nativa.

Base de worktree, rutas de sandbox y configuración de administración (7 de mayo de 2026)

Claude Code v2.1.133 agrega cuatro ajustes de nivel de administración que conviene conocer para harnesses de producción:39

Configuración Valores Qué hace
worktree.baseRef fresh (predeterminado) | head Los nuevos worktrees vuelven a ramificarse desde origin/<default>. Reversión de un cambio predeterminado incompatible de v2.1.128, que había usado el HEAD local. Establece worktree.baseRef: "head" si tu equipo depende de que los commits sin enviar estén disponibles en nuevos worktrees.
sandbox.bwrapPath ruta absoluta Fija la ubicación del binario Bubblewrap en hosts Linux/WSL donde no está en $PATH o donde distribuyes una versión incluida localmente.
sandbox.socatPath ruta absoluta La misma idea para el binario socat que usa la red del sandbox.
parentSettingsBehavior 'first-wins' (predeterminado) | 'merge' Control de nivel de administración sobre cómo los managedSettings de SDK se combinan con la configuración empresarial o de equipo principal. 'merge' permite que una sesión secundaria herede y amplíe; 'first-wins' mantiene la autoridad del elemento 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 se ramificaban desde el HEAD local) pierden acceso al trabajo sin enviar en worktrees nuevos, salvo que vuelvan a habilitarlo.

Encuesta de comentarios de OTel para observabilidad empresarial (8 de mayo de 2026)

Claude Code v2.1.136 agregó CLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTEL para volver a habilitar la encuesta de calidad dentro de la sesión para empresas que capturan las respuestas mediante OpenTelemetry.40 Si tu organización envía eventos OTel a una plataforma central de observabilidad, esta variable de entorno vuelve a incluir la encuesta en la ruta de datos para que la señal de calidad fluya por el mismo pipeline que las métricas de latencia y errores. Trátala como una opción explícita: el valor predeterminado mantiene la encuesta suprimida, lo cual es correcto para implementaciones sin OTel.

Launchers corporativos y rendimiento a escala de MCP (julio de 2026)

Dos cambios de v2.1.207 importan 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 wrapper corporativo: el punto de integración para agentes de endpoint, verificaciones de políticas al iniciar y entornos donde cada proceso debe ejecutarse bajo un supervisor obligatorio. Si antes tu empresa simulaba esto con alias de shell o scripts de launcher bifurcados, esta es la integración compatible.

La misma versión redujo la sobrecarga de ejecución donde los harnesses más la perciben: hasta 7× más rápidas las rondas de uso de herramientas en sesiones con un alto número de herramientas MCP, y transcripciones de sesión 79× más pequeñas.68 Esto suaviza —sin revertir— la guía de Costo como arquitectura: CLI-first sigue ganando para operaciones sin estado de una sola ejecución, pero un harness que lleva decenas de herramientas MCP ya no paga la penalización por ronda que pagaba en primavera, y el almacenamiento de transcripciones deja de ser un costo oculto de ejecuciones autónomas largas.

El quality loop

Un proceso de revisión obligatorio para todos los cambios no triviales:

  1. Implementar - Escribe el código
  2. Revisar - Vuelve a leer cada línea. Detecta errores tipográficos, errores de lógica y secciones poco claras
  3. Evaluar - Ejecuta el evidence gate. Revisa patrones, casos límite y cobertura de pruebas
  4. Refinar - Corrige cada problema. Nunca lo difieras para «más adelante»
  5. Alejarse - Revisa puntos de integración, importaciones y código adyacente para detectar regresiones
  6. Repetir - Si falla algún criterio del evidence gate, vuelve al paso 4
  7. Informar - Enumera qué cambió, cómo se verificó y cita evidencia específica

El evidence gate

«Creo» y «debería» no son evidencia. Cita rutas de archivos, salida de pruebas o código específico.

Criterio Evidencia requerida
Sigue los patrones del código base Nombra el patrón y el archivo donde existe
Solución funcional más simple Explica qué alternativas más simples se rechazaron y por qué
Casos límite cubiertos Enumera casos límite específicos y cómo se maneja cada uno
Las pruebas pasan Pega la salida de las pruebas que muestra 0 fallos
Sin regresiones Nombra los archivos o funciones revisados
Resuelve el problema real Indica la necesidad del usuario y cómo esto la resuelve

Si no puedes aportar evidencia para alguna fila, vuelve a Refinar.22

Autoridad humana de merge

Un estudio de arXiv de mayo de 2026 sobre 29.585 ciclos de vida de pull requests de agentes de IA separa la autonomía operativa de la gobernanza de merge.47 La lección arquitectónica útil es simple: los agentes pueden iniciar trabajo, continuar ramas, abrir PRs, revisar trabajo y resumir riesgos, mientras que la autoridad de merge sigue siendo 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 merges, lanzamientos y operaciones destructivas de repositorio, salvo que la organización cuente con una política de automatización auditada por separado. Cuando la automatización ejecute un merge, conserva registros que distingan al ejecutor de la persona o política que lo autorizó.

Patrones de manejo de errores

Escrituras atómicas de archivos. Varios agentes que escriben simultáneamente en el mismo archivo de estado corrompen JSON. Escribe en archivos .tmp y luego usa mv de forma atómica. El sistema operativo garantiza que mv es atómico en el 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 de corrupción de estado. Si el estado se corrompe, el patrón de recuperación lo recrea desde valores predeterminados seguros en lugar de fallar: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 ((VAR++)). ((VAR++)) devuelve el código de salida 1 cuando VAR es 0 porque 0++ se evalúa como 0, que bash trata como falso. Con set -e habilitado, esto termina el script. Usa VAR=$((VAR + 1)) en su lugar.16

Clasificación de radio de impacto

Clasifica cada acción del agente según su radio de impacto y aplica la barrera correspondiente:2

Clasificación Ejemplos Barrera
Local Escrituras de archivos, ejecuciones de pruebas, linting Aprobación automática
Compartido Commits de Git, creación de ramas Advertir y continuar
Externo Git push, llamadas de API, implementaciones Requiere aprobación humana

Remote Control (conectarse a Claude Code local desde cualquier navegador o aplicación móvil) transforma la barrera «Externo» de una espera bloqueante en una notificación asíncrona. El agente sigue 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 ser verificables por máquina: aprobación o fallo de pruebas, salida de linter, códigos de estado HTTP y verificaciones de existencia de archivos. Una tarea inicial que pidió 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
Vago «Las pruebas pasan» El agente escribe pruebas triviales
Medible pero incompleto «Las pruebas pasan Y la cobertura >80%» Las pruebas cubren líneas, pero no prueban nada significativo
Integral «Todas las pruebas pasan Y la cobertura >80% Y no hay errores de tipos Y el linter está limpio Y cada clase de prueba evalúa un módulo distinto» Resultado de 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 «Tengo confianza» sin ejecutar verificación Prohíbe el lenguaje evasivo en informes de finalización
Verificación fantasma Afirmar que las pruebas pasan sin ejecutarlas en esta sesión El hook Stop ejecuta pruebas de forma independiente
Deuda diferida TODO/FIXME/HACK en código confirmado El hook PreToolUse en git commit analiza el diff
Contaminación del sistema de archivos Artefactos sin salida de iteraciones abandonadas Paso de limpieza en los criterios de finalización

Un rastro de sesión concreto

Un rastro de sesión de una ejecución autónoma que procesa un PRD con 5 historias:2

  1. Se activa SessionStart. Dispatcher inyecta: fecha actual, detección de proyecto, restricciones de filosofía e inicialización del seguimiento de costos. Cinco hooks, 180 ms en total.

  2. El agente lee el PRD, planifica la primera historia. Se activa UserPromptSubmit. Dispatcher inyecta: contexto del proyecto activo, línea base de desviación de sesión.

  3. El agente llama a Bash para ejecutar pruebas. Se activa PreToolUse:Bash. Verificación de credenciales, validación de sandbox, detección de proyecto. 90 ms. Se ejecutan las pruebas. Se activa PostToolUse:Bash: se registra el heartbeat de actividad, verificación de desviación.

  4. El agente llama a Write para crear un archivo. Se activa PreToolUse:Write: verificación de alcance del archivo. Se activa PostToolUse:Write: verificación de lint, seguimiento de commits.

  5. El agente termina la historia. Se activa Stop. Las comprobaciones de quality gate preguntan: ¿el agente citó evidencia? ¿Usó lenguaje evasivo? ¿Hay comentarios TODO en el diff? Si falla alguna comprobación, salida 2 y el agente continúa.

  6. Verificación independiente: Un agente nuevo ejecuta la suite de pruebas sin confiar en el autoinforme del agente anterior.

  7. Tres agentes de revisión de código se generan en paralelo. Cada uno revisa el diff de forma independiente. Si algún revisor señala CRITICAL, la historia vuelve a la cola.

  8. La historia pasa. Se carga la siguiente historia. El ciclo se repite para las 5 historias.

Total de hooks activados en 5 historias: ~340. Tiempo total en hooks: ~12 segundos. Esa sobrecarga evitó tres filtraciones de credenciales, un comando destructivo y dos implementaciones incompletas en una sola ejecución nocturna.

Caso de estudio: 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, revisión multiagente).

Métrica Mínimo (4 PRDs) Harness completo (8 PRDs) Cambio
Filtraciones de credenciales 2 filtradas a git 7 bloqueadas antes del commit De reactivo a preventivo
Comandos destructivos 1 force-push a main 4 bloqueados Aplicación mediante salida 2
Tasa de finalización falsa 35% de pruebas fallidas 4% Evidence gate + hook Stop
Rondas de revisión/historia 2,1 0,8 Skills + quality loop
Degradación de 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 exigieron rotar claves de API y auditar servicios posteriores: aproximadamente 4 horas de respuesta a incidentes. La sobrecarga del harness que evitó el equivalente fue de 2,4 segundos de bash por historia. La tasa de finalización falsa bajó 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 son paralelos —y amplían— el enfoque de Evidence Gate de esta guía:

Principio Qué significa Cómo lo satisface este harness
Control humano Anulación humana significativa en cada punto de decisión Los hooks controlan las llamadas a herramientas; bloqueo de 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 intención; skills como delimitación de capacidades
Seguridad Resistencia a entradas adversarias e inyección de prompts Sandbox + reglas de denegación + validación de entradas en la capa de hooks
Transparencia Registros auditables de decisiones y acciones Registro de hooks; transcripciones de sesión; trazas de invocación de skills
Privacidad Manejo y gobernanza adecuados de datos Depuración de variables de entorno de credenciales; detección de secretos en la capa de hooks

Anthropic también donó MCP a la Agentic AI Foundation de Linux Foundation, uniéndose a AGENTS.md (ahora administrado conjuntamente con OpenAI, Google, Cursor, Factory y Sourcegraph). Los estándares de interoperabilidad de agentes ahora son neutrales respecto a proveedores.27

El turno sin estado y la identidad autodeclarada de MCP. La especificación de MCP completó su transición a un núcleo sin estado (SEP-2575) con la revisión del 28 de julio de 2026, ahora la especificación vigente, que elimina el intercambio de inicialización con estado que antes transportaba 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 la respuesta _meta, y clientInfo pasa a ser opcional en las solicitudes.71 La parte relevante para la seguridad es lo que la especificación dice sobre la confianza: esta identidad es autodeclarada y no verificada; solo para visualización y registro; y NO DEBERÍA impulsar decisiones de seguridad. Si tu harness basa allowlists, reglas de permisos o auditorías basadas en registros en el nombre declarado de un servidor MCP, ese nombre es una afirmación, no una credencial; vincula la confianza al transporte y la configuración (qué servidor configuraste en qué endpoint), nunca a lo que el servidor dice ser. La revisión sin estado se lanzó según lo previsto el 28 de julio de 2026 (server/discover obligatorio, negociación de versión del protocolo mediante _meta, encabezado Streamable HTTP); la guía de confianza anterior describe el comportamiento publicado.

Herramientas de sandbox para skills: Para los equipos que tratan las skills como una superficie de ataque, SandyClaw de Permiso (lanzado el 2 de abril de 2026) ejecuta skills en un sandbox dedicado y entrega veredictos respaldados por evidencia mediante detección 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 (habilitado 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 de sistema operativo (seatbelt en macOS, bubblewrap en Linux). Cuando está habilitado, el sandbox evita que el modelo realice solicitudes de red arbitrarias o acceda a archivos fuera del directorio del proyecto. Sin sandboxing, Claude Code utiliza un modelo basado en permisos donde apruebas o deniegas llamadas individuales a herramientas.13

Nivel mínimo de seguridad de mayo de 2026. Claude Code v2.1.149 corrigió una omisión de permisos del directorio de trabajo en PowerShell, varias brechas en el análisis de permisos relacionadas con reglas de allow de PowerShell y variables obsoletas, y un error en la allowlist de escritura del sandbox para git worktree que cubría toda la raíz del repositorio principal en lugar de solo los elementos internos compartidos de git.53 Si tu harness permite PowerShell o agentes aislados con worktree, considera v2.1.149+ como el mínimo y mantén las reglas de shell acotadas. Las excepciones amplias de PowerShell(*) y de escritura en todo el repositorio son atajos de orquestación, no límites de seguridad.

Bloqueo del sandbox de OpenAI Agents SDK (v0.17.0, 8 de mayo de 2026). Del lado de OpenAI, openai-agents-python v0.17.0 reforzó un límite paralelo: LocalFile.src y LocalDir.src ahora están restringidos a ubicarse dentro del base_dir de materialización (el directorio de trabajo actual del proceso SDK cuando se aplica el manifiesto), salvo que la fuente se conceda explícitamente mediante Manifest.extra_path_grants con SandboxPathGrant.41 Las fuentes locales relativas se resuelven desde base_dir; las rutas absolutas ya deben estar dentro de él o contar con una concesión. Esto cierra un problema de límite para artefactos locales: las versiones anteriores permitían que los manifiestos incorporaran rutas arbitrarias del host a un espacio de trabajo sandbox. Migración: declara las raíces confiables del host en el nivel del manifiesto con SandboxPathGrant(path=..., read_only=True) para montajes de solo lectura. Trata extra_path_grants como configuración confiable de la aplicación; nunca llenes concesiones a partir de la salida del modelo o de entradas no confiables del manifiesto.

Nivel mínimo posterior de OpenAI Agents SDK (v0.17.3). La línea 0.17.1-0.17.3 añadió más refuerzo para sandbox y sesiones: límites de extracción de archivos, validación de subrutas de GitRepo, errores más claros del proveedor de sandbox, credenciales de puntos de montaje fuera de los comandos del sandbox, rechazo de raíces relativas del espacio de trabajo sandbox y manejo de estados terminales de Vercel-sandbox.54 Si utilizas sandboxes alojados por OpenAI o respaldados por proveedores, en lugar de solo hooks de Claude Code, considera 0.17.3 como el mínimo 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 «How we contain Claude across products» (25 de mayo de 2026) es la propia articulación del proveedor de los principios que esta sección enseña de forma fragmentada: el sandbox a nivel de configuración anterior, el mínimo de aislamiento con worktree y la postura de tratar todo como no confiable.81 Su movimiento central consiste en asignar la fuerza de la contención a la superficie del producto, y ese mapeo es en sí la lección: no existe un único diseño de aislamiento correcto, solo un aislamiento adecuado para quién supervisa y qué puede salir mal.

  • Contenedores gVisor efímeros (claude.ai). La ejecución del lado del servidor se realiza en contenedores gVisor sobre infraestructura aislada, con un sistema de archivos efímero por sesión. El modelo de amenazas es el aislamiento de infraestructura y tenants: la máquina del usuario nunca es accesible, así que no hay nada local que defender.
  • Sandboxing del sistema operativo con intervención humana (Claude Code). El patrón descrito en el párrafo del sandbox anterior, expresado como política: Seatbelt en macOS y bubblewrap en Linux, con lecturas permitidas, escrituras limitadas al espacio de trabajo y red denegada por defecto; la persona aprueba lo que el límite no cubre. Anthropic liberó el runtime como código abierto (sandbox-runtime) para que el límite sea auditable. La publicación es franca sobre el eslabón débil: aproximadamente el 93% de los avisos de permisos se aprueban, y el clasificador de auto mode —que detecta aproximadamente el 83% de los comportamientos demasiado entusiastas antes de la ejecución y reduce los avisos de aprobación en un 84%— existe precisamente porque la fatiga de aprobación es una propiedad de seguridad, no una queja de UX. Esa es la postura de check-layer que esta guía ha seguido desde v2.1.193.
  • VM selladas (Claude Cowork). Máquinas virtuales completas en hipervisores de la plataforma —Apple Virtualization framework en macOS, HCS en Windows— con solo el espacio de trabajo seleccionado y la carpeta .claude montados; nada más del host es visible. Las credenciales nunca entran en la VM: permanecen en el keychain del host y cada sesión recibe un token acotado y revocable de manera independiente. Un proxy MITM defensivo dentro de la VM lo aplica, dejando pasar solo solicitudes que llevan el propio token de sesión aprovisionado de la VM; una clave incorporada por un atacante se rechaza en el límite, porque solo la VM conoce su procedencia.

Los principios de diseño bajo la taxonomía son la parte transferible. Primero contiene en la capa de entorno; después dirige en la capa de modelo: toda defensa probabilística tiene una tasa de fallos distinta de cero, por lo que los límites deterministas deben capturar lo que la dirección a nivel de prompt no detecta; es el argumento de esta guía de que los hooks garantizan la ejecución, reformulado por el proveedor. Ajusta la fuerza del aislamiento a la capacidad de supervisión del usuario: un desarrollador puede evaluar un comando bash antes de aprobarlo; un trabajador del conocimiento no, por eso Code recibe un diálogo de permisos y Cowork recibe una VM sellada. Prefiere primitivas probadas en batalla antes que código de aislamiento personalizado: los hipervisores, seccomp y runtimes de contenedores sobrevivieron mejor al escrutinio adversarial que los propios proxies de allowlist y analizadores de configuración personalizados de Anthropic. Trata la configuración local del proyecto y las salidas de herramientas como no confiables: la instrucción de la publicación es tratar la apertura de proyectos y carga de configuración como cualquier solicitud entrante de internet, y la salida de herramientas como una superficie de ataque incluso cuando la herramienta es confiable; es la misma postura que esta guía aplica a mensajes entre agentes, contenido leído por subagents e identidad autodeclarada de MCP. Mantén las credenciales fuera del sandbox: tokens acotados, revocables y por sesión, en lugar de claves ambientales que el agente podría filtrar.

La superficie de configuración está alcanzando el primer principio (v2.1.219). «Primero contiene en la capa de entorno» es fácil de respaldar y ha sido incómodo de configurar realmente, porque el sandbox de Claude Code resolvía lo que sus reglas no cubrían preguntando; y un aviso de permisos es una defensa probabilística disfrazada de determinista, como reconoce la cifra de aprobación del 93% anterior. sandbox.network.strictAllowlist elimina la pregunta para el tráfico saliente: al configurarlo, la solicitud de un comando sandboxed a un host que no está en la allowlist se deniega directamente en lugar de solicitar confirmación.84 Combínalo con sandbox.filesystem.disabled de v2.1.216 y ambas configuraciones conforman una postura, no una pila de interruptores: la contención del sistema de archivos y de red se puede seleccionar de manera independiente, y la contención de red ahora puede hacerse determinista. Para un harness sin supervisión, esta es la más importante de las dos, porque la salida de red es donde una instrucción inyectada se convierte en exfiltración, y el caso extremo de la fatiga de aprobación es que no hay nadie frente al teclado que pueda fatigarse. El costo es el costo normal de un límite determinista: la allowlist debe ser correcta, y un host que olvidaste falla como una denegación opaca en lugar de una pregunta. Enumera los hosts que tus agentes necesitan legítimamente y luego elimina el aviso.

Nada de esto reemplaza la capa de hooks; se sitúa por debajo de ella. Los patrones de contención son el nivel determinista, y el historial de aplicación de worktree en esta guía es la misma lección a pequeña escala: un límite solo cuenta si resiste una redirección deliberada, y las primitivas con más probabilidades de resistir son las que no se escribieron para la ocasión.

Límites de permisos

El sistema de permisos controla operaciones en varios niveles:

Nivel Controla Ejemplo
Permisos de herramientas Qué herramientas se pueden usar Restringir un subagent a Read, Grep, Glob
Permisos de archivos Qué archivos se pueden modificar Bloquear escrituras en .env, credentials.json
Permisos de comandos Qué comandos bash pueden ejecutarse Bloquear rm -rf, git push --force
Permisos de red A qué dominios se puede acceder Allowlist para conexiones de servidor MCP

Reglas de permisos a nivel de parámetro (junio de 2026)

Claude Code v2.1.178 extendió las reglas de permisos desde el nivel de herramienta hasta el nivel de parámetro: Tool(param:value) coincide con los parámetros de entrada de una herramienta, usando * como comodín. El ejemplo canónico es Agent(model:opus): una regla que bloquea que se generen subagents en un nivel de modelo específico.63 Desde el punto de vista arquitectónico, esto cierra una brecha que la tabla de cuatro niveles anterior no podía expresar: antes permitías o denegabas una herramienta en su totalidad, pero no podías restringir cómo se invocaba. Ahora una política de gobernanza puede decir «los subagents pueden generarse, pero no en el nivel Fable 5» o «Bash está permitido, pero no con este flag» como una regla determinista en lugar de una solicitud a nivel de prompt.

Una configuración administrada complementaria, enforceAvailableModels (v2.1.175), restringe la selección de modelos desde arriba: fija el modelo Default e impide que configuraciones de usuario o proyecto amplíen la allowlist administrada availableModels.63 Ambas se combinan: la allowlist define qué niveles existen para la sesión, y las reglas a nivel de parámetro restringen cómo los usan los subagents. Desde v2.1.196, los administradores también pueden establecer un modelo predeterminado para toda la organización desde la consola de la organización, mostrado como «Org default» en /model, para que una flota herede un valor predeterminado gobernado sin que cada operador tenga que fijarlo; es un mínimo que complementa el máximo de la allowlist.

Las reglas allow con alcance de ruta se anclan al directorio de trabajo (julio de 2026)

Claude Code v2.1.214 corrigió una coincidencia excesiva silenciosa en las reglas de permisos con alcance de ruta: una regla allow con un patrón dir/** de un solo segmento —por ejemplo, Edit(src/**)— aprobaba automáticamente ediciones en cualquier directorio llamado src a cualquier profundidad, incluidos vendor/some-package/src/ y cualquier otro src/ anidado que el autor de la regla nunca quiso aprobar. Esas reglas ahora se anclan solo a <cwd>/dir; si realmente quieres coincidencias a cualquier profundidad, decláralo con **/dir/**.74 Las reglas de denegación y consulta deliberadamente mantienen la anterior coincidencia a cualquier profundidad. Esa asimetría es el diseño correcto a prueba de fallos: una regla allow que coincide de forma demasiado estrecha falla de manera segura (recibes un aviso), mientras que una regla de denegación que coincide de forma demasiado estrecha falla abierta (se filtra una ruta que debía bloquearse); por ello, las reglas allow se volvieron más estrictas y las de denegación siguieron siendo amplias. Si tu configuración depende de patrones allow de un solo segmento para cubrir rutas anidadas, dejaron de hacerlo silenciosamente en v2.1.214; la corrección funciona como se esperaba, pero vale la pena revisar tus allowlists para volver a declarar el alcance que realmente deseas.

Protecciones para comandos destructivos de Auto Mode (junio de 2026)

Claude Code v2.1.183 redujo el radio de impacto de auto mode para operaciones que hacen perder trabajo silenciosamente o destruyen entornos. Ahora auto mode bloquea estrictamente, salvo que las hayas solicitado explícitamente en la sesión: operaciones destructivas de git (git reset --hard, git checkout -- ., git clean -fd, git stash drop); git commit --amend cuando el commit no fue realizado por el agente en esta sesión; y destrucción de infraestructura (terraform destroy, pulumi destroy, cdk destroy) a menos que hayas nombrado el stack específico.65 Desde el punto de vista arquitectónico, esto complementa las reglas de evaluación de generación y a nivel de parámetro anteriores: en lugar de controlar qué herramienta o cómo se genera, controla un pequeño conjunto de comandos irreversibles específicos por intención; el agente aún puede ejecutarlos, pero solo con una instrucción explícita, no por iniciativa propia. Para un harness autónomo, codifica el mismo principio en tus propios hooks PreToolUse: los comandos que destruyen estado merecen una regla de denegación por defecto que solo una señal explícita del operador levanta.

Julio de 2026: auto mode llega a empresas y un aviso no se puede omitir. Auto mode alcanzó disponibilidad general en Amazon Bedrock, Google Vertex AI y Microsoft Foundry en v2.1.207, con una configuración administrada disableAutoMode como opción de exclusión empresarial; la postura del clasificador como check-layer ahora está disponible en todas las plataformas empresariales propias, y desactivarla es una decisión de gobernanza explícita en lugar de una brecha de la plataforma.68 Luego, v2.1.208 hizo absoluto el mecanismo contra eliminaciones catastróficas: los avisos de confirmación para eliminaciones catastróficas ahora atraviesan tanto --dangerously-skip-permissions como auto mode.68 Es un precedente notable: la primera confirmación en Claude Code que ninguna postura de permisos, incluido el flag de omisión explícita, puede anular. Los diseños de harness autónomos que asumían que --dangerously-skip-permissions significaba literalmente cero avisos deben tener en cuenta esta excepción; se activa exactamente donde un ciclo sin supervisión puede causar el daño más irrecuperable.

Protecciones contra la fabricación (julio de 2026)

Las versiones v2.1.203–v2.1.206 cerraron dos vías por las que un agente podía fabricar su propio rastro de auditoría.68 Primero, una regla de auto mode ahora bloquea la manipulación de archivos de transcripción: el registro de sesión ya no es algo que las propias llamadas a herramientas de la sesión puedan reescribir. Segundo, las notificaciones de tareas en segundo plano ahora indican explícitamente que no ocurrió ninguna entrada humana mientras se ejecutaba la tarea. La segunda medida apunta a una falla sutil: antes, un modelo que resumía una tarea en segundo plano podía presentar (o inventar) una «aprobación» en la transcripción que nunca ocurrió, y nada en la notificación lo contradecía. Ahora la propia notificación es la contraevidencia.

La lección arquitectónica se generaliza al Evidence Gate: las transcripciones, notificaciones y registros son superficies de auditoría, y las superficies de auditoría no deben poder ser escritas por aquello que auditan. La plataforma ahora aplica esta regla a su propia transcripción; aplica la misma regla a tu harness: los informes de evidencia, salidas de pruebas y registros de deliberación pertenecen fuera de la ruta con permisos de escritura del modelo.

Defensa contra inyección de prompts

Las skills y los hooks proporcionan defensa en profundidad contra la inyección de prompts:

Las skills con restricciones de herramientas evitan que un prompt comprometido obtenga acceso de escritura:

allowed-tools: Read, Grep, Glob

Los hooks PreToolUse validan cada llamada a herramienta independientemente de cómo se haya dirigido 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 incluso si su prompt está comprometido.

El nivel mínimo de la plataforma aumentó en julio de 2026. Claude Code v2.1.210 reforzó la herramienta Agent contra la inyección indirecta de prompts transportada en contenido que leyó un subagent: un archivo, página web o resultado de herramienta envenenado que un subagent incorpora tiene menos capacidad para dirigir la propia superficie de delegación.69 Y 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 un comando ya no puede diseñarse para mostrarse como inocuo en el diálogo de aprobación mientras ejecuta otra cosa.69 La segunda corrección importa más para harnesses donde una persona aprueba vistas previas renderizadas bajo presión de tiempo: la visualización también era una superficie de inyección. Ninguno de estos cambios reemplaza las defensas a nivel de hooks anteriores; elevan el mínimo sobre el que estas se apoyan.

Los registros de agentes y las protecciones son superficies de seguridad

Dos avisos de mayo de 2026 refuerzan un patrón: la infraestructura de agentes crea nuevos lugares donde el contenido sensible y las políticas ejecutables pueden filtrarse o escapar. El aviso GHSA-f3jg-756w-gm35 de GitHub cubre un problema de filtro de payloads en Gryph Agents donde el contenido sensible de payloads de herramientas podía permanecer en registros SQLite locales bajo el comportamiento de registro predeterminado.45 OSV GHSA-wxxx-gvqv-xp7p cubre una fuga del sandbox de guardrails de código personalizado de LiteLLM en un endpoint proxy protegido por administración.46

La regla de producción: trata las transcripciones de agentes, payloads de herramientas, registros SQLite y ejecución de guardrails como infraestructura sensible. Elimina información sensible antes de la persistencia, aplica límites de retención y mantén el código personalizado de guardrails en sandbox y revisable. Una regla a nivel de prompt de «no registres secretos» no es suficiente; la ruta de registro y guardrails necesita pruebas deterministas.

Seguridad de hooks

Los hooks HTTP que interpolan variables de entorno en encabezados requieren una lista explícita de allowedEnvVars para evitar la exfiltración arbitraria de variables de entorno:13

{
  "type": "http",
  "url": "https://api.example.com/notify",
  "headers": {
    "Authorization": "Bearer $MY_TOKEN"
  },
  "allowedEnvVars": ["MY_TOKEN"]
}

La división de responsabilidades entre humanos y agentes

La seguridad en arquitecturas de agentes requiere una división clara entre responsabilidades humanas y de 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 de consenso
Criterios de quality gate Aplicación de quality gate
Análisis de errores Detección de errores
Decisiones de arquitectura Opciones de arquitectura
Inyección de contexto de dominio Generación de documentación

El patrón: las personas poseen las decisiones que requieren contexto organizacional, juicio ético o dirección estratégica. Los agentes poseen las decisiones que requieren búsqueda computacional en grandes espacios de posibilidades. Los hooks aplican el límite.

Aplicación recursiva de hooks

Los hooks también se activan para las acciones de subagents.13 Si Claude genera un subagent mediante la herramienta Agent, tus hooks PreToolUse y PostToolUse se ejecutan para cada herramienta que use el subagent. Sin aplicación recursiva de hooks, un subagent podría eludir tus barreras de seguridad. El evento SubagentStop te permite ejecutar limpieza o validación cuando un subagent finaliza.

Esto no es opcional. Un agente que genera un subagent sin tus hooks de seguridad es un agente que puede hacer force-push a main, leer archivos de credenciales o ejecutar comandos destructivos mientras tus barreras observan la conversación principal sin hacer nada.

El costo como arquitectura

El costo es una decisión arquitectónica, no una consideración operativa posterior.2 Tres niveles:

Nivel de tokens. Compresión del system prompt. Elimina ejemplos de código de tutorial (el modelo conoce los APIs), colapsa reglas duplicadas entre archivos y reemplaza explicaciones por restricciones. «Rechaza las llamadas a herramientas que coincidan con rutas sensibles» hace el mismo trabajo que una explicación de 15 líneas sobre por qué no se deben leer credenciales.

Nivel de agente. Generaciones nuevas en lugar de conversaciones largas. Cada historia de una ejecución autónoma recibe un agente nuevo con contexto limpio. El contexto nunca se desborda porque cada agente comienza desde cero. Briefing en lugar de memoria: los modelos ejecutan mejor un briefing claro que navegar 30 pasos de contexto acumulado.

Nivel de arquitectura. CLI primero en lugar de MCP cuando la operación no tiene estado. Una llamada claude --print para una evaluación única cuesta menos y no añade sobrecarga de conexión. MCP tiene sentido cuando la herramienta necesita estado persistente o streaming.

Marco de decisión

Cuándo usar cada mecanismo:

Problema Usar Por qué
Dar formato al código después de cada edición Hook PostToolUse Debe ocurrir siempre, de forma determinista
Bloquear comandos Bash peligrosos Hook PreToolUse Debe bloquearse antes de la ejecución, código de salida 2
Aplicar patrones de revisión de seguridad Skill Conocimiento especializado del dominio que se activa automáticamente según el contexto
Explorar la base de código sin contaminar el contexto Subagent Explore Contexto aislado, solo devuelve un resumen
Ejecutar una refactorización experimental de forma segura Subagent aislado con worktree Los cambios pueden descartarse si fallan
Revisar código desde múltiples perspectivas Subagents paralelos o Agent Team La evaluación independiente evita puntos ciegos
Decidir sobre una arquitectura irreversible Deliberación multiagente Activador de confianza + validación por consenso
Conservar decisiones entre sesiones MEMORY.md El sistema de archivos sobrevive a los límites de contexto
Compartir estándares del equipo CLAUDE.md del proyecto + .claude/rules/ Distribuido mediante Git, se carga automáticamente
Definir comandos de compilación/prueba del proyecto CLAUDE.md Instrucciones centradas en comandos que el agente puede verificar
Ejecutar desarrollo autónomo prolongado Bucle Ralph (iteración con contexto nuevo) Presupuesto de contexto completo por iteración, estado en el sistema de archivos
Notificar a Slack cuando termina la sesión Hook Stop asíncrono No bloquea ni ralentiza la sesión
Validar la calidad antes de hacer commit Hook PreToolUse en git commit Bloquea el commit si fallan lint/pruebas
Aplicar criterios de finalización Hook Stop 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 (impulsada por eventos) Explícita o delegada automáticamente
Garantía Probabilística (el modelo decide) Determinista (siempre se activa) Determinista (contexto aislado)
Costo de contexto Se inyecta en el contexto principal Cero (se ejecuta fuera de LLM) Ventana de contexto independiente
Costo de tokens Presupuesto de descripción (1 % de la ventana, respaldo de 8.000 caracteres) Cero Contexto completo por subagent
Mejor para Conocimiento especializado del dominio Aplicación de políticas Trabajo focalizado, exploración

Preguntas frecuentes

¿Cuántos hooks son demasiados?

El límite es el rendimiento, no la cantidad. Cada hook se ejecuta de forma síncrona, por lo que el tiempo total de ejecución de los hooks se suma a cada llamada de herramienta coincidente. 95 hooks entre la configuración de usuario y la del proyecto se ejecutan sin una latencia perceptible cuando cada hook termina en menos de 200 ms. El umbral que debes vigilar: si un hook PostToolUse añade más de 500 ms a cada edición de archivo, la sesión se siente lenta. Analiza tus hooks con time antes de implementarlos.14

¿Pueden los hooks impedir que Claude Code ejecute un comando?

Sí. Los hooks PreToolUse bloquean cualquier acción de herramienta al salir con el código 2. Claude Code cancela la acción pendiente y muestra al modelo la salida stderr del hook. Claude ve el motivo del rechazo y sugiere una alternativa más segura. La salida 1 es una advertencia no bloqueante en la que la acción aún continúa.3

¿Dónde debo colocar los archivos de configuración de hooks?

Las configuraciones de hooks van en .claude/settings.json para hooks a nivel de proyecto (se confirman en tu repositorio y se comparten con tu equipo) o en ~/.claude/settings.json para hooks a nivel de usuario (personales, aplicados a todos los proyectos). Los hooks a nivel de proyecto tienen prioridad cuando existen ambos. Usa rutas absolutas para los archivos de scripts y así evitar problemas con el directorio de trabajo.14

¿Toda decisión necesita deliberación?

No. El módulo de confianza puntúa las decisiones en cuatro dimensiones (ambigüedad, complejidad, impacto y dependencia del contexto). Solo las decisiones con una puntuación general de confianza inferior a 0,70 activan la deliberación, aproximadamente el 10 % de todas las decisiones. Las correcciones de documentación, los cambios de nombre de variables y las ediciones rutinarias omiten por completo la deliberación. La arquitectura de seguridad, los cambios de esquema de base de datos y los despliegues irreversibles la activan de manera consistente.7

¿Cómo pruebo un sistema diseñado para generar desacuerdo?

Prueba tanto las rutas exitosas como las rutas de fallo. Éxito: los agentes discrepan de forma productiva y llegan a un consenso. Fallo: los agentes convergen demasiado rápido, nunca convergen o exceden los presupuestos de generación. Las pruebas de extremo a extremo simulan cada escenario con respuestas deterministas de agentes y verifican que ambas puertas de validación detecten todos los modos de fallo documentados. Un sistema de deliberación en producción ejecuta 141 pruebas en tres capas: 48 pruebas de integración de Bash, 81 pruebas unitarias de Python y 12 simulaciones de pipeline de extremo a extremo.7

¿Cuál es el impacto de latencia de la deliberación?

Una deliberación de 3 agentes añade entre 30 y 60 segundos de tiempo de reloj (este diseño de deliberación ejecuta sus agentes de forma secuencial mediante Agent tool; la plataforma ejecuta los subagents simultáneamente en segundo plano desde v2.1.198). Una deliberación de 10 agentes añade entre 2 y 4 minutos. Los hooks de consenso y pride check se ejecutan cada uno en menos de 200 ms. El principal cuello de botella es el tiempo de inferencia de LLM por agente, no la sobrecarga de orquestación.7

¿Qué extensión debe tener un archivo CLAUDE.md?

Mantén cada sección por debajo de 50 líneas y el archivo completo por debajo de 150 líneas. Los archivos largos se truncan en las ventanas de contexto, así que coloca primero las instrucciones más críticas: los comandos y las definiciones de cierre antes que las preferencias de estilo.21

¿Puede funcionar esto con herramientas distintas de Claude Code?

Los principios arquitectónicos (hooks como puertas deterministas, skills como conocimiento especializado del dominio, subagents como contextos aislados, sistema de archivos como memoria) se aplican conceptualmente a cualquier sistema agéntico. La implementación específica utiliza los eventos de ciclo de vida, los patrones 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 Usar para
0 Éxito Permitir la operación
2 Bloquear Puertas de seguridad, puertas de calidad
1 Advertencia no bloqueante Registro, mensajes informativos

Comandos clave

Comando Propósito
/compact Comprimir el contexto, conservar las decisiones
/context Ver la asignación de contexto y las skills activas
edit .claude/agents/ Administrar 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 Histórico: habilitaba la vista previa de Workflow-tool de v2.1.147; los workflows dinámicos están disponibles de forma predeterminada mediante /workflows desde v2.1.154
claude -c Continuar la sesión más reciente
claude --print Invocación única de CLI (sin conversación)
# <note> Añadir una nota al archivo de memoria
/memory Ver y administrar la memoria automática

Ubicaciones de archivos

Ruta Propósito
~/.claude/CLAUDE.md Instrucciones globales personales
.claude/CLAUDE.md Instrucciones del proyecto (compartidas mediante 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 mediante 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 Memoria automática

Registro de cambios

Fecha Cambio Fuente
2026-08-18 Se incorporaron los subagents con fork (v2.1.232), además de una revisión de los cambios de v2.1.233/234. La tabla de tipos de subagents incorpora fork: «hereda toda la conversación hasta el momento en lugar de comenzar desde cero… un fork recibe el mismo system prompt, las mismas herramientas, el mismo modelo y el mismo historial de mensajes que la sesión principal»; además, comparte la caché del prompt, aunque sus llamadas a herramientas siguen aisladas. Está activado de forma predeterminada en las sesiones interactivas desde v2.1.232 y desactivado en -p/SDK; la afirmación «los subagents comienzan con un contexto limpio» ahora incluye la salvedad del fork. Otros cambios incluidos, documentados únicamente en el changelog: v2.1.233 desactiva de forma predeterminada las herramientas de tareas (TaskCreate/Get/Update/List, TodoWrite) en los modelos de la generación actual (CLAUDE_CODE_ENABLE_TODO_TOOLS=1 las restablece), lo que también deja inactivos los hooks TaskCreated/TaskCompleted en las configuraciones predeterminadas; además, según la documentación de agent teams, los teammates sin herramientas de tareas se coordinan «mediante mensajes en lugar de la lista de tareas compartida». v2.1.234 elimina la configuración teammateDefaultModel (los teammates usan el modelo del lead, salvo que el prompt de creación o CLAUDE_CODE_SUBAGENT_MODEL especifique otro) y entrega las notificaciones de tareas en segundo plano entre turnos dentro de etiquetas <system-reminder>. 88
2026-08-12 Primera auditoría integral del evidence gate: lectura completa de la guía con el evaluator; R1 obtuvo 8,83 y reveló seis hallazgos MAJOR, todos corregidos en esta fila. La clase de defectos de esta familia (cada fila de lanzamiento era correcta, pero nunca se actualizaban los estratos anteriores): el recuento de eventos de hooks indicaba 30, mientras que la tabla omitía MessageDisplay, precisamente el evento que el texto cita como hito de estabilidad (ahora son 31 y se agregó la fila); la tabla de tipos de subagents integrados todavía enseñaba que Explore usa Haiku, lo que contradecía la propia fila de este changelog sobre la herencia del modelo de sesión en v2.1.198; los costos de deliberación etiquetados como «actuales» se habían calculado con los precios heredados de Opus 4.x, de $15/$75, por lo que estaban triplicados frente a los $5/$25 de Opus 5 (se recalcularon y se anotaron las cifras anteriores); xhigh aún figuraba como «(solo Opus-4.7)» meses después de que v2.1.154 lo incorporara a Opus 4.8; la revisión sin estado de MCP todavía aparecía como «programada para el 28 de julio de 2026» dos semanas después de publicarse como la revisión Current de la especificación (se reescribió en pasado y se volvió a verificar la nota al pie); la sección Workflow aún comenzaba con la variable de entorno desactivada de forma predeterminada de v2.1.147, aunque los workflows dinámicos están disponibles de forma predeterminada mediante /workflows desde v2.1.154 (se armonizaron la sección, el TL;DR y la fila de la tabla de variables de entorno). Actualización por cambios acumulados: se volvieron a verificar en vivo las versiones de SDK (Python 0.2.137, TS 0.3.229, con nuevas fechas para las anclas); se agregó cobertura de sessions-as-peers (v2.1.224 SendMessage/ListAgents, runners autohospedados, la activación predeterminada del modo automático el 14 de agosto y la recomendación de fijar defaultMode); se añadió una mención a Agent Plugins 1.0.0 en la convergencia entre skills y plugins, con la salvedad de la ausencia de Anthropic; se modificaron las etiquetas de los diagramas de Ralph para indicar contexto nuevo (ahora los modelos admiten 1M de forma nativa); la respuesta del FAQ sobre latencia se acotó al diseño de deliberación; la metadescripción se redujo a 155 caracteres. El título se mantuvo deliberadamente en 61 caracteres: es un activo para el posicionamiento, aunque excede por un carácter el ancho de visualización. 86 87 89
2026-08-01 Corrección de información obsoleta: una afirmación de versión «a julio de 2026» que el resto de la guía ya había superado. El párrafo de Python SDK afirmaba que el paquete había «avanzado a v0.2.111 en PyPI (incluido Claude CLI v2.1.202), y el TypeScript SDK a v0.3.203»: ambas líneas tenían un retraso de 17 versiones, mientras que otras secciones de esta misma guía documentaban correctamente 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 indefinido. La nueva nota 90 cita PyPI, npm y el changelog de Python SDK. No hubo nuevos lanzamientos upstream durante este periodo: 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 permanecieron sin cambios. 90
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 revisar el changelog de claude-agent-sdk-typescript y compararlo con esta guía, se detectó que a la lista de campos de v0.3.216 le faltaban tres: las respuestas de rewindFiles incluyen un recuento opcional skippedLinks para las rutas que las protecciones de seguridad del retroceso se negaron a restaurar o eliminar, y el mensaje de resultado exitoso incluye los campos opcionales user_message_uuid y request_sent_wall_ms para correlacionar la latencia de las solicitudes entre hosts. Se agregaron tanto a la lista del texto como a 75, sin crear una nueva nota al pie. Todo lo demás del intervalo v0.3.215-v0.3.220 ya estaba cubierto, incluido el historial de profundidad de anidamiento de los subagents (se lanzó con 5, se redujo a 1 en v2.1.217 y se estabilizó en 3 en v2.1.219) y el límite de concurrencia de 20; la línea del changelog de SDK que dice «el límite de profundidad se redujo de 5 a 1» es una instantánea obsoleta de un valor cuya evolución posterior esta guía ya registra. Se confirmó que las versiones más recientes de Agent SDK eran 0.3.220 en npm (24 de julio) y 0.2.128 en PyPI; no hubo lanzamientos posteriores durante este periodo. 75
2026-07-27 Corrección de renderizado, sin cambios de contenido. El encabezado de este changelog declaraba dos columnas, mientras que 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 restablece las nueve. Se verificó renderizando la guía con la configuración de markdown del propio sitio y comparando id="fn:N" con id="fnref:N": 77 referencias activas antes, 86 después y cero huérfanas. 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 carencia de citas distinta y aún sin corregir, documentada en su propio informe.
2026-07-25 Guía v1.27: Corrección del valor predeterminado de profundidad de anidamiento (3, no 1), Claude Opus 5 y un cuarto eje de protección. Corrección — la profundidad de creación de subagents vuelve a ser 3 (v2.1.219): «Ahora los subagents pueden crear 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 estabilizó en 3 (v2.1.219); los últimos dos cambios ocurrieron en un plazo de 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 lugar de heredarse. Corrección complementaria: --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 creó; agrupa el texto reenviado por ese id, en vez de suponer que cada línea proviene 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 al activarse; la tabla de eventos ahora incluye 30. sandbox.network.strictAllowlist (v2.1.219): deniega los hosts que no están en la lista de permitidos para los comandos aislados sin solicitar confirmación; ofrece una denegación determinista del tráfico saliente y se combina con sandbox.filesystem.disabled de la versión v2.1.216. Se añadió a la subsección sobre patrones de contención, pues la superficie de configuración por fin refleja 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 pauta de tamaño medio («procura usar menos de 15 agents»), configurable desde cualquier archivo de configuración mediante la nueva clave workflowSizeGuideline (también incluida 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 creaciones, profundidad y concurrencia) pasa a tener cuatro, y 15 por fin está en el mismo orden de magnitud que el presupuesto de deliberación de 12 agents de esta guía, en vez 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 modo rápido 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 de un 0,5 % de la puntuación de Fable 5 en CursorBench 3.2 por la mitad del costo. El modelo agentic predeterminado recomendado en esta guía cambia de Opus 4.8 a Opus 5; Opus 4.7 deja de estar disponible en 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 se resuelve en Opus 5. Solo para el registro de cambios: Py SDK v0.2.127 — las tareas en segundo plano eludían silenciosamente los hooks PreToolUse: query() cerraba stdin en el primer frame result mientras los subagents en segundo plano todavía estaban en ejecución, por lo que sus llamadas a herramientas 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 TS v0.3.208 tratara una interrupción como un hook exitoso; el patrón ahora se identifica en la advertencia sobre 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: cancel_queued opcional 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 el fast_mode_state del modelo usado al crear la instancia 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; 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. Ámbito de managed-settings: las entradas ${VAR} de las listas de permitidos y denegados de MCP administradas ahora se resuelven a partir del entorno de inicio 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 ya generado cuando un turno falla 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 fusiones normativas; la especificación sin estado sigue prevista para el 28 de julio de 2026. 84 85 91
2026-07-24 Guía v1.26: Se incorporó la publicación de Anthropic sobre patrones de contención + Claude Code v2.1.218. Se añadió 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 sobre hipervisores de plataforma (Claude Cowork: framework Apple Virtualization / Windows HCS, con credenciales en el llavero del host y tokens de sesión revocables y de alcance limitado, aplicados mediante un proxy MITM defensivo dentro de la máquina virtual). También se incorporaron los principios de diseño del harness que plantea la publicación: contención primero en la capa del entorno, aislamiento acorde con la capacidad de supervisión del usuario, primitivas ampliamente probadas en lugar de código de aislamiento personalizado, configuración local del proyecto y resultados de herramientas tratados como entradas no confiables, y credenciales fuera del entorno aislado. Solo para el registro de cambios: CC v2.1.218 (22 de julio) — el clasificador del modo automático evalúa las comprobaciones de rm peligroso, & en segundo plano y rutas sospechosas de Windows, en vez de abrir cuadros de diálogo de permisos; en el modo de planificación con modo automático, Bash remite al clasificador aquello que el analizador estático no puede demostrar que sea de solo lectura; los hooks del frontmatter de un agent requieren que la propia carpeta del archivo del agent tenga aceptada la confianza del espacio de trabajo; los skills con context: fork se ejecutan en segundo plano de forma predeterminada (background: false lo desactiva); /code-review se ejecuta como subagent en segundo plano; /deep-research ya no se invoca a sí mismo; el linaje de sesiones bifurcadas se conserva después de la compactación en sesiones sin interfaz/de SDK; Ctrl+B respeta los límites del shell en segundo plano al enviar tareas a segundo plano. TS SDK v0.3.218 (22 de julio): indicador SkillToolOutput.background; api_error_status informa los estados 429/529 durante la transmisión; 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: no hubo 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 los subagents recursivos + límite de concurrencia. Creación anidada desactivada de forma predeterminada: los subagents ya no crean sus propios subagents; la profundidad recursiva predeterminada de cinco niveles de la versión v2.1.172 se mantuvo hasta la 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: se establece un máximo predeterminado de 20 subagents en ejecución simultánea (CLAUDE_CODE_MAX_CONCURRENT_SUBAGENTS), para que un solo mensaje no pueda desplegar sin límite agents en segundo plano. El conjunto de mecanismos de protección propios ahora abarca los tres ejes que controla el presupuesto de creación en el espacio del usuario: creaciones 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, valor predeterminado de 20). Solo para 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 deniegan las nuevas creaciones y se detienen los agents en segundo plano que estén en ejecución); el aislamiento de sesiones en segundo plano normaliza los directorios de trabajo enlazados simbólicamente. Py SDK v0.2.125 incluye CLI v2.1.217 sin cambios en la superficie de SDK; TS SDK v0.3.217 se publica en paralelo. PR #3092 de MCP (fusionado el 21 de julio): corrección normativa que alinea los códigos de error de SEP-2575 con el esquema renumerado del borrador 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: refuerzo 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 e importación entre harnesses. Las reglas con alcance de ruta se anclan al cwd (v2.1.214): las reglas de allow de un solo segmento dir/** (p. ej., Edit(src/**)) aprobaban automáticamente escrituras en cualquier dir/ anidado en cualquier parte del árbol; ahora se anclan únicamente a <cwd>/dir. Del mismo modo, las condiciones if: de los hooks con un solo segmento dir/** ahora se limitan al cwd (escribe **/dir/** para cualquier profundidad); las reglas de deny/ask conservan deliberadamente la coincidencia a cualquier profundidad (protección asimétrica: las reglas de allow fallan de forma segura solicitando confirmación, mientras que las de deny nunca deben permitir por error). El aislamiento mediante worktrees ahora tiene garantías de aplicación (v2.1.216): los subagents en worktrees podían redirigir git al checkout compartido mediante git -C, --git-dir o GIT_DIR/GIT_WORK_TREE; esa vía quedó cerrada. Las sesiones en worktrees ya no terminan en un worktree residual de otro proyecto; las escrituras de flujos de trabajo o tareas programadas ya no siguen un enlace simbólico colocado en .claude; /rewind rechaza enlaces simbólicos y enlaces duros. Reversión de la activación automática de skills (v2.1.215): Claude ya no invoca por sí mismo los skills incluidos /verify y /code-review; ahora requieren invocación explícita. Codex v0.145.0: se estabilizó multi-agent V2, disponible mediante activación voluntaria (modelos de subagents, 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 harnesses que amplía lo incorporado en v0.140.0. Solo en el changelog: herramienta EndConversation de CC v2.1.214; lote de refuerzos de Bash/PowerShell con cierre seguro (las redirecciones de descriptores 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 aprobación automática de help/man, las opciones de redirección del daemon de docker/Podman solicitan confirmación, file -m/-f requiere permiso y se corrigió una evasión en PowerShell 5.1); la salida 2 de un hook bloquea incluso cuando el JSON de stdout no supera la validación del esquema; el frontmatter de memoria incorpora una marca de tiempo ISO modified sin truncamiento silencioso ante un # en línea; OTel incorpora message.uuid/client_request_id/tool_source y 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 prompt y herramientas del agente; los cambios en skills o comandos realizados durante una sesión aparecen en el menú de comandos con barra diagonal sin reiniciar. SDK de TS 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; subclase scheduled-trigger para notificaciones 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 protecciones de seguridad del retroceso se negaron a restaurar o eliminar; los resultados exitosos incluyen user_message_uuid y request_sent_wall_ms para correlacionar entre hosts la latencia de las solicitudes. SDK de Py v0.2.124: corrección para Windows de la clase BatBadBut (rechaza ejecutar .bat/.cmd; los metacaracteres de cmd.exe en resume/session_id generan ValueError; los extra_args que comienzan con guion se vinculan como --flag=value). Refuerzo de Codex v0.145.0: tiempos de espera al iniciar MCP, actualizaciones serializadas de OAuth, detección no bloqueante de OAuth, detección más robusta de eliminaciones forzadas, conservación de los motivos de rechazo e historial experimental paginado de hilos. Preparación de la versión de MCP del 2026-07-28 (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 quedó obsoleto en favor de Streamable HTTP. 74 75 76 77
2026-07-17 Guía v1.23: protecciones contra bucles descontrolados y refuerzo frente a inyecciones en Claude Code v2.1.203–v2.1.212, superficies de protocolo de SDK de TS, borrador de identidad sin estado de MCP y 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 implementado por el usuario ahora cuenta con un 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 minutos pasan automáticamente a segundo plano (CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS). Precedencia entre hooks y el modo automático (v2.1.211): ask de PreToolUse establece como decisión mínima solicitar confirmación (el modo automático no puede anularla para Bash sin sandbox); --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 caracteres bidireccionales, de ancho cero o visualmente similares. v2.1.210: se corrigió que los subagents con aislamiento mediante worktrees modificaran el checkout principal; se reforzó Agent tool contra inyecciones indirectas provenientes del contenido leído por subagents; el clasificador del modo automático usa Sonnet 5 de forma predeterminada y queda fijado durante la sesión; las escrituras que superan el límite de MEMORY.md generan un error en lugar 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 confirmaciones de eliminación catastrófica 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 invención de información (se 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); 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 fuente. SDK de TS v0.3.205–v0.3.208: confirmaciones tipadas de interrupción (still_queued, interrupt_receipt_v1), tramas command_lifecycle, AgentToolCompletedOutput, canUseTool {behavior:'allow'} sin updatedInput; corrección de seguridad de v0.3.208: la cancelación del invocador mientras un hook estaba pendiente se convertía en éxito del hook, lo que permitía ejecutar después de la cancelación herramientas controladas por PreToolUse. Borrador de la especificación de MCP (PR #3002, fusionado el 16 de julio): _meta opcional y autodeclarado en la respuesta io.modelcontextprotocol/serverInfo, además de clientInfo opcional; solo para visualización y registro, y NO DEBE orientar decisiones de seguridad. La especificación final sin estado se publica el 2026-07-28. Codex: herramientas MCP mediante búsqueda de herramientas de forma predeterminada en v0.143.0 (carga diferida de herramientas); modo de aprobación de aplicaciones writes y disponibilidad general de la autenticación interactiva de MCP en v0.144.0; detección ampliada de comandos peligrosos en v0.144.5. Beta alojada de multi-agent de OpenAI: openai-agents-python v0.18.2 (11 de julio) y openai-agents-js v0.13.2 (10 de julio). Solo en el changelog: correcciones de inyección de opciones argv en SDK (TS 0.3.212 / Py 0.2.121: los valores de resume/session_id que comienzan con guion ahora se pasan en formato con signo igual); BashToolOutput.timedOutAfterMs; SDKAssistantMessage.timestamp; corrección del streaming de SessionStart sin interfaz en CC v2.1.204; valores predeterminados de GPT-5.6 en openai-agents; orientación de MCP para reintentar tras el rechazo de Mcp-Param-*. 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 niveles de modelos (esta guía aún recomienda Opus 4.8 como opción predeterminada agéntica 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 lugar de activarlo; 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 de 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 con el código de salida 2; se añadió la detección de direccionamiento erróneo por reutilización de nombres en SendMessage a la nota sobre autoridad entre sesiones; se cargan hasta 5 skills con barra diagonal apilados. v2.1.200: el modo de permisos default aparece como “Manual” (alias manual) en la lista permissionMode de subagents. v2.1.196: se documentaron los modelos predeterminados para toda la organización en la sección de gobernanza; se impidió 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 del matcher de hooks y del clasificador. Claude Code v2.1.195: los matchers de identificadores con guiones realizan coincidencias exactas en lugar de coincidencias por subcadenas (consulta Arquitectura de hooks: semántica de matchers). Claude Code v2.1.193: autoMode.classifyAllShell canaliza todo el shell mediante el clasificador del modo automático, y muestra los motivos de denegación 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 se pueden inspeccionar. Todos los elementos se verificaron con los changelogs 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 la ejecución remota. Se añadieron medidas de protección contra comandos destructivos en modo automático (CC v2.1.183 bloquea estrictamente git reset --hard/checkout -- ./clean -fd/stash drop, git commit --amend en commits que no sean del agente y terraform/pulumi/cdk destroy sin una pila nombrada, a menos que tú lo hayas solicitado) a Consideraciones de seguridad, planteadas como el complemento en el nivel de intención de las reglas en el nivel de parámetros y la evaluación de procesos generados; y ejecutores remotos cifrados mediante un relay Noise (Codex v0.141.0: canales de ejecutores cifrados de extremo a extremo, conservación multiplataforma del cwd y el shell, 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 importación entre herramientas de Codex v0.140.0. Se integró la versión v2.1.178 en el contenido: reglas de permisos en el nivel de parámetros Tool(param:value) con el comodín * (p. ej., 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 los procesos de subagents antes de iniciarlos, lo que cierra la brecha que permitía eludir controles mediante la generación de procesos (Patrones de subagents); carga anidada de .claude/skills + resolución por mayor proximidad para skills/agentes/flujos de trabajo/estilos de salida en árboles .claude/ anidados (Sistema de skills); y la corrección de la coincidencia con especificaciones de servidores MCP de disallowedTools (Campos de configuración de subagents). Se añadieron la portabilidad entre herramientas mediante /import de Codex y la 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 añadió una nota a la subsección Protección contra recursión: ahora los subagents de Claude Code pueden generar sus propios subagents, con hasta 5 niveles de anidamiento, mientras que antes la delegación estaba limitada, en la práctica, a un solo nivel (v2.1.172, 10 de junio). El patrón implementado por el usuario para limitar el presupuesto de generación y la profundidad se replanteó como el control que evita que un árbol de 5 niveles se expanda de forma descontrolada, considerando esos 5 niveles como un límite máximo de la plataforma, no como un 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 del harness. El Sistema de skills incorporó una subsección titulada «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 de barra integrados como una reducción deliberada de la superficie de ataque (v2.1.169). La subsección Arquitectura de hooks de junio añadió el flag --safe-mode (y CLAUDE_CODE_SAFE_MODE), que inicia una sesión con todas las personalizaciones desactivadas — CLAUDE.md, plugins, skills, hooks, MCP — para solucionar problemas en un entorno limpio y aplicar medidas de gobernanza (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 modelo agentic predeterminado 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 prompts a mitad de la sesión. Orquestación multi-agent / Paridad de Codex se reforzó para producción: close_agent pasó a llamarse interrupt_agent (v0.139.0), se añadieron cargas útiles cifradas para mensajes entre agentes, un catálogo v2 de configuraciones de agentes, una caché LRU de residencia de agentes y un cálculo de concurrencia basado en la ejecución activa (v0.138.0), el descubrimiento de AGENTS.md se canalizó a través de los sistemas de archivos de los entornos, 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 las advertencias de inicio de MCP de subagents se limitaron al hilo propietario en lugar de duplicarse en el hilo 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 añadió la subsección «Orientación mediante hooks Stop, 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 terminaste; esta es la razón» y continuar el turno sin un bloque de error del hook (v2.1.163); (2) la mensajería entre sesiones se reforzó para que los mensajes de otra sesión retransmitidos mediante SendMessage ya no conserven la autoridad del usuario de origen; considera los mensajes entrantes entre agentes como datos no confiables (v2.1.166); (3) la configuración fallbackModel encadena hasta tres modelos de respaldo y realiza un único reintento con un modelo alternativo ante errores API no reintentables, mientras que claude agents --json añade 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 junto con cada hilo, establece hide_spawn_agent_metadata en true de forma predeterminada, propaga los eventos principales a los listeners secundarios y añade una extensión v1 para skills con resolución del catálogo en cada turno y eventos de colaboradores del ciclo de vida al iniciar hilos o producirse errores durante los turnos. No hubo cambios en la especificación de AGENTS.md (sigue bajo la administración de Agentic-AI-Foundation, sin un changelog versionado). 59
2026-05-31 Guía v1.15: Parches de Claude Code v2.1.157 + Hermes v0.15.1/v0.15.2. Se añadió 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, y claude plugin init <name> genera allí la estructura inicial de un plugin nuevo con su manifiesto + SKILL.md. La implicación para el harness es concreta: las herramientas de proyecto de alcance reducido ya no tienen que pagar el costo de un manifiesto para residir en el control de versiones; los plugins siguen siendo responsables del formato ZIP incluido e instalable. La misma versión incorpora EnterWorktree para cambiar a mitad de una 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 sin problemas. Hermes Agent v0.15.1 (29 de mayo) es la corrección urgente de Velocity publicada el mismo día: se corrigió el bucle de recarga por errores 401 del panel en modo loopback, Docker ahora requiere HERMES_DASHBOARD_INSECURE=1 de forma explícita, los comandos simples 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 de Skills.sh pasó de 858 → 19.932 entradas mediante el mapa del sitio. Hermes v0.15.2 (29 de mayo) es una corrección urgente exclusiva del empaquetado que incluye los manifiestos 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 cambió los valores predeterminados y añadió primitivas de orquestación: Opus 4.8 ahora es el modelo predeterminado, con esfuerzo alto por defecto y un nuevo /effort xhigh; los dynamic workflows 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 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 skills/comandos elimina herramientas mientras el skill está activo; /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 durante la sesión cuando el principal no está disponible; auto mode ya no requiere consentimiento previo; la configuración administrada pluginSuggestionMarketplaces crea una lista de marketplaces de la organización permitidos 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 los flujos de CLI, permisos de la TUI y sandbox (las configuraciones heredadas se rechazan con instrucciones de migración), añadió búsqueda local en el historial de conversaciones, mejoró la configuración de MCP con selección de entorno por servidor y OAuth para servidores HTTP con transmisión, y permitió que las herramientas de solo lectura de MCP se ejecutaran simultáneamente cuando anuncian readOnlyHint; v0.135.0 añadió diagnósticos más detallados en codex doctor, detalles remotos en /status, edición de objetos de texto de vim, perfiles de permisos con nombre en /permissions y valores predeterminados de Sandbox en SDK de Python. Hermes Agent v0.15.0 (28 de mayo) incluye la versión Velocity: run_agent.py se refactorizó en un 76 % y se distribuyó entre 14 módulos, Kanban multiagente v2 con descomposición automática y topología de enjambre, Bitwarden Secrets Manager en reemplazo de las claves por proveedor mediante un único token de arranque, defensa Promptware contra inyecciones de prompts de la clase Brainworm en tres puntos críticos de seguridad, paquetes de skills, un orquestador de sesiones en la TUI para administrar varias sesiones desde una sola terminal y un session_search 4.500 veces más rápido tras eliminar la dependencia de 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 runtimes de agentes multiinquilino; las herramientas simultáneas de solo lectura de MCP (Codex readOnlyHint) son el patrón adecuado para distribuir en paralelo obtenciones de contexto que no modifican datos; el hook MessageDisplay proporciona a los operadores una superficie de transformación de primera clase que no estaba disponible mediante PostToolUse ni Stop; y el system prompt reducido por defecto elimina la antigua disyuntiva entre el contexto definido por el operador y la estructura provista 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 añadieron indicaciones de harness de v2.1.149 sobre las correcciones a la omisión de permisos en PowerShell, al análisis de permisos de reglas de autorización y variables obsoletas en PowerShell, y a la lista de escritura permitida del sandbox para git worktrees; también se señaló que v2.1.150 solo contiene cambios de infraestructura interna, sin novedades anunciadas para los usuarios. La versión más reciente de PyPI para openai-agents fue 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 el manejo de estados terminales de proveedores.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 añadió la herramienta Workflow, desactivada de forma predeterminada, como primitiva determinista propia para la orquestación multiagente, y se aclaró que los hooks, las pruebas, las puertas de revisión, los presupuestos de creación y los informes de evidencia siguen definiendo el límite de la corrección.52
2026-05-15 Guía v1.11: Revisión de sesiones en segundo plano y confiabilidad de 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 añadieron indicaciones para operadores sobre las nuevas opciones de despacho de claude agents, el valor predeterminado del modo Fast de Opus 4.7, la detección de SKILL.md en la raíz de los plugins, la visibilidad del LSP de los plugins, el comportamiento remoto HTTP/SSE de MCP_TOOL_TIMEOUT y las correcciones de confiabilidad para sesiones en segundo plano, daemons y cachés de plugins.51
2026-05-14 Guía v1.10: Revisión de señalización y delimitación del alcance para operadores 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 añadieron indicaciones sobre hooks para usar terminalSequence como señalización para el operador, no como mecanismo de aplicación obligatoria; 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 y ANTHROPIC_WORKSPACE_ID en la instalación de plugins y la delimitación de la federación de identidades de cargas 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 añadió subagent_type a las indicaciones sobre 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 cuadro de diálogo de permisos, el restablecimiento del estilo personalizado tras sincronizar la configuración, el uso alternativo de paquetes nativos en 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 añadieron los cambios operativos de v2.1.139: Agent View mediante claude agents, ciclos de finalización con /goal, args para hooks de comandos, PostToolUse continueOnBlock, MCP CLAUDE_PROJECT_DIR y una corrección al tiempo activo de OpenTelemetry.424344 Se añadió una advertencia sobre la depuración de la memoria basada en el preprint de arXiv «The Memory Curse», indicaciones sobre la autoridad humana para realizar merges basadas en el preprint de arXiv acerca del ciclo de vida de los PR e indicaciones de seguridad para 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 indicaba un 2 %, para reflejar el presupuesto actual del 1 % / 8.000 caracteres para las descripciones 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 autoMode.hard_deny y 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 OAuth de MCP durante actualizaciones simultáneas, la corrección del bloqueo de escritura en plan mode cuando coincidía una regla de autorización Edit(...), la condición de carrera en la limpieza de caché de los plugins Stop/UserPromptSubmit, la ocultación del directorio predeterminado skills/ por la entrada skills y la obsolescencia de las variables de entorno del hook SessionStart en 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 el confinamiento de openai-agents-python v0.17.0: LocalFile.src / LocalDir.src quedan restringidos 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 administrados frente a autoalojados.41 Solo en el registro de cambios: Claude Code v2.1.137 (corrección de activación de VSCode en Windows), 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 Skill de SDK al 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 de detección de skills de Subagents a la tabla Campos de configuración de Subagents (los subagents ahora detectan los skills del proyecto, del usuario y de los 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 para volver de HEAD local a origin/<default>), sandbox.bwrapPath, sandbox.socatPath y parentSettingsBehavior.39
2026-05-07 Guía v1.5: Claude Managed Agents, expansión del 6 de mayo en SF. Se agregó la Estrategia 5 (Curación administrada 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 agregaron Managed Multiagent Orchestration (beta pública) y Outcomes (beta pública) al principio de Orquestación multiagente, con citas textuales de Anthropic sobre especialistas con un sistema de archivos compartido y el seguimiento en Claude Console, además de una tabla comparativa frente a la deliberación autoalojada. Se agregó una subsección sobre transmisión de eventos de hooks del lado de 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 directorios de proyectos, skill_activated invocation_trigger, corrección de formato al guardar en PostToolUse, corrección del bloqueo de PreToolUse con JSON+código de salida 2, configuración de 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 agregando concurrencia en la ejecución de herramientas del lado de 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ó la cantidad de tipos de hooks de cuatro a cinco con mcp_tool, se eliminó la afirmación sin respaldo de un límite fijo de «10 subagents en paralelo» y se agregó 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 administrados frente a autoalojados con la superficie de SDK especificada en openai-agents Python v0.14.0 (15 de abril): SandboxAgent, Manifest, SandboxRunConfig, memoria del entorno aislado con divulgación progresiva, montajes de espacios de trabajo (S3/R2/GCS/Azure), instantáneas portátiles y backends de cliente locales/Docker/alojados (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 agregó una breve nota sobre claude-agent-sdk-python v0.1.69-v0.1.71 (28-29 de abril) como la tercera opción autoalojada (integrar el entorno de ejecución de Claude Code como una biblioteca de Python): el CLI de Claude incluido se actualizó a v2.1.123, el mínimo de la dependencia mcp se elevó a >=1.19.0 (las versiones anteriores omitían silenciosamente CallToolResult de las herramientas MCP dentro del proceso), se corrigió la cancelación de nursery de Trio y se igualaron los campos de la lista de permitidos de SandboxNetworkConfig con SDK de TS. Los ajustes de SDK en v0.14.7-v0.14.8 se documentaron en [^58].
2026-04-25 Guía v1.2: Google Cloud Next 2026 (22-24 de abril) — Vertex AI pasó a llamarse Gemini Enterprise Agent Platform; Agentspace se integró en Gemini Enterprise unificado; Workspace Studio (creador 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 administrados con Apigee como puente de API a agente; 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 completa 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 ofrece como versión preliminar junto con la superficie estable de la versión 1.0. Salesforce Headless 360 (15 de abril, TDX): todas las capacidades de Salesforce (CRM, servicio, marketing y comercio electrónico) se exponen como herramienta API/MCP/comando 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 Claude Managed Agents: 0,08 USD por hora de sesión mientras esta se encuentra en ejecución, sin cargos por el entorno de ejecución mientras está inactiva, además de las tarifas habituales por tokens del modelo Claude. (Según la página de precios de Claude de Anthropic; el lanzamiento de la beta pública fue el 8 de abril de 2026). Memory for Managed Agents entró en beta pública el 23 de abril de 2026 bajo el encabezado beta managed-agents-2026-04-01. Todos los endpoints de Managed Agents ahora requieren este encabezado beta.
2026-04-16 Guía v1.1: Se agregó la sección Harnesses administrados frente a autoalojados, que abarca Claude Managed Agents (beta del 8 de abril) y la separación entre harness y cómputo de OpenAI Agents SDK (16 de abril). Se agregó Scion, el hipervisor multiagente entre herramientas (7 de abril, Google). Se documentó el hallazgo de M3MAD-Bench sobre el estancamiento del debate. Se agregaron Los cinco principios de los agentes confiables (Anthropic, 9 de abril) y la gobernanza de MCP/AGENTS.md por parte de Linux Foundation. Se incorporó la referencia al entorno aislado 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 conocimiento de necesidades implícitas, que reduce la estructura auxiliar de CLAUDE.md.
2026-03-24 Publicación inicial

Referencias


  1. Andrej Karpathy sobre los «claws» como una nueva capa sobre los agentes LLM. Discusión en HN (406 puntos, 917 comentarios). 

  2. Implementación del autor. 84 hooks, 48 skills, 19 agentes y unas 15.000 líneas de orquestación. Documentada en Claude Code como infraestructura

  3. Anthropic, «Claude Code Hooks: códigos de salida». code.claude.com/docs/en/hooks. Para la mayoría de los eventos, el código de salida 0 permite, el 2 bloquea y el 1 advierte; WorktreeCreate es más estricto. 

  4. Anthropic, «Amplía Claude con Skills». code.claude.com/docs/en/skills. Estructura de las skills, campos de frontmatter, correspondencia basada en LLM y presupuesto de descripción del 1 % o 8.000 caracteres. 

  5. Anthropic, «Claude Code Sub-agents». code.claude.com/docs/en/sub-agents. Contexto aislado, compatibilidad con worktrees y equipos de agentes. 

  6. Anthropic, «Documentación de Claude Code». docs.anthropic.com/en/docs/claude-code. Archivos de memoria, CLAUDE.md y memoria automática. 

  7. 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

  8. Simon Willison, «Ahora escribir código es barato». Patrones de ingeniería agéntica

  9. Laban, Philippe, et al., «Los LLMs se pierden en conversaciones de varios turnos», arXiv:2505.06120, mayo de 2025. Microsoft Research y Salesforce. 15 LLMs, más de 200.000 conversaciones y una disminución promedio del rendimiento del 39 %. 

  10. Mikhail Shilkov, «Análisis interno de Claude Code Skills: estructura, prompts e invocación». mikhail.io. Análisis independiente del descubrimiento de skills, la inyección de contexto y la sección available_skills del prompt. 

  11. Código fuente de Claude Code, SLASH_COMMAND_TOOL_CHAR_BUDGET. github.com/anthropics/claude-code

  12. Anthropic, «Prácticas recomendadas para crear Skills». platform.claude.com. Límite de 500 líneas, archivos de apoyo y convenciones de nomenclatura. 

  13. Anthropic, «Claude Code Hooks: eventos del ciclo de vida». code.claude.com/docs/en/hooks. 31 eventos documentados del ciclo de vida, tipos de hooks, comportamiento de los matchers, hooks asíncronos, hooks HTTP, hooks de prompts, hooks de agentes y hooks de herramientas de MCP. 

  14. Tutorial del autor sobre Claude Code hooks. 5 hooks de producción creados desde cero. Documentado en Tutorial de Claude Code Hooks

  15. Gestión de la ventana de contexto del autor a lo largo de 50 sesiones. Documentada en Gestión de la ventana de contexto

  16. Implementación del Ralph Loop del autor. Iteraciones con contexto nuevo, estado en el sistema de archivos y presupuestos de creación de agentes. Documentada en El Ralph Loop

  17. Arquitectura del sistema de deliberación del autor. 3.500 líneas de Python, 12 módulos, activador por confianza y validación del consenso. Documentada en Creación de sistemas de IA: de RAG a agentes

  18. Nemeth, Charlan, En defensa de los inconformes: el poder del desacuerdo en la vida y los negocios, Basic Books, 2018. 

  19. Wu, H., Li, Z. y Li, L., «¿Realmente pueden debatir los agentes LLM?» arXiv:2511.07784, 2025. 

  20. Liang, T. et al., «Fomento del pensamiento divergente en modelos de lenguaje grandes mediante el debate multiagente», EMNLP 2024

  21. Análisis del autor sobre AGENTS.md en repositorios reales. Documentado en Patrones de AGENTS.md. Consulta también: GitHub Blog, «Cómo escribir un excelente agents.md: lecciones de más de 2.500 repositorios». 

  22. Metodología del autor para el quality loop y el evidence gate. Parte del sistema Jiro Craftsmanship. 

  23. Anthropic, «Descripción general de los agentes administrados de Claude». La beta pública se lanzó 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 de la beta: managed-agents-2026-04-01

  24. 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. Incorpora 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 (locales, Git y remotos: 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, DockerSandboxClient y clientes alojados para Blaxel, Cloudflare, Daytona, E2B, Modal, Runloop y Vercel mediante complementos opcionales. El anuncio del 16 de abril se resumió en Help Net Security

  25. 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

  26. 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 un juez para fidelidad y relevancia. 

  27. 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. 

  28. Permiso Security, «SandyClaw: primer sandbox dinámico para skills de agentes de IA». 2 de abril de 2026. Sandbox para ejecutar skills con detección mediante Sigma, YARA, Nova y Snort, y veredictos respaldados por evidencia. 

  29. Anthropic, «Presentamos Claude Opus 4.7». 16 de abril de 2026. Mejoras para agentes que trabajan en horizontes 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. 

  30. Referencia compuesta — OpenAI openai-agents-python v0.14.7 (28 de abril de 2026) y v0.14.8 (29 de abril de 2026); Anthropic claude-agent-sdk-python v0.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ácticas tool_name/call_id en 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 fuentes LocalFile y eliminación de 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ó cadenas de documentación a los campos de ClaudeAgentOptions y actualizó el CLI incluido a v2.1.121; v0.1.70 elevó la versión mínima de la dependencia mcp a >=1.19.0 (las versiones anteriores descartaban silenciosamente los valores devueltos de CallToolResult por los controladores de herramientas MCP dentro del proceso), corrigió la corrupción del nursery de Trio al cancelar anticipadamente durante la iteración de query() con options.stderr configurado (ahora se usa spawn_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) a SandboxNetworkConfig para mantener la paridad con el esquema de TypeScript, y actualizó el CLI incluido a v2.1.123. 

  31. OpenAI, “Instrucciones personalizadas con AGENTS.md”. Codex lee los archivos globales y del proyecto AGENTS.md / AGENTS.override.md antes de trabajar, combina las directrices desde la raíz hasta el directorio actual y limita los documentos del proyecto mediante project_doc_max_bytes

  32. OpenAI, “Agent Skills”. Los skills de Codex usan SKILL.md, divulgación progresiva, invocación explícita mediante $skill y activación implícita a partir de las descripciones. 

  33. 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. 

  34. OpenAI, “Codex Subagents” y “Registro de cambios de Codex CLI 0.128.0”. Codex admite flujos de trabajo paralelos explícitos con subagents, agentes integrados default, worker y explorer, agentes TOML personalizados, política de sandbox heredada, hooks incluidos en plugins, estado de habilitación de hooks y flujos de trabajo /goal persistentes en 0.128.0. 

  35. Anthropic, “Novedades de Claude Managed Agents”. 6 de mayo de 2026. Dreaming (versión preliminar de investigación): proceso programado en segundo plano que revisa las sesiones de agentes y los almacenes de memoria, extrae patrones y depura los recuerdos. Outcomes (beta pública): evaluación basada en una rúbrica en la que un evaluador independiente califica el resultado según esa rúbrica dentro de su propia ventana de contexto, para evitar que el razonamiento del agente influya en su evaluación. Multiagent Orchestration (beta pública): el agente principal delega partes de una tarea a especialistas, cada uno con su propio modelo, prompt y 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. 

  36. Anthropic, claude-agent-sdk-python v0.1.74. 6 de mayo de 2026. Añade include_hook_events a ClaudeAgentOptions; cuando se configura, el CLI emite los eventos de hooks (PreToolUse, PostToolUse, Stop y otros), que se entregan desde el flujo de mensajes como HookEventMessage, de forma equivalente a includeHookEvents de TypeScript SDK. El Claude CLI incluido se actualizó a v2.1.129. 

  37. Anthropic, claude-agent-sdk-python v0.1.77. 8 de mayo de 2026. Marca como obsoleto el valor "Skill" de allowed_tools en favor de una opción específica skills en ClaudeAgentOptions, proporciona a Claude Code señales más estructuradas sobre los skills disponibles, mejora los mensajes de error de las excepciones Command failed e incluye Claude CLI v2.1.133. 

  38. Anthropic, Claude Code v2.1.132. 6 de mayo de 2026. Añade la variable de entorno CLAUDE_CODE_SESSION_ID a los subprocesos de la herramienta Bash (coincide con el session_id que ya reciben los hooks), CLAUDE_CODE_DISABLE_ALTERNATE_SCREEN para 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 controlado mediante SIGINT, la corrupción de emojis sustitutos con --resume, el flag --permission-mode del modo de planificación, el manejo del cursor con caracteres índicos y ZWJ, las operaciones de vim con NFD, la omisión del pegado cuando comienza con /, el uso ilimitado de memoria de MCP, los reintentos de tools/list de MCP, el error 400 de Bedrock + Vertex con ENABLE_PROMPT_CACHING_1H y la visualización de tokens acumulados en context_window de la línea de estado. 

  39. Anthropic, Claude Code v2.1.133. 7 de mayo de 2026. Los hooks ahora reciben la entrada JSON effort.level y la variable de entorno $CLAUDE_EFFORT (que también puede leerse desde comandos Bash). Los subagents descubren los skills del proyecto, del usuario y de los plugins mediante la herramienta Skill (corrección de una regresión). Nueva configuración administrativa: worktree.baseRef (fresh | head) vuelve a establecer la base del worktree en origin/<default> tras el cambio de v2.1.128 a HEAD local; sandbox.bwrapPath y sandbox.socatPath fijan los binarios del sandbox en Linux/WSL; parentSettingsBehavior ('first-wins' | 'merge') controla cómo se combinan los managedSettings de SDK con la configuración principal. Otras correcciones: error 401 en sesiones paralelas tras una condición de carrera al actualizar el token, alcance de reglas de autorización en la raíz de la unidad, compatibilidad del proxy/mTLS de OAuth de MCP, finalización de la cancelación al detener o interrumpir Remote Control, filtración de /effort entre sesiones y aparición de --remote-control en --help

  40. Anthropic, Claude Code v2.1.136. 8 de mayo de 2026. Añade settings.autoMode.hard_deny para 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, y 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. Correcciones con impacto operativo: servidores MCP de .mcp.json, plugins y conectores de claude.ai que desaparecían silenciosamente después de /clear en VS Code, JetBrains y Agent SDK; pérdida de 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ón Edit(...) coincidente; los hooks Stop/UserPromptSubmit de plugins fallaban cuando la limpieza de caché eliminaba una versión que aún estaba en ejecución; una entrada skills en plugin.json ocultaba el directorio skills/ predeterminado del plugin; las variables de entorno de hooks SessionStart definidas mediante CLAUDE_ENV_FILE quedaban obsoletas después de /resume o /clear. Además, incluye cerca de treinta correcciones adicionales de acabado y confiabilidad que abarcan la TUI, el autocompletado y la representación en la terminal. Versiones complementarias: v2.1.137 (9 de mayo, corrección de activación en Windows para la extensión de VSCode), v2.1.138 (9 de mayo, correcciones internas); claude-agent-sdk-python v0.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. 

  41. OpenAI, openai-agents-python v0.17.0. 8 de mayo de 2026. RealtimeAgent usa gpt-realtime-2 de forma predeterminada. La materialización de fuentes locales del sandbox ahora restringe LocalFile.src y LocalDir.src al interior del base_dir del manifiesto (el directorio de trabajo actual del proceso SDK cuando se aplica el manifiesto), salvo que la fuente se autorice explícitamente mediante Manifest.extra_path_grants con SandboxPathGrant. Las fuentes locales relativas se resuelven desde base_dir; las fuentes absolutas ya deben encontrarse dentro de este o bajo una autorización explícita. Migración: declara las raíces confiables del host en el nivel del manifiesto, preferiblemente como solo lectura. Trata extra_path_grants como configuración confiable de la aplicación; no la completes a partir de resultados del modelo ni de entradas de manifiesto no confiables. También incluye una corrección de colisión de extra_args en la administración del contexto de Responses. 

  42. Anthropic, Claude Code v2.1.139. Mayo de 2026. Evidencia local de la sesión actual del 11 de mayo de 2026: claude --version devolvió 2.1.139 (Claude Code). Las notas de la versión incorporan Agent View (claude agents), /goal, args: string[] para hooks, continueOnBlock para PostToolUse, CLAUDE_PROJECT_DIR para servidores stdio de MCP, interpolación de comandos de plugins con ${CLAUDE_PROJECT_DIR} y correcciones, incluida la emisión de OpenTelemetry de claude_code.active_time.total en el modo --print

  43. Anthropic, “Administrar varios agentes con Agent View”. La documentación de Agent View describe cómo despachar y administrar numerosas sesiones de Claude Code desde una sola pantalla, ver qué hace cada sesión e identificar las que requieren la intervención del operador. La página presenta Agent View como Research Preview y documenta las limitaciones de las sesiones locales. 

  44. 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. 

  45. 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 herramientas que contiene información confidencial». Publicado en mayo de 2026; describe cómo el contenido confidencial de las cargas útiles de file-write permanecía en los registros locales de SQLite con el comportamiento de registro predeterminado y señala que se corrigió en Gryph v0.7.0. 

  46. OSV, GHSA-wxxx-gvqv-xp7p / CVE-2026-40217. «LiteLLM permite escapar del sandbox 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 sandbox creado manualmente, y recomienda actualizar o bloquear el endpoint si no es posible hacerlo. 

  47. Young Jo (seph) Chung y Safwat Hassan, “¿Colaborador o asistente? Cómo los agentes de programación con IA distribuyen el trabajo a lo largo del 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 autonomía operativa de la gobernanza de las fusiones. 

  48. Jiayuan Liu et al., “La maldición de la memoria: cómo una mayor capacidad de recuerdo erosiona la intención cooperativa en los agentes LLM”, arXiv:2605.08060v1, mayo de 2026. El resumen presenta experimentos con 7 LLMs y 4 juegos a lo largo de 500 rondas, en los que ampliar el historial accesible redujo la cooperación en 18 de las 28 combinaciones de modelo y juego. 

  49. Anthropic, Claude Code v2.1.140. 12 de mayo de 2026. Añade subagent_type a la entrada de los hooks de agentes y corrige los hooks ConfigChange, disableAllHooks, allowManagedHooksOnly, la visualización de variables de entorno en el cuadro de diálogo de permisos a partir de los resultados de hooks, el restablecimiento de estilos personalizados después de actualizar la configuración, el mecanismo alternativo de resolución de paquetes nativos en Windows Git Bash y /scroll-speed

  50. Anthropic, Claude Code v2.1.141. 13 de mayo de 2026. Añade terminalSequence a la salida JSON de los hooks para notificaciones de escritorio, títulos de ventanas y alertas sonoras; CLAUDE_CODE_PLUGIN_PREFER_HTTPS para clonar fuentes de plugins HTTPS; ANTHROPIC_WORKSPACE_ID para 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 /feedback para adjuntar sesiones de las últimas 24 horas o 7 días; y correcciones relacionadas con agentes, trabajos en segundo plano, hooks, MCP, Remote Control, el cuadro de diálogo de permisos y la representación en la terminal. Verificación de la sesión actual del 14 de mayo de 2026: claude --version devolvió 2.1.141 (Claude Code) y npm view @anthropic-ai/claude-code version dist-tags.latest time.modified --json devolvió 2.1.141 como versión más reciente. 

  51. Anthropic, Claude Code v2.1.142. 14 de mayo de 2026. Añade a claude agents indicadores de despacho para sesiones en segundo plano (--add-dir, --settings, --mcp-config, --plugin-dir, --permission-mode, --model, --effort, --dangerously-skip-permissions), establece Opus 4.7 como opción predeterminada del modo Fast y permite fijar la versión anterior con CLAUDE_CODE_OPUS_4_6_FAST_MODE_OVERRIDE=1, muestra como skills los archivos SKILL.md ubicados en la raíz de los plugins cuando no existe un directorio skills/, muestra los servidores LSP proporcionados por plugins en los detalles de estos, advierte antes de reemplazar una conexión existente de la aplicación GitHub y corrige problemas relacionados con MCP_TOOL_TIMEOUT, los árboles de trabajo de sesiones en segundo plano, la suspensión y reactivación del daemon, su limpieza posterior a las actualizaciones, la caché de plugins y la confiabilidad de Agent View. Verificación de la sesión actual del 15 de mayo de 2026: claude --version devolvió 2.1.141 (Claude Code) y npm indicó que la versión más reciente era 2.1.142

  52. 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] --comment en sustitución de /simplify, refuerzo del sandbox 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 las restricciones de inicio de sesión empresarial, el comportamiento de PowerShell, la paginación de MCP, Agent View, los plugins, las condiciones de hooks, el texto pegado y los bucles causados por imágenes eliminadas. Verificación de la sesión actual del 21 de mayo de 2026: claude --version devolvió 2.1.144 (Claude Code) y npm view @anthropic-ai/claude-code version dist-tags.latest time.modified --json devolvió 2.1.147 como versión más reciente, con time.modified igual a 2026-05-21T20:38:35.053Z

  53. 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 los códigos de salida de Bash introducida en v2.1.147. v2.1.149 añade a /usage el uso de límites por categoría, desplazamiento con el teclado en /diff, representación de listas de tareas GFM y la opción empresarial allowAllClaudeAiMcps; entre las correcciones pertinentes para el harness se incluyen las omisiones de permisos mediante cd en PowerShell, el análisis de permisos para prefijos, comodines y variables obsoletas de PowerShell, el alcance de la lista de escritura permitida del sandbox para árboles de trabajo de git, el agotamiento de vnodes causado por find de Bash en macOS, los bloqueos durante la aprobación de la configuración administrada, los diagnósticos de espacios en rutas de otelHeadersHelper y la sincronización de cambios de nombre de sesiones de Remote Control. v2.1.150 solo contiene cambios en la infraestructura interna. Verificación de la sesión actual del 24 de mayo de 2026: claude --version local devolvió 2.1.144 (Claude Code), mientras que npm indicó que la versión más reciente era 2.1.150, con time.modified igual a 2026-05-23T04:03:10.243Z; la versión más reciente de GitHub era v2.1.150, publicada el 2026-05-23T04:03:51Z

  54. OpenAI, openai-agents-python v0.17.1, v0.17.2 y v0.17.3. v0.17.1 añade detalles sobre errores de proveedores de sandbox, límites para la extracción de archivos comprimidos, validación de subrutas de GitRepo y correcciones en el seguimiento, las sesiones y las funciones 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 ante herramientas desconocidas en tiempo real. v0.17.3 evita que las credenciales de los puntos de montaje aparezcan en los comandos del sandbox, rechaza las raíces relativas del espacio de trabajo del sandbox, gestiona los estados terminales del sandbox de Vercel y corrige casos límite en el esquema de salida, las barreras de protección, el entorno de ejecución y las importaciones de memoria. Verificación de la sesión actual del 24 de mayo de 2026: python3 -m pip index versions openai-agents devolvió 0.17.3 como versión más reciente; la versión más reciente de GitHub era v0.17.3, publicada el 2026-05-19T01:27:36Z

  55. 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-tools en el frontmatter de skills y comandos, /reload-skills, las salidas reloadSkills y sessionTitle del hook SessionStart, la aplicación de /code-review --fix al árbol de trabajo, la configuración administrada pluginSuggestionMarketplaces, la eliminación de la activación voluntaria del modo automático y el cambio de --fallback-model durante la sesión. La versión v2.1.153 (28 de mayo) hace que /model se guarde como valor predeterminado para sesiones nuevas, con s para aplicarlo solo a la sesión actual; añade skipLfs a los marketplaces de plugins; muestra COLUMNS/LINES en 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 esfuerzo alto por defecto 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 para todos los modelos excepto Haiku/Sonnet/Opus 4.7 y versiones anteriores; permite que claude agents acepte ! <command> para sesiones de shell en segundo plano; permite que los plugins declaren defaultEnabled: false; pasa CLAUDE_CODE_SESSION_ID y CLAUDECODE=1 al entorno de los subprocesos stdio de MCP; y marca CLAUDE_CODE_OPUS_4_6_FAST_MODE_OVERRIDE como obsoleto (se eliminó el 1 de junio). 

  56. Registro de cambios de Codex (OpenAI Developers) y versiones de openai/codex. Codex CLI 0.134.0 (26 de mayo de 2026) añadió la búsqueda local en el historial de conversaciones; convirtió --profile en el selector principal de perfiles para los flujos de CLI, TUI y sandbox, con migración de la configuración heredada; mejoró la configuración de MCP con selección de entorno por servidor, además de OAuth para servidores HTTP con streaming; aumentó la fiabilidad de los esquemas de herramientas de conectores al conservar $ref/$defs locales y compactar los esquemas demasiado grandes antes de exponerlos; y habilitó la ejecución simultánea de herramientas de MCP de solo lectura que anuncian readOnlyHint. Codex CLI 0.135.0 (28 de mayo de 2026) añadió diagnósticos más completos a codex doctor; mostró en /status los 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 /permissions reconociera perfiles de permisos con nombre; incluyó un auxiliar de zsh modificado para las versiones compatibles de macOS y Linux; y añadió ajustes preestablecidos sencillos de Sandbox al Python SDK para los APIs de hilos y turnos. 

  57. Notas de la versión Hermes Agent v0.15.0. «La versión Velocity». 1.302 commits, 747 PR fusionadas y 321 colaboradores de la comunidad. run_agent.py se 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, selección de modelo por tarea, tareas programadas y administración de árboles de trabajo. session_search se rediseñó para ser 4.500 veces más rápido y se eliminó la dependencia LLM. Defensa Promptware contra la inyección de prompts de clase Brainworm en tres puntos críticos de seguridad. Integración con Bitwarden Secrets Manager, que sustituye las claves individuales de cada 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 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 en TTS). 

  58. 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> crea la estructura inicial de un plugin nuevo en ese directorio; /plugin incorporó autocompletado de argumentos. Además, EnterWorktree puede 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 que git worktree remove/prune funcionen correctamente; y los eventos de telemetría tool_decision incluyen tool_parameters cuando OTEL_LOG_TOOL_DETAILS=1. También incluye correcciones de errores para imágenes que no pueden procesarse —que ahora se convierten en marcadores de posición de texto—, solicitudes de permisos de red del sandbox en los modos automático y de omisión, cierre de sesiones en segundo plano al estacionarlas y representación de la terminal en tmux, VS Code, Cursor y Windsurf. 

  59. 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) añadió waitingFor a claude agents --json; v2.1.163 (4 de junio) incorporó hookSpecificOutput.additionalContext para comentarios sin error de Stop/SubagentStop; v2.1.166 (6 de junio) reforzó la autoridad de SendMessage entre sesiones —los mensajes retransmitidos ya no transmiten la autoridad del usuario— y añadió la configuración fallbackModel —hasta tres modelos alternativos 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 hilos, hide_spawn_agent_metadata activado de forma predeterminada y propagación de eventos del agente principal al secundario—, una extensión de skills v1 con resolución del catálogo en cada turno y eventos para colaboradores relacionados con el inicio de hilos y los errores de turno; la documentación de subagents de Codex confirma los tipos de agente default, worker y explorer, así como los controles de concurrencia agents.max_threads/max_depth. AGENTS.md (agents.md) no publica ningún cambio de especificación con versión. Verificación de la sesión actual: 8 de junio de 2026. 

  60. Anthropic, notas de la versión Claude Code v2.1.169 y notas de la versión v2.1.170, 8–9 de junio de 2026. La versión v2.1.169 añade la configuración disableBundledSkills y CLAUDE_CODE_DISABLE_BUNDLED_SKILLS —oculta al modelo las skills, los flujos de trabajo y los comandos de barra diagonal integrados—; la opción --safe-mode y CLAUDE_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é del prompt—. La versión v2.1.170 permite seleccionar Claude Fable 5 (claude-fable-5) mediante /model claude-fable-5, mientras Opus 4.8 continúa siendo el modelo predeterminado de Claude Code para tareas de agentes. Lanzamiento del nivel de modelo: Anthropic, «Claude Fable 5», 9 de junio de 2026 —un nivel de «clase Mythos» superior a Opus, descrito como el modelo más potente de Anthropic que es seguro para uso general—. 

  61. 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 útiles cifradas para mensajes entre agentes, un catálogo v2 de configuración de agentes, una caché LRU de agentes residentes y un cómputo de concurrencia basado en ejecuciones activas en lugar de hilos creados. La versión v0.139.0 cambia el nombre del API del ciclo de vida close_agent a interrupt_agent y limita las advertencias de inicio de MCP de los subagents al hilo propietario, de modo que ya no se dupliquen en el agente principal. La detección de AGENTS.md se refuerza en ambas versiones: la carga pasa por 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. 

  62. Anthropic, notas de la versión Claude Code v2.1.172 (10 de junio de 2026). Los subagents ahora pueden crear sus propios subagents, con delegación recursiva de hasta 5 niveles de profundidad; anteriormente, la delegación se limitaba en la práctica a un solo nivel. 

  63. Anthropic, notas de la versión Claude Code v2.1.175 y notas de la versión v2.1.178, 12–15 de junio de 2026. La versión v2.1.175 añade la configuración administrada enforceAvailableModels —fija el modelo predeterminado e impide que la configuración del usuario o del proyecto amplíe la lista permitida availableModels administrada—. La versión v2.1.178 añade la sintaxis de reglas de permisos Tool(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/skills anidados, con desambiguación <dir>:<name> cuando los nombres coinciden; resuelve los agents, flujos de trabajo y estilos de salida de directorios .claude/ anidados eligiendo en caso de conflicto los más cercanos al directorio de trabajo actual —los flujos de trabajo guardados en el ámbito del proyecto se dirigen al .claude/workflows/ existente más cercano—; evalúa la creación de subagents con el clasificador del modo automático antes de iniciarlos; y corrige que las especificaciones de servidor de MCP (mcp__server, mcp__server__*, mcp__*) en disallowedTools de los subagents se ignoraran silenciosamente. 

  64. 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). Añade /import para 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 mediante codex delete, /delete y thread/delete del servidor de aplicaciones, con mecanismos de confirmación; un menú unificado de menciones con @ para archivos, plugins y skills; y vistas de actividad de tokens en /usage

  65. 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 --amend en commits que el agente no haya creado durante esta sesión y terraform 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. 

  66. 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 matchers de hooks con identificadores que contienen guiones (p. ej., code-reviewer, mcp__brave-search) ahora buscan coincidencias exactas en lugar de subcadenas; usa mcp__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 AST ejecutables 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). 

  67. 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/get ya no inicia servidores .mcp.json autoaprobados por el repositorio en espacios de trabajo que no sean de confianza. v2.1.197 (30 de junio): Claude Sonnet 5 se convierte en el modelo predeterminado incluido (contexto nativo de 1M y precio promocional 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 máximo); los subagents y la compactación heredan la configuración de razonamiento extendido de la sesión; las sesiones claude agents en segundo plano hacen commit, push y abren un borrador de PR después de trabajar con código en un worktree, además de activar el hook Notification con agent_needs_input/agent_completed; se eliminó el asistente /agents (edita .claude/agents/ directamente o pídeselo a Claude). v2.1.199 (2 de julio): las invocaciones apiladas de slash-skills cargan hasta 5 skills iniciales; se detecta el envío erróneo de SendMessage causado por nombres de agentes reutilizados; los hooks SessionStart/Setup/SubagentStart muestran stderr cuando el código de salida es 2. v2.1.200 (3 de julio): el modo de permisos default aparece como «Manual» en CLI, --help, VS Code y JetBrains, y se acepta manual junto con el valor de configuración, que no cambia; los cuadros de diálogo de AskUserQuestion ya no continúan automáticamente de forma predeterminada. v2.1.202 (6 de julio): un control «Dynamic workflow size» en /config; /review <pr> vuelve a una revisión de una sola pasada, mientras que /code-review <level> <pr#> ejecuta la pasada multiagente. Anthropic claude-agent-sdk está en la versión v0.2.111 (6 de julio de 2026; incluye Claude CLI v2.1.202) y el TypeScript @anthropic-ai/claude-agent-sdk, en la versión v0.3.203; las líneas 0.2.x/0.3.x incorporan mejoras incrementales sobre la interfaz documentada de 0.1.x (el trabajo reciente se centra en la limpieza de subprocesos y la fiabilidad de la transmisión NDJSON). Verificación realizada en la sesión actual el 7 de julio de 2026 (PST). 

  68. Registro de cambios de Claude Code (canónico), versiones de GitHub v2.1.207 y v2.1.208, 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/list de MCP incluye los directorios de trabajo adicionales de la sesión y envía notificaciones roots/list_changed; /doctor propone recortar el contenido de CLAUDE.md que pueda deducirse del código base; v2.1.204 también corrigió la transmisión de SessionStart sin interfaz gráfica. v2.1.207: disponibilidad general del modo automático en Amazon Bedrock, Google Vertex AI y Microsoft Foundry, con la configuración administrada disableAutoMode para desactivarlo; CLAUDE_CODE_PROCESS_WRAPPER para iniciadores de procesos corporativos; rondas de uso de herramientas hasta 7 veces más rápidas con 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 para eliminaciones catastróficas prevalecen sobre --dangerously-skip-permissions y el modo automático. 

  69. Registro de cambios de Claude Code (canónico) y versiones de GitHub v2.1.210, v2.1.211 y v2.1.212. 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 por sesión; las escrituras en MEMORY.md que excedan el límite de tamaño generan un error en lugar de truncarse silenciosamente. v2.1.211: las decisiones ask del hook PreToolUse establecen una solicitud de confirmación como resultado mínimo del permiso; el modo automático no puede anularla para permitir Bash sin sandbox; --forward-subagent-text / CLAUDE_CODE_FORWARD_SUBAGENT_TEXT reenvía el texto del subagent a la salida stream-json; las reglas «always allow» 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ámetro mode de Task tool queda obsoleto en favor de heredar el modo de permisos de la sesión principal; /fork crea una nueva sesión en segundo plano y la variante dentro de la sesión pasa a llamarse /subtask; las llamadas de MCP que excedan 2 minutos pasan automáticamente a segundo plano (CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS). 

  70. Anthropic, [versiones v0.3.205–v0.3.208 de TypeScript @anthropic-ai/claude-agent-sdk. Julio de 2026. Confirmaciones tipadas de interrupción (UUID still_queued; capacidad interrupt_receipt_v1 anunciada en system/init); tramas command_lifecycle que informan los estados en cola/iniciado/completado/cancelado/descartado de cada mensaje; tipo AgentToolCompletedOutput; canUseTool puede devolver {behavior: 'allow'} sin updatedInput. Corrección de seguridad en v0.3.208: una cancelación del emisor recibida mientras un hook estaba pendiente se convertía en un resultado exitoso del hook, por lo que las herramientas controladas por un hook PreToolUse podían ejecutarse después de que el emisor cancelara la operación. 

  71. Model Context Protocol, PR #3002. Fusionado el 16 de julio de 2026 en el borrador de la especificación. Añade un objeto opcional io.modelcontextprotocol/serverInfo en _meta de la respuesta y hace que clientInfo sea opcional en las solicitudes, con lo que restaura la identidad del servidor después de que el núcleo sin estado de SEP-2575 eliminara el intercambio de inicialización con estado. La identidad es autodeclarada y no está verificada: está destinada únicamente a mostrarse y registrarse, y NO DEBE fundamentar decisiones de seguridad. La revisión sin estado de la especificación se publicó el 28 de julio de 2026 y es la revisión actual de la especificación (verificada de nuevo el 12 de agosto de 2026). 

  72. 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 lugar de cargar los esquemas por adelantado). 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. 

  73. OpenAI, openai-agents-python v0.18.2 (11 de julio de 2026) y openai-agents-js v0.13.2 (10 de julio de 2026). Ambas versiones incorporan compatibilidad beta con sistemas multiagente alojados —orquestación de múltiples agentes administrada por OpenAI como servicio alojado—, la contraparte de la beta pública de Managed Multiagent Orchestration de Anthropic. 

  74. 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 ruta dir/** 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 autorización como Edit(src/**) para cualquier dir/ anidado en el árbol; las reglas de denegación y consulta conservan la coincidencia a cualquier profundidad. También incluye: la herramienta EndConversation; un conjunto de medidas de refuerzo de permisos para Bash/PowerShell que aplica cierre seguro ante fallas; el código de salida 2 de los hooks bloquea la operación incluso cuando JSON de stdout no supera la validación del esquema; marcas de tiempo ISO modified en el frontmatter de memory sin truncamiento silencioso; y message.uuid, client_request_id, tool_source y CLAUDE_CODE_OTEL_CONTENT_MAX_LENGTH para OTel. v2.1.215: los skills incluidos /verify y /code-review ya no se invocan por sí mismos; 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 de git -C, --git-dir o GIT_DIR/GIT_WORK_TREE; las sesiones de worktree ya no se resuelven hacia un worktree residual de otro proyecto; las escrituras de flujos de trabajo y tareas programadas se rechazan si .claude es un enlace simbólico que apunta fuera del proyecto; /rewind ya no recorre enlaces simbólicos ni enlaces físicos; sandbox.filesystem.disabled permite usar sandboxing únicamente para 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 barras diagonales sin necesidad de reiniciar. Verificado con el registro de cambios canónico el 21 de julio de 2026 (PST). 

  75. Anthropic, versiones v0.3.214–v0.3.216 de @anthropic-ai/claude-agent-sdk para TypeScript y claude-agent-sdk para Python v0.2.124. Julio de 2026. TypeScript: set_permission_mode rechaza los modos desconocidos; aborted: true en mensajes truncados por una interrupción; tool_progress incluye subagent_type y subagent_retry; subcategoría scheduled-trigger para las notificaciones de tareas; fuente "fork" de SessionStart; estructura complementaria tool_result_meta con non_execution_kind y user_feedback; recuento opcional skippedLinks en las respuestas de rewindFiles; campos opcionales user_message_uuid y request_sent_wall_ms en el mensaje de resultado exitoso. Python v0.2.124 (Windows, clase BatBadBut): se niega a ejecutar archivos .bat/.cmd; los metacaracteres de cmd.exe en los valores de resume/session_id provocan un ValueError; los valores de extra_args que comienzan con guion se vinculan como --flag=value

  76. OpenAI, notas de la versión rust-v0.145.0 de Codex CLI, julio de 2026. Estabiliza la interfaz multiagente V2 opcional (modelos de subagentes, niveles de razonamiento y concurrencia configurables; restauración de roles de agentes); amplía /import para 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 para el inicio de MCP, actualizaciones serializadas de OAuth, detección no bloqueante de OAuth, detección más sólida del uso forzado de rm, conservación de los motivos de rechazo e historial experimental paginado de conversaciones. 

  77. Model Context Protocol, PR de documentación de la versión de la especificación #3064, #3066 y #3098, fusionados 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/tasks, en lugar de una función principal, y marcará como obsoleto el transporte HTTP+SSE en favor de Streamable HTTP. 

  78. Registro de cambios de Claude Code (canónico), v2.1.217, 21 de julio de 2026. Los subagents ya no crean subagents anidados de manera predeterminada: configura CLAUDE_CODE_MAX_SUBAGENT_SPAWN_DEPTH para permitir un anidamiento más profundo; se incorpora 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; --max-budget-usd ahora sí detiene los subagents en segundo plano: una vez alcanzado el límite, se impide la creación de nuevos agentes y se detienen los que están ejecutándose en segundo plano; el aislamiento de sesiones en segundo plano normaliza los directorios de trabajo enlazados simbólicamente, lo que elimina una vía de escape desde la carpeta del espacio de trabajo. Verificado con el registro de cambios canónico el 22 de julio de 2026 (PST). 

  79. Anthropic, claude-agent-sdk para Python v0.2.125 y @anthropic-ai/claude-agent-sdk para 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; TS v0.3.217 se publica en paralelo. Ambos heredan los nuevos valores predeterminados de CLI para el anidamiento y la concurrencia de subagents. 

  80. Model Context Protocol, PR #3092, fusionado el 21 de julio de 2026. Corrección normativa que alinea los códigos de error de SEP-2575 con el esquema renumerado del borrador 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. 

  81. Ingeniería de Anthropic, “Cómo contenemos Claude en distintos 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); sandboxing del sistema operativo con supervisión humana (Claude Code: Seatbelt en macOS, bubblewrap en Linux y sandbox-runtime, publicado como código abierto); máquinas virtuales selladas sobre hipervisores de la plataforma (Claude Cowork: framework Apple Virtualization en macOS, HCS en Windows, con el espacio de trabajo y .claude montados, 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 ampliamente probados —hipervisores, seccomp y entornos de ejecución de contenedores— frente a 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 forma independiente, lo que en Cowork se aplica mediante un proxy MITM defensivo dentro de la máquina virtual que rechaza las solicitudes que no incluyen el token aprovisionado de esa misma máquina virtual. 

  82. Registro de cambios de Claude Code (canónico), v2.1.218, 22 de julio de 2026. Las comprobaciones de rm peligroso, & en segundo plano y rutas sospechosas de Windows ya no abren cuadros de diálogo de permisos: el clasificador del modo automático las evalúa; el modo de planificación con modo automático ya no solicita confirmación para los comandos de Bash que el analizador estático no puede demostrar que sean de solo lectura: el clasificador los evalúa; los hooks del frontmatter de un agente requieren que se haya aceptado la confianza del espacio de trabajo para la carpeta donde se encuentra el archivo del agente; los skills con context: fork se ejecutan en segundo plano de forma predeterminada (background: false permite desactivar este comportamiento para cada skill); /code-review se ejecuta como un subagent en segundo plano; /deep-research solo se inicia cuando se invoca manualmente; el linaje de las sesiones bifurcadas se conserva después de la compactación en las sesiones sin interfaz gráfica y de SDK; el envío a segundo plano mediante Ctrl+B aplica los mismos límites del shell en segundo plano que las demás vías. Verificado con el registro de cambios canónico el 24 de julio de 2026 (PST). 

  83. Anthropic, @anthropic-ai/claude-agent-sdk para TypeScript v0.3.218 y claude-agent-sdk para Python v0.2.126, 22 de julio de 2026. TypeScript: indicador SkillToolOutput.background; api_error_status informa errores 429/529 durante la transmisión; canonicalModel y provider en modelUsage. Python: ResultMessage.terminal_reason; entradas tipadas de model_usage con canonicalModel/provider; incluye CLI v2.1.218. 

  84. Registro de cambios 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: «Ahora, los subagents pueden generar subagents anidados hasta una profundidad de 3 de forma predeterminada (antes era 1); establece CLAUDE_CODE_MAX_SUBAGENT_SPAWN_DEPTH=1 para 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.strictAllowlist rechaza los hosts que no estén en la lista de permitidos para los comandos aislados, sin solicitar confirmación; nuevo hook DirectoryAdded, que se activa después de que /add-dir o la solicitud de control register_repo_root de 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 mediante workflowSizeGuideline (la fila correspondiente de /config se oculta cuando lo haces) 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, asociados al id de tool_use del Agent que los generó; mcp_server_errors en el evento de inicio de stream-json sin interfaz, que enumera las entradas de --mcp-config omitidas por la validación de la configuración, con una advertencia al iniciar ejecuciones en la terminal; estado HTTP y texto del error en claude mcp list y /mcp cuando 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 rechazados de MCP se resuelven a partir del entorno de inicio y del entorno de configuración administrada, en lugar del entorno del archivo de configuración; claude -p ya no descarta el texto generado previamente cuando un turno termina debido a un error de API durante la transmisión; CLAUDE_CODE_GIT_BASH_PATH se ignora y muestra una advertencia cuando la ruta no corresponde a un binario de bash/sh; Opus 4.7 se eliminó del modo rápido (/fast ahora se aplica a Opus 5 y Opus 4.8); la skill claude-api incluida usa Opus 5 de forma predeterminada e incorpora una ruta de migración desde Opus 4.8. v2.1.220: solo correcciones de errores y mejoras de confiabilidad. El mecanismo alternativo de Fable-5 en modo automático que recurre al «mejor modelo Opus disponible» se remonta a la versión v2.1.176 y ahora selecciona Opus 5. Verificado con el registro de cambios canónico el 25 de julio de 2026. 

  85. Anthropic, @anthropic-ai/claude-agent-sdk TypeScript v0.3.219 y v0.3.220; claude-agent-sdk Python 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 de hook del ciclo de vida DirectoryAdded; la opción voluntaria cancel_queued de la solicitud de control de interrupción (capacidad interrupt_cancel_queued_v1) cancela los mensajes en cola y pendientes de envío junto con la interrupción; fast_mode_disabled_reason en los mensajes de resultado e inicio; la respuesta de inicialización ya no informa el fast_mode_state del modelo usado al generar el proceso después de cambiar de modelo; se agregaron sandbox.network.strictAllowlist y workflowSizeGuideline a 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 en el primer cuadro result mientras los subagents en segundo plano seguían ejecutándose, lo que provocaba que sus llamadas a herramientas de SDK-MCP fallaran con "Stream closed" y omitieran silenciosamente los hooks PreToolUse; ahora stdin permanece abierto hasta que se completan todas las tareas en curso y llega el cuadro de resultado final (#1103). v0.3.220 / v0.2.128: actualizaciones de paridad con CLI v2.1.220. 

  86. Verificación en los registros, 12 de agosto de 2026: pypi.org/pypi/claude-agent-sdk/json devuelve la versión 0.2.137; registry.npmjs.org/@anthropic-ai/claude-agent-sdk devuelve la etiqueta de distribución latest 0.3.229. 

  87. Notas de la versión Claude Code v2.1.224, 7 de agosto de 2026 (SendMessage/ListAgents entre sesiones, crossSessionInbound, ejecutores autohospedados), con el contrato de la función en code.claude.com/docs/en/cross-session-messaging; y El modo automático ahora es el predeterminado en Claude Code para los planes Pro, Max y Team, Anthropic, 7 de agosto de 2026; vigente desde el 14 de agosto de 2026. Puedes desactivarlo para cada sesión mediante Shift+Tab, fijarlo mediante defaultMode o desactivarlo en toda la organización mediante disableAutoMode

  88. Documentación sobre subagents y notas de la versión Claude Code v2.1.232. Texto literal de la documentación: «Un fork es un subagent que hereda toda la conversación hasta ese momento, en vez de comenzar desde cero. Esto elimina el aislamiento de entrada que normalmente proporcionan los subagents: un fork ve el mismo mensaje del sistema, las mismas herramientas, el mismo modelo y el mismo historial de mensajes que la sesión principal»; «Las llamadas a herramientas del propio fork siguen sin aparecer en tu conversación y solo se devuelve su resultado final»; «Claude Code activa el modo fork de forma predeterminada en las sesiones interactivas y lo mantiene desactivado de forma predeterminada en el modo no interactivo con -p y en el Agent SDK. La configuración interactiva predeterminada requiere Claude Code v2.1.232 o posterior». Mecanismo alternativo del modelo de los compañeros de equipo, según la documentación sobre agent teams: «teammateDefaultModel se eliminó en la versión v2.1.234… Indica el modelo en tu mensaje o configura CLAUDE_CODE_SUBAGENT_MODEL», mientras que, en los demás casos, los compañeros de equipo se ejecutan con «el modelo actual del líder». Consultado el 18 de agosto de 2026. 

  89. Agent Plugins: The Portable Agent Plugin Standard, versión 1.0.0 de la especificación, publicada el 6 de agosto de 2026. Se describe como «el formato de paquete portátil para agentes de IA». Manifiesto plugin.json obligatorio; skills/ opcional (cada subdirectorio inmediato que contenga un SKILL.md es una Agent Skill); mcp.json opcional (stdio, Streamable HTTP, HTTP+SSE heredado); espacios de nombres de cliente con dominio inverso. Clientes iniciales: VS Code, Cursor, GitHub Copilot, ChatGPT y Codex, Kiro; la especificación fue desarrollada por Amazon, Anysphere, GitHub, Microsoft, OpenAI y Vercel, y Google se unió al grupo de responsables de mantenimiento el día del lanzamiento. Anthropic no forma parte de la coalición. 

  90. claude-agent-sdk en PyPI y su CHANGELOG; @anthropic-ai/claude-agent-sdk en npm. Verificado el 1 de agosto de 2026: Python 0.2.128 (registro de cambios: «Se actualizó el Claude CLI incluido a la versión 2.1.220»; requiere mcp<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) tenían un retraso de 17 versiones en cada línea, mientras el resto de esta guía ya incluía las versiones 0.2.128 y 0.3.220. 

  91. 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» a «el doble del precio base de Opus 5» ($10/$50 por MTok, según el registro de cambios 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 es tres veces mayor que la del siguiente mejor modelo»; en OSWorld 2.0 supera «el mejor resultado de Fable 5 por poco más de un tercio del costo». Se lo caracteriza como «un modelo reflexivo y proactivo» que es «mucho mejor para verificar su trabajo e iterar cuidadosamente». 

NORMAL agent-architecture.md EOF