Ejecuta llamadas a herramientas desde código con Code Mode
Prueba Code Mode, una función experimental en la que Claude escribe JavaScript que realiza varias llamadas a herramientas en un solo paso.
Code Mode cambia la forma en que Claude usa sus herramientas. Sin Code Mode, Claude solicita llamadas a herramientas como Bash, Read o Edit directamente y lee cada resultado antes de decidir qué hacer a continuación. Con Code Mode, Claude escribe un fragmento de JavaScript que realiza las llamadas a herramientas, y Claude Code ejecuta ese código en tu sesión.
[!NOTE]
Code Mode es experimental y está desactivado de forma predeterminada. Puede cambiar o eliminarse en cualquier versión. Para compartir comentarios, ejecuta
/feedback.
Cómo funciona Code Mode
En una sesión de Code Mode, sigues describiendo tu tarea en un prompt, y Claude escribe JavaScript para llevarla a cabo. Un solo fragmento de código puede ejecutar comandos en paralelo, usar un resultado en la siguiente llamada y devolver la parte de la salida que Claude necesita leer.
Por ejemplo, si le pides a Claude que aumente un límite de reintentos, Claude podría escribir este código para encontrar el archivo, editarlo y ejecutar las pruebas. La última línea devuelve a Claude la ruta del archivo y la salida de las pruebas:
const files = await $`rg -l "function retryPolicy" src`.text();
const target = files.trim().split("\n")[0];
await edit(target, "maxAttempts: 3", "maxAttempts: 5");
({ edited: target, tests: $`npm test -- retryPolicy`.nothrow() });
En la conversación, ves las llamadas a herramientas, como el diff de la edición, y no el código. Para leer el código, presiona Ctrl+O para abrir el visor de transcripciones. Cada fragmento de código aparece ahí como una fila Code contraída, con una indicación de cómo expandirla.
Cuándo usar Code Mode
Prueba Code Mode en tareas que requieren muchas llamadas a herramientas relacionadas, como:
- Un cambio que se repite en muchos archivos
- Una búsqueda cuyos resultados necesitan filtrarse antes de que Claude los lea
- Varios comandos independientes que pueden ejecutarse al mismo tiempo
Limitaciones de Code Mode
Antes de activar Code Mode, comprueba que puedes aceptar estas limitaciones:
- Reanudación: solo puedes reanudar una sesión de Code Mode en la terminal, con Code Mode activado
- Modo automático: el clasificador del modo automático revisa el código, no cada llamada a herramienta
- Código de larga duración: a menos que el código pueda ejecutarse en segundo plano, esperas a que termine, y se detiene después de diez minutos
- Hooks: puedes ver llamadas a herramientas rechazadas cuando un hook
PreToolUseno puede ejecutarse o se agota su tiempo de espera, y salida de código bloqueada por un hookUserPromptSubmit - Funciones no disponibles: no puedes usar Remote Control, Claude in Chrome ni computer use
- Mover la sesión: no puedes mover la sesión a la aplicación de escritorio ni convertirla en una sesión en segundo plano, y
/forkno puede iniciar una copia en segundo plano
Requisitos
- Versión: Claude Code v2.1.323 o posterior, en cualquiera de los dos canales de versiones. Una versión anterior se inicia sin Code Mode, con o sin el motivo
it isn't open to your account yet - Cuenta: una suscripción a Claude o una cuenta de Console. No puedes usar Code Mode a través de un gateway, Amazon Bedrock, Claude Platform on AWS, Agent Platform de Google Cloud ni Microsoft Foundry
- Organización: tu organización no usa la configuración HIPAA ni la retención cero de datos
- Modelo: Claude Opus 5.5, Sonnet 5.5, Haiku 5.5 o Fable 5.2
- Superficie: una sesión interactiva de
claudeen una terminal. Code Mode no funciona con-p, el Agent SDK, el panel de VS Code, la aplicación de escritorio ni las sesiones en la nube - Instalación: la compilación nativa de Claude Code
- Windows: Git for Windows está instalado
Tampoco puedes iniciar Code Mode con algunos ajustes activados, como un asistente de clave de API, equipos de agentes, exportación de OpenTelemetry o DISABLE_TELEMETRY. Para ver la solución de cada uno, consulta Code Mode no se inicia.
Prueba Code Mode
Activa Code Mode, dale una tarea a Claude y revisa el código que Claude escribió.
1. Comprueba tu versión
Ejecuta claude --version. Si la versión es anterior a v2.1.323, ejecuta claude update. Si estás en el canal stable y la actualización no llega a v2.1.323, espera a que stable se ponga al día o cambia a latest.
2. Inicia Claude Code con Code Mode activado
Establece la variable de entorno CLAUDE_CODE_EXPERIMENTAL_CODE_MODE en 1. Para probar Code Mode, establécela en tu shell. Para activar Code Mode en cada sesión nueva, establécela en tu configuración de usuario.
[tab] macOS, Linux, WSL
CLAUDE_CODE_EXPERIMENTAL_CODE_MODE=1 claude
[tab] Windows PowerShell
$env:CLAUDE_CODE_EXPERIMENTAL_CODE_MODE = "1" claude
[tab] settings.json
Guarda este bloque
enven~/.claude/settings.jsone iniciaclaude:{ "env": { "CLAUDE_CODE_EXPERIMENTAL_CODE_MODE": "1" } }Claude Code ignora esta variable en los archivos de configuración de un proyecto, por lo que un repositorio que clones no puede activar Code Mode por ti.
3. Confirma que quieres Code Mode
Claude Code te pide que confirmes antes de tu primera sesión de Code Mode. Selecciona Yes, turn on Code Mode. Claude Code se reinicia y muestra esta línea cerca de la parte superior de la sesión:
Code Mode (experimental) is on · this session can be resumed only with Code Mode on
Si ves una línea diferente o ninguna, consulta Code Mode no se inicia.
4. Dale a Claude una tarea con muchas llamadas a herramientas
En un proyecto que conozcas, envía un prompt como este:
Read every Markdown file in this project and list the links that point to local files that don't exist.
5. Lee el código que escribió Claude
Presiona Ctrl+O y expande una fila Code para ver el JavaScript detrás de las llamadas a herramientas. Presiona Ctrl+O de nuevo para volver a la conversación.
[!WARNING]
Para reanudar una sesión de Code Mode más tarde, mantén
CLAUDE_CODE_EXPERIMENTAL_CODE_MODEestablecida en1cuando ejecutesclaude --continueoclaude --resume. Con Code Mode desactivado, Claude Code se niega a reanudar la sesión. Las sesiones que iniciaste sin Code Mode se reanudan sin Code Mode, incluso con la variable establecida.
Desactiva Code Mode
Elimina CLAUDE_CODE_EXPERIMENTAL_CODE_MODE de tu shell y de ~/.claude/settings.json, y luego inicia una sesión nueva. También puedes conservar la variable y cambiar su valor a 0 en cualquiera de los dos lugares. Con un 0 en un lugar, Code Mode permanece desactivado aunque establezcas 1 en el otro.
Bloquea Code Mode para tu organización
Agrega CLAUDE_CODE_EXPERIMENTAL_CODE_MODE con el valor 0 a tu configuración administrada para que nadie en tu organización pueda usar Code Mode:
{
"env": {
"CLAUDE_CODE_EXPERIMENTAL_CODE_MODE": "0"
}
}
Los usuarios que estén en una sesión de Code Mode permanecen en ella hasta que salgan o reinicien Claude Code. Después de eso, tus usuarios inician sin Code Mode y no pueden reanudar sus sesiones de Code Mode mientras el 0 esté establecido. No puedes activar Code Mode para tus usuarios desde la configuración administrada.
Permisos y código de larga duración
Tu modo de permisos decide cómo se revisa el código de Claude y si puedes hablar con Claude mientras el código se ejecuta.
Comprobaciones de permisos
Cada llamada a herramienta que realiza el código de Claude pasa por tus reglas de permisos deny y ask y tus hooks PreToolUse. No necesitas cambiar una regla ni un matcher para una herramienta como Bash. Además de las reglas y los hooks, un clasificador revisa el código en el modo automático, y tú respondes a las solicitudes en los modos que preguntan:
- Modo automático: el clasificador revisa cada fragmento de código antes de que se ejecute, no cada llamada a herramienta. No ve los valores calculados en tiempo de ejecución, como una ruta tomada de la salida de una búsqueda, así que mantén reglas o hooks para las llamadas que debas controlar. Aun así, se te puede pedir confirmación cuando se inicia código nuevo mientras se ejecuta código anterior
- Otros modos de permisos: el código se inicia sin revisión, y se te pide confirmación para cada llamada a herramienta que te la pediría en ese modo
Para revisar el código en sí, escribe un hook PreToolUse que coincida con REPL, la herramienta que ejecuta el código de Claude, y lee el JavaScript de tool_input.code.
[!WARNING]
Las reglas de Bash coinciden con el texto del comando, por lo que Claude puede ejecutar un comando denegado en una forma que la regla no detecta, con o sin Code Mode. Para límites que no dependen del texto del comando, consulta sandboxing.
Código de larga duración
Mientras el código ejecuta una compilación o una prueba larga, Claude espera a que termine o lo deja continuar en segundo plano:
- Esperando: Claude responde después de que el código termina, y el código se detiene después de diez minutos, incluido el tiempo que pasas en las solicitudes de permiso
- Segundo plano: puedes seguir hablando con Claude, y el código puede ejecutarse hasta dos horas
Para código en segundo plano, inicia tu sesión en el modo automático o en el modo bypassPermissions. Si Claude sigue esperando, comprueba tu modo actual y cómo iniciaste la sesión:
- Cambiaste a otro modo: presiona
Shift+Tabhasta volver al modo en el que iniciaste - Iniciaste en otro modo, o elegiste la sesión de la lista de
claude --resume: si el modo automático está disponible para ti, sal y luego ejecutaclaude --continue --permission-mode autocon Code Mode activado - Pasaste nombres de herramientas a
--tools: vuelve a iniciar en el modo automático sin ese flag
Solución de problemas
Code Mode no se inicia
Code Mode (experimental) isn't available cerca de la parte superior de la sesión significa que Claude Code se inició sin Code Mode. El motivo aparece en la misma línea, y /status también lo muestra. Busca el motivo en esta tabla, haz el cambio e inicia una sesión nueva. Para un motivo que no aparezca en la lista, revisa los requisitos.
| El motivo incluye | Qué hacer |
|---|---|
it isn't open to your account yet |
Si tu versión es anterior a v2.1.323, actualiza. De lo contrario, comprueba tu conexión de red y vuelve a iniciar. Si el motivo persiste, vuelve a intentarlo otro día |
it only works with the Anthropic API |
Elimina los ajustes que enrutan las solicitudes a través de un proveedor de nube, un gateway o un ANTHROPIC_BASE_URL personalizado |
it doesn't work with an API key helper |
Elimina apiKeyHelper, ANTHROPIC_AUTH_TOKEN y cualquier encabezado Authorization o X-Api-Key en ANTHROPIC_CUSTOM_HEADERS. Luego inicia sesión o establece ANTHROPIC_API_KEY |
it only works with Opus 5.5, Sonnet 5.5 and later models |
Inicia con un modelo compatible, por ejemplo con --model opus. Haiku 5.5 y Fable 5.2 también funcionan |
it doesn't work in background jobs |
Inicia en primer plano, sin --remote-control |
it needs settings that Claude Code downloads from Anthropic |
Elimina la variable que desactiva la obtención de feature flags, como DISABLE_TELEMETRY |
OpenTelemetry is on |
Elimina CLAUDE_CODE_ENABLE_TELEMETRY y ENABLE_BETA_TRACING_DETAILED si puedes trabajar sin la exportación de OpenTelemetry |
it doesn't yet work with an installed mod |
Desactiva el mod que revisa las llamadas a herramientas |
it can't be used together with agent teams yet |
Elimina CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS |
this launch's tool options |
Inicia sin --restricted, agrega REPL a --tools y elimina REPL de --disallowedTools y de tus reglas deny |
couldn't save your answer |
Haz que ~/.claude.json tenga permisos de escritura |
your organization's settings don't allow it |
Pregunta a tu administrador por el ajuste administrado |
Si no ves ninguna línea sobre Code Mode, ejecuta claude --version. Si tu versión es anterior a v2.1.323, actualiza. Luego comprueba que CLAUDE_CODE_EXPERIMENTAL_CODE_MODE sea 1 en tu shell o en tu configuración de usuario, y elimina cualquier 0 de ahí y de cualquier archivo de --settings.
Solicitud de permiso con cuenta regresiva
Cuando Claude inicia más código en el modo automático mientras el código anterior aún se está ejecutando, el código anterior pierde la revisión del clasificador. Claude Code entonces te pregunta por las llamadas restantes del código anterior que necesitarían una revisión. Sin un IDE conectado, la solicitud muestra una cuenta regresiva:
Claude Code will automatically block this request in 1:59, to avoid holding up an unattended session
Responde antes de que termine la cuenta regresiva. De lo contrario, esa llamada se rechaza, y las llamadas posteriores que mostrarían una cuenta regresiva se rechazan sin solicitud. Para volver a ver las solicitudes, envía un mensaje a Claude.
Llamada a herramienta rechazada por un hook
Si Claude informa de una llamada a herramienta rechazada, pídele el texto del error. Estos errores significan que un hook PreToolUse no dio una decisión, lo que rechaza la llamada incluso cuando onFailure no está establecido:
the hook failed: en una llamada desde el código de Claude, tu hook no pudo iniciarse, fue terminado, salió con 126, 127 o un código superior a 128, o devolvió un error HTTP o una salida no válida. Corrige el hookthe hook did not finish: se agotó el tiempo de espera de tu hook en una llamada desde el código de Claude, o en cualquier otra llamada a herramienta una vez que Claude ha ejecutado código en la sesión. Aumenta eltimeoutdel hook
Para permitir que las llamadas continúen cuando un hook command o http falla o se agota su tiempo de espera, establece "onFailure": "continue" en él. Si un hook command sale con un código común como 1, la llamada continúa, a menos que establezcas "onFailure": "block".
Salida de código retenida por un hook
Si Claude informa del motivo de bloqueo de un hook donde esperabas la salida del código de Claude, revisa tus hooks UserPromptSubmit. Cuando el código puede ejecutarse en segundo plano, los hooks command, http y mcp_tool en ese evento también se ejecutan sobre la salida del código. Para dejar pasar la salida, cambia el hook para que no bloquee cuando source en su entrada sea poll_event.
Recursos relacionados
- Modos de permisos: compara el modo automático con los modos que te piden confirmación
- Referencia de hooks: escribe hooks
PreToolUseyUserPromptSubmit - Configuración administrada: aplica una configuración en toda una organización