SpyBara
Go Premium

Documentation 2026-10-08 22:58 UTC to 2026-10-09 15:00 UTC

40 files changed +310 −121. View all changes and history on the product overview
2026
Fri 9 15:58 Thu 8 22:58 Wed 7 23:59 Tue 6 23:59 Mon 5 23:58 Sun 4 23:58 Sat 3 23:57 Fri 2 22:59 Thu 1 23:59
Details

216| Opción | Qué controla | Predeterminado |216| Opción | Qué controla | Predeterminado |

217| :- | :- | :- |217| :- | :- | :- |

218| Máximo de turnos (`max_turns` / `maxTurns`) | Máximo de viajes de ida y vuelta de uso de herramientas | Sin límite |218| Máximo de turnos (`max_turns` / `maxTurns`) | Máximo de viajes de ida y vuelta de uso de herramientas | Sin límite |

219| Presupuesto máximo (`max_budget_usd` / `maxBudgetUsd`) | Costo máximo antes de detener | Sin límite |219| Presupuesto máximo (`max_budget_usd` / `maxBudgetUsd`) | Gasto estimado en el que se detiene el bucle | Sin límite |

220 220 

221Cuando se alcanza cualquiera de los límites, el SDK devuelve un `ResultMessage` con un subtipo de error correspondiente (`error_max_turns` o `error_max_budget_usd`). Vea [Manejar el resultado](#handle-the-result) para cómo verificar estos subtipos y [`ClaudeAgentOptions`](/docs/es/agent-sdk/python#claudeagentoptions) / [`Options`](/docs/es/agent-sdk/typescript#options) para la sintaxis.221Cuando se alcanza cualquiera de los límites, el SDK devuelve un `ResultMessage` con un subtipo de error correspondiente (`error_max_turns` o `error_max_budget_usd`). Vea [Manejar el resultado](#handle-the-result) para cómo verificar estos subtipos y [`ClaudeAgentOptions`](/docs/es/agent-sdk/python#claudeagentoptions) / [`Options`](/docs/es/agent-sdk/typescript#options) para la sintaxis.

222 222 


224 224 

225Con [entrada de transmisión](/docs/es/agent-sdk/streaming-vs-single-mode), un mensaje que aún está en cola cuando un turno termina en el límite de máximo de turnos permanece en cola. Claude Code no lo agrega a la última llamada del modelo de ese turno. Inicia un nuevo turno para el mensaje, y el conteo de máximo de turnos comienza de nuevo para ese turno. El total de presupuesto sigue acumulándose entre mensajes, y una vez que el gasto alcanza `maxBudgetUsd`, los mensajes posteriores en la misma conversación terminan con el resultado `error_max_budget_usd`. Un [`/clear`](/docs/es/agent-sdk/cost-tracking) reinicia el presupuesto.225Con [entrada de transmisión](/docs/es/agent-sdk/streaming-vs-single-mode), un mensaje que aún está en cola cuando un turno termina en el límite de máximo de turnos permanece en cola. Claude Code no lo agrega a la última llamada del modelo de ese turno. Inicia un nuevo turno para el mensaje, y el conteo de máximo de turnos comienza de nuevo para ese turno. El total de presupuesto sigue acumulándose entre mensajes, y una vez que el gasto alcanza `maxBudgetUsd`, los mensajes posteriores en la misma conversación terminan con el resultado `error_max_budget_usd`. Un [`/clear`](/docs/es/agent-sdk/cost-tracking) reinicia el presupuesto.

226 226 

227<h4 id="budget-headroom">

228 Margen del presupuesto

229</h4>

230 

231Claude Code compara el gasto con el límite `max_budget_usd` / `maxBudgetUsd` después de que llegan las respuestas del modelo, porque el costo de cada respuesta proviene del uso de tokens que la API devuelve con ella. La respuesta que alcanza el límite aún se completa y cuenta para [`total_cost_usd`](/docs/es/agent-sdk/cost-tracking#get-the-total-cost-of-a-query). Por lo tanto, el gasto puede superar el límite hasta en el costo de esa respuesta, más lo que gasten los subagentes que aún se estén ejecutando en ese momento antes de detenerse. Deja un margen para esto cuando establezcas el límite.

232 

227<h3 id="effort-level">233<h3 id="effort-level">

228 Nivel de esfuerzo234 Nivel de esfuerzo

229</h3>235</h3>

Details

146| `auto` | Aprobaciones clasificadas por modelo | Un clasificador de modelo revisa acciones como comandos de shell y solicitudes de red, permitiendo o bloqueando cada una que revisa. Consulte [Modo Auto](/docs/es/permission-modes#eliminate-prompts-with-auto-mode) para disponibilidad y el orden de decisión |146| `auto` | Aprobaciones clasificadas por modelo | Un clasificador de modelo revisa acciones como comandos de shell y solicitudes de red, permitiendo o bloqueando cada una que revisa. Consulte [Modo Auto](/docs/es/permission-modes#eliminate-prompts-with-auto-mode) para disponibilidad y el orden de decisión |

147 147 

148<Warning>148<Warning>

149 **Herencia de subagentes:** Un subagente se ejecuta en el modo de permisos de la sesión principal a menos que establezca `permissionMode` en su [`AgentDefinition`](/docs/es/agent-sdk/typescript#agentdefinition) y la sesión principal esté en modo `default`, `dontAsk` o `plan`. Incluso entonces, Claude Code nunca aplica un valor `"bypassPermissions"`. Un subagente se ejecuta en modo `bypassPermissions` solo cuando la sesión principal lo hace. La excepción `bypassPermissions` requiere Claude Code v2.1.267 o posterior.149 **Herencia de subagentes:** Un subagente se ejecuta en el modo de permisos de la sesión principal a menos que establezcas `permissionMode` en su [`AgentDefinition`](/docs/es/agent-sdk/typescript#agentdefinition) y la sesión principal esté en modo `default`, `dontAsk` o `plan`. Incluso entonces, Claude Code nunca aplica un valor `"bypassPermissions"`, y aplica un valor `"auto"` solo cuando el [modo automático está disponible](/docs/es/permission-modes#eliminate-prompts-with-auto-mode) para ese subagente. Un subagente se ejecuta en modo `bypassPermissions` solo cuando la propia sesión principal está en ese modo. La excepción `bypassPermissions` requiere Claude Code v2.1.267 o posterior.

150 150 

151 Los subagentes pueden tener indicaciones del sistema diferentes y un comportamiento menos restringido que su agente principal, por lo que heredar `bypassPermissions` les otorga acceso completo y autónomo al sistema. Las [acciones que ningún modo aprueba automáticamente](/docs/es/permission-modes#actions-no-mode-auto-approves) aún se aplican.151 Los subagentes pueden tener indicaciones del sistema diferentes y un comportamiento menos restringido que su agente principal, por lo que heredar `bypassPermissions` les otorga acceso completo y autónomo al sistema. Las [acciones que ningún modo aprueba automáticamente](/docs/es/permission-modes#actions-no-mode-auto-approves) aún se aplican.

152</Warning>152</Warning>

Details

928| `resume` | `str \| None` | `None` | ID de sesión para reanudar |928| `resume` | `str \| None` | `None` | ID de sesión para reanudar |

929| `session_id` | `str \| None` | `None` | Usar un ID de sesión específico en lugar de uno generado automáticamente. Debe ser un UUID válido. No se puede combinar con `continue_conversation` o `resume` a menos que `fork_session` también esté establecido |929| `session_id` | `str \| None` | `None` | Usar un ID de sesión específico en lugar de uno generado automáticamente. Debe ser un UUID válido. No se puede combinar con `continue_conversation` o `resume` a menos que `fork_session` también esté establecido |

930| `max_turns` | `int \| None` | `None` | Máximo de turnos agénticos (ciclos de ida y vuelta de uso de herramientas) |930| `max_turns` | `int \| None` | `None` | Máximo de turnos agénticos (ciclos de ida y vuelta de uso de herramientas) |

931| `max_budget_usd` | `float \| None` | `None` | Detener la consulta cuando la estimación de costo del lado del cliente alcance este valor en USD. Cuenta solo el gasto propio de la llamada; los totales restaurados de una sesión reanudada no cuentan. Para advertencias de precisión y comportamiento de reinicio, consulta [Rastrear costo y uso](/docs/es/agent-sdk/cost-tracking) |931| `max_budget_usd` | `float \| None` | `None` | Detener la consulta cuando la estimación de costo del lado del cliente alcance este valor en USD. La estimación puede superar este valor, así que [deja margen](/docs/es/agent-sdk/agent-loop#budget-headroom). Cuenta solo el gasto propio de la llamada; los totales restaurados de una sesión reanudada no cuentan. Para advertencias de precisión y comportamiento de reinicio, consulta [Rastrear costo y uso](/docs/es/agent-sdk/cost-tracking) |

932| `disallowed_tools` | `list[str]` | `[]` | Herramientas a denegar. Un nombre simple como `"Bash"` elimina la herramienta del contexto de Claude. Una regla con alcance como `"Bash(rm *)"` deja la herramienta disponible y deniega las llamadas coincidentes en todos los modos de permisos, incluido `bypassPermissions`, para el comando [tal como está escrito](/docs/es/permissions#bash-rule-limits). Consulta [Permisos](/docs/es/agent-sdk/permissions#allow-and-deny-rules) |932| `disallowed_tools` | `list[str]` | `[]` | Herramientas a denegar. Un nombre simple como `"Bash"` elimina la herramienta del contexto de Claude. Una regla con alcance como `"Bash(rm *)"` deja la herramienta disponible y deniega las llamadas coincidentes en todos los modos de permisos, incluido `bypassPermissions`, para el comando [tal como está escrito](/docs/es/permissions#bash-rule-limits). Consulta [Permisos](/docs/es/agent-sdk/permissions#allow-and-deny-rules) |

933| `enable_file_checkpointing` | `bool` | `False` | Habilitar el seguimiento de cambios de archivos para rebobinar. Consulta [Checkpointing de archivos](/docs/es/agent-sdk/file-checkpointing) |933| `enable_file_checkpointing` | `bool` | `False` | Habilitar el seguimiento de cambios de archivos para rebobinar. Consulta [Checkpointing de archivos](/docs/es/agent-sdk/file-checkpointing) |

934| `model` | `str \| None` | `None` | Alias de modelo de Claude o nombre de modelo completo. Consulta [valores aceptados e IDs específicos del proveedor](/docs/es/model-config#available-models) |934| `model` | `str \| None` | `None` | Alias de modelo de Claude o nombre de modelo completo. Consulta [valores aceptados e IDs específicos del proveedor](/docs/es/model-config#available-models) |


3327{3327{

3328 "url": str, # The URL to fetch content from3328 "url": str, # The URL to fetch content from

3329 "prompt": str, # The prompt to run on the fetched content3329 "prompt": str, # The prompt to run on the fetched content

3330 "offset": int | None, # Number of characters to skip from the start of the page. Requires Python Agent SDK 0.2.164 or later

3330}3331}

3331```3332```

3332 3333 

Details

323 Detectar invocación de subagente323 Detectar invocación de subagente

324</h2>324</h2>

325 325 

326Claude invoca subagentes a través de la herramienta Agent. Para detectar cuándo se invoca un subagente, busque bloques `tool_use` donde `name` sea `"Agent"`. Los mensajes desde dentro del contexto de un subagente incluyen un campo `parent_tool_use_id`.326Claude invoca subagentes a través de la herramienta Agent. Para detectar cuándo se invoca un subagente, busca bloques `tool_use` donde `name` sea `"Agent"`.

327 

328Los mensajes desde dentro del contexto de un subagente incluyen un campo `parent_tool_use_id`. En TypeScript, cada mensaje de asistente y de usuario que produce un subagente también incluye [`agent_id`](/docs/es/agent-sdk/typescript#sdkassistantmessage): el `task_id` de los [eventos de tarea](/docs/es/agent-sdk/typescript#sdktaskstartedmessage) de ese subagente. `agent_id` requiere TypeScript Agent SDK v0.3.292 o posterior.

327 329 

328<Note>330<Note>

329 La herramienta aparece como `"Agent"` en bloques `tool_use` pero como `"Task"` en la lista de herramientas `system:init`. Antes de Claude Code v2.1.63, los bloques `tool_use` también la nombraban `"Task"`. Para mantener la detección funcionando en todas las versiones del SDK, haga coincidir ambos valores en `block.name`.331 La herramienta aparece como `"Agent"` en bloques `tool_use` pero como `"Task"` en la lista de herramientas `system:init`. Antes de Claude Code v2.1.63, los bloques `tool_use` también la nombraban `"Task"`. Para mantener la detección funcionando en todas las versiones del SDK, haga coincidir ambos valores en `block.name`.


331 333 

332La estructura del mensaje difiere entre SDKs. En Python, accede a los bloques de contenido directamente a través de `message.content`. En TypeScript, `SDKAssistantMessage` envuelve el mensaje de la API de Claude, por lo que accede al contenido a través de `message.message.content`.334La estructura del mensaje difiere entre SDKs. En Python, accede a los bloques de contenido directamente a través de `message.content`. En TypeScript, `SDKAssistantMessage` envuelve el mensaje de la API de Claude, por lo que accede al contenido a través de `message.message.content`.

333 335 

334Este ejemplo itera a través de mensajes transmitidos, registrando cuándo se invoca un subagente y cuándo los mensajes posteriores se originan desde dentro del contexto de ejecución de ese subagente.336Este ejemplo itera a través de mensajes transmitidos, registrando cuándo se invoca un subagente y cuándo los mensajes posteriores se originan desde dentro del contexto de ejecución de ese subagente. La versión de TypeScript también registra el `agent_id` de cada mensaje de subagente que lo incluye.

335 337 

336<CodeGroup>338<CodeGroup>

337 ```python Python theme={null}339 ```python Python theme={null}


403 // Check if this message is from within a subagent's context405 // Check if this message is from within a subagent's context

404 if (msg.parent_tool_use_id) {406 if (msg.parent_tool_use_id) {

405 console.log(" (running inside subagent)");407 console.log(" (running inside subagent)");

408 // On assistant and user messages, agent_id matches the task_id

409 // on that subagent's task_started and other task events

410 if (msg.agent_id) {

411 console.log(` agent_id: ${msg.agent_id}`);

412 }

406 }413 }

407 414 

408 if ("result" in message) {415 if ("result" in message) {

Details

569| `includePartialMessages` | `boolean` | `false` | Incluye eventos de mensajes parciales |569| `includePartialMessages` | `boolean` | `false` | Incluye eventos de mensajes parciales |

570| `loadTimeoutMs` | `number` | `60000` | *Alfa.* Tiempo de espera en milisegundos para cada llamada a `sessionStore.load()` y `sessionStore.listSubkeys()` durante la materialización de la reanudación. Si el adaptador no se resuelve dentro de este intervalo, la consulta falla en lugar de quedarse colgada. Se ignora cuando `sessionStore` no está establecido |570| `loadTimeoutMs` | `number` | `60000` | *Alfa.* Tiempo de espera en milisegundos para cada llamada a `sessionStore.load()` y `sessionStore.listSubkeys()` durante la materialización de la reanudación. Si el adaptador no se resuelve dentro de este intervalo, la consulta falla en lugar de quedarse colgada. Se ignora cuando `sessionStore` no está establecido |

571| `managedSettings` | `Settings` | `undefined` | Configuración de nivel de política que tu proceso host proporciona a la sesión generada. En máquinas con configuración administrada implementada por un administrador, Claude Code la ignora a menos que la fuente administrada de mayor prioridad del administrador establezca `parentSettingsBehavior: 'merge'`, y nunca la combina mientras un [`policyHelper`](/docs/es/settings-reference#policyhelper) proporcione configuración administrada. Los valores combinados pasan por un filtro solo restrictivo; [Restringir la configuración principal](/docs/es/claude-apps-gateway#restrict-parent-settings) explica lo que admite el filtro y los bloqueos `allowManaged*Only`. Un host que establece [`CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST`](/docs/es/env-vars) hace que, en cambio, se lean tres claves directamente de este payload: su [configuración de modelos](/docs/es/model-config#restrict-model-selection) en Claude Code v2.1.222 o posterior, [`modelPricing`](/docs/es/settings-reference#modelpricing) cuando ninguna fuente administrada lo establece en v2.1.246 o posterior, y su entrada env `ENABLE_TOOL_SEARCH` en v2.1.247 o posterior |571| `managedSettings` | `Settings` | `undefined` | Configuración de nivel de política que tu proceso host proporciona a la sesión generada. En máquinas con configuración administrada implementada por un administrador, Claude Code la ignora a menos que la fuente administrada de mayor prioridad del administrador establezca `parentSettingsBehavior: 'merge'`, y nunca la combina mientras un [`policyHelper`](/docs/es/settings-reference#policyhelper) proporcione configuración administrada. Los valores combinados pasan por un filtro solo restrictivo; [Restringir la configuración principal](/docs/es/claude-apps-gateway#restrict-parent-settings) explica lo que admite el filtro y los bloqueos `allowManaged*Only`. Un host que establece [`CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST`](/docs/es/env-vars) hace que, en cambio, se lean tres claves directamente de este payload: su [configuración de modelos](/docs/es/model-config#restrict-model-selection) en Claude Code v2.1.222 o posterior, [`modelPricing`](/docs/es/settings-reference#modelpricing) cuando ninguna fuente administrada lo establece en v2.1.246 o posterior, y su entrada env `ENABLE_TOOL_SEARCH` en v2.1.247 o posterior |

572| `maxBudgetUsd` | `number` | `undefined` | Detiene la consulta cuando la estimación de costo del lado del cliente alcanza este valor en USD. Cuenta solo el gasto propio de la llamada; los totales restaurados de una sesión reanudada no cuentan. Para las advertencias sobre precisión y el comportamiento de restablecimiento, consulta [Seguimiento de costos y uso](/docs/es/agent-sdk/cost-tracking) |572| `maxBudgetUsd` | `number` | `undefined` | Detiene la consulta cuando la estimación de costo del lado del cliente alcanza este valor en USD. La estimación puede superar este valor, así que [deja margen](/docs/es/agent-sdk/agent-loop#budget-headroom). Solo cuenta el gasto propio de la llamada; los totales restaurados de una sesión reanudada no cuentan. Para advertencias sobre la precisión y el comportamiento de restablecimiento, consulta [Seguimiento de costos y uso](/docs/es/agent-sdk/cost-tracking) |

573| `maxThinkingTokens` | `number` | `undefined` | *Obsoleto:* usa `thinking` en su lugar. Máximo de tokens para el proceso de pensamiento |573| `maxThinkingTokens` | `number` | `undefined` | *Obsoleto:* usa `thinking` en su lugar. Máximo de tokens para el proceso de pensamiento |

574| `maxTurns` | `number` | `undefined` | Máximo de turnos agénticos (ciclos de ida y vuelta de uso de herramientas) |574| `maxTurns` | `number` | `undefined` | Máximo de turnos agénticos (ciclos de ida y vuelta de uso de herramientas) |

575| `mcpServers` | `Record<string, [`McpServerConfig`](#mcpserverconfig)>` | `{}` | Configuraciones de servidores MCP |575| `mcpServers` | `Record<string, [`McpServerConfig`](#mcpserverconfig)>` | `{}` | Configuraciones de servidores MCP |


1561 parent_tool_use_id: string | null;1561 parent_tool_use_id: string | null;

1562 error?: SDKAssistantMessageError;1562 error?: SDKAssistantMessageError;

1563 aborted?: true;1563 aborted?: true;

1564 agent_id?: string;

1564 timestamp?: string;1565 timestamp?: string;

1565 context_usage?: SDKContextUsage;1566 context_usage?: SDKContextUsage;

1566 user_message_uuid?: string;1567 user_message_uuid?: string;


1580 1581 

1581`aborted` es `true` cuando una interrupción o cancelación truncó el mensaje del asistente antes de que el stream se completara: el mensaje no tiene `stop_reason` y el contenido puede terminar a mitad de una palabra. El campo está ausente en los mensajes que se completaron normalmente. Requiere Agent SDK v0.3.214 o posterior.1582`aborted` es `true` cuando una interrupción o cancelación truncó el mensaje del asistente antes de que el stream se completara: el mensaje no tiene `stop_reason` y el contenido puede terminar a mitad de una palabra. El campo está ausente en los mensajes que se completaron normalmente. Requiere Agent SDK v0.3.214 o posterior.

1582 1583 

1584`agent_id` identifica el subagente que produjo el mensaje y está ausente en los mensajes del hilo principal. El valor es igual al `task_id` del evento [`task_started`](#sdktaskstartedmessage) de ese subagente y de sus demás eventos de tarea, y no cambia cuando el subagente se [reanuda](/docs/es/agent-sdk/subagents#resume-subagents). El campo requiere Agent SDK v0.3.292 o posterior.

1585 

1586Asocia los mensajes de un subagente con sus eventos de tarea mediante `agent_id`, en lugar de emparejar el `parent_tool_use_id` de un mensaje con el `tool_use_id` de un evento de tarea. Cuando una llamada a herramienta reanuda el subagente, los eventos de tarea llevan el `tool_use_id` de esa llamada, mientras que los mensajes conservan el `parent_tool_use_id` de la llamada a herramienta que inició el subagente por primera vez, así que ambos ya no coinciden.

1587 

1583Claude Code establece `user_message_uuid` y `user_message_uuids` en el primer mensaje del asistente del turno, bajo las condiciones descritas en [`user_message_uuid`](#user_message_uuid). Cuando Claude Code vuelve a ejecutar un turno que un reinicio interrumpió, los mensajes del asistente de la nueva ejecución que llevan esos campos también llevan [`resume_reason`](#resume_reason).1588Claude Code establece `user_message_uuid` y `user_message_uuids` en el primer mensaje del asistente del turno, bajo las condiciones descritas en [`user_message_uuid`](#user_message_uuid). Cuando Claude Code vuelve a ejecutar un turno que un reinicio interrumpió, los mensajes del asistente de la nueva ejecución que llevan esos campos también llevan [`resume_reason`](#resume_reason).

1584 1589 

1585`timestamp` es la hora ISO 8601 en que el contenido del mensaje terminó de generarse en el proceso que lo produjo. El valor proviene del reloj de esa máquina, así que úsalo solo para mostrarlo y no ordenes los mensajes según él. Un turno de API puede producir varios mensajes del asistente que comparten un `message.id`, cada uno con su propio `timestamp`. Cuando el campo está ausente, recurre a la hora en que recibiste el mensaje.1590`timestamp` es la hora ISO 8601 en que el contenido del mensaje terminó de generarse en el proceso que lo produjo. El valor proviene del reloj de esa máquina, así que úsalo solo para mostrarlo y no ordenes los mensajes según él. Un turno de API puede producir varios mensajes del asistente que comparten un `message.id`, cada uno con su propio `timestamp`. Cuando el campo está ausente, recurre a la hora en que recibiste el mensaje.


1597 type: "user";1602 type: "user";

1598 uuid?: UUID;1603 uuid?: UUID;

1599 session_id?: string;1604 session_id?: string;

1605 agent_id?: string;

1600 message: MessageParam; // From Anthropic SDK1606 message: MessageParam; // From Anthropic SDK

1601 pasted_content?: MessageParam["content"][];1607 pasted_content?: MessageParam["content"][];

1602 parent_tool_use_id: string | null;1608 parent_tool_use_id: string | null;


1636};1642};

1637```1643```

1638 1644 

1645Un mensaje de usuario que produce un subagente, como el `tool_result` de una de sus propias llamadas a herramientas, lleva `agent_id`. Consulta [`SDKAssistantMessage`](#sdkassistantmessage), que define el campo y su requisito de versión.

1646 

1639En un mensaje que lleva un bloque `tool_result`, `tool_use_result` es el objeto de salida estructurada de la herramienta y no el texto enviado al modelo. Su forma depende de la herramienta nombrada por el bloque `tool_use` correspondiente, por lo que el campo tiene el tipo `unknown`; las formas integradas se enumeran en [Tipos de salida de herramientas](#tool-output-types). Estos resultados requieren un manejo más allá de su forma listada:1647En un mensaje que lleva un bloque `tool_result`, `tool_use_result` es el objeto de salida estructurada de la herramienta y no el texto enviado al modelo. Su forma depende de la herramienta nombrada por el bloque `tool_use` correspondiente, por lo que el campo tiene el tipo `unknown`; las formas integradas se enumeran en [Tipos de salida de herramientas](#tool-output-types). Estos resultados requieren un manejo más allá de su forma listada:

1640 1648 

1641* La herramienta `Agent`: `tool_use_result` es [`AgentOutput`](#agent-2). Renderiza a partir de él en lugar de analizar el texto de `tool_result`. El `content` de un resultado `completed` contiene el informe del subagente o, para un subagente cuyo informe pasa por una llamada a la herramienta `SubagentHandback`, una nota breve sobre esa entrega en lugar del informe. En [modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode) en Claude Code v2.1.271 o posterior, todo subagente que produce un resultado `completed` informa de esa manera a menos que sea un [fork](/docs/es/sub-agents#fork-the-current-conversation), y Claude recibe el informe como un mensaje separado del subagente.1649* La herramienta `Agent`: `tool_use_result` es [`AgentOutput`](#agent-2). Renderiza a partir de él en lugar de analizar el texto de `tool_result`. El `content` de un resultado `completed` contiene el informe del subagente o, para un subagente cuyo informe pasa por una llamada a la herramienta `SubagentHandback`, una nota breve sobre esa entrega en lugar del informe. En [modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode) en Claude Code v2.1.271 o posterior, todo subagente que produce un resultado `completed` informa de esa manera a menos que sea un [fork](/docs/es/sub-agents#fork-the-current-conversation), y Claude recibe el informe como un mensaje separado del subagente.


1992 `SDKPartialAssistantMessage`2000 `SDKPartialAssistantMessage`

1993</h3>2001</h3>

1994 2002 

1995Mensaje parcial en streaming (solo cuando `includePartialMessages` es true). El campo `parent_tool_use_id` siempre es `null`: los eventos de streaming se emiten solo para la sesión principal. Para atribuir contenido a subagentes, usa los mensajes completos, que llevan `parent_tool_use_id`, o habilita [`forwardSubagentText`](#options) para recibir el texto y el pensamiento de los subagentes como mensajes completos.2003Mensaje parcial en streaming (solo cuando `includePartialMessages` es true).

2004 

2005El campo `parent_tool_use_id` siempre es `null`: los eventos de stream se emiten solo para la sesión principal. Para atribuir a subagentes, usa los mensajes completos, que llevan [`agent_id`](#sdkassistantmessage) y `parent_tool_use_id`, o habilita [`forwardSubagentText`](#options) para recibir el texto y el pensamiento de los subagentes como mensajes completos.

1996 2006 

1997```typescript theme={null}2007```typescript theme={null}

1998type SDKPartialAssistantMessage = {2008type SDKPartialAssistantMessage = {


3415type WebFetchInput = {3425type WebFetchInput = {

3416 url: string;3426 url: string;

3417 prompt: string;3427 prompt: string;

3428 offset?: number;

3418};3429};

3419```3430```

3420 3431 

3421Obtiene contenido de una URL y lo procesa con un modelo de IA.3432Obtiene contenido de una URL y lo procesa con un modelo de IA.

3422 3433 

3434`offset` es el número de caracteres que se omiten desde el inicio de la página. Claude lo establece para seguir leyendo una página larga. El campo requiere Agent SDK v0.3.290 o posterior.

3435 

3423<h3 id="websearch">3436<h3 id="websearch">

3424 WebSearch3437 WebSearch

3425</h3>3438</h3>


5774 task_type?: string;5787 task_type?: string;

5775 is_backgrounded?: boolean;5788 is_backgrounded?: boolean;

5776 spawn_depth?: number;5789 spawn_depth?: number;

5790 parent_task_id?: string;

5777 ambient?: boolean;5791 ambient?: boolean;

5778 uuid: UUID;5792 uuid: UUID;

5779 session_id: string;5793 session_id: string;


5791 5805 

5792Un [subagente reanudado](/docs/es/agent-sdk/subagents#resume-subagents) siempre reporta `is_backgrounded: true`, porque Claude Code ejecuta todos los subagentes reanudados en segundo plano. Cuando una tarea en primer plano pasa más tarde a segundo plano, Claude Code reporta el nuevo valor de `is_backgrounded` en un mensaje [`task_updated`](#sdktaskupdatedmessage) en lugar de enviar un segundo `task_started`.5806Un [subagente reanudado](/docs/es/agent-sdk/subagents#resume-subagents) siempre reporta `is_backgrounded: true`, porque Claude Code ejecuta todos los subagentes reanudados en segundo plano. Cuando una tarea en primer plano pasa más tarde a segundo plano, Claude Code reporta el nuevo valor de `is_backgrounded` en un mensaje [`task_updated`](#sdktaskupdatedmessage) en lugar de enviar un segundo `task_started`.

5793 5807 

5808`parent_task_id` contiene el `task_id` del subagente que lanzó esta tarea. Úsalo para agrupar cada tarea bajo el subagente que la inició. Claude Code lo establece en tareas de subagente, Bash y [Monitor](#monitor). El campo requiere Agent SDK v0.3.292 o posterior. Está ausente cuando:

5809 

5810* El hilo principal lanzó la tarea

5811* Claude Code ya no rastrea la tarea padre

5812* Un [compañero de equipo](/docs/es/agent-teams) o un agente dentro de un flujo de trabajo lanzó la tarea

5813 

5814La tarea padre puede ser una tarea en primer plano o una que ya terminó, así que trata un ID que no reconozcas como si no hubiera padre.

5815 

5794<h3 id="sdktaskprogressmessage">5816<h3 id="sdktaskprogressmessage">

5795 `SDKTaskProgressMessage`5817 `SDKTaskProgressMessage`

5796</h3>5818</h3>


5847 `SDKBackgroundTasksChangedMessage`5869 `SDKBackgroundTasksChangedMessage`

5848</h3>5870</h3>

5849 5871 

5850Se emite siempre que cambia el conjunto de tareas en segundo plano activas: una tarea comienza, se completa o se termina, un agente en primer plano pasa a segundo plano, o cambia el campo `description` o `ambient` de una tarea.5872Se emite siempre que cambia el conjunto de tareas en segundo plano activas: una tarea comienza, se completa o se termina, un agente en primer plano pasa a segundo plano, o cambia el campo `description`, `ambient` o `parent_task_id` de una tarea. Para el campo `parent_task_id` de cada entrada, consulta [`SDKTaskStartedMessage`](#sdktaskstartedmessage), que lo define junto con su requisito de versión.

5851 5873 

5852El array `tasks` es el conjunto activo completo. Reemplaza cualquier conjunto en caché con cada payload en lugar de emparejar eventos `task_started` y `task_notification`, para que el siguiente cambio de membresía corrija cualquier evento que te hayas perdido.5874El array `tasks` es el conjunto activo completo. Reemplaza cualquier conjunto en caché con cada payload en lugar de emparejar eventos `task_started` y `task_notification`, para que el siguiente cambio de membresía corrija cualquier evento que te hayas perdido.

5853 5875 

5854El orden relativo a esos eventos por tarea no está especificado, así que no correlaciones los dos flujos.5876Cuando una tarea termina, sus mensajes [`task_updated`](#sdktaskupdatedmessage) y [`task_notification`](#sdktasknotificationmessage) llegan antes del `background_tasks_changed` que la quita de la lista. Fuera de eso, el orden relativo a los eventos por tarea no está especificado.

5855 5877 

5856No se emite nada al inicio. Restablece a un conjunto vacío cada vez que el proceso de CLI de la sesión se inicie o reinicie, y deja que el siguiente cambio de membresía lo vuelva a llenar.5878No se emite nada al inicio. Restablece a un conjunto vacío cada vez que el proceso de CLI de la sesión se inicie o reinicie, y deja que el siguiente cambio de membresía lo vuelva a llenar.

5857 5879 


5868 task_type: string;5890 task_type: string;

5869 subagent_type?: string;5891 subagent_type?: string;

5870 description: string;5892 description: string;

5893 parent_task_id?: string;

5871 ambient?: boolean;5894 ambient?: boolean;

5872 }[];5895 }[];

5873 uuid: UUID;5896 uuid: UUID;

Details

36 ```36 ```

37 37 

38 ```typescript TypeScript theme={null}38 ```typescript TypeScript theme={null}

39 async function handleToolRequest(toolName, input, options) {39 import type { CanUseTool } from "@anthropic-ai/claude-agent-sdk";

40 

41 const handleToolRequest: CanUseTool = async (toolName, input, options) => {

40 // options includes { signal: AbortSignal, suggestions?: PermissionUpdate[] }42 // options includes { signal: AbortSignal, suggestions?: PermissionUpdate[] }

41 // Solicitar al usuario y devolver permitir o denegar43 // Solicitar al usuario aquí y luego devolver permitir o denegar

42 }44 return { behavior: "deny", message: "User declined" };

45 };

43 46 

44 const options = { canUseTool: handleToolRequest };47 const options = { canUseTool: handleToolRequest };

45 ```48 ```


437 for await (const message of query({440 for await (const message of query({

438 prompt: "Analyze this codebase",441 prompt: "Analyze this codebase",

439 options: {442 options: {

440 // Incluya AskUserQuestion en su lista de herramientas443 // Incluye AskUserQuestion en tu lista de herramientas

441 tools: ["Read", "Glob", "Grep", "AskUserQuestion"],444 tools: ["Read", "Glob", "Grep", "AskUserQuestion"],

442 canUseTool: async (toolName, input) => {445 canUseTool: async (toolName, input) => {

443 // Manejar preguntas aclaratorias aquí446 // Marcador provisional que aprueba todas las llamadas. El paso Detectar AskUserQuestion lo reemplaza.

447 return { behavior: "allow", updatedInput: input };

444 }448 }

445 }449 }

446 })) {450 })) {


763 767 

764 ```typescript TypeScript theme={null}768 ```typescript TypeScript theme={null}

765 import { query } from "@anthropic-ai/claude-agent-sdk";769 import { query } from "@anthropic-ai/claude-agent-sdk";

770 import type { PermissionResult } from "@anthropic-ai/claude-agent-sdk";

766 import * as readline from "readline/promises";771 import * as readline from "readline/promises";

767 772 

768 // Helper para solicitar entrada del usuario en la terminal773 // Helper para solicitar entrada del usuario en la terminal


783 }788 }

784 789 

785 // Mostrar las preguntas de Claude y recopilar respuestas del usuario790 // Mostrar las preguntas de Claude y recopilar respuestas del usuario

786 async function handleAskUserQuestion(input: any) {791 async function handleAskUserQuestion(input: any): Promise<PermissionResult> {

787 const answers: Record<string, string> = {};792 const answers: Record<string, string> = {};

788 793 

789 for (const q of input.questions) {794 for (const q of input.questions) {

agent-view.md +1 −1

Details

603 603 

604Fuera de un repositorio git, las sesiones escriben directamente en el directorio de trabajo y no están aisladas entre sí, así que evita enviar sesiones paralelas que editen los mismos archivos. Si usas un sistema de control de versiones diferente, configura un [hook `WorktreeCreate`](/docs/es/worktrees#non-git-version-control) y Claude aísla las ediciones de la misma manera que lo hace con git.604Fuera de un repositorio git, las sesiones escriben directamente en el directorio de trabajo y no están aisladas entre sí, así que evita enviar sesiones paralelas que editen los mismos archivos. Si usas un sistema de control de versiones diferente, configura un [hook `WorktreeCreate`](/docs/es/worktrees#non-git-version-control) y Claude aísla las ediciones de la misma manera que lo hace con git.

605 605 

606Cuando el hook falla en un directorio que no es un repositorio git, Claude omite el aislamiento para ese directorio y edita el directorio de trabajo en el mismo lugar. Dentro de un repositorio git, una sesión que Claude mueve a un worktree antes de editar no puede editar archivos en el checkout compartido hasta que se produce ese movimiento.606Cuando el hook falla en un directorio que no es un repositorio git, Claude omite el aislamiento para ese directorio y edita el directorio de trabajo en el mismo lugar. Dentro de un repositorio git, una sesión que Claude mueve a un worktree antes de editar no puede usar las herramientas `Edit`, `Write` o `NotebookEdit` en el checkout compartido hasta que se produce ese movimiento.

607 607 

608Para encontrar la ruta del worktree de una sesión, adjúntate y revisa su directorio de trabajo.608Para encontrar la ruta del worktree de una sesión, adjúntate y revisa su directorio de trabajo.

609 609 

artifacts.md +38 −10

Details

51Build a dashboard artifact of last week's deploy failures by service and keep it updated as you investigate.51Build a dashboard artifact of last week's deploy failures by service and keep it updated as you investigate.

52```52```

53 53 

54A menos que nombre una ubicación, Claude escribe la página en un archivo HTML o Markdown en un directorio temporal fuera de su proyecto y luego la publica. Fuera del [modo de plan](/docs/es/permission-modes#analyze-before-you-edit-with-plan-mode), un nuevo artefacto que Claude publica en respuesta a un prompt que escribe pasa sin un prompt de permiso o revisión del clasificador, a menos que esa publicación declare capacidades de tiempo de ejecución para la página, como [llamadas de conector](#pull-live-data-with-mcp-connectors) o [descargas de archivos](#offer-a-file-download). En modo de plan, Claude Code le solicita permiso antes de la primera publicación de cada artefacto.54A menos que nombres una ubicación, Claude escribe la página en un archivo HTML o Markdown en un directorio temporal fuera de tu proyecto y luego la publica. El artefacto permanece privado para ti hasta que lo [compartas](#share-an-artifact).

55 55 

56El artefacto permanece privado para usted hasta que lo [comparta](#share-an-artifact). Después de compartirlo públicamente, Claude Code solicita su aprobación una vez por conversación antes de cambiarlo, o en [modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode) hace que el clasificador revise el cambio.56Después de la primera publicación, Claude imprime la URL y tu navegador se abre en la nueva página.

57 57 

58Si desactivó la [obtención de banderas de características](/docs/es/env-vars#features-that-need-feature-flag-fetching), Claude Code solicita permiso antes de la primera publicación de cada artefacto, o en modo automático hace que el clasificador lo revise.58* **Reabrir la página**: presiona `Ctrl+]` en cualquier momento para reabrir el artefacto más reciente de la sesión

59* **Ver los artefactos de esta sesión**: una etiqueta `⧉` debajo del prompt muestra el nombre del artefacto, o un recuento cuando la sesión tiene varios. En el [renderizado de pantalla completa](/docs/es/fullscreen), haz clic en ella para abrir la lista de [`/artifacts`](#find-an-artifact-again)

60* **Evitar que se abra el navegador**: establece `CLAUDE_CODE_ARTIFACT_AUTO_OPEN=0` en tu entorno

61* **Remote Control**: si enviaste el prompt a través de [Remote Control](/docs/es/remote-control) desde claude.ai, Claude Desktop o la aplicación móvil de Claude, no se abre ninguna pestaña en la máquina que ejecuta la sesión. El navegador se abre allí la próxima vez que Claude publica el artefacto desde un prompt que escribes en la terminal

59 62 

60Después de la primera publicación, Claude imprime la URL y su navegador se abre a la nueva página. Si envió el prompt a través de [Remote Control](/docs/es/remote-control) desde claude.ai, Claude Desktop o la aplicación móvil de Claude, no se abre ninguna pestaña en la máquina que ejecuta la sesión. El navegador se abre allí la próxima vez que Claude publica el artefacto desde un prompt que escribe en la terminal. Presione `Ctrl+]` en cualquier momento para reabrir el artefacto más reciente de la sesión.63Claude elige el título del artefacto y un icono de pestaña del navegador que coincida con lo que es la página, como un gráfico o un calendario. El título aparece en tu [galería de artefactos](#share-an-artifact) en claude.ai y en los enlaces compartidos. Pide a Claude un título o icono de pestaña específico si deseas uno.

61 64 

62Claude elige el título del artefacto y un emoji, y ambos aparecen en su [galería de artefactos](#share-an-artifact) en claude.ai y en enlaces compartidos. Claude también puede elegir un icono de pestaña del navegador que coincida con lo que es la página, como un gráfico o un calendario. Pida a Claude un título, emoji o icono de pestaña específico si desea uno.65Si Claude responde que no puede publicar, o escribe un archivo HTML local sin un enlace, los artefactos no están habilitados para tu sesión. Verifica los requisitos de [Disponibilidad](#availability). Si la terminal muestra `Artifacts need a claude.ai login`, consulta [la entrada de ese error](/docs/es/errors#artifacts-need-a-claude-ai-login) para saber cómo iniciar sesión.

63 66 

64Para evitar que el navegador se abra automáticamente cuando se publica un nuevo artefacto, establezca `CLAUDE_CODE_ARTIFACT_AUTO_OPEN=0` en su entorno.67<h3 id="when-claude-code-asks-before-publishing">

68 Cuándo Claude Code pregunta antes de publicar

69</h3>

70 

71Un nuevo artefacto que Claude publica en respuesta a un prompt que escribes pasa sin una solicitud de permiso ni revisión del clasificador. En estos casos, Claude Code te pregunta primero o, en [modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode), hace que el clasificador revise la publicación:

65 72 

66Si Claude responde que no puede publicar, o escribe un archivo HTML local sin un enlace, la herramienta no está habilitada para su sesión. Verifique los requisitos de [Disponibilidad](#availability).73| Cuándo | Qué hace Claude Code |

74| :- | :- |

75| La sesión está en [modo plan](/docs/es/permission-modes#analyze-before-you-edit-with-plan-mode) | Pregunta antes de la primera publicación de cada artefacto |

76| La publicación declara capacidades de tiempo de ejecución para la página, como [llamadas de conector](#pull-live-data-with-mcp-connectors) o [descargas de archivos](#offer-a-file-download) | Pregunta antes de esa publicación |

77| Compartiste el artefacto públicamente | Pregunta una vez por conversación antes de cambiarlo |

78| Desactivaste la [obtención de banderas de características](/docs/es/env-vars#features-that-need-feature-flag-fetching) | Pregunta antes de la primera publicación de cada artefacto |

79| Claude publica en un turno que inició una [tarea programada](/docs/es/scheduled-tasks) ejecutada en tu sesión, en lugar de un prompt que escribiste | Pregunta antes de la primera publicación de cada artefacto |

80| Claude no puede leer el archivo sin tu aprobación | Pregunta antes de publicarlo. Una regla de permiso para la herramienta `Artifact` no omite esta solicitud |

81 

82Claude lee archivos en los [directorios de trabajo](/docs/es/permissions#working-directories) de tu sesión, y en el directorio temporal donde escribe las páginas, sin preguntar. Para permitir que Claude publique desde otra carpeta sin la solicitud, agrega la carpeta como directorio de trabajo con [`--add-dir`](/docs/es/cli-reference#cli-flags) al iniciar o con `/add-dir` durante la sesión.

67 83 

68<h2 id="update-an-artifact">84<h2 id="update-an-artifact">

69 Actualizar un artefacto85 Actualizar un artefacto


87 Encontrar un artefacto nuevamente103 Encontrar un artefacto nuevamente

88</h2>104</h2>

89 105 

90Ejecute `/artifacts` en Claude Code para enumerar todos los artefactos que posee y todos los artefactos compartidos con usted. Seleccione uno y presione `o` para abrirlo en su navegador o `c` para copiar su enlace. Presione `Enter` para adjuntarlo a la sesión actual; antes de v2.1.216, `Enter` lo abría en su navegador. Claude Code lee la lista de su cuenta claude.ai, por lo que funciona en una nueva sesión y después de `/clear`, cuando el enlace se ha desplazado fuera de la terminal. Requiere Claude Code v2.1.208 o posterior.106Ejecuta `/artifacts` en Claude Code para enumerar los artefactos que posees y los que se compartieron contigo. Los artefactos de la sesión actual aparecen primero, bajo **This session**. Requiere Claude Code v2.1.208 o posterior.

107 

108Selecciona un artefacto y luego presiona una de estas teclas:

109 

110* **`Enter`**: lo abre en tu navegador cuando ya está adjunto a la sesión actual, y lo adjunta cuando no lo está. Antes de v2.1.216, `Enter` lo abría en tu navegador

111* **`o`**: lo abre en tu navegador

112* **`c`**: copia su enlace

113 

114Claude Code lee la lista de tu cuenta de claude.ai, por lo que funciona en una nueva sesión y después de `/clear`, cuando el enlace se ha desplazado fuera de la terminal.

91 115 

92<h2 id="share-an-artifact">116<h2 id="share-an-artifact">

93 Compartir un artefacto117 Compartir un artefacto


110 134 

111Un editor publica nuevas versiones de la misma manera que usted [actualiza el artefacto desde otra sesión](#update-an-artifact): le proporciona a Claude la URL del artefacto, o lo adjunta desde [`/artifacts`](#find-an-artifact-again), y Claude extrae el contenido actual y lo republica con sus cambios. Todos los que tengan la página abierta ven cada actualización en vivo.135Un editor publica nuevas versiones de la misma manera que usted [actualiza el artefacto desde otra sesión](#update-an-artifact): le proporciona a Claude la URL del artefacto, o lo adjunta desde [`/artifacts`](#find-an-artifact-again), y Claude extrae el contenido actual y lo republica con sus cambios. Todos los que tengan la página abierta ven cada actualización en vivo.

112 136 

137Si un editor publica mientras Claude tiene una copia anterior de la página, Claude Code rechaza una publicación basada en esa copia. Claude entonces fusiona sus cambios sobre la versión más reciente y vuelve a publicar.

138 

113<h2 id="read-an-artifact-shared-with-you">139<h2 id="read-an-artifact-shared-with-you">

114 Leer un artefacto compartido con usted140 Leer un artefacto compartido con usted

115</h2>141</h2>


168 194 

169Claude también deja de responder por su cuenta a un artefacto después de manejar 60 comentarios enviados o activaciones de hilos en ese artefacto dentro de una hora. Usted ve `Comments are waiting on Artifact: <name>` una vez, y Claude retoma cuando los comentarios de esa hora envejecen.195Claude también deja de responder por su cuenta a un artefacto después de manejar 60 comentarios enviados o activaciones de hilos en ese artefacto dentro de una hora. Usted ve `Comments are waiting on Artifact: <name>` una vez, y Claude retoma cuando los comentarios de esa hora envejecen.

170 196 

171Ejecute `/tasks` para ver cada artefacto que su sesión está observando, listado como una tarea de actualizaciones en vivo. Puede evitar que Claude responda por su cuenta de cualquiera de estas maneras:197Ejecuta `/tasks` para ver los artefactos que tu sesión está observando. `/tasks` agrupa las observaciones que Claude Code inició por su cuenta en la fila **System tasks**. Presiona `Enter` en esa fila para listarlas. Una observación que le pediste a Claude que iniciara aparece en **Monitors**.

198 

199Puedes evitar que Claude responda por su cuenta de cualquiera de estas maneras:

172 200 

173* **Presione Ctrl+C una vez en un símbolo del sistema inactivo**: Claude pausa la respuesta en cada artefacto que su sesión está observando. Las respuestas comienzan de nuevo después de que envíe su siguiente mensaje.201* **Presione Ctrl+C una vez en un símbolo del sistema inactivo**: Claude pausa la respuesta en cada artefacto que su sesión está observando. Las respuestas comienzan de nuevo después de que envíe su siguiente mensaje.

174* **Detenga la tarea en `/tasks`**: Claude deja de responder en ese artefacto hasta que le pida que reanude las respuestas allí. Publicar el artefacto de nuevo no inicia las respuestas de nuevo, y la parada aún se aplica cuando reanuda la sesión más tarde.202* **Detenga la tarea en `/tasks`**: Claude deja de responder en ese artefacto hasta que le pida que reanude las respuestas allí. Publicar el artefacto de nuevo no inicia las respuestas de nuevo, y la parada aún se aplica cuando reanuda la sesión más tarde.


391| Autenticación | La sesión está respaldada por una cuenta de claude.ai: inicie sesión con `/login` en la CLI o la aplicación de escritorio. Las sesiones de Claude Tag están autenticadas a través de la identidad del agente, por lo que no se requiere ningún paso. Las sesiones que usan una clave API, [token de puerta de enlace](/docs/es/llm-gateway) o credencial de proveedor de nube no pueden publicar. |419| Autenticación | La sesión está respaldada por una cuenta de claude.ai: inicie sesión con `/login` en la CLI o la aplicación de escritorio. Las sesiones de Claude Tag están autenticadas a través de la identidad del agente, por lo que no se requiere ningún paso. Las sesiones que usan una clave API, [token de puerta de enlace](/docs/es/llm-gateway) o credencial de proveedor de nube no pueden publicar. |

392| Proveedor de modelo | API de Anthropic. No disponible en [Amazon Bedrock](/docs/es/amazon-bedrock), [Google Cloud's Agent Platform](/docs/es/google-vertex-ai) o [Microsoft Foundry](/docs/es/microsoft-foundry). |420| Proveedor de modelo | API de Anthropic. No disponible en [Amazon Bedrock](/docs/es/amazon-bedrock), [Google Cloud's Agent Platform](/docs/es/google-vertex-ai) o [Microsoft Foundry](/docs/es/microsoft-foundry). |

393| Política de organización | Las claves de cifrado administradas por el cliente (CMEK), HIPAA y [Retención de datos cero](/docs/es/zero-data-retention) no están habilitadas para la organización. |421| Política de organización | Las claves de cifrado administradas por el cliente (CMEK), HIPAA y [Retención de datos cero](/docs/es/zero-data-retention) no están habilitadas para la organización. |

394| Superficie | CLI de Claude Code, o la aplicación de escritorio Claude versión 1.13576.0 o posterior. Las sesiones de [Claude Tag](https://claude.com/docs/claude-tag/overview) también pueden publicar artefactos cuando tanto Claude Tag como los artefactos están habilitados para la organización. Deshabilitado de forma predeterminada en el [Agent SDK](/docs/es/agent-sdk/overview), la GitHub Action y contextos de servidor MCP, cuando ejecutas Claude Code con [`-p`](/docs/es/headless) desde tu propia terminal o tus scripts, y cuando [`CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`](/docs/es/env-vars) está establecido. |422| Superficie | CLI de Claude Code, o la aplicación de escritorio Claude versión 1.13576.0 o posterior. Las sesiones de [Claude Tag](https://claude.com/docs/claude-tag/overview) también pueden publicar artefactos cuando tanto Claude Tag como los artefactos están habilitados para la organización. Las sesiones servidas por [`claude remote-control`](/docs/es/remote-control) pueden publicar artefactos cuando tú mismo iniciaste la sesión. Requiere Claude Code v2.1.281 o posterior. Deshabilitado de forma predeterminada en el [Agent SDK](/docs/es/agent-sdk/overview), la GitHub Action y contextos de servidor MCP, cuando ejecutas Claude Code con [`-p`](/docs/es/headless) desde tu propia terminal o tus scripts, y cuando [`CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`](/docs/es/env-vars) está establecido. |

395 423 

396Si los artefactos están permitidos para su organización proviene de la política de su organización, que Claude Code carga desde `api.anthropic.com`. Cuando Claude Code no puede cargar la política, los artefactos no están disponibles. Cuando usted solicita uno, Claude explica por qué.424Si los artefactos están permitidos para su organización proviene de la política de su organización, que Claude Code carga desde `api.anthropic.com`. Cuando Claude Code no puede cargar la política, los artefactos no están disponibles. Cuando usted solicita uno, Claude explica por qué.

397 425 

Details

1237 1237 

1238El CLI envía métricas, registros y, cuando están habilitadas, trazas al gateway, que las retransmite textualmente a cada destino configurado. Las exportaciones usan OpenTelemetry Protocol (OTLP) sobre HTTP. Para omitir la retransmisión y que las sesiones exporten directamente a tu recopilador, [nombra el recopilador en una política](#export-directly-to-your-collector). Consulta [Supervisión del uso](/docs/es/monitoring-usage) para conocer las métricas y eventos que emite el CLI.1238El CLI envía métricas, registros y, cuando están habilitadas, trazas al gateway, que las retransmite textualmente a cada destino configurado. Las exportaciones usan OpenTelemetry Protocol (OTLP) sobre HTTP. Para omitir la retransmisión y que las sesiones exporten directamente a tu recopilador, [nombra el recopilador en una política](#export-directly-to-your-collector). Consulta [Supervisión del uso](/docs/es/monitoring-usage) para conocer las métricas y eventos que emite el CLI.

1239 1239 

1240En las sesiones iniciadas mediante `/login`, el CLI marca cada exportación con la identidad del usuario autenticado, leída del JWT emitido por el gateway: los atributos `user.id`, `user.email` y `user.groups`. Por lo tanto, la atribución de costos y uso por desarrollador funciona sin ninguna configuración del lado del desarrollador.1240En las sesiones iniciadas mediante `/login`, el CLI marca cada exportación con la identidad del usuario autenticado, leída del JWT emitido por el gateway: los atributos `user.id`, `user.email` y `user.groups`. Por lo tanto, la atribución de costos y uso por desarrollador funciona sin ninguna configuración del lado del desarrollador. Los eventos que Claude Code registra antes de que el desarrollador inicie sesión [no incluyen esta identidad](/docs/es/monitoring-usage#standard-attributes).

1241 1241 

1242Las sesiones de [Claude Desktop](#claude-desktop-overlay) y Cowork iniciadas mediante el gateway marcan su telemetría con `user.email` y `user.groups` junto a `enduser.id`, por lo que puedes cubrir el uso de terminal, Desktop y Cowork con una sola consulta sobre `user.email` o `user.groups`. `user.groups` es la lista de grupos del IdP separada por comas.1242Las sesiones de [Claude Desktop](#claude-desktop-overlay) y Cowork iniciadas mediante el gateway marcan su telemetría con `user.email` y `user.groups` junto a `enduser.id`, por lo que puedes cubrir el uso de terminal, Desktop y Cowork con una sola consulta sobre `user.email` o `user.groups`. `user.groups` es la lista de grupos del IdP separada por comas.

1243 1243 

Details

516 Telemetría516 Telemetría

517</h2>517</h2>

518 518 

519La puerta de enlace le proporciona métricas de uso por desarrollador sin ninguna configuración OTEL por máquina. Claude Code emite métricas, registros y trazas de OpenTelemetry (OTLP) con opción de participación; [Monitoring usage](/docs/es/monitoring-usage) cubre todo lo que reporta la CLI. En sesiones iniciadas a través de `/login`, la CLI marca cada exportación con los atributos de identidad del IdP autenticado `user.id`, `user.email` y `user.groups`, por lo que el uso se agrupa por desarrollador.519El gateway te proporciona métricas de uso por desarrollador sin ninguna configuración OTEL por máquina. Claude Code emite métricas, registros y trazas opcionales de OpenTelemetry (OTLP); [Monitoring usage](/docs/es/monitoring-usage) cubre todo lo que reporta la CLI. En sesiones iniciadas a través de `/login`, la CLI [marca cada exportación](/docs/es/monitoring-usage#standard-attributes) con los atributos de identidad del IdP autenticado `user.id`, `user.email` y `user.groups`, por lo que el uso se agrupa por desarrollador.

520 520 

521La puerta de enlace en sí es un relé OTLP autenticado. Configure [`telemetry.forward_to`](/docs/es/claude-apps-gateway-config#telemetry) junto con `listen.public_url`, y empujará la configuración del exportador OTEL a cada cliente conectado y reenviará su tráfico OTLP textualmente a cada destino que enumere. Cada destino se suscribe a métricas, registros y trazas de forma independiente, y el valor predeterminado es solo métricas; consulte la [referencia de `telemetry`](/docs/es/claude-apps-gateway-config#telemetry) para los campos por señal y sus compensaciones de sensibilidad. La puerta de enlace no almacena en búfer, agrega ni almacena telemetría, por lo que dónde llegan los datos depende completamente de la configuración del exportador del recopilador.521La puerta de enlace en sí es un relé OTLP autenticado. Configure [`telemetry.forward_to`](/docs/es/claude-apps-gateway-config#telemetry) junto con `listen.public_url`, y empujará la configuración del exportador OTEL a cada cliente conectado y reenviará su tráfico OTLP textualmente a cada destino que enumere. Cada destino se suscribe a métricas, registros y trazas de forma independiente, y el valor predeterminado es solo métricas; consulte la [referencia de `telemetry`](/docs/es/claude-apps-gateway-config#telemetry) para los campos por señal y sus compensaciones de sensibilidad. La puerta de enlace no almacena en búfer, agrega ni almacena telemetría, por lo que dónde llegan los datos depende completamente de la configuración del exportador del recopilador.

522 522 

Details

489* **Routines**: cuando pides trabajo programado en un proyecto, Claude crea una [rutina](/docs/es/routines) que se ejecuta como hilos en ese proyecto y aparece en su pestaña **Routines**. Las rutinas que creas fuera de un proyecto siguen funcionando por su cuenta.489* **Routines**: cuando pides trabajo programado en un proyecto, Claude crea una [rutina](/docs/es/routines) que se ejecuta como hilos en ese proyecto y aparece en su pestaña **Routines**. Las rutinas que creas fuera de un proyecto siguen funcionando por su cuenta.

490* **Remote Control**: [Remote Control](/docs/es/remote-control) conecta claude.ai a una sesión de Claude Code que se ejecuta en su máquina. Cuando pide a Claude en un proyecto que ejecute un hilo en su computadora, el proyecto [utiliza Remote Control para hacerlo](#run-a-thread-on-your-own-computer).490* **Remote Control**: [Remote Control](/docs/es/remote-control) conecta claude.ai a una sesión de Claude Code que se ejecuta en su máquina. Cuando pide a Claude en un proyecto que ejecute un hilo en su computadora, el proyecto [utiliza Remote Control para hacerlo](#run-a-thread-on-your-own-computer).

491* **Local sessions and agent view**: una sesión que comienza usted mismo en su terminal, IDE, o el entorno local de la aplicación de escritorio no puede ser agregada a un proyecto. [Agent view](/docs/es/agent-view) es una pantalla para rastrear varias sesiones locales lado a lado, y usted sigue iniciando cada una y le da su tarea usted mismo.491* **Local sessions and agent view**: una sesión que comienza usted mismo en su terminal, IDE, o el entorno local de la aplicación de escritorio no puede ser agregada a un proyecto. [Agent view](/docs/es/agent-view) es una pantalla para rastrear varias sesiones locales lado a lado, y usted sigue iniciando cada una y le da su tarea usted mismo.

492* **Worktrees**: un [worktree](/docs/es/worktrees) le da a cada sesión local su propia copia de trabajo de un repositorio para que las sesiones paralelas en su máquina no se sobrescriban entre sí. Los hilos en la nube no los necesitan: cada uno clona sus repositorios en su propia sandbox en la nube y trabaja en su propia rama.492* **Worktrees**: un [worktree](/docs/es/worktrees) le da a cada sesión local su propia copia de trabajo de un repositorio. Los hilos en la nube no los necesitan: cada uno clona sus repositorios en su propio sandbox en la nube y trabaja en su propia rama.

493* **Equipos de agentes**: un [equipo de agentes](/docs/es/agent-teams) es una sesión que comienza sesiones de compañeros para una sola tarea, en tu máquina o dentro de una sesión en la nube, y termina con esa tarea.493* **Equipos de agentes**: un [equipo de agentes](/docs/es/agent-teams) es una sesión que comienza sesiones de compañeros para una sola tarea, en tu máquina o dentro de una sesión en la nube, y termina con esa tarea.

494* **Subagents**: un [subagente](/docs/es/sub-agents) se ejecuta dentro de una sesión, realiza una tarea secundaria en su propia ventana de contexto, y devuelve un resumen a esa sesión. Los hilos de un proyecto son sesiones completas que Claude comienza y que reportan al proyecto, y un hilo aún puede usar subagentes para sus propias tareas secundarias.494* **Subagents**: un [subagente](/docs/es/sub-agents) se ejecuta dentro de una sesión, realiza una tarea secundaria en su propia ventana de contexto, y devuelve un resumen a esa sesión. Los hilos de un proyecto son sesiones completas que Claude comienza y que reportan al proyecto, y un hilo aún puede usar subagentes para sus propias tareas secundarias.

495* **Projects en claude.ai chat y Cowork**: la [experiencia anterior de Projects](https://support.claude.com/en/articles/9517075-what-are-projects), que agrupa conversaciones y archivos de referencia sin hilos o coordinador. Esos proyectos siguen funcionando como lo hacen hoy hasta que la experiencia rediseñada los alcance.495* **Projects en claude.ai chat y Cowork**: la [experiencia anterior de Projects](https://support.claude.com/en/articles/9517075-what-are-projects), que agrupa conversaciones y archivos de referencia sin hilos o coordinador. Esos proyectos siguen funcionando como lo hacen hoy hasta que la experiencia rediseñada los alcance.

Details

106| `--input-format` | Especifica el formato de entrada para el modo print (opciones: `text`, `stream-json`) | `claude -p --output-format json --input-format stream-json` |106| `--input-format` | Especifica el formato de entrada para el modo print (opciones: `text`, `stream-json`) | `claude -p --output-format json --input-format stream-json` |

107| `--json-schema` | Obtén salida JSON validada que coincida con un JSON Schema después de que el agente complete su flujo de trabajo (solo modo print). Consulta [salidas estructuradas](/docs/es/agent-sdk/structured-outputs). Claude Code sale con un error en un esquema inválido y acepta la palabra clave `format` como anotación sin validación del lado del cliente | `claude -p --json-schema '{"type":"object","properties":{...}}' "query"` |107| `--json-schema` | Obtén salida JSON validada que coincida con un JSON Schema después de que el agente complete su flujo de trabajo (solo modo print). Consulta [salidas estructuradas](/docs/es/agent-sdk/structured-outputs). Claude Code sale con un error en un esquema inválido y acepta la palabra clave `format` como anotación sin validación del lado del cliente | `claude -p --json-schema '{"type":"object","properties":{...}}' "query"` |

108| `--maintenance` | Ejecuta [hooks de Setup](/docs/es/hooks#setup) con el matcher `maintenance` antes de la sesión (solo modo print) | `claude -p --maintenance "query"` |108| `--maintenance` | Ejecuta [hooks de Setup](/docs/es/hooks#setup) con el matcher `maintenance` antes de la sesión (solo modo print) | `claude -p --maintenance "query"` |

109| `--max-budget-usd` | Cantidad máxima en dólares a gastar en llamadas de API antes de detenerse (solo modo print). Claude Code compara el límite con su [estimación de costos del lado del cliente](/docs/es/agent-sdk/cost-tracking#estimates-not-billing), que puede diferir de tu factura. El gasto de [subagentes](/docs/es/sub-agents) cuenta hacia el límite. Cuando regresas a una conversación con `--continue` o `--resume`, los totales [restaurados de ejecuciones anteriores](/docs/es/agent-sdk/cost-tracking#accumulate-costs-across-multiple-calls) no cuentan hacia él. Una vez que el gasto alcanza el límite, generar otro subagente falla con `Budget limit reached`, y Claude Code detiene los subagentes en segundo plano que aún se ejecutan; los comportamientos de cumplimiento del límite requieren Claude Code v2.1.217 o posterior | `claude -p --max-budget-usd 5.00 "query"` |109| `--max-budget-usd` | Detiene la ejecución una vez que el gasto estimado en llamadas de API alcanza esta cantidad (solo modo print). Claude Code compara el límite con su [estimación de costos del lado del cliente](/docs/es/agent-sdk/cost-tracking#estimates-not-billing), que puede diferir de tu factura. El gasto de [subagentes](/docs/es/sub-agents) cuenta hacia el límite. El gasto puede superar el límite, así que [deja margen](/docs/es/agent-sdk/agent-loop#budget-headroom). Cuando regresas a una conversación con `--continue` o `--resume`, los totales [restaurados de ejecuciones anteriores](/docs/es/agent-sdk/cost-tracking#accumulate-costs-across-multiple-calls) no cuentan hacia él. Una vez que el gasto alcanza el límite, generar otro subagente falla con `Budget limit reached`, y Claude Code detiene los subagentes en segundo plano que aún se ejecutan; los comportamientos de cumplimiento del límite requieren Claude Code v2.1.217 o posterior | `claude -p --max-budget-usd 5.00 "query"` |

110| `--max-turns` | Limita el número de turnos agentivos (solo modo print). Sale con un error cuando se alcanza el límite. Sin límite por defecto. Con `--input-format stream-json`, un mensaje aún en cola cuando el límite termina un turno permanece en cola e inicia un nuevo turno con su propio límite | `claude -p --max-turns 3 "query"` |110| `--max-turns` | Limita el número de turnos agentivos (solo modo print). Sale con un error cuando se alcanza el límite. Sin límite por defecto. Con `--input-format stream-json`, un mensaje aún en cola cuando el límite termina un turno permanece en cola e inicia un nuevo turno con su propio límite | `claude -p --max-turns 3 "query"` |

111| `--mcp-config` | Carga servidores MCP desde archivos JSON o cadenas (separados por espacios). Cuando pasas esta bandera con `-p`, Claude Code espera a que los servidores aún pendientes se conecten antes de ejecutar el primer turno, hasta el tiempo de espera de inicio [`MCP_TIMEOUT`](/docs/es/env-vars), 30 segundos por defecto; un servidor con una [lista de herramientas en caché](/docs/es/mcp#managing-your-servers) omite la espera y se conecta en el primer uso. La espera requiere Claude Code v2.1.221 o posterior | `claude --mcp-config ./mcp.json` |111| `--mcp-config` | Carga servidores MCP desde archivos JSON o cadenas (separados por espacios). Cuando pasas esta bandera con `-p`, Claude Code espera a que los servidores aún pendientes se conecten antes de ejecutar el primer turno, hasta el tiempo de espera de inicio [`MCP_TIMEOUT`](/docs/es/env-vars), 30 segundos por defecto; un servidor con una [lista de herramientas en caché](/docs/es/mcp#managing-your-servers) omite la espera y se conecta en el primer uso. La espera requiere Claude Code v2.1.221 o posterior | `claude --mcp-config ./mcp.json` |

112| `--model` | Establece el modelo para la sesión actual con un [alias de modelo](/docs/es/model-config#model-aliases) como `sonnet`, `opus`, `haiku`, o `fable`, o el nombre completo de un modelo. Anula la configuración [`model`](/docs/es/settings-reference#model) y [`ANTHROPIC_MODEL`](/docs/es/model-config#environment-variables) | `claude --model claude-sonnet-5` |112| `--model` | Establece el modelo para la sesión actual con un [alias de modelo](/docs/es/model-config#model-aliases) como `sonnet`, `opus`, `haiku`, o `fable`, o el nombre completo de un modelo. Anula la configuración [`model`](/docs/es/settings-reference#model) y [`ANTHROPIC_MODEL`](/docs/es/model-config#environment-variables) | `claude --model claude-sonnet-5` |

Details

307| | Disponible en sesiones en la nube | Por qué |307| | Disponible en sesiones en la nube | Por qué |

308| :- | :- | :- |308| :- | :- | :- |

309| El `CLAUDE.md` de tu repositorio | Sí | Parte del clon |309| El `CLAUDE.md` de tu repositorio | Sí | Parte del clon |

310| Los hooks y reglas de permisos de `.claude/settings.json` de tu repositorio | Sí, en una sesión con un repositorio | Parte del clon. Una sesión con varios repositorios, incluido un hilo de [proyecto](/docs/es/claude-projects#what-threads-pick-up-from-your-repositories), comienza por encima de los clones y no los lee |310| Los hooks y reglas de permisos de `.claude/settings.json` de tu repositorio | Sí, en una sesión con un repositorio | Parte del clon. Para una sesión con varios repositorios, consulta [qué configuración lee](/docs/es/settings#settings-in-cloud-sessions) |

311| Los servidores MCP de `.mcp.json` de tu repositorio | Sí, en una sesión con un repositorio | Parte del clon, encontrado desde el directorio de trabajo de la sesión |311| Los servidores MCP de `.mcp.json` de tu repositorio | Sí, en una sesión con un repositorio | Parte del clon, encontrado desde el directorio de trabajo de la sesión. Para un entorno autohospedado, consulta [qué configuración de repositorio se aplica](/docs/es/self-hosted-environments-configuration#repository-settings-in-sessions-with-several-repositories) |

312| El `.claude/rules/` de tu repositorio | Sí | Parte del clon |312| El `.claude/rules/` de tu repositorio | Sí | Parte del clon |

313| Los `.claude/skills/`, `.claude/agents/`, `.claude/commands/` de tu repositorio | Sí | Parte del clon |313| Los `.claude/skills/`, `.claude/agents/`, `.claude/commands/` de tu repositorio | Sí | Parte del clon |

314| Plugins y marketplaces declarados en el `.claude/settings.json` de tu repositorio | No | Una sesión en la nube no instala los plugins que un repositorio activa bajo [`enabledPlugins`](/docs/es/settings-reference#enabledplugins), incluidos los de los marketplaces que enumera bajo [`extraKnownMarketplaces`](/docs/es/settings-reference#extraknownmarketplaces) |314| Plugins y marketplaces declarados en el `.claude/settings.json` de tu repositorio | No | Una sesión en la nube no instala los plugins que un repositorio activa bajo [`enabledPlugins`](/docs/es/settings-reference#enabledplugins), incluidos los de los marketplaces que enumera bajo [`extraKnownMarketplaces`](/docs/es/settings-reference#extraknownmarketplaces) |


575 575 

576Los hooks SessionStart se comportan igual en la nube que localmente, con estas advertencias:576Los hooks SessionStart se comportan igual en la nube que localmente, con estas advertencias:

577 577 

578* **Un repositorio por sesión**: una sesión con varios repositorios no carga hooks de ningún `.claude/settings.json` del repositorio, por lo que un hook SessionStart que defina allí no se ejecuta. Instale dependencias para esas sesiones con un [script de configuración](#setup-scripts) en su lugar.578* **Un repositorio por sesión**: en un entorno alojado por Anthropic, una sesión con varios repositorios no carga hooks del `.claude/settings.json` de ningún repositorio, por lo que un hook SessionStart que definas allí no se ejecuta. En su lugar, instala las dependencias para esas sesiones con un [script de configuración](#setup-scripts). Para un entorno autohospedado, consulta [qué configuración de repositorio se aplica](/docs/es/self-hosted-environments-configuration#repository-settings-in-sessions-with-several-repositories).

579* **Sin alcance solo en la nube**: los hooks se ejecutan en sesiones locales y en la nube. Para omitir la ejecución local, salga temprano a menos que la variable de entorno `CLAUDE_CODE_REMOTE` sea `true`, de la manera que lo hace el [script de instalación de dependencias](#install-dependencies-with-a-sessionstart-hook).579* **Sin alcance solo en la nube**: los hooks se ejecutan en sesiones locales y en la nube. Para omitir la ejecución local, salga temprano a menos que la variable de entorno `CLAUDE_CODE_REMOTE` sea `true`, de la manera que lo hace el [script de instalación de dependencias](#install-dependencies-with-a-sessionstart-hook).

580* **Requiere acceso a la red**: los comandos de instalación necesitan alcanzar registros de paquetes. Si su entorno usa acceso a la red **None**, estos hooks fallan. La [lista permitida predeterminada](#default-allowed-domains) bajo **Trusted** cubre npm, PyPI, RubyGems y crates.io.580* **Requiere acceso a la red**: los comandos de instalación necesitan alcanzar registros de paquetes. Si su entorno usa acceso a la red **None**, estos hooks fallan. La [lista permitida predeterminada](#default-allowed-domains) bajo **Trusted** cubre npm, PyPI, RubyGems y crates.io.

581* **Compatibilidad con proxy**: en entornos alojados por Anthropic, todo el tráfico saliente pasa por un [proxy de seguridad](#security-proxy), y algunos administradores de paquetes no funcionan correctamente con él; Bun es un ejemplo conocido. En un [entorno autohospedado](/docs/es/self-hosted-environments-deploy#default-deny-egress), el tráfico saliente va a través de su propio límite de red en su lugar.581* **Compatibilidad con proxy**: en entornos alojados por Anthropic, todo el tráfico saliente pasa por un [proxy de seguridad](#security-proxy), y algunos administradores de paquetes no funcionan correctamente con él; Bun es un ejemplo conocido. En un [entorno autohospedado](/docs/es/self-hosted-environments-deploy#default-deny-egress), el tráfico saliente va a través de su propio límite de red en su lugar.

desktop.md +1 −1

Details

396 Trabajar en paralelo con sesiones396 Trabajar en paralelo con sesiones

397</h3>397</h3>

398 398 

399Haz clic en **+ New session** en la barra lateral, o presiona **Cmd+N** en macOS o **Ctrl+N** en Windows, para trabajar en múltiples tareas en paralelo. Presiona **Ctrl+Tab** y **Ctrl+Shift+Tab** para recorrer las sesiones de la barra lateral. Para repositorios de Git, selecciona la opción **worktree** junto al nombre de la rama para dar a la sesión su propia copia aislada de tu proyecto usando [Git worktrees](/docs/es/worktrees), de modo que los cambios en una sesión no afecten a otras sesiones hasta que hagas commit.399Haz clic en **+ New session** en la barra lateral, o presiona **Cmd+N** en macOS o **Ctrl+N** en Windows, para trabajar en múltiples tareas en paralelo. Presiona **Ctrl+Tab** y **Ctrl+Shift+Tab** para recorrer las sesiones de la barra lateral. Para repositorios de Git, selecciona la opción **worktree** junto al nombre de la rama para dar a la sesión su propia copia aislada de tu proyecto usando [Git worktrees](/docs/es/worktrees).

400 400 

401Para ver dos sesiones a la vez, mantén presionado **Cmd** en macOS o **Ctrl** en Windows y haz clic en una sesión en la barra lateral. La sesión se abre en un segundo panel junto al que ya tienes abierto. Mientras la división está activa, hacer clic en otra sesión de la barra lateral reemplaza el panel que tenga el foco. Presiona **Cmd+\\** en macOS o **Ctrl+\\** en Windows para cerrar el panel enfocado y volver a una única sesión.401Para ver dos sesiones a la vez, mantén presionado **Cmd** en macOS o **Ctrl** en Windows y haz clic en una sesión en la barra lateral. La sesión se abre en un segundo panel junto al que ya tienes abierto. Mientras la división está activa, hacer clic en otra sesión de la barra lateral reemplaza el panel que tenga el foco. Presiona **Cmd+\\** en macOS o **Ctrl+\\** en Windows para cerrar el panel enfocado y volver a una única sesión.

402 402 

env-vars.md +2 −1

Details

204| `CLAUDE_AFK_TIMEOUT_MS` | Cuántos milisegundos de inactividad deben pasar antes de que un diálogo de [`AskUserQuestion`](/docs/es/tools-reference) sin responder continúe automáticamente sin ti. La continuación automática está desactivada de forma predeterminada; actívala con el ajuste [`askUserQuestionTimeout`](/docs/es/settings-reference#askuserquestiontimeout). Esta variable es una sobrescritura para demos y pruebas automatizadas: cuando está establecida, tiene precedencia sobre ese ajuste y activa la continuación automática incluso cuando el ajuste no está establecido o es `never`. Establecer `0` no desactiva el tiempo de espera; cierra el diálogo de inmediato. Se ignora en la [configuración del proyecto y local](/docs/es/settings-reference#variables-claude-code-ignores-in-env). Antes de v2.1.200, la continuación automática estaba activada de forma predeterminada con un tiempo de espera de `60000` (60 segundos). Requiere Claude Code v2.1.198 o posterior |204| `CLAUDE_AFK_TIMEOUT_MS` | Cuántos milisegundos de inactividad deben pasar antes de que un diálogo de [`AskUserQuestion`](/docs/es/tools-reference) sin responder continúe automáticamente sin ti. La continuación automática está desactivada de forma predeterminada; actívala con el ajuste [`askUserQuestionTimeout`](/docs/es/settings-reference#askuserquestiontimeout). Esta variable es una sobrescritura para demos y pruebas automatizadas: cuando está establecida, tiene precedencia sobre ese ajuste y activa la continuación automática incluso cuando el ajuste no está establecido o es `never`. Establecer `0` no desactiva el tiempo de espera; cierra el diálogo de inmediato. Se ignora en la [configuración del proyecto y local](/docs/es/settings-reference#variables-claude-code-ignores-in-env). Antes de v2.1.200, la continuación automática estaba activada de forma predeterminada con un tiempo de espera de `60000` (60 segundos). Requiere Claude Code v2.1.198 o posterior |

205| `CLAUDE_AGENT_SDK_DISABLE_BUILTIN_AGENTS` | Establécela en `1` para desactivar todos los tipos de [subagentes](/docs/es/sub-agents) integrados, como Explore y Plan. Solo se aplica en modo no interactivo (el flag `-p`). Útil para usuarios del SDK que quieren empezar desde cero. Esto también elimina `general-purpose`, el subagente que Claude Code ejecuta cuando una llamada a la herramienta Agent omite `subagent_type`. Una llamada así falla entonces con [`subagent_type is required`](/docs/es/errors#subagent-type-is-required) |205| `CLAUDE_AGENT_SDK_DISABLE_BUILTIN_AGENTS` | Establécela en `1` para desactivar todos los tipos de [subagentes](/docs/es/sub-agents) integrados, como Explore y Plan. Solo se aplica en modo no interactivo (el flag `-p`). Útil para usuarios del SDK que quieren empezar desde cero. Esto también elimina `general-purpose`, el subagente que Claude Code ejecuta cuando una llamada a la herramienta Agent omite `subagent_type`. Una llamada así falla entonces con [`subagent_type is required`](/docs/es/errors#subagent-type-is-required) |

206| `CLAUDE_AGENT_SDK_MCP_NO_PREFIX` | Establécela en `1` para omitir el prefijo `mcp__<server>__` en los nombres de las herramientas de los servidores MCP creados por el SDK. Las herramientas usan sus nombres originales. Solo para uso del SDK |206| `CLAUDE_AGENT_SDK_MCP_NO_PREFIX` | Establécela en `1` para omitir el prefijo `mcp__<server>__` en los nombres de las herramientas de los servidores MCP creados por el SDK. Las herramientas usan sus nombres originales. Solo para uso del SDK |

207| `CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS` | Tiempo de espera por bloqueo en milisegundos para los subagentes. Predeterminado `600000` (10 minutos); si aumentas `CLAUDE_STREAM_IDLE_TIMEOUT_MS` mientras el watchdog de streaming está activado, el valor predeterminado aumenta con él, como se describe en [Manejar respuestas de la API lentas o bloqueadas](/docs/es/agent-sdk/typescript#handle-slow-or-stalled-api-responses). El temporizador se reinicia con cada evento de progreso del streaming; si no llega ningún progreso dentro del intervalo, Claude Code interrumpe el subagente e informa del bloqueo al agente principal |207| `CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS` | Tiempo de espera por bloqueo en milisegundos para subagentes. También abarca los [agentes de flujos de trabajo](/docs/es/workflows#when-an-agent-stalls-and-restarts) en Claude Code v2.1.286 o posterior. Predeterminado `600000` (10 minutos); si aumentas `CLAUDE_STREAM_IDLE_TIMEOUT_MS` mientras el watchdog de streaming está activo, el valor predeterminado aumenta con él, como describe [Gestionar respuestas lentas o bloqueadas de la API](/docs/es/agent-sdk/typescript#handle-slow-or-stalled-api-responses) |

208| `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE` | Establece el porcentaje (1-100) de la ventana de compactación automática en el que se activa la compactación automática. Usa valores más bajos como `50` para compactar antes; la variable no puede elevar el umbral, por lo que se ignoran los valores por encima del porcentaje predeterminado. Solo se aplica en las sesiones que [compactan antes del límite de contexto del modelo](/docs/es/model-config#context-window-and-auto-compaction). Se aplica tanto a las conversaciones principales como a los subagentes |208| `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE` | Establece el porcentaje (1-100) de la ventana de compactación automática en el que se activa la compactación automática. Usa valores más bajos como `50` para compactar antes; la variable no puede elevar el umbral, por lo que se ignoran los valores por encima del porcentaje predeterminado. Solo se aplica en las sesiones que [compactan antes del límite de contexto del modelo](/docs/es/model-config#context-window-and-auto-compaction). Se aplica tanto a las conversaciones principales como a los subagentes |

209| `CLAUDE_AUTO_BACKGROUND_TASKS` | Establécela en `1` para forzar la activación del envío automático a segundo plano de las tareas de agentes de larga duración. Cuando está activada, los subagentes se mueven a segundo plano después de ejecutarse durante aproximadamente dos minutos. También activa el [envío automático a segundo plano de las llamadas largas a herramientas MCP](/docs/es/mcp#automatic-backgrounding-of-long-tool-calls) en modo no interactivo en Claude Code v2.1.212 o posterior |209| `CLAUDE_AUTO_BACKGROUND_TASKS` | Establécela en `1` para forzar la activación del envío automático a segundo plano de las tareas de agentes de larga duración. Cuando está activada, los subagentes se mueven a segundo plano después de ejecutarse durante aproximadamente dos minutos. También activa el [envío automático a segundo plano de las llamadas largas a herramientas MCP](/docs/es/mcp#automatic-backgrounding-of-long-tool-calls) en modo no interactivo en Claude Code v2.1.212 o posterior |

210| `CLAUDE_AX_PREPARK_MS` | En el [modo de lector de pantalla](/docs/es/accessibility), cuántos milisegundos espera Claude Code antes de escribir una línea nueva o modificada. Predeterminado `0`, por lo que Claude Code no espera. Antes de v2.1.287, el valor predeterminado era `50`. Claude Code limita la espera a `5000`. Requiere Claude Code v2.1.233 o posterior |210| `CLAUDE_AX_PREPARK_MS` | En el [modo de lector de pantalla](/docs/es/accessibility), cuántos milisegundos espera Claude Code antes de escribir una línea nueva o modificada. Predeterminado `0`, por lo que Claude Code no espera. Antes de v2.1.287, el valor predeterminado era `50`. Claude Code limita la espera a `5000`. Requiere Claude Code v2.1.233 o posterior |


378| `CLAUDE_CODE_RESUME_INTERRUPTED_TURN_MAX_AGE_MS` | Antigüedad máxima en milisegundos del último mensaje de la transcripción para que una sesión que terminó a mitad de un turno continúe automáticamente al reanudarse. Cuando el último mensaje es más antiguo que este límite, Claude Code omite la reanudación automática de `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` y su mensaje de continuación `CLAUDE_CODE_RESUME_PROMPT`, y la sesión se inicia inactiva para que continúes explícitamente. Sin establecer o `0` significa sin límite, salvo que un turno cuya última solicitud falló con un error de la API solo se reanuda mientras ese error tenga menos de seis horas de antigüedad. Un valor positivo limita todos los turnos, incluidos esos; un valor negativo o no numérico aplica un límite de una hora. Los scripts de inicio de agentes de larga duración pueden establecerla para que un reinicio sobre una transcripción antigua no vuelva a ejecutar un prompt obsoleto. Claude Code establece por sí mismo un límite de una hora cuando reinicia una sesión de la [vista de agentes](/docs/es/agent-view) que falló y que heredó su conversación de una sesión interactiva. Requiere Claude Code v2.1.211 o posterior |378| `CLAUDE_CODE_RESUME_INTERRUPTED_TURN_MAX_AGE_MS` | Antigüedad máxima en milisegundos del último mensaje de la transcripción para que una sesión que terminó a mitad de un turno continúe automáticamente al reanudarse. Cuando el último mensaje es más antiguo que este límite, Claude Code omite la reanudación automática de `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` y su mensaje de continuación `CLAUDE_CODE_RESUME_PROMPT`, y la sesión se inicia inactiva para que continúes explícitamente. Sin establecer o `0` significa sin límite, salvo que un turno cuya última solicitud falló con un error de la API solo se reanuda mientras ese error tenga menos de seis horas de antigüedad. Un valor positivo limita todos los turnos, incluidos esos; un valor negativo o no numérico aplica un límite de una hora. Los scripts de inicio de agentes de larga duración pueden establecerla para que un reinicio sobre una transcripción antigua no vuelva a ejecutar un prompt obsoleto. Claude Code establece por sí mismo un límite de una hora cuando reinicia una sesión de la [vista de agentes](/docs/es/agent-view) que falló y que heredó su conversación de una sesión interactiva. Requiere Claude Code v2.1.211 o posterior |

379| `CLAUDE_CODE_RESUME_PROMPT` | Sobrescribe el mensaje de continuación que Claude Code envía a Claude cuando `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` continúa un turno interrumpido en lugar de volver a enviar su prompt, o cuando reanudas una [llamada a herramienta diferida](/docs/es/hooks#defer-a-tool-call-for-later) con `-p`. El valor predeterminado es `Continue from where you left off.`. Una cadena vacía usa el predeterminado |379| `CLAUDE_CODE_RESUME_PROMPT` | Sobrescribe el mensaje de continuación que Claude Code envía a Claude cuando `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` continúa un turno interrumpido en lugar de volver a enviar su prompt, o cuando reanudas una [llamada a herramienta diferida](/docs/es/hooks#defer-a-tool-call-for-later) con `-p`. El valor predeterminado es `Continue from where you left off.`. Una cadena vacía usa el predeterminado |

380| `CLAUDE_CODE_RETRY_WATCHDOG` | Establece en `1` para sesiones desatendidas, como harnesses de evaluación, trabajos de CI o workers remotos. Reintenta indefinidamente los errores de capacidad `429` y `529` en lugar de fallar después de `CLAUDE_CODE_MAX_RETRIES` intentos. Claude Code falla de inmediato cuando una solicitud de velocidad estándar recibe un `429` que informa de un límite de gasto o de créditos de uso agotados, incluso uno de un [límite de gasto del gateway](/docs/es/errors#spend-limit-reached) que se restablece según una programación. Antes de la v2.1.239, el watchdog los reintentaba indefinidamente. Para las solicitudes en modo rápido, consulta [Gestionar los rate limits](/docs/es/fast-mode#handle-rate-limits). El watchdog espera hasta 5 minutos entre intentos, o hasta que se restablezca el límite cuando la respuesta incluye una hora de restablecimiento del rate limit, por lo que una sesión que alcanza un límite de uso espera a que transcurra el período restante. En la v2.1.199 o posterior, también aumenta a 300 el número predeterminado de reintentos para otros errores transitorios, como errores del servidor, tiempos de espera agotados y conexiones perdidas, aproximadamente tres horas de backoff, y elimina el límite de 15 en `CLAUDE_CODE_MAX_RETRIES` si estableces esa variable explícitamente. Requiere Claude Code v2.1.186 o posterior |380| `CLAUDE_CODE_RETRY_WATCHDOG` | Establece en `1` para sesiones desatendidas, como harnesses de evaluación, trabajos de CI o workers remotos. Reintenta indefinidamente los errores de capacidad `429` y `529` en lugar de fallar después de `CLAUDE_CODE_MAX_RETRIES` intentos. Claude Code falla de inmediato cuando una solicitud de velocidad estándar recibe un `429` que informa de un límite de gasto o de créditos de uso agotados, incluso uno de un [límite de gasto del gateway](/docs/es/errors#spend-limit-reached) que se restablece según una programación. Antes de la v2.1.239, el watchdog los reintentaba indefinidamente. Para las solicitudes en modo rápido, consulta [Gestionar los rate limits](/docs/es/fast-mode#handle-rate-limits). El watchdog espera hasta 5 minutos entre intentos, o hasta que se restablezca el límite cuando la respuesta incluye una hora de restablecimiento del rate limit, por lo que una sesión que alcanza un límite de uso espera a que transcurra el período restante. En la v2.1.199 o posterior, también aumenta a 300 el número predeterminado de reintentos para otros errores transitorios, como errores del servidor, tiempos de espera agotados y conexiones perdidas, aproximadamente tres horas de backoff, y elimina el límite de 15 en `CLAUDE_CODE_MAX_RETRIES` si estableces esa variable explícitamente. Requiere Claude Code v2.1.186 o posterior |

381| `CLAUDE_CODE_RETRY_WATCHDOG_MAX_WAIT_MS` | Tiempo máximo en milisegundos que cada solicitud a la API pasa esperando a que se resuelvan los errores `429` y `529` cuando `CLAUDE_CODE_RETRY_WATCHDOG` está establecida. Una vez transcurrido ese tiempo, el siguiente error de ese tipo termina la solicitud. Indica un número entero positivo en dígitos simples, como `1800000` para 30 minutos. Cuando no está establecida, la espera no tiene límite. Requiere Claude Code v2.1.295 o posterior |

381| `CLAUDE_CODE_SAFE_MODE` | Establece en `1` para iniciar en modo seguro: CLAUDE.md, skills, plugins, hooks, servidores MCP, comandos y agentes personalizados, estilos de salida, flujos de trabajo, temas personalizados, atajos de teclado personalizados, comandos de línea de estado y de sugerencia de archivos, servidores LSP y memoria automática no se cargan, para solucionar problemas de una configuración dañada. La política de configuración administrada sigue aplicándose, incluidos los hooks, la línea de estado y los comandos de sugerencia de archivos configurados por la política; los plugins administrados, los skills administrados, el CLAUDE.md administrado y los servidores MCP configurados por la política no. Equivale a pasar [`--safe-mode`](/docs/es/cli-reference#cli-flags). Los procesos hijos iniciados directamente heredan la variable |382| `CLAUDE_CODE_SAFE_MODE` | Establece en `1` para iniciar en modo seguro: CLAUDE.md, skills, plugins, hooks, servidores MCP, comandos y agentes personalizados, estilos de salida, flujos de trabajo, temas personalizados, atajos de teclado personalizados, comandos de línea de estado y de sugerencia de archivos, servidores LSP y memoria automática no se cargan, para solucionar problemas de una configuración dañada. La política de configuración administrada sigue aplicándose, incluidos los hooks, la línea de estado y los comandos de sugerencia de archivos configurados por la política; los plugins administrados, los skills administrados, el CLAUDE.md administrado y los servidores MCP configurados por la política no. Equivale a pasar [`--safe-mode`](/docs/es/cli-reference#cli-flags). Los procesos hijos iniciados directamente heredan la variable |

382| `CLAUDE_CODE_SCRIPT_CAPS` | Objeto JSON que limita cuántas veces se pueden invocar scripts específicos por sesión cuando se establece `CLAUDE_CODE_SUBPROCESS_ENV_SCRUB`. Las claves son subcadenas que se comparan con el texto del comando; los valores son límites enteros de llamadas. Por ejemplo, `{"deploy.sh": 2}` permite llamar a `deploy.sh` como máximo dos veces. La coincidencia se basa en subcadenas, por lo que los trucos de expansión del shell como `./scripts/deploy.sh $(evil)` siguen contando para el límite. No se detecta la multiplicación en tiempo de ejecución mediante `xargs` o `find -exec`; este es un control de defensa en profundidad |383| `CLAUDE_CODE_SCRIPT_CAPS` | Objeto JSON que limita cuántas veces se pueden invocar scripts específicos por sesión cuando se establece `CLAUDE_CODE_SUBPROCESS_ENV_SCRUB`. Las claves son subcadenas que se comparan con el texto del comando; los valores son límites enteros de llamadas. Por ejemplo, `{"deploy.sh": 2}` permite llamar a `deploy.sh` como máximo dos veces. La coincidencia se basa en subcadenas, por lo que los trucos de expansión del shell como `./scripts/deploy.sh $(evil)` siguen contando para el límite. No se detecta la multiplicación en tiempo de ejecución mediante `xargs` o `find -exec`; este es un control de defensa en profundidad |

383| `CLAUDE_CODE_SCROLL_SPEED` | Establece el multiplicador de desplazamiento de la rueda del mouse en la [representación en pantalla completa](/docs/es/fullscreen#mouse-wheel-scrolling). Acepta cualquier valor positivo hasta 20, incluidos valores fraccionarios menores que 1, como `0.5`, para ralentizar el desplazamiento acelerado del trackpad y de la rueda en terminales que ya amplifican los eventos de la rueda. Establece en `3` para igualar a `vim` si tu terminal envía un evento de rueda por muesca sin amplificación. Se ignora en la terminal del IDE de JetBrains, donde Claude Code usa su propio manejo del desplazamiento |384| `CLAUDE_CODE_SCROLL_SPEED` | Establece el multiplicador de desplazamiento de la rueda del mouse en la [representación en pantalla completa](/docs/es/fullscreen#mouse-wheel-scrolling). Acepta cualquier valor positivo hasta 20, incluidos valores fraccionarios menores que 1, como `0.5`, para ralentizar el desplazamiento acelerado del trackpad y de la rueda en terminales que ya amplifican los eventos de la rueda. Establece en `3` para igualar a `vim` si tu terminal envía un evento de rueda por muesca sin amplificación. Se ignora en la terminal del IDE de JetBrains, donde Claude Code usa su propio manejo del desplazamiento |

errors.md +1 −1

Details

4064 Marketplace is already added from a different source4064 Marketplace is already added from a different source

4065</h3>4065</h3>

4066 4066 

4067Confirmó agregar un marketplace a través de [`/plugin install <plugin> --marketplace <source>`](/docs/es/plugins/install#add-a-marketplace-and-install-in-one-command), y el catálogo que Claude Code obtuvo de esa fuente se llama a sí mismo igual que un marketplace que ya agregó desde una fuente diferente. Claude Code mantiene el marketplace existente en lugar de reemplazarlo, y el plugin no se instala.4067Indicaste una nueva fuente de marketplace con [`--marketplace <source>` en el comando de instalación](/docs/es/plugins/install#add-a-marketplace-and-install-in-one-command), en una sesión o desde tu shell. El catálogo que Claude Code obtuvo de esa fuente tiene el mismo nombre que un marketplace que ya agregaste desde una fuente diferente. Claude Code mantiene el marketplace existente en lugar de reemplazarlo, y el plugin no se instala.

4068 4068 

4069```text theme={null}4069```text theme={null}

4070Marketplace "acme-tools" is already added from a different source (github:acme/plugins). To use this source instead, remove that marketplace first with /plugin marketplace remove acme-tools.4070Marketplace "acme-tools" is already added from a different source (github:acme/plugins). To use this source instead, remove that marketplace first with /plugin marketplace remove acme-tools.

glossary.md +1 −1

Details

511 Worktree isolation511 Worktree isolation

512</h3>512</h3>

513 513 

514Un modo de aislamiento que ejecuta Claude en un worktree git separado bajo `.claude/worktrees/`, habilitado con la bandera `-w` o `isolation: worktree` en la configuración de subagent. Los cambios permanecen en una rama separada en un directorio separado, por lo que los agentes paralelos no sobrescriben los archivos de los demás.514Un modo de aislamiento que ejecuta Claude en un worktree git separado bajo `.claude/worktrees/`, habilitado con la bandera `-w` o `isolation: worktree` en la configuración de subagente. Los cambios permanecen en una rama separada en un directorio separado, por lo que cada agente paralelo edita su propia copia de los archivos.

515 515 

516Más información: [Ejecutar sesiones paralelas con git worktrees](/docs/es/worktrees)516Más información: [Ejecutar sesiones paralelas con git worktrees](/docs/es/worktrees)

517 517 

hooks.md +19 −8

Details

1237 Control de decisiones de SessionStart1237 Control de decisiones de SessionStart

1238</h4>1238</h4>

1239 1239 

1240Claude Code agrega al contexto de Claude la stdout que [trata como texto plano](#exit-code-0). Además de los [campos de salida JSON](#json-output) disponibles para todos los hooks, puedes devolver estos campos específicos del evento:1240Un hook SessionStart puede agregar contexto para Claude, proporcionar el primer mensaje del usuario, establecer el título de la sesión, vigilar archivos y recargar skills. Devuelve el campo correspondiente a cada uno, además de los [campos de salida JSON](#json-output) disponibles para todos los hooks:

1241 1241 

1242| Campo | Descripción |1242| Campo | Descripción |

1243| :- | :- |1243| :- | :- |

1244| `additionalContext` | Cadena agregada al contexto de Claude al inicio de la conversación, antes del primer prompt. Consulta [Agregar contexto para Claude](#add-context-for-claude) para saber cómo se entrega el texto y qué incluir en él |1244| `additionalContext` | Cadena agregada al contexto de Claude al inicio de la conversación, antes del primer prompt. Consulta [Agregar contexto para Claude](#add-context-for-claude) para saber cómo se entrega el texto y qué incluir en él |

1245| `initialUserMessage` | Cadena usada como el primer mensaje del usuario de la sesión. Se aplica en el [modo no interactivo](/docs/es/headless) con el flag `-p`, donde se convierte en el primer turno aunque no se proporcione ningún prompt. Si se proporciona un prompt, este sigue como el siguiente turno. A diferencia de `additionalContext`, que se adjunta a un turno existente, este crea el turno |1245| `initialUserMessage` | Cadena que se usa como primer mensaje del usuario de la sesión, en [modo no interactivo](/docs/es/headless) con el flag `-p`. Se convierte en el primer turno aunque no pases ningún prompt. Un prompt que sí pases va a continuación como el siguiente turno |

1246| `sessionTitle` | Establece el título de la sesión, con el mismo efecto que `/rename`. Úsalo para nombrar sesiones automáticamente a partir de la carpeta de inicio, la rama de git o el nombre del worktree. Se aplica cuando `source` es `"startup"`, `"resume"` o `"fork"`; se ignora en `"clear"` y `"compact"` |1246| `sessionTitle` | Establece el título de la sesión, con el mismo efecto que `/rename`. Se aplica cuando `source` es `"startup"`, `"resume"` o `"fork"` |

1247| `watchPaths` | Array de rutas absolutas que se vigilarán para eventos [FileChanged](#filechanged) durante esta sesión |1247| `watchPaths` | Array de rutas absolutas que se vigilarán para eventos [FileChanged](#filechanged) durante esta sesión |

1248| `reloadSkills` | Booleano. Cuando es `true`, Claude Code vuelve a escanear los directorios de [skills](/docs/es/skills) y de comandos después de que terminan los hooks SessionStart, de modo que los skills que instaló el hook estén disponibles en la misma sesión, a partir del primer prompt |1248| `reloadSkills` | Booleano. Cuando es `true`, Claude Code vuelve a examinar los directorios de [skills](/docs/es/skills) y comandos después de que terminan los hooks SessionStart. Consulta [Recargar los skills que instala un hook](#reload-skills-that-a-hook-installs) |

1249 

1250Esta salida agrega contexto y le pone nombre a la sesión:

1249 1251 

1250```json theme={null}1252```json theme={null}

1251{1253{


1257}1259}

1258```1260```

1259 1261 

1260Como la stdout en texto plano ya llega a Claude en este evento, un hook que solo carga contexto puede imprimir directamente en stdout sin construir JSON. Usa el formato JSON cuando necesites combinar contexto con otros campos como `sessionTitle`.1262Un hook que solo agrega contexto puede imprimirlo sin construir JSON, porque Claude Code agrega al contexto de Claude la [stdout en texto plano](#exit-code-0) de un hook SessionStart.

1263 

1264Si el hook SessionStart de tu plugin proporciona `initialUserMessage` o `sessionTitle`, instala el plugin antes de que se inicie la sesión. Claude Code ignora ambos campos de un plugin que termina de instalarse después de que se hayan ejecutado los hooks SessionStart.

1265 

1266<h4 id="reload-skills-that-a-hook-installs">

1267 Recargar los skills que instala un hook

1268</h4>

1269 

1270Para que los skills que instala un hook SessionStart estén disponibles en la misma sesión, devuelve `reloadSkills`. La detección de skills normalmente se ejecuta antes de que terminen los hooks SessionStart, así que, sin él, los archivos que un hook escribe en `~/.claude/skills/` o `.claude/skills/` pueden faltar cuando se ejecuta el primer prompt.

1261 1271 

1262Usa `reloadSkills` cuando un hook SessionStart instala o actualiza skills. El descubrimiento de skills normalmente se ejecuta antes de que terminen los hooks SessionStart, así que los archivos que el hook escribe en `~/.claude/skills/` o `.claude/skills/` de otro modo solo aparecerían en la siguiente sesión. Este ejemplo sincroniza un repositorio compartido de skills y solicita el nuevo escaneo:1272Este ejemplo sincroniza un repositorio compartido de skills y solicita el nuevo examen:

1263 1273 

1264```bash theme={null}1274```bash theme={null}

1265#!/bin/bash1275#!/bin/bash


1270echo '{"hookSpecificOutput": {"hookEventName": "SessionStart", "reloadSkills": true}}'1280echo '{"hookSpecificOutput": {"hookEventName": "SessionStart", "reloadSkills": true}}'

1271```1281```

1272 1282 

1273La URL del repositorio es un marcador de posición; reemplázala por tu propio repositorio de skills. Con el marcador de posición, la clonación falla e imprime un mensaje `fatal:` en stderr. La stderr de un hook SessionStart que termina con 0 es solo informativa, así que la solicitud `reloadSkills` se aplica de todos modos.1283La URL del repositorio es un marcador de posición. Reemplázala por tu propio repositorio de skills.

1274 1284 

1275<h4 id="persist-environment-variables">1285<h4 id="persist-environment-variables">

1276 Persistir variables de entorno1286 Persistir variables de entorno


1860| :- | :- | :- | :- |1870| :- | :- | :- | :- |

1861| `url` | string | `"https://example.com/api"` | URL de la que se obtendrá el contenido |1871| `url` | string | `"https://example.com/api"` | URL de la que se obtendrá el contenido |

1862| `prompt` | string | `"Extract the API endpoints"` | Prompt que se ejecutará sobre el contenido obtenido |1872| `prompt` | string | `"Extract the API endpoints"` | Prompt que se ejecutará sobre el contenido obtenido |

1873| `offset` | number | `100000` | Número opcional de caracteres que se omitirán desde el inicio de la página. Claude lo establece para seguir leyendo una página larga. Requiere Claude Code v2.1.290 o posterior |

1863 1874 

1864<h5 id="websearch">1875<h5 id="websearch">

1865 WebSearch1876 WebSearch


4279Los hooks asincronos tienen restricciones adicionales en comparación con los hooks sincronos:4290Los hooks asincronos tienen restricciones adicionales en comparación con los hooks sincronos:

4280 4291 

4281* La salida del hook se entrega en el siguiente turno de conversación. Si la sesión está inactiva, la respuesta espera hasta la siguiente interacción del usuario. Excepción: un hook `asyncRewake` que sale con código 2 despierta a Claude inmediatamente incluso cuando la sesión está inactiva.4292* La salida del hook se entrega en el siguiente turno de conversación. Si la sesión está inactiva, la respuesta espera hasta la siguiente interacción del usuario. Excepción: un hook `asyncRewake` que sale con código 2 despierta a Claude inmediatamente incluso cuando la sesión está inactiva.

4282* Cada ejecución crea un proceso de fondo separado. No hay deduplicación en múltiples activaciones del mismo hook asincrónico.4293* Cada ejecución crea un proceso en segundo plano separado.

4283 4294 

4284<h2 id="security-considerations">4295<h2 id="security-considerations">

4285 Consideraciones de seguridad4296 Consideraciones de seguridad

Details

599 599 

600En sesiones conectadas a una [puerta de enlace de aplicaciones Claude](/docs/es/claude-apps-gateway) a través de `/login`, la CLI marca las exportaciones con la identidad autenticada: `user.id` es el sujeto del IdP, `user.email` es el correo electrónico con sesión iniciada, y `user.groups` lleva la pertenencia al grupo del IdP como una cadena separada por comas. Cada exportación también lleva `identity.source: gateway-oidc`. La identidad de la puerta de enlace se aplica en último lugar, por lo que las claves `user.*` e `identity.*` establecidas a través de `OTEL_RESOURCE_ATTRIBUTES` se ignoran en esas sesiones.600En sesiones conectadas a una [puerta de enlace de aplicaciones Claude](/docs/es/claude-apps-gateway) a través de `/login`, la CLI marca las exportaciones con la identidad autenticada: `user.id` es el sujeto del IdP, `user.email` es el correo electrónico con sesión iniciada, y `user.groups` lleva la pertenencia al grupo del IdP como una cadena separada por comas. Cada exportación también lleva `identity.source: gateway-oidc`. La identidad de la puerta de enlace se aplica en último lugar, por lo que las claves `user.*` e `identity.*` establecidas a través de `OTEL_RESOURCE_ATTRIBUTES` se ignoran en esas sesiones.

601 601 

602<Note>

603 Los eventos que Claude Code registra antes de que un desarrollador inicie sesión no incluyen la identidad del gateway. Cuando Claude Code abre una sesión sin haber iniciado sesión en el gateway, por ejemplo después de que [el gateway finaliza el inicio de sesión](/docs/es/errors#cloud-gateway-session-expired), los eventos de inicio registrados antes del inicio de sesión incluyen el `user.id` anónimo y ningún `identity.source`. Entre ellos se encuentran [`managed_settings_resolved`](#managed-settings-resolved-event), [`plugin_loaded`](#plugin-loaded-event) y [`mcp_server_connection`](#mcp-server-connection-event).

604</Note>

605 

602Para los atributos de identidad en sesiones de Claude Desktop y Cowork que se conectan a través de una puerta de enlace, consulte la [referencia de telemetría de la puerta de enlace](/docs/es/claude-apps-gateway-config#telemetry).606Para los atributos de identidad en sesiones de Claude Desktop y Cowork que se conectan a través de una puerta de enlace, consulte la [referencia de telemetría de la puerta de enlace](/docs/es/claude-apps-gateway-config#telemetry).

603 607 

604Los eventos incluyen además los siguientes atributos. Estos nunca se adjuntan a las métricas porque causarían cardinalidad ilimitada:608Los eventos incluyen además los siguientes atributos. Estos nunca se adjuntan a las métricas porque causarían cardinalidad ilimitada:

Details

91| `-y, --yes` | Acepta el comando de instalación mostrado sin la solicitud `Run this command now?`. Se ignora cuando el comando se ejecuta dentro de una sesión de Claude Code, como desde la herramienta Bash o un hook. Requiere Claude Code v2.1.229 o posterior |91| `-y, --yes` | Acepta el comando de instalación mostrado sin la solicitud `Run this command now?`. Se ignora cuando el comando se ejecuta dentro de una sesión de Claude Code, como desde la herramienta Bash o un hook. Requiere Claude Code v2.1.229 o posterior |

92| `--accept-command <sha256>` | Acepta el comando de instalación mostrado cuyo `sha256` una ejecución anterior de [`--json`](#plugin-json-result) reportó en `shownCommand`, en lugar de `-y`. No se puede combinar con `-y`. Consulta [Aceptar un comando de instalación mostrado](#accept-a-displayed-install-command). Requiere Claude Code v2.1.271 o posterior |92| `--accept-command <sha256>` | Acepta el comando de instalación mostrado cuyo `sha256` una ejecución anterior de [`--json`](#plugin-json-result) reportó en `shownCommand`, en lugar de `-y`. No se puede combinar con `-y`. Consulta [Aceptar un comando de instalación mostrado](#accept-a-displayed-install-command). Requiere Claude Code v2.1.271 o posterior |

93| `--json` | Imprime el resultado como un objeto JSON en la última línea de stdout en lugar del mensaje legible por humanos, para usar en scripts. Consulta [Formato de resultado JSON](#plugin-json-result). Requiere Claude Code v2.1.268 o posterior |93| `--json` | Imprime el resultado como un objeto JSON en la última línea de stdout en lugar del mensaje legible por humanos, para usar en scripts. Consulta [Formato de resultado JSON](#plugin-json-result). Requiere Claude Code v2.1.268 o posterior |

94| `--marketplace <source>` | Instala `<plugin>`, indicado por su nombre simple, desde el marketplace en `<source>`, añadiendo primero el marketplace si aún no lo has añadido. Consulta [Añadir un marketplace e instalar en un solo comando](/docs/es/plugins/install#add-a-marketplace-and-install-in-one-command). Requiere Claude Code v2.1.292 o posterior |

94 95 

95Ejecuta `claude plugin install --help` en tu shell para ver todas las opciones que tu versión soporta.96Ejecuta `claude plugin install --help` en tu shell para ver todas las opciones que tu versión soporta.

96 97 

Details

189 189 

190* **Scope**: alcance de usuario por defecto. Pase `--scope project` o `--scope local` para cambiarlo.190* **Scope**: alcance de usuario por defecto. Pase `--scope project` o `--scope local` para cambiarlo.

191* **When the plugins load**: los plugins que instala se cargan la próxima vez que inicia Claude Code, o cuando ejecuta `/reload-plugins` en una sesión que ya está abierta.191* **When the plugins load**: los plugins que instala se cargan la próxima vez que inicia Claude Code, o cuando ejecuta `/reload-plugins` en una sesión que ya está abierta.

192* **The marketplace must be added first**: en una máquina donde nadie ha abierto una sesión interactiva de Claude Code aún, el marketplace oficial no está registrado, así que un script que instala desde él ejecuta `claude plugin marketplace add anthropics/claude-plugins-official` antes de la instalación.192* **El marketplace en una máquina nueva**: en una máquina donde nadie ha abierto aún una sesión interactiva de Claude Code, el marketplace oficial no está registrado, así que un script que instala desde él ejecuta `claude plugin marketplace add anthropics/claude-plugins-official` antes de la instalación. Consulta [Agregar e instalar desde tu shell](#add-and-install-from-your-shell).

193 193 

194```bash theme={null}194```bash theme={null}

195claude plugin install formatter@your-org --scope project195claude plugin install formatter@your-org --scope project


232 Agregue un marketplace e instale en un comando232 Agregue un marketplace e instale en un comando

233</h3>233</h3>

234 234 

235Para instalar un plugin desde un marketplace que aún no ha agregado, ejecute `/plugin install` en una sesión de Claude Code y nombre la fuente del marketplace con `--marketplace`. Requiere Claude Code v2.1.275 o posterior.235Para instalar un plugin desde un marketplace que aún no has agregado, indica la fuente del marketplace con `--marketplace` en el comando de instalación, en una sesión o desde tu shell. La fuente acepta [las mismas formas que `/plugin marketplace add`](#add-a-marketplace), como GitHub `owner/repo`, una URL git o una ruta local. Da el nombre del plugin por sí solo, sin un sufijo `@marketplace`.

236 

237<h4 id="add-and-install-in-a-session">

238 Agrega e instala en una sesión

239</h4>

240 

241Ejecuta `/plugin install` en una sesión de Claude Code con el plugin y la fuente. Requiere Claude Code v2.1.275 o posterior. En una sesión, la fuente no puede contener espacios.

236 242 

237```text theme={null}243```text theme={null}

238/plugin install deploy-helper --marketplace your-org/plugins244/plugin install deploy-helper --marketplace your-org/plugins

239```245```

240 246 

241La fuente toma [las mismas formas que `/plugin marketplace add`](#add-a-marketplace), como GitHub `owner/repo`, una URL git, o una ruta local, excepto que no puede contener espacios. Dé el nombre del plugin por sí solo, sin un sufijo `@marketplace`.

242 

243Si aún no ha agregado ese marketplace, Claude Code muestra la fuente que resolvió y le pide que confirme antes de agregarlo. Una vez que se agrega el marketplace, los detalles del plugin se abren y elige un [alcance de instalación](#install-a-plugin). Si la fuente coincide con un marketplace que ya ha agregado, Claude Code omite la confirmación y abre los detalles del plugin en ese marketplace.247Si aún no ha agregado ese marketplace, Claude Code muestra la fuente que resolvió y le pide que confirme antes de agregarlo. Una vez que se agrega el marketplace, los detalles del plugin se abren y elige un [alcance de instalación](#install-a-plugin). Si la fuente coincide con un marketplace que ya ha agregado, Claude Code omite la confirmación y abre los detalles del plugin en ese marketplace.

244 248 

249<h4 id="add-and-install-from-your-shell">

250 Agrega e instala desde tu shell

251</h4>

252 

253En tu shell, sin iniciar una sesión, ejecuta `claude plugin install` con el plugin y la fuente. Requiere Claude Code v2.1.292 o posterior.

254 

255```bash theme={null}

256claude plugin install deploy-helper --marketplace your-org/plugins

257```

258 

259El comando de shell agrega el marketplace sin un paso de confirmación. Un marketplace que ya has agregado desde esa fuente se reutiliza. Uno nuevo se agrega bajo las mismas [verificaciones de políticas de la organización](/docs/es/plugins/org#restrict-what-users-can-install) que `claude plugin marketplace add`, y se declara en tu configuración de usuario incluso cuando pasas `--scope project`.

260 

245<h3 id="add-a-private-marketplace">261<h3 id="add-a-private-marketplace">

246 Agregue un marketplace privado262 Agregue un marketplace privado

247</h3>263</h3>

Details

138| `$.mcp.call` | Llama a una herramienta en un servidor MCP conectado, según las reglas de permisos de la sesión |138| `$.mcp.call` | Llama a una herramienta en un servidor MCP conectado, según las reglas de permisos de la sesión |

139| `$.model.complete` | Usa el plan o la clave de API del usuario para llamadas al modelo |139| `$.model.complete` | Usa el plan o la clave de API del usuario para llamadas al modelo |

140| `$.prompt.submit` | Envía un prompt y puede enviarlo como si fueran las propias palabras del usuario |140| `$.prompt.submit` | Envía un prompt y puede enviarlo como si fueran las propias palabras del usuario |

141| `$.session.send` | Envía un mensaje que lee el Claude de otra sesión o de un subagente |141| `$.session.send` | Envía un mensaje que lee el Claude de otra sesión, de un subagente o de un [compañero de equipo](/docs/es/agent-teams) |

142 142 

143En la línea `hooks:`, [`tool.call`](/docs/es/plugins/mods/reference#tools) y [`prompt.submit`](/docs/es/plugins/mods/reference#prompts-and-what-claude-reads) significan que el mod ve cada llamada a herramienta y cada prompt, y puede modificarlos. [`session.append`](/docs/es/plugins/mods/reference#session) significa que el mod puede reescribir cada fila de la conversación antes de que se almacene. [`ui.render{component=AskUserQuestion}`](/docs/es/plugins/mods/interface#change-what-claude-code-already-draws) significa que el mod puede volver a dibujar el diálogo que Claude usa para hacerle una pregunta al usuario. `tool.check` significa que el mod puede aprobar o denegar una llamada a herramienta antes de que aparezca una solicitud de permiso. [Conoce lo que sucede de forma predeterminada](#know-what-happens-by-default) enumera cuáles de tus reglas y hooks tienen precedencia sobre su respuesta.143En la línea `hooks:`, [`tool.call`](/docs/es/plugins/mods/reference#tools) y [`prompt.submit`](/docs/es/plugins/mods/reference#prompts-and-what-claude-reads) significan que el mod ve cada llamada a herramienta y cada prompt, y puede modificarlos. [`session.append`](/docs/es/plugins/mods/reference#session) significa que el mod puede reescribir cada fila de la conversación antes de que se almacene. [`ui.render{component=AskUserQuestion}`](/docs/es/plugins/mods/interface#change-what-claude-code-already-draws) significa que el mod puede volver a dibujar el diálogo que Claude usa para hacerle una pregunta al usuario. `tool.check` significa que el mod puede aprobar o denegar una llamada a herramienta antes de que aparezca una solicitud de permiso. [Conoce lo que sucede de forma predeterminada](#know-what-happens-by-default) enumera cuáles de tus reglas y hooks tienen precedencia sobre su respuesta.

144 144 

Details

140| Llamada | Lo que ve el usuario |140| Llamada | Lo que ve el usuario |

141| :- | :- |141| :- | :- |

142| `$.ui.status(text)` | Una línea debajo del prompt que permanece hasta que la cambies. Comienza con `⚠` y el nombre del mod, como en `⚠ my-mod: checks: 3 passing`. |142| `$.ui.status(text)` | Una línea debajo del prompt que permanece hasta que la cambies. Comienza con `⚠` y el nombre del mod, como en `⚠ my-mod: checks: 3 passing`. |

143| `$.ui.toast(text)` | Una notificación emergente en la parte superior derecha, con el nombre del mod encima del texto, que desaparece después de unos segundos |143| `$.ui.toast(text)` | Una notificación emergente con el nombre del mod que desaparece después de unos segundos. Es un cuadro en la parte superior derecha en el [renderizado de pantalla completa](/docs/es/fullscreen), y una línea a la derecha debajo del prompt en el renderizador clásico. |

144| `$.ui.log(text)` | Una línea atenuada en la transcripción que Claude no lee. Comienza con `●` y el nombre del mod, como en `● my-mod: build finished`. |144| `$.ui.log(text)` | Una línea atenuada en la transcripción que Claude no lee. Comienza con `●` y el nombre del mod, como en `● my-mod: build finished`. |

145 145 

146<h3 id="start-a-turn-from-a-background-job">146<h3 id="start-a-turn-from-a-background-job">


159 Enviar y recibir mensajes entre sesiones159 Enviar y recibir mensajes entre sesiones

160</h2>160</h2>

161 161 

162Un mod puede enviar un mensaje de texto sin formato a otra de tus sesiones o a uno de los subagentes de esta sesión, y observar los mensajes que llegan y salen. `$.session.send({ to, text })` envía uno, con la misma entrega que realiza la herramienta SendMessage. `to` es `{ sessionId }` para una sesión, `{ agentId }` para un subagente de `$.agent.list()`, o la dirección en forma de cadena de la que provino un mensaje recibido. La llamada se resuelve en cuanto el mensaje queda en cola, con `{ isDelivered: true }`. Cuando no se entregó nada, se resuelve con `{ isDelivered: false, reason }`, y `reason` indica el motivo.162Un mod puede enviar un mensaje de texto sin formato a otra de tus sesiones, a uno de los subagentes de esta sesión o a un compañero de su [equipo de agentes](/docs/es/agent-teams). También puede observar los mensajes que llegan y salen.

163 

164Para enviar uno, llama a `$.session.send({ to, text })`, que realiza la misma entrega que la herramienta SendMessage. Define `to` según quién recibe el mensaje:

165 

166* **Otra de tus sesiones**: `{ sessionId }`

167* **Un subagente o compañero**: `{ agentId }`, con un id de `$.agent.list()`

168* **El remitente de un mensaje que recibiste**: la dirección en forma de cadena de la que provino ese mensaje

169 

170La llamada se resuelve en cuanto el mensaje queda en cola, con `{ isDelivered: true }`. Cuando no se entregó nada, se resuelve con `{ isDelivered: false, reason }`, y `reason` indica el motivo.

163 171 

164Este hook responde a un comando `/ping`, [registrado como comando](#add-a-command), pidiéndole un estado a la sesión cuyo id escribes después:172Este hook responde a un comando `/ping`, [registrado como comando](#add-a-command), pidiéndole un estado a la sesión cuyo id escribes después:

165 173 

Details

281 281 

282`result.usage` contiene los recuentos de tokens que la API de Claude informa para una solicitud, además del `model` que respondió: `input_tokens`, `output_tokens`, `cache_read_input_tokens` y `cache_creation_input_tokens`. El hook también se ejecuta para las solicitudes de los subagentes, así que comprueba `e.agentId` cuando solo quieras la conversación principal.282`result.usage` contiene los recuentos de tokens que la API de Claude informa para una solicitud, además del `model` que respondió: `input_tokens`, `output_tokens`, `cache_read_input_tokens` y `cache_creation_input_tokens`. El hook también se ejecuta para las solicitudes de los subagentes, así que comprueba `e.agentId` cuando solo quieras la conversación principal.

283 283 

284Para ver las llamadas a herramientas que la propia API ejecutó durante la solicitud, como las llamadas a la [herramienta advisor](/docs/es/advisor), lee `result.serverToolUses`. Claude Code no ejecuta estas llamadas, así que ningún hook `tool.call` o `tool.check` se dispara para ellas. El campo no está presente cuando la respuesta no tiene ese tipo de llamadas, y requiere Claude Code v2.1.290 o posterior.

285 

284<h3 id="hook-the-settings-hook-events">286<h3 id="hook-the-settings-hook-events">

285 Manejar los eventos de los hooks de configuración287 Manejar los eventos de los hooks de configuración

286</h3>288</h3>

Details

10 10 

11Este mapa muestra dónde puede dibujar un mod en una sesión de terminal:11Este mapa muestra dónde puede dibujar un mod en una sesión de terminal:

12 12 

13<img src="https://mintcdn.com/claude-code/dgiVO_Od1X1faduV/images/mods-screen-map.svg?fit=max&auto=format&n=dgiVO_Od1X1faduV&q=85&s=5fda26b6609c62b68c6f9e528c1590ea" className="dark:hidden" alt="Mapa de una sesión de terminal de Claude Code. Un mod puede agregar un panel como barra lateral a la derecha, una notificación emergente en la parte superior derecha de la transcripción, una línea de registro en la transcripción, una franja sobre el prompt y una línea de estado debajo del prompt. Un mod puede redibujar mensajes, filas de llamadas a herramientas y el spinner. El prompt es propio de Claude Code." width="600" height="336" data-path="images/mods-screen-map.svg" />13<img src="https://mintcdn.com/claude-code/dgiVO_Od1X1faduV/images/mods-screen-map.svg?fit=max&auto=format&n=dgiVO_Od1X1faduV&q=85&s=5fda26b6609c62b68c6f9e528c1590ea" className="dark:hidden" alt="Mapa de una sesión de terminal de Claude Code con renderizado en pantalla completa. Un mod puede agregar un panel como barra lateral a la derecha, una notificación emergente en la parte superior derecha de la transcripción, una línea de registro en la transcripción, una franja sobre el prompt y una línea de estado debajo del prompt. Un mod puede redibujar mensajes, filas de llamadas a herramientas y el spinner. El prompt es propio de Claude Code." width="600" height="336" data-path="images/mods-screen-map.svg" />

14 14 

15<img src="https://mintcdn.com/claude-code/dgiVO_Od1X1faduV/images/mods-screen-map-dark.svg?fit=max&auto=format&n=dgiVO_Od1X1faduV&q=85&s=5b4161581a1bd2c0450b0c8b57bc1225" className="hidden dark:block" alt="Mapa de una sesión de terminal de Claude Code. Un mod puede agregar un panel como barra lateral a la derecha, una notificación emergente en la parte superior derecha de la transcripción, una línea de registro en la transcripción, una franja sobre el prompt y una línea de estado debajo del prompt. Un mod puede redibujar mensajes, filas de llamadas a herramientas y el spinner. El prompt es propio de Claude Code." width="600" height="336" data-path="images/mods-screen-map-dark.svg" />15<img src="https://mintcdn.com/claude-code/dgiVO_Od1X1faduV/images/mods-screen-map-dark.svg?fit=max&auto=format&n=dgiVO_Od1X1faduV&q=85&s=5b4161581a1bd2c0450b0c8b57bc1225" className="hidden dark:block" alt="Mapa de una sesión de terminal de Claude Code con renderizado en pantalla completa. Un mod puede agregar un panel como barra lateral a la derecha, una notificación emergente en la parte superior derecha de la transcripción, una línea de registro en la transcripción, una franja sobre el prompt y una línea de estado debajo del prompt. Un mod puede redibujar mensajes, filas de llamadas a herramientas y el spinner. El prompt es propio de Claude Code." width="600" height="336" data-path="images/mods-screen-map-dark.svg" />

16 16 

17En una terminal más angosta, el panel se ubica sobre el prompt en lugar de junto a la transcripción.17En una terminal más angosta, el panel se ubica sobre el prompt en lugar de junto a la transcripción.

18 18 


324| `title` | La etiqueta de la pestaña del panel cuando hay más de un panel abierto |324| `title` | La etiqueta de la pestaña del panel cuando hay más de un panel abierto |

325| `focus` | Solicita el [foco del teclado](#know-which-keys-your-mod-can-receive) |325| `focus` | Solicita el [foco del teclado](#know-which-keys-your-mod-can-receive) |

326| `closeOnEscape` | Hace que Esc cierre el panel |326| `closeOnEscape` | Hace que Esc cierre el panel |

327| `holdToasts` | Retiene los toasts, los pequeños avisos de [`$.ui.toast`](/docs/es/plugins/mods/api#show-something-without-starting-a-turn), hasta que el panel se cierre |327| `holdToasts` | En la terminal, retiene los toasts mientras este panel es el que se muestra. Consulta [Retén los toasts detrás de un diálogo](#hold-toasts-behind-a-dialog). |

328| `rows` | La altura que se solicita cuando el panel está encima del prompt. El valor predeterminado es un tercio del espacio. |328| `rows` | La altura que se solicita cuando el panel está encima del prompt. El valor predeterminado es un tercio del espacio. |

329| `columns` | El ancho que se solicita cuando el panel está junto a la transcripción |329| `columns` | El ancho que se solicita cuando el panel está junto a la transcripción |

330 330 


337 337 

338Para permitir que un comando abra el panel mientras Claude está trabajando, agrega `immediate: true` cuando [registres el comando](/docs/es/plugins/mods/api#add-a-command). Sin eso, un comando escrito durante un turno espera a que el turno termine.338Para permitir que un comando abra el panel mientras Claude está trabajando, agrega `immediate: true` cuando [registres el comando](/docs/es/plugins/mods/api#add-a-command). Sin eso, un comando escrito durante un turno espera a que el turno termine.

339 339 

340<h4 id="hold-toasts-behind-a-dialog">

341 Retén los toasts detrás de un diálogo

342</h4>

343 

344Pasa `holdToasts: true` a `$.ui.open` cuando el panel sea un diálogo que el usuario responde y luego deja, para que no aparezcan toasts mientras decide. En la terminal, la retención dura mientras ese panel es el que se muestra, y un toast generado durante ese tiempo espera hasta que termine la retención.

345 

346Claude Code retiene los toasts de otros mods y sus propias notificaciones de corta duración, además de los que tu mod genera con [`$.ui.toast`](/docs/es/plugins/mods/api#show-something-without-starting-a-turn). No uses el campo en un panel que permanece abierto, para que el usuario siga viéndolos.

347 

340<h4 id="when-a-pane-waits-for-a-wider-terminal">348<h4 id="when-a-pane-waits-for-a-wider-terminal">

341 Cuándo un panel espera a que la terminal sea más ancha349 Cuándo un panel espera a que la terminal sea más ancha

342</h4>350</h4>

Details

209| [`$.ui`](/docs/es/plugins/mods/interface#pick-where-to-draw) | `resolve`, `invalidate`, `open`, `close`, `panes`, `focus`, `scroll`, `toast`, `status`, `log`, `notice`, `ask`, `copy`, `selection`, `blit` |209| [`$.ui`](/docs/es/plugins/mods/interface#pick-where-to-draw) | `resolve`, `invalidate`, `open`, `close`, `panes`, `focus`, `scroll`, `toast`, `status`, `log`, `notice`, `ask`, `copy`, `selection`, `blit` |

210| [`$.command`](/docs/es/plugins/mods/api#add-a-command) | `register`, `run`, `list` |210| [`$.command`](/docs/es/plugins/mods/api#add-a-command) | `register`, `run`, `list` |

211| [`$.tool`](/docs/es/plugins/mods/api#add-a-tool) | `register`, `call`, `check`, `list` |211| [`$.tool`](/docs/es/plugins/mods/api#add-a-tool) | `register`, `call`, `check`, `list` |

212| `$.agent` | `register`, `spawn`, `list` |212| `$.agent` | `register`, `spawn`, `list`. `list()` devuelve los subagentes y compañeros de equipo de esta sesión, cada uno con un `status` de `pending`, `running`, `waiting`, `idle`, `completed`, `failed` o `killed`, donde `idle` y `waiting` requieren Claude Code v2.1.289 o posterior. |

213| [`$.model`](/docs/es/plugins/mods/api#call-a-model) | `complete`, `fork`, `classify` |213| [`$.model`](/docs/es/plugins/mods/api#call-a-model) | `complete`, `fork`, `classify` |

214| [`$.prompt`](/docs/es/plugins/mods/api#start-a-turn-from-a-background-job) | `submit`, `read`, `fill`, `suggest`, `compose`. Claude lee el texto de `submit({ text })` después de una oración que nombra a tu mod como remitente. `submit({ text, asUser: true })` envía el texto como las propias palabras del usuario, sin esa oración. |214| [`$.prompt`](/docs/es/plugins/mods/api#start-a-turn-from-a-background-job) | `submit`, `read`, `fill`, `suggest`, `compose`. Claude lee el texto de `submit({ text })` después de una oración que nombra a tu mod como remitente. `submit({ text, asUser: true })` envía el texto como las propias palabras del usuario, sin esa oración. |

215| `$.turn` | `abort` |215| `$.turn` | `abort` |


317| Tiempo de espera de `$.process.run` | 30 segundos de forma predeterminada, 10 minutos como máximo |317| Tiempo de espera de `$.process.run` | 30 segundos de forma predeterminada, 10 minutos como máximo |

318| `maxTokens` de `$.model.complete` | 1024 de forma predeterminada, hasta 64,000 o el límite de salida del modelo |318| `maxTokens` de `$.model.complete` | 1024 de forma predeterminada, hasta 64,000 o el límite de salida del modelo |

319| `$.fs.read` y `$.fs.write` | 4 MiB por archivo |319| `$.fs.read` y `$.fs.write` | 4 MiB por archivo |

320| El motivo de `drop` de un hook o el motivo de `deny` de `config.set` | 4,096 caracteres. Se corta el final de un motivo más largo, y el drop o deny se sigue aplicando. El corte requiere Claude Code v2.1.292 o posterior, y en versiones anteriores el hook [falla](/docs/es/plugins/mods/events#handle-a-hook-that-fails) en su lugar. |

320| Texto en un árbol | Se dibujan los primeros 100,000 caracteres |321| Texto en un árbol | Se dibujan los primeros 100,000 caracteres |

321| El `language` o `path` de un `Code`, el `value` de una opción de `Select` o el `module` de un `Client` | 10,000 caracteres. Si alguno es más largo, Claude Code [dibuja su propia versión del sitio](/docs/es/plugins/mods/interface#build-a-tree-from-elements). |322| El `language` o `path` de un `Code`, el `value` de una opción de `Select` o el `module` de un `Client` | 10,000 caracteres. Si alguno es más largo, Claude Code [dibuja su propia versión del sitio](/docs/es/plugins/mods/interface#build-a-tree-from-elements). |

322| El `href` de un `Link` | 2,048 caracteres. Un `href` más largo impide que se dibuje todo el árbol. |323| El `href` de un `Link` | 2,048 caracteres. Un `href` más largo impide que se dibuje todo el árbol. |

Details

110* `returned neither { value } nor { deny }`: un stub para una llamada a la API de mods devolvió un valor sin envolver, lo que hace fallar la prueba110* `returned neither { value } nor { deny }`: un stub para una llamada a la API de mods devolvió un valor sin envolver, lo que hace fallar la prueba

111* `no implementation for` seguido de un nombre: tu mod hizo esa llamada y ningún stub la responde111* `no implementation for` seguido de un nombre: tu mod hizo esa llamada y ningún stub la responde

112 112 

113El kit también exporta mocks en memoria que responden a un espacio de nombres completo por ti. `mock.clock(on)` responde a [`$.clock`](/docs/es/plugins/mods/api#run-work-in-the-background), `mock.store(on, { count: 7 })` responde a `$.store` desde un almacén que empieza con esas entradas, y `mock.env(on, { CI: 'true' })` responde a `$.env.get` desde esas variables. `mock.clock` devuelve un reloj simulado que tu prueba hace avanzar, así que una prueba de un temporizador no espera. `mock.store` no devuelve nada, así que para comprobar lo que guardó tu mod, escribe tú mismo los dos stubs de `store` como lo hace la [prueba de dibujo](#test-a-drawing).113El kit también exporta mocks listos para usar para el reloj, el almacén, las variables de entorno y las filas que se agregan a la conversación:

114 

115* **`mock.clock(on)`**: responde a [`$.clock`](/docs/es/plugins/mods/api#run-work-in-the-background) y devuelve un reloj simulado que tu prueba hace avanzar, así que una prueba de un temporizador no espera.

116* **`mock.store(on, { count: 7 })`**: responde a `$.store` desde un almacén que empieza con esas entradas. No devuelve nada, así que para comprobar lo que guardó tu mod, escribe tú mismo los dos stubs de `store` como lo hace la [prueba de dibujo](#test-a-drawing).

117* **`mock.env(on, { CI: 'true' })`**: responde a `$.env.get` desde esas variables.

118* **`mock.session(on)`**: devuelve una sesión simulada cuyo método `appended()` enumera las filas que tu mod agregó con [`$.session.append`](/docs/es/plugins/mods/reference#session), de la más antigua a la más reciente; requiere Claude Code v2.1.293 o posterior.

114 119 

115<h3 id="follow-the-test-kit’s-rules">120<h3 id="follow-the-test-kit’s-rules">

116 Seguir las reglas del kit de pruebas121 Seguir las reglas del kit de pruebas


168 Consultar lo que devuelve un stub173 Consultar lo que devuelve un stub

169</h3>174</h3>

170 175 

171Cada llamada a la API de mods que hace tu mod en una prueba necesita un stub que responda en lugar de Claude Code, excepto las pocas que el kit responde por sí mismo: las llamadas a [`$.ui.invalidate`](/docs/es/plugins/mods/interface#redraw-when-something-changes) y [`$.state`](/docs/es/plugins/mods/interface#keep-state). Para las llamadas a `$.clock`, usa `mock.clock(on)`, o el `$.clock.now()` de tu mod falla con `no implementation for clock.now`.176Cada llamada a la API de mods que hace tu mod en una prueba necesita un stub que responda en lugar de Claude Code, excepto las pocas que el kit responde por sí mismo: las llamadas a [`$.ui.invalidate`](/docs/es/plugins/mods/interface#redraw-when-something-changes), [`$.state`](/docs/es/plugins/mods/interface#keep-state) y `$.session.append`. Para las llamadas a `$.clock`, usa `mock.clock(on)`, o el `$.clock.now()` de tu mod falla con `no implementation for clock.now`.

172 177 

173Esta tabla enumera las que más usan los mods. La primera columna es la llamada que hace tu mod o el evento que pasa con `next(e)`. La segunda es la función que se pasa a `on` con ese nombre, así que la fila de `$.store.get` se convierte en `on('store.get', ($, e) => ({ value: saved.get(e.key) }))`. Un `'...'` en un stub marca texto que debes completar tú:178Esta tabla enumera las que más usan los mods. La primera columna es la llamada que hace tu mod o el evento que pasa con `next(e)`. La segunda es la función que se pasa a `on` con ese nombre, así que la fila de `$.store.get` se convierte en `on('store.get', ($, e) => ({ value: saved.get(e.key) }))`. Un `'...'` en un stub marca texto que debes completar tú:

174 179 

Details

209 Un dibujo no aparece o no responde209 Un dibujo no aparece o no responde

210</h2>210</h2>

211 211 

212El mod se cargó, y su panel, banda o controles no se comportan como esperas.212El mod se cargó, y su panel, banda, toast o controles no se comportan como esperas.

213 213 

214<h3 id="a-pane-or-band-is-empty-or-shows-claude-code’s-usual-content">214<h3 id="a-pane-or-band-is-empty-or-shows-claude-code’s-usual-content">

215 Un panel o una banda está vacío o muestra el contenido habitual de Claude Code215 Un panel o una banda está vacío o muestra el contenido habitual de Claude Code


247 247 

248Abre el panel desde un comando o un botón, o revisa el resultado `isPlaced` de la llamada. Consulta [Abrir un panel en el momento adecuado](/docs/es/plugins/mods/interface#open-a-pane-at-the-right-time).248Abre el panel desde un comando o un botón, o revisa el resultado `isPlaced` de la llamada. Consulta [Abrir un panel en el momento adecuado](/docs/es/plugins/mods/interface#open-a-pane-at-the-right-time).

249 249 

250<h3 id="a-toast-doesn’t-appear">

251 Un toast no aparece

252</h3>

253 

254Tu mod llama a [`$.ui.toast`](/docs/es/plugins/mods/api#show-something-without-starting-a-turn) en una sesión interactiva de la terminal y no ves el toast. Para confirmar que la llamada se ejecutó, busca en el [registro de depuración](#read-the-debug-log) una línea con el nombre de tu mod y el texto del toast, como en `$.ui.toast (first-mod): build finished`. Luego revisa causas como estas:

255 

256* **Falta la línea de la llamada**: busca una que diga por qué Claude Code rechazó la llamada, como en `first-mod: $.ui.toast dropped: timeoutMs is a whole number of ms, 1 to 60000`.

257* **Un panel está reteniendo los toasts**: tu mod u otro pasó [`holdToasts`](/docs/es/plugins/mods/interface#hold-toasts-behind-a-dialog) al abrir el panel que se está mostrando. Cierra el panel para terminar la retención. Si el panel es tuyo y debe permanecer abierto, quita `holdToasts` de su llamada a `$.ui.open` y vuelve a abrir el panel.

258* **El toast está debajo del prompt**: en el [renderizador clásico](/docs/es/fullscreen#enable-fullscreen-rendering), mira a la derecha, debajo del prompt. Un toast ahí es una línea que empieza con el nombre del mod, en lugar de un recuadro en la esquina superior derecha.

259* **Tu mod lanzó un toast más reciente**: en el renderizador clásico, un toast más reciente de tu mod puede ocupar el lugar de uno que se está mostrando o que espera para mostrarse. El registro de depuración tiene otra línea para el toast anterior, que termina con `gave way, cut short` si se estaba mostrando, o con `gave way, unseen` si nunca apareció. Para mostrar ambos mensajes, ponlos en un solo toast.

260* **Al toast se le acabó el tiempo sin dibujarse**: en el renderizado de pantalla completa, Claude Code dibuja como máximo tres toasts a la vez, así que a un toast se le puede acabar el tiempo antes de dibujarse. El registro de depuración tiene otra línea para ese toast, que termina con `left the stack, never drawn`. Cuando tu mod lance varios a la vez, pon los mensajes en un solo toast.

261 

262Antes de v2.1.290, Claude Code descartaba un toast lanzado dentro de los dos segundos posteriores al último que mostró para tu mod, y la línea del registro de depuración del toast descartado decía `within 2000ms of the last; dropped`.

263 

250<h3 id="hotkeys-do-nothing">264<h3 id="hotkeys-do-nothing">

251 Los atajos de teclado no hacen nada265 Los atajos de teclado no hacen nada

252</h3>266</h3>

Details

129* Agregue el marketplace una vez: `claude plugin marketplace add your-org/your-marketplace`, donde el argumento es un atajo de GitHub `owner/repo`, una URL o una ruta129* Agregue el marketplace una vez: `claude plugin marketplace add your-org/your-marketplace`, donde el argumento es un atajo de GitHub `owner/repo`, una URL o una ruta

130* Instale el plugin: `claude plugin install deploy-helper@your-marketplace`130* Instale el plugin: `claude plugin install deploy-helper@your-marketplace`

131* O haga ambos desde dentro de una sesión: `/plugin install deploy-helper --marketplace your-org/your-marketplace`. Requiere Claude Code v2.1.275 o posterior. Consulte [Agregar un marketplace e instalar en un comando](/docs/es/plugins/install#add-a-marketplace-and-install-in-one-command)131* O haga ambos desde dentro de una sesión: `/plugin install deploy-helper --marketplace your-org/your-marketplace`. Requiere Claude Code v2.1.275 o posterior. Consulte [Agregar un marketplace e instalar en un comando](/docs/es/plugins/install#add-a-marketplace-and-install-in-one-command)

132* O haz ambos desde el shell en un solo comando: `claude plugin install deploy-helper --marketplace your-org/your-marketplace`. Requiere Claude Code v2.1.292 o posterior

132 133 

133<h3 id="ship-updates-to-users">134<h3 id="ship-updates-to-users">

134 Enviar actualizaciones a los usuarios135 Enviar actualizaciones a los usuarios

Details

163 `Invalid marketplace source format`163 `Invalid marketplace source format`

164</h3>164</h3>

165 165 

166Ejecutó `/plugin marketplace add <source>` o `claude plugin marketplace add <source>`, y Claude Code respondió `Invalid marketplace source format. Try: owner/repo, https://..., or ./path`.166Ejecutaste `/plugin marketplace add <source>`, `claude plugin marketplace add <source>` o `claude plugin install <plugin> --marketplace <source>`, y Claude Code respondió `Invalid marketplace source format. Try: owner/repo, https://..., or ./path`.

167 167 

168Claude Code acepta una fuente en una de estas formas:168Claude Code acepta una fuente en una de estas formas:

169 169 


568 `Marketplace "<name>" is already added from a different source`568 `Marketplace "<name>" is already added from a different source`

569</h3>569</h3>

570 570 

571Confirmaste agregar un marketplace mediante [`/plugin install <plugin> --marketplace <source>`](/docs/es/plugins/install#add-a-marketplace-and-install-in-one-command), y el catálogo que Claude Code obtuvo de esa fuente tiene el mismo nombre que un marketplace que ya agregaste desde una fuente diferente. Claude Code conserva el marketplace existente en lugar de reemplazarlo, y el plugin no se instala.571Indicaste una nueva fuente de marketplace con [`--marketplace <source>` en el comando de instalación](/docs/es/plugins/install#add-a-marketplace-and-install-in-one-command), en una sesión o desde tu shell. El catálogo que Claude Code obtuvo de esa fuente tiene el mismo nombre que un marketplace que ya agregaste desde una fuente diferente. Claude Code conserva el marketplace existente en lugar de reemplazarlo, y el plugin no se instala.

572 572 

573El mensaje completo se ve así:573El mensaje completo se ve así:

574 574 

Details

403 403 

404* El [archivo MCP administrado](/docs/es/managed-mcp) de alcance empresarial en su ruta estándar del sistema: `/etc/claude-code/managed-mcp.json` en hosts de runner Linux, `/Library/Application Support/ClaudeCode/managed-mcp.json` en hosts macOS. Úsalo para flotas restringidas donde solo pueden cargarse los servidores que indica el administrador. Consulta [control exclusivo con managed-mcp.json](/docs/es/managed-mcp#exclusive-control-with-managed-mcp-json) para conocer las reglas de precedencia. Cuando este archivo está en el host del runner, Claude Code omite los servidores MCP que el plano de control de Anthropic entrega a una sesión, incluidos los conectores de claude.ai, y los nombra en una advertencia en el stderr del proceso hijo de la sesión, que el runner registra en el nivel de registro `debug`. Antes de la v2.1.229, esas sesiones terminaban al iniciar con `You cannot dynamically configure MCP servers when an enterprise MCP config is present`.404* El [archivo MCP administrado](/docs/es/managed-mcp) de alcance empresarial en su ruta estándar del sistema: `/etc/claude-code/managed-mcp.json` en hosts de runner Linux, `/Library/Application Support/ClaudeCode/managed-mcp.json` en hosts macOS. Úsalo para flotas restringidas donde solo pueden cargarse los servidores que indica el administrador. Consulta [control exclusivo con managed-mcp.json](/docs/es/managed-mcp#exclusive-control-with-managed-mcp-json) para conocer las reglas de precedencia. Cuando este archivo está en el host del runner, Claude Code omite los servidores MCP que el plano de control de Anthropic entrega a una sesión, incluidos los conectores de claude.ai, y los nombra en una advertencia en el stderr del proceso hijo de la sesión, que el runner registra en el nivel de registro `debug`. Antes de la v2.1.229, esas sesiones terminaban al iniciar con `You cannot dynamically configure MCP servers when an enterprise MCP config is present`.

405* La clave [`managedMcpServers`](/docs/es/settings-reference#managedmcpservers) en la [configuración administrada](/docs/es/managed-settings) del host del runner: proporciona servidores HTTP y SSE sin tomar el control exclusivo, por lo que los servidores de las demás fuentes se siguen cargando. Requiere Claude Code v2.1.259 o posterior.405* La clave [`managedMcpServers`](/docs/es/settings-reference#managedmcpservers) en la [configuración administrada](/docs/es/managed-settings) del host del runner: proporciona servidores HTTP y SSE sin tomar el control exclusivo, por lo que los servidores de las demás fuentes se siguen cargando. Requiere Claude Code v2.1.259 o posterior.

406* `<repo>/.mcp.json`: alcance de proyecto. Haz commit del archivo en el repositorio; sus servidores se aprueban automáticamente en las sesiones en la nube.406* `<repo>/.mcp.json`: alcance de proyecto. Haz commit del archivo en el repositorio; sus servidores se aprueban automáticamente en las sesiones en la nube. En una sesión con varios repositorios, [se carga como máximo el archivo de un repositorio](#repository-settings-in-sessions-with-several-repositories).

407 407 

408Cuando la entrega de conectores está habilitada para tu organización, el plano de control de Anthropic entrega los conectores que configuraste en claude.ai a las sesiones creadas de forma interactiva mediante configuración MCP proporcionada por el servidor, enrutada a través de `api.anthropic.com`. Las sesiones creadas de forma programática, como los [envíos desde la CLI](/docs/es/self-hosted-environments-testing#run-the-test-loop), no reciben la entrega de conectores; en su lugar, proporciónales servidores MCP mediante cualquiera de las otras fuentes que enumera esta sección. El token OAuth del proceso hijo no incluye un alcance para obtener conectores directamente, así que el proceso hijo no intenta obtenerlos por sí mismo; la entrega la gestiona el servidor.408Cuando la entrega de conectores está habilitada para tu organización, el plano de control de Anthropic entrega los conectores que configuraste en claude.ai a las sesiones creadas de forma interactiva mediante configuración MCP proporcionada por el servidor, enrutada a través de `api.anthropic.com`. Las sesiones creadas de forma programática, como los [envíos desde la CLI](/docs/es/self-hosted-environments-testing#run-the-test-loop), no reciben la entrega de conectores; en su lugar, proporciónales servidores MCP mediante cualquiera de las otras fuentes que enumera esta sección. El token OAuth del proceso hijo no incluye un alcance para obtener conectores directamente, así que el proceso hijo no intenta obtenerlos por sí mismo; la entrega la gestiona el servidor.

409 409 


542exit 0542exit 0

543```543```

544 544 

545El hook solicita a Claude que confirme y envíe antes de que la sesión termine, y permanece silencioso cuando el directorio no es un repositorio git o no tiene remoto.545El hook solicita a Claude que confirme y envíe antes de que la sesión termine, y permanece silencioso cuando el directorio no es un repositorio git o no tiene remoto. Para una sesión con varios repositorios, consulta [a qué se refiere `$CLAUDE_PROJECT_DIR`](#repository-settings-in-sessions-with-several-repositories).

546 546 

547<h2 id="permissions-and-tool-approval">547<h2 id="permissions-and-tool-approval">

548 Permisos y aprobación de herramientas548 Permisos y aprobación de herramientas


571 571 

572Establezca `SELF_HOSTED_RUNNER_HOST_CONFIG_DIR` para sembrar desde una ruta diferente, o apúntelo a un directorio vacío para deshabilitar la siembra.572Establezca `SELF_HOSTED_RUNNER_HOST_CONFIG_DIR` para sembrar desde una ruta diferente, o apúntelo a un directorio vacío para deshabilitar la siembra.

573 573 

574El `.claude/settings.json` confirmado en el repositorio se superpone como configuración del proyecto. Las sesiones también leen [`managed-settings.json`](/docs/es/settings#where-settings-live) desde la ruta estándar del sistema en su imagen de ejecutor. Si sus claves se aplican junto con [configuración administrada por servidor](/docs/es/server-managed-settings) sigue [cómo Claude Code combina fuentes administradas](/docs/es/managed-settings#how-claude-code-combines-managed-sources): por defecto, cuando su organización entrega cualquier clave administrada por servidor, las sesiones ignoran el archivo de imagen del ejecutor aparte de las [claves que Claude Code lee de cada fuente de administrador](/docs/es/managed-settings#keys-read-from-every-admin-source), como el bloque `env`, los bloqueos de sandbox, las rutas binarias de sandbox y `forceRemoteSettingsRefresh`. Consulte [precedencia de configuración](/docs/es/settings#settings-precedence).574El `.claude/settings.json` confirmado en el repositorio se superpone como configuración del proyecto. En una sesión con varios repositorios, [como máximo tiene efecto el archivo de un solo repositorio](#repository-settings-in-sessions-with-several-repositories). Las sesiones también leen [`managed-settings.json`](/docs/es/settings#where-settings-live) desde la ruta estándar del sistema en tu imagen del ejecutor. Si sus claves se aplican junto con la [configuración administrada por el servidor](/docs/es/server-managed-settings) depende de [cómo Claude Code combina las fuentes administradas](/docs/es/managed-settings#how-claude-code-combines-managed-sources): de forma predeterminada, cuando tu organización entrega cualquier clave administrada por el servidor, las sesiones ignoran el archivo de la imagen del ejecutor, salvo las [claves que Claude Code lee de todas las fuentes de administrador](/docs/es/managed-settings#keys-read-from-every-admin-source), como el bloque `env`, los bloqueos del sandbox, las rutas de los binarios del sandbox y `forceRemoteSettingsRefresh`. Consulta [precedencia de configuración](/docs/es/settings#settings-precedence).

575 575 

576Cuando el plano de control de Anthropic proporciona una sesión con [hooks de Claude Code](/docs/es/hooks), el ejecutor los instala junto a, no sobre, su propia configuración. Requiere Claude Code v2.1.229 o posterior.576Cuando el plano de control de Anthropic proporciona una sesión con [hooks de Claude Code](/docs/es/hooks), el ejecutor los instala junto a, no sobre, su propia configuración. Requiere Claude Code v2.1.229 o posterior.

577 577 


583 583 

584La instantánea del `~/.claude/` del host que toma el ejecutor excluye el directorio `projects/`. La ubicación de almacenamiento predeterminada de la memoria automática está dentro de ese directorio. Si colocas archivos de memoria allí, el ejecutor no los copia a las sesiones, y no activan la memoria automática.584La instantánea del `~/.claude/` del host que toma el ejecutor excluye el directorio `projects/`. La ubicación de almacenamiento predeterminada de la memoria automática está dentro de ese directorio. Si colocas archivos de memoria allí, el ejecutor no los copia a las sesiones, y no activan la memoria automática.

585 585 

586<h3 id="repository-settings-in-sessions-with-several-repositories">

587 Configuración de repositorios en sesiones con varios repositorios

588</h3>

589 

590En una sesión con varios repositorios, Claude Code lee la configuración del proyecto desde el directorio en el que se inicia la sesión, por lo que como máximo el `.claude/settings.json` de un solo repositorio tiene efecto como configuración del proyecto. Un hook definido en el archivo de otro repositorio no se ejecuta, una regla de denegación en él no se aplica y su `env` no se establece.

591 

592* **`--capacity 1`, el valor predeterminado, con el checkout integrado**: la sesión se inicia en el primer repositorio de su lista de repositorios. El `.claude/settings.json` de ese repositorio tiene efecto como configuración del proyecto y su `.mcp.json` se carga, y los de los demás repositorios no.

593* **Un `--capacity` mayor que uno, o un [hook `checkout`](#checkout)**: la sesión se inicia en un directorio por sesión que contiene los checkouts. Ningún `.claude/settings.json` de repositorio tiene efecto como configuración del proyecto, ningún `.mcp.json` de repositorio se carga, y [`$CLAUDE_PROJECT_DIR`](/docs/es/hooks#reference-scripts-by-path) en un comando de hook es ese directorio, no un checkout.

594 

595El `CLAUDE.md` y los skills de cada repositorio se cargan dondequiera que se inicie la sesión. El ejecutor pasa cada repositorio a Claude Code como un [directorio adicional](/docs/es/permissions#additional-directories-grant-file-access-not-configuration), por lo que Claude Code también lee las claves `enabledPlugins` y `extraKnownMarketplaces` del `.claude/settings.json` de cada repositorio.

596 

597Para ejecutar un hook o aplicar una regla de permisos en todas las sesiones, colócalo en `~/.claude/settings.json` en el host del ejecutor. El ejecutor [siembra el archivo del host en todas las sesiones](#how-each-session’s-config-is-assembled), dondequiera que se inicie la sesión. Escribe la ruta en una regla `Read` o `Edit` como un [patrón](/docs/es/permissions#read-and-edit) absoluto con `//` o relativo al directorio personal con `~/`, porque los demás patrones se anclan a la fuente de configuración o al directorio actual.

598 

586<h3 id="repository-committed-permission-rules">599<h3 id="repository-committed-permission-rules">

587 Reglas de permiso confirmadas en el repositorio600 Reglas de permiso confirmadas en el repositorio

588</h3>601</h3>

Details

87 87 

88 Debido a que los hooks ejecutan comandos de shell, los usuarios en sesiones interactivas ven un [diálogo de aprobación de seguridad](#security-approval-dialogs) antes de que Claude Code los aplique.88 Debido a que los hooks ejecutan comandos de shell, los usuarios en sesiones interactivas ven un [diálogo de aprobación de seguridad](#security-approval-dialogs) antes de que Claude Code los aplique.

89 89 

90 Para configurar el clasificador del [modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode) para que sepa qué repositorios, buckets y dominios confía su organización, entregue un bloque `autoMode` de la misma manera; consulte [Configurar el modo automático](/docs/es/auto-mode-config) para ver cómo las entradas de `autoMode` afectan lo que el clasificador bloquea y advertencias importantes sobre los campos `environment`, `allow`, `soft_deny` y `hard_deny`.90 Para configurar el clasificador del [modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode) para que sepa en qué repositorios, buckets y dominios confía tu organización, entrega un bloque `autoMode` de la misma manera; consulta [Configurar el modo automático](/docs/es/auto-mode-config) para ver cómo las entradas de `autoMode` afectan lo que el clasificador bloquea y advertencias importantes sobre los campos `environment`, `allow`, `soft_deny` y `hard_deny`.

91 </Step>91 </Step>

92 92 

93 <Step title="Guardar e implementar">93 <Step title="Guardar e implementar">

94 Guarde sus cambios. Los clientes de Claude Code reciben la configuración actualizada en su próximo inicio o ciclo de sondeo por hora.94 Guarda tus cambios. Los clientes de Claude Code reciben la configuración actualizada en su próximo inicio o ciclo de sondeo por hora.

95 

96 El editor comprueba tu JSON con el esquema JSON publicado para la configuración de Claude Code. Si encuentra un problema en un JSON que se analiza correctamente, muestra una advertencia y cambia la etiqueta del botón de guardar. La etiqueta es **Update with errors** cuando ya hay configuración guardada, y **Add with errors** cuando todavía no hay configuración guardada. Ese botón sigue guardando, porque una advertencia del esquema no bloquea el guardado.

97 

98 El esquema [puede quedar rezagado respecto a las versiones más recientes](/docs/es/settings#edit-a-settings-file), por lo que el editor puede marcar una clave o un valor que la [referencia de configuración](/docs/es/settings-reference#all-settings) documenta. Claude Code recibe las claves y los valores que guardaste y ejecuta [su propia validación](#invalid-entries-in-delivered-settings) cuando los carga.

95 </Step>99 </Step>

96</Steps>100</Steps>

97 101 

settings.md +44 −44

Details

402 402 

403Claude Code lee la configuración de cuatro archivos, y una organización también puede entregar configuración administrada desde la consola de claude.ai. Cada fuente tiene un alcance: el conjunto de personas y proyectos a los que se aplica un ajuste guardado en ella, ya seas solo tú, todos en un proyecto o todos en tu organización.403Claude Code lee la configuración de cuatro archivos, y una organización también puede entregar configuración administrada desde la consola de claude.ai. Cada fuente tiene un alcance: el conjunto de personas y proyectos a los que se aplica un ajuste guardado en ella, ya seas solo tú, todos en un proyecto o todos en tu organización.

404 404 

405| Ámbito | Archivo | A quién afecta | Úselo para |405| Alcance | Archivo | A quién afecta | Úsalo para |

406| :- | :- | :- | :- |406| :- | :- | :- | :- |

407| Usuario | `~/.claude/settings.json` | Usted, en cada proyecto en esta máquina | Preferencias personales: tema, modo de editor, modelo predeterminado, sus propias reglas de permiso |407| Usuario | `~/.claude/settings.json` | Tú, en cada proyecto en esta máquina | Preferencias personales: tema, modo de editor, modelo predeterminado, tus propias reglas de permisos |

408| Proyecto compartido | `.claude/settings.json` | Todos los que trabajan en la carpeta que lo contiene. En un repositorio de git, confirme para que los compañeros de equipo lo obtengan | Permisos de equipo, hooks, plugins y las variables de entorno que el proyecto necesita |408| Proyecto compartido | `.claude/settings.json` | Todos los que trabajan en la carpeta que lo contiene. En un repositorio de git, haz commit del archivo para que tus compañeros de equipo lo obtengan | Permisos de equipo, hooks, plugins y las variables de entorno que el proyecto necesita |

409| Proyecto local | `.claude/settings.local.json` | Usted, solo en este proyecto. Claude Code lo mantiene fuera de git cuando crea el archivo; si lo crea a mano, agréguelo a `.gitignore` usted mismo | Anulaciones personales para un proyecto y pruebas antes de compartir |409| Proyecto local | `.claude/settings.local.json` | Tú, solo en este proyecto. Claude Code lo mantiene fuera de git cuando crea el archivo; si lo creas a mano, agrégalo a `.gitignore` tú mismo | Sobrescrituras personales para un proyecto y pruebas antes de compartir |

410| Administrado | `managed-settings.json` y otras [fuentes administradas](/docs/es/managed-settings#delivery-mechanisms) | Todos aquellos a quienes tu organización lo implementa; [Precedencia de la configuración](#settings-precedence) indica qué puede sobrescribirlo | Políticas de seguridad y requisitos de cumplimiento |410| Administrado | `managed-settings.json` y otras [fuentes administradas](/docs/es/managed-settings#delivery-mechanisms) | Todos aquellos a quienes tu organización lo implementa; [Precedencia de la configuración](#settings-precedence) indica qué puede sobrescribirlo | Políticas de seguridad y requisitos de cumplimiento |

411 411 

412En la columna Archivo, `~/.claude` es la carpeta `.claude` en su directorio de inicio, y un `.claude` simple es la carpeta `.claude` dentro de su proyecto.412En la columna Archivo, `~/.claude` es la carpeta `.claude` en tu directorio home, y un `.claude` simple es la carpeta `.claude` dentro de tu proyecto.

413 413 

414<span id="where-each-file-applies" />414<span id="where-each-file-applies" />

415 415 

416<span id="compare-what-each-file-reaches" />416<span id="compare-what-each-file-reaches" />

417 417 

418<h3 id="compare-the-scope-of-each-settings-file">418<h3 id="compare-the-scope-of-each-settings-file">

419 Compare el ámbito de cada archivo de configuración419 Compara el alcance de cada archivo de configuración

420</h3>420</h3>

421 421 

422Suponga que tiene tres proyectos en su máquina, `website/`, `api/` y `acme-app/`, un compañero de equipo tiene su propio clon de `acme-app/`, e inicia una [sesión en la nube](#settings-in-cloud-sessions) en `acme-app/`.422Supón que tienes tres proyectos en tu máquina, `website/`, `api/` y `acme-app/`, un compañero de equipo tiene su propio clon de `acme-app/`, e inicias una [sesión en la nube](#settings-in-cloud-sessions) en `acme-app/`.

423 423 

424El gráfico a continuación muestra a cuál de esas carpetas se aplica una configuración cuando inicia Claude Code desde ellas. Haga clic en un archivo de configuración para ver las carpetas que alcanza.424El gráfico a continuación muestra en cuáles de esas carpetas se aplica un ajuste cuando inicias Claude Code desde ellas. Haz clic en un archivo de configuración para ver las carpetas que alcanza.

425 425 

426<SettingsScope />426<SettingsScope />

427 427 

428* **`~/.claude/settings.json`**: cada proyecto en su máquina, y nada en la de su compañero de equipo o en la sesión en la nube428* **`~/.claude/settings.json`**: cada proyecto en tu máquina, y nada en la de tu compañero de equipo ni en la sesión en la nube

429* **`acme-app/.claude/settings.json`**: su `acme-app/`. Alcanza el clon de su compañero de equipo y la sesión en la nube solo si confirma el archivo en el control de versiones; hasta entonces, es un archivo en su disco como cualquier otro y nadie más lo tiene429* **`acme-app/.claude/settings.json`**: tu `acme-app/`. Alcanza el clon de tu compañero de equipo y la sesión en la nube solo si haces commit del archivo en el control de versiones; hasta entonces, es un archivo en tu disco como cualquier otro y nadie más lo tiene

430* **`acme-app/.claude/settings.local.json`**: su `acme-app/` solo. Claude Code lo agrega a sus exclusiones globales de git la primera vez que escribe el archivo, por lo que se mantiene fuera de sus confirmaciones; si crea el archivo a mano, [agréguelo a `.gitignore` usted mismo](#keep-personal-settings-out-of-a-repository)430* **`acme-app/.claude/settings.local.json`**: solo tu `acme-app/`. Claude Code lo agrega a tus exclusiones globales de git la primera vez que escribe el archivo, por lo que se mantiene fuera de tus commits; si creas el archivo a mano, [agrégalo a `.gitignore` tú mismo](#keep-personal-settings-out-of-a-repository)

431* **Configuraciones administradas**, ya sea un archivo `managed-settings.json`, una política MDM, o [configuraciones administradas por servidor](/docs/es/server-managed-settings) desde la consola de claude.ai: cada proyecto en cada máquina en la que su organización lo implementa, o en la que inicia sesión con su cuenta de organización. Solo las configuraciones administradas por servidor alcanzan la sesión en la nube431* **Configuración administrada**, ya sea un archivo `managed-settings.json`, una política MDM o la [configuración administrada por servidor](/docs/es/server-managed-settings) desde la consola de claude.ai: cada proyecto en cada máquina en la que tu organización la implementa, o en la que inicias sesión con tu cuenta de organización. Solo la configuración administrada por servidor alcanza la sesión en la nube

432 432 

433<span id="which-files-you-have" />433<span id="which-files-you-have" />

434 434 

435<h3 id="find-or-create-your-settings-files">435<h3 id="find-or-create-your-settings-files">

436 Encuentre o cree sus archivos de configuración436 Encuentra o crea tus archivos de configuración

437</h3>437</h3>

438 438 

439Instalar Claude Code no crea ningún archivo de configuración. Si su máquina o proyecto ya tiene uno, vino de una de estas fuentes:439Instalar Claude Code no crea ningún archivo de configuración. Si tu máquina o proyecto ya tiene uno, vino de una de estas fuentes:

440 440 

441* **Administrado**: su organización lo implementa. Usted no lo crea ni lo edita.441* **Administrado**: tu organización lo implementa. Tú no lo creas ni lo editas.

442* **Proyecto compartido**: un proyecto que ya usa Claude Code puede tener uno confirmado. Si no, créelo en `.claude/settings.json` en la carpeta del proyecto.442* **Proyecto compartido**: un proyecto que ya usa Claude Code puede tener uno con commit. Si no, créalo en `.claude/settings.json` en la carpeta del proyecto.

443* **Usuario** y **Proyecto local**: créelos usted mismo, o deje que Claude Code los cree. Escribe `~/.claude/settings.json` la primera vez que cambia una opción en el menú `/config` que almacena en configuraciones de usuario, como el tema, y `.claude/settings.local.json` la primera vez que da una aprobación permanente en un aviso de permiso, como "Sí, y no preguntes de nuevo" para un comando Bash. Algunas opciones de `/config`, incluyendo **Mostrar consejos**, se guardan en `.claude/settings.local.json` en su lugar.443* **Usuario** y **Proyecto local**: créalos tú mismo, o deja que Claude Code los cree. Escribe `~/.claude/settings.json` la primera vez que cambias una opción en el menú `/config` que almacena en la configuración de usuario, como el tema, y `.claude/settings.local.json` la primera vez que das una aprobación permanente en una solicitud de permiso, como "Sí, y no preguntes de nuevo" para un comando Bash. Algunas opciones de `/config`, incluida **Mostrar consejos**, se guardan en `.claude/settings.local.json` en lugar del archivo de usuario.

444 444 

445<Info>445<Info>

446 En Windows, `~/.claude` significa `%USERPROFILE%\.claude`. Para mantener los archivos del directorio de inicio en otro lugar, establezca [`CLAUDE_CONFIG_DIR`](/docs/es/env-vars); Claude Code almacena sus configuraciones, historial de sesiones y plugins allí en su lugar.446 En Windows, `~/.claude` significa `%USERPROFILE%\.claude`. Para mantener los archivos del directorio home en otro lugar, establece [`CLAUDE_CONFIG_DIR`](/docs/es/env-vars); Claude Code entonces almacena tu configuración, historial de sesiones y plugins allí.

447</Info>447</Info>

448 448 

449Claude Code también mantiene un quinto archivo, [`~/.claude.json`](/docs/es/claude-directory#ce-claude-json), que escribe para sí mismo; no necesita editarlo. Contiene su sesión de inicio de sesión, configuraciones de [servidor MCP](/docs/es/mcp), estado por proyecto como decisiones de confianza, y las [claves de configuración global](/docs/es/settings-reference#global-config-settings) que `/config` escribe para usted.449Claude Code también mantiene un quinto archivo, [`~/.claude.json`](/docs/es/claude-directory#ce-claude-json), que escribe para sí mismo; no necesitas editarlo. Contiene tu sesión de inicio de sesión, configuraciones de [servidores MCP](/docs/es/mcp), estado por proyecto como decisiones de confianza, y las [claves de configuración global](/docs/es/settings-reference#global-config-settings) que `/config` escribe por ti.

450 450 

451<h3 id="share-settings-with-your-team">451<h3 id="share-settings-with-your-team">

452 Comparta configuraciones con su equipo452 Comparte la configuración con tu equipo

453</h3>453</h3>

454 454 

455Confirme `.claude/settings.json` para que todos los que clonan el repositorio obtengan los mismos permisos, hooks y plugins. Cada compañero de equipo aún puede anularlo para sí mismo en su propio `.claude/settings.local.json`, por lo que las excepciones personales no necesitan una confirmación. Para un archivo de equipo completo, vea [configuraciones compartidas de un equipo](/docs/es/settings-example#a-teams-shared-settings).455Haz commit de `.claude/settings.json` para que todos los que clonen el repositorio obtengan los mismos permisos, hooks y plugins. Cada compañero de equipo aún puede sobrescribirlo para sí mismo en su propio `.claude/settings.local.json`, por lo que las excepciones personales no necesitan un commit. Para un archivo de equipo completo, consulta [la configuración compartida de un equipo](/docs/es/settings-example#a-teams-shared-settings).

456 456 

457Parte de lo que confirma espera hasta que cada compañero de equipo [confíe en la carpeta](/docs/es/permissions#project-allow-rules-and-workspace-trust), y algunas claves nunca surten efecto desde un archivo de repositorio; [Solucione una configuración que no se aplica](#common-cases) cubre ambas.457Parte de lo que incluyes en el commit espera hasta que cada compañero de equipo [confíe en la carpeta](/docs/es/permissions#project-allow-rules-and-workspace-trust), y algunas claves nunca surten efecto desde un archivo del repositorio; [Solucionar un ajuste que no se aplica](#common-cases) cubre ambos casos.

458 458 

459<span id="local-settings-file" />459<span id="local-settings-file" />

460 460 


465<span id="keep-personal-settings-out-of-the-repository" />465<span id="keep-personal-settings-out-of-the-repository" />

466 466 

467<h3 id="keep-personal-settings-out-of-a-repository">467<h3 id="keep-personal-settings-out-of-a-repository">

468 Mantenga las configuraciones personales fuera de un repositorio468 Mantén la configuración personal fuera de un repositorio

469</h3>469</h3>

470 470 

471Para cambiar una configuración para usted en un proyecto sin cambiarla para sus compañeros de equipo, guárdela en `.claude/settings.local.json` dentro del proyecto. Claude Code aplica ese archivo sobre el `.claude/settings.json` confirmado, por lo que si el archivo de su equipo establece `"model": "claude-sonnet-5"` y usted quiere Opus, ponga `"model": "claude-opus-5-5"` en su archivo local y solo sus sesiones cambian.471Para cambiar un ajuste solo para ti en un proyecto sin cambiarlo para tus compañeros de equipo, guárdalo en `.claude/settings.local.json` dentro del proyecto. Claude Code aplica ese archivo sobre el `.claude/settings.json` con commit, por lo que si el archivo de tu equipo establece `"model": "claude-sonnet-5"` y tú quieres Opus, pon `"model": "claude-opus-5-5"` en tu archivo local y solo tus sesiones cambian.

472 472 

473Claude Code también escribe en este archivo, lo mantiene fuera de sus confirmaciones, y aplica sus reglas allow sin el paso de confianza:473Claude Code también escribe en este archivo, lo mantiene fuera de tus commits y aplica sus reglas allow sin el paso de confianza:

474 474 

475* **Claude Code también lo escribe.** Cuando Claude pide permiso para ejecutar un comando Bash y elige "Sí, y no preguntes de nuevo", Claude Code guarda esa [aprobación de permiso](/docs/es/permissions#permission-system) aquí como una regla `allow`.475* **Claude Code también lo escribe.** Cuando Claude pide permiso para ejecutar un comando Bash y eliges "Sí, y no preguntes de nuevo", Claude Code guarda esa [aprobación de permiso](/docs/es/permissions#permission-system) aquí como una regla `allow`.

476* **No necesita gitignore usted mismo, a menos que lo haya creado a mano.** La primera vez que Claude Code escribe el archivo en un repositorio de git que aún no lo ignora, agrega `**/.claude/settings.local.json` a su archivo de exclusiones global de git, por lo que el archivo se mantiene fuera de sus confirmaciones en cada repositorio. Ese archivo es `core.excludesFile` cuando su configuración global de git lo establece en una ruta absoluta o con prefijo `~`; de lo contrario es `$XDG_CONFIG_HOME/git/ignore`, o `~/.config/git/ignore` cuando `XDG_CONFIG_HOME` no está establecido. Si creó el archivo a mano y Claude Code aún no ha escrito en él, agréguelo a `.gitignore` usted mismo.476* **No necesitas agregarlo a gitignore tú mismo, a menos que lo hayas creado a mano.** La primera vez que Claude Code escribe el archivo en un repositorio de git que aún no lo ignora, agrega `**/.claude/settings.local.json` a tu archivo global de exclusiones de git, por lo que el archivo se mantiene fuera de tus commits en cada repositorio. Ese archivo es `core.excludesFile` cuando tu configuración global de git lo establece en una ruta absoluta o con prefijo `~`; de lo contrario es `$XDG_CONFIG_HOME/git/ignore`, o `~/.config/git/ignore` cuando `XDG_CONFIG_HOME` no está establecido. Si creaste el archivo a mano y Claude Code aún no ha escrito en él, agrégalo a `.gitignore` tú mismo.

477* **Sus reglas allow no esperan confianza mientras el archivo permanece sin rastrear.** Porque el archivo es suyo y no del repositorio, Claude Code aplica sus reglas `allow` sin el paso de [confianza del espacio de trabajo](/docs/es/permissions#project-allow-rules-and-workspace-trust) que requiere para el archivo confirmado. Si el archivo es rastreado por git, el paso de confianza también se aplica a él; vea [Cuando su archivo de configuración local necesita confianza](/docs/es/permissions#when-your-local-settings-file-needs-trust).477* **Sus reglas allow no esperan confianza mientras el archivo permanezca sin rastrear.** Como el archivo es tuyo y no del repositorio, Claude Code aplica sus reglas `allow` sin el paso de [confianza del espacio de trabajo](/docs/es/permissions#project-allow-rules-and-workspace-trust) que requiere para el archivo con commit. Si git rastrea el archivo, el paso de confianza también se le aplica; consulta [Cuando tu archivo de configuración local necesita confianza](/docs/es/permissions#when-your-local-settings-file-needs-trust).

478 478 

479<span id="where-claude-code-looks-for-each-file" />479<span id="where-claude-code-looks-for-each-file" />

480 480 


483<span id="local-allow-rules-dont-wait-for-workspace-trust" />483<span id="local-allow-rules-dont-wait-for-workspace-trust" />

484 484 

485<h4 id="where-claude-code-keeps-the-local-file-in-a-git-repository">485<h4 id="where-claude-code-keeps-the-local-file-in-a-git-repository">

486 Dónde Claude Code mantiene el archivo local en un repositorio de git486 Dónde mantiene Claude Code el archivo local en un repositorio de git

487</h4>487</h4>

488 488 

489Cuando Claude pide permiso para ejecutar un comando Bash y elige "Sí, y no preguntes de nuevo", Claude Code guarda esa aprobación como una regla `allow` en `.claude/settings.local.json`. Si inicia Claude Code en un subdirectorio de un repositorio de git, lee y escribe ese archivo en la raíz del repositorio y aplica la aprobación en todo el repositorio. En un [worktree](/docs/es/worktrees), usa el archivo en la raíz del checkout principal.489Cuando Claude pide permiso para ejecutar un comando Bash y eliges "Sí, y no preguntes de nuevo", Claude Code guarda esa aprobación como una regla `allow` en `.claude/settings.local.json`. Si inicias Claude Code en un subdirectorio de un repositorio de git, lee y escribe ese archivo en la raíz del repositorio y aplica la aprobación en todo el repositorio. En un [worktree](/docs/es/worktrees), usa el archivo en la raíz del checkout principal.

490 490 

491Dos reglas califican la ubicación raíz:491Dos reglas matizan la ubicación en la raíz:

492 492 

493* **Cuando el archivo se queda con `.claude/settings.json` en su lugar**: fuera de un repositorio de git, cuando la raíz del repositorio es su directorio de inicio, en Windows, o cuando la raíz del repositorio o su entrada `.git` o `.claude` no es propiedad de su usuario.493* **Cuando el archivo se queda junto a `.claude/settings.json`**: fuera de un repositorio de git, cuando la raíz del repositorio es tu directorio home, en Windows, o cuando la raíz del repositorio o su entrada `.git` o `.claude` no es propiedad de tu usuario.

494* **Las rutas en el archivo no se anclan en la raíz del repositorio**: una regla de permiso que comienza con `/` o una ruta de sandbox relativa [se ancla en el directorio de trabajo principal de la sesión](/docs/es/permissions#read-and-edit) en su lugar.494* **Las rutas en el archivo no se anclan en la raíz del repositorio**: una regla de permisos que comienza con `/` o una ruta relativa del sandbox [se ancla en el directorio de trabajo principal de la sesión](/docs/es/permissions#read-and-edit).

495 495 

496Antes de v2.1.211, Claude Code mantenía el archivo en el directorio de inicio. Aún lee un archivo que una versión anterior dejó allí junto al archivo raíz; donde ambos establecen la misma clave, se aplica el valor de la raíz, y las reglas de permiso de ambos archivos se aplican. El asistente [`resolveSettings()`](/docs/es/agent-sdk/typescript#resolvesettings) del Agent SDK siempre lee el archivo desde el directorio de inicio.496Antes de v2.1.211, Claude Code mantenía el archivo en el directorio donde lo iniciaste. Aún lee un archivo que una versión anterior dejó allí junto al archivo de la raíz; donde ambos establecen la misma clave, se aplica el valor de la raíz, y se aplican las reglas de permisos de ambos archivos. El helper [`resolveSettings()`](/docs/es/agent-sdk/typescript#resolvesettings) del Agent SDK siempre lee el archivo desde el directorio donde se inició.

497 497 

498Claude Code lee el `.claude/settings.json` compartido desde el [directorio de trabajo principal](/docs/es/permissions#working-directories) de la sesión, por lo que para usar un archivo confirmado en la raíz del repositorio, inicie Claude Code allí. Después de [mover la sesión con `/cd`](/docs/es/permissions#move-the-session-to-another-directory), Claude Code lee ambos archivos de proyecto desde el nuevo directorio en su lugar, colocando el archivo local por las mismas reglas. Leerlos desde el directorio al que se movió requiere Claude Code v2.1.246 o posterior.498Claude Code lee el `.claude/settings.json` compartido desde el [directorio de trabajo principal](/docs/es/permissions#working-directories) de la sesión, así que para usar un archivo con commit en la raíz del repositorio, inicia Claude Code allí. Después de [mover la sesión con `/cd`](/docs/es/permissions#move-the-session-to-another-directory), Claude Code lee ambos archivos de proyecto desde el nuevo directorio, ubicando el archivo local según las mismas reglas. Leerlos desde el directorio al que te moviste requiere Claude Code v2.1.246 o posterior.

499 499 

500<span id="managed-settings-delivery" />500<span id="managed-settings-delivery" />

501 501 


508<span id="settings-your-organization-manages" />508<span id="settings-your-organization-manages" />

509 509 

510<h3 id="check-what-your-organization-enforces">510<h3 id="check-what-your-organization-enforces">

511 Verifique qué aplica su organización511 Verifica qué impone tu organización

512</h3>512</h3>

513 513 

514Si su organización administra Claude Code, algunas configuraciones se deciden para usted y nada de lo que ponga en sus propios archivos las cambia. Para ver cuáles, ejecute `/status`: la línea `Setting sources` nombra la fuente administrada que se aplica a usted. Las configuraciones administradas se aplican dondequiera que Claude Code se ejecute en esta máquina; [Lo que un desarrollador puede cambiar](/docs/es/managed-settings#what-a-developer-can-change) cubre derechos de administrador local y herramientas distintas de Claude Code.514Si tu organización administra Claude Code, algunos ajustes se deciden por ti y nada de lo que pongas en tus propios archivos los cambia. Para ver cuáles, ejecuta `/status`: la línea `Setting sources` nombra la fuente administrada que se te aplica. La configuración administrada se aplica dondequiera que Claude Code se ejecute en esta máquina; [Lo que un desarrollador puede cambiar](/docs/es/managed-settings#what-a-developer-can-change) cubre los derechos de administrador local y las herramientas distintas de Claude Code.

515 515 

516Las configuraciones administradas lo alcanzan a través de los [mecanismos de entrega](/docs/es/managed-settings#delivery-mechanisms) en la página de configuraciones administradas, más comúnmente:516La configuración administrada te llega a través de los [mecanismos de entrega](/docs/es/managed-settings#delivery-mechanisms) de la página de configuración administrada, más comúnmente:

517 517 

518* [Configuraciones administradas por servidor](/docs/es/server-managed-settings), que Claude Code obtiene de la consola de administrador de claude.ai o de una [puerta de aplicaciones Claude](/docs/es/claude-apps-gateway) autohospedada518* [Configuración administrada por servidor](/docs/es/server-managed-settings), que Claude Code obtiene de la consola de administración de claude.ai o de un [gateway de aplicaciones de Claude](/docs/es/claude-apps-gateway) autohospedado

519* Políticas MDM o a nivel de SO, y archivos `managed-settings.json` en un directorio del sistema519* Políticas MDM o a nivel del sistema operativo, y archivos `managed-settings.json` en un directorio del sistema

520* Un host de incrustación como Claude Desktop, a través de la opción SDK `managedSettings`; vea [Controlar política desde un host de incrustación](/docs/es/managed-settings#parent-settings-from-embedding-hosts)520* Un host de incrustación como Claude Desktop, a través de la opción `managedSettings` del SDK; consulta [Controlar la política desde un host de incrustación](/docs/es/managed-settings#parent-settings-from-embedding-hosts)

521 521 

522En una sesión de [Cowork](https://claude.com/docs/cowork/overview) que se ejecuta en su máquina en la aplicación Claude Desktop, Claude Code no obtiene configuraciones administradas por servidor de la consola de administrador de claude.ai, y lee la política implementada en su dispositivo a menos que la configuración de Claude Desktop de su organización establezca `requireCoworkFullVmSandbox`. [Dónde y cuándo se aplica una política](/docs/es/managed-settings#where-and-when-a-policy-applies) cubre Cowork y sesiones en la nube.522En una sesión de [Cowork](https://claude.com/docs/cowork/overview) que se ejecuta en tu máquina en la aplicación Claude Desktop, Claude Code no obtiene la configuración administrada por servidor de la consola de administración de claude.ai, y lee la política implementada en tu dispositivo a menos que la configuración de Claude Desktop de tu organización establezca `requireCoworkFullVmSandbox`. [Dónde y cuándo se aplica una política](/docs/es/managed-settings#where-and-when-a-policy-applies) cubre Cowork y las sesiones en la nube.

523 523 

524Si es el administrador, [Configure Claude Code para su organización](/docs/es/admin-setup) lo guía a través de elegir qué aplicar, y [Implemente configuraciones administradas](/docs/es/managed-settings) cubre la entrega y cómo confirmar que una política está en vigor.524Si eres el administrador, [Configurar Claude Code para tu organización](/docs/es/admin-setup) te guía para elegir qué imponer, y [Implementar la configuración administrada](/docs/es/managed-settings) cubre la entrega y cómo confirmar que una política está en vigor. Para la advertencia que puede mostrar el editor de configuración administrada en la consola de administración de claude.ai, consulta [Configurar la configuración administrada por servidor](/docs/es/server-managed-settings#configure-server-managed-settings).

525 525 

526<h2 id="change-a-setting">526<h2 id="change-a-setting">

527 Cambie una configuración527 Cambie una configuración


809 809 

810Una [sesión en la nube](/docs/es/claude-code-on-the-web) se ejecuta en un [entorno en la nube](/docs/es/cloud-environments) en un clon fresco de su repositorio, no en su máquina. Eso cambia qué configuraciones lo alcanzan:810Una [sesión en la nube](/docs/es/claude-code-on-the-web) se ejecuta en un [entorno en la nube](/docs/es/cloud-environments) en un clon fresco de su repositorio, no en su máquina. Eso cambia qué configuraciones lo alcanzan:

811 811 

812* **Configuraciones compartidas de proyecto** (`.claude/settings.json`): se leen en una sesión con un repositorio, porque el archivo es parte del clon y la sesión comienza dentro de él. Confirme una configuración allí para aplicarla en esas sesiones. Una sesión con varios repositorios comienza por encima de los clones y lee solo las claves `enabledPlugins` y `extraKnownMarketplaces` de cada `.claude/settings.json` del repositorio, no reglas de permisos, hooks, `env` u otras claves. Los mercados y plugins que esas dos claves declaran aún [no se cargan en una sesión en la nube](/docs/es/cloud-environments#what-carries-over-from-your-setup).812* **Configuraciones compartidas de proyecto** (`.claude/settings.json`): se leen en una sesión con un repositorio, porque el archivo es parte del clon y la sesión comienza dentro de él. Haz commit de un ajuste allí para aplicarlo en esas sesiones. En un entorno alojado por Anthropic, una sesión con varios repositorios comienza por encima de los clones y lee solo las claves `enabledPlugins` y `extraKnownMarketplaces` del `.claude/settings.json` de cada repositorio, no reglas de permisos, hooks, `env` u otras claves. Los marketplaces y plugins que esas dos claves declaran aún [no se cargan en una sesión en la nube](/docs/es/cloud-environments#what-carries-over-from-your-setup). Para un entorno autohospedado, consulta [qué configuración del repositorio se aplica](/docs/es/self-hosted-environments-configuration#repository-settings-in-sessions-with-several-repositories).

813* **Configuraciones de usuario y proyecto local** (`~/.claude/settings.json` y `.claude/settings.local.json`): no se leen. Ambas permanecen en su máquina, y el archivo local no está en el clon.813* **Configuraciones de usuario y proyecto local** (`~/.claude/settings.json` y `.claude/settings.local.json`): no se leen. Ambas permanecen en su máquina, y el archivo local no está en el clon.

814* **Configuraciones administradas**: un archivo `managed-settings.json` o perfil MDM en su dispositivo no alcanza una sesión en la nube. Las [configuraciones administradas por servidor](/docs/es/server-managed-settings) de su organización sí; [cobertura de superficie](/docs/es/model-config#surface-coverage) enumera qué sesiones en la nube las reciben. Un [entorno autohospedado](/docs/es/self-hosted-environments) también lee el archivo de configuraciones administradas en su imagen de ejecutor. [Cómo Claude Code combina fuentes administradas](/docs/es/managed-settings#how-claude-code-combines-managed-sources) dice cuándo se aplica ese archivo.814* **Configuraciones administradas**: un archivo `managed-settings.json` o perfil MDM en su dispositivo no alcanza una sesión en la nube. Las [configuraciones administradas por servidor](/docs/es/server-managed-settings) de su organización sí; [cobertura de superficie](/docs/es/model-config#surface-coverage) enumera qué sesiones en la nube las reciben. Un [entorno autohospedado](/docs/es/self-hosted-environments) también lee el archivo de configuraciones administradas en su imagen de ejecutor. [Cómo Claude Code combina fuentes administradas](/docs/es/managed-settings#how-claude-code-combines-managed-sources) dice cuándo se aplica ese archivo.

815* **`/config`**: en su navegador en claude.ai/code, abre la sección Claude Code de su configuración de claude.ai en lugar de cambiar un valor. Para cambiar una configuración para una sesión en la nube, establezca una [variable de entorno](/docs/es/cloud-environments#set-environment-variables) en el entorno, o en una sesión con un repositorio, confirme la clave en el `.claude/settings.json` de ese repositorio.815* **`/config`**: en su navegador en claude.ai/code, abre la sección Claude Code de su configuración de claude.ai en lugar de cambiar un valor. Para cambiar una configuración para una sesión en la nube, establezca una [variable de entorno](/docs/es/cloud-environments#set-environment-variables) en el entorno, o en una sesión con un repositorio, confirme la clave en el `.claude/settings.json` de ese repositorio.

skills.md +2 −0

Details

94| `migrate` | Actualice su código existente de Claude API a un modelo más nuevo | Anterior a v2.1.221 |94| `migrate` | Actualice su código existente de Claude API a un modelo más nuevo | Anterior a v2.1.221 |

95| `upgrade` | Mueva la dependencia del SDK de Anthropic de su proyecto a través de una versión principal, actualmente el paquete `anthropic` de Python de 0.x a 1.x | v2.1.236 o posterior |95| `upgrade` | Mueva la dependencia del SDK de Anthropic de su proyecto a través de una versión principal, actualmente el paquete `anthropic` de Python de 0.x a 1.x | v2.1.236 o posterior |

96| `managed-agents-onboard` | Recorra la creación de un nuevo Managed Agent | Anterior a v2.1.221 |96| `managed-agents-onboard` | Recorra la creación de un nuevo Managed Agent | Anterior a v2.1.221 |

97| `managed-agents-onboard <url>` | Crea el Managed Agent que describe la página en la URL, como una página de la [documentación de Managed Agents](https://platform.claude.com/docs/en/managed-agents/overview) | v2.1.290 o posterior |

98| `managed-agents-onboard <quickstart-name>` | Crea una de las plantillas de inicio rápido de la Console, como `deep-researcher`. Si escribes una palabra que no es un nombre de plantilla, Claude enumera los nombres válidos | v2.1.290 o posterior |

97| `prompt-audit` | Marque las instrucciones escritas para modelos más antiguos en sus prompts, skills y descripciones de herramientas y proponga correcciones como un diff | v2.1.221 o posterior |99| `prompt-audit` | Marque las instrucciones escritas para modelos más antiguos en sus prompts, skills y descripciones de herramientas y proponga correcciones como un diff | v2.1.221 o posterior |

98| `cost-optimize` | Perfil dónde va el gasto de Claude API de su proyecto y proponga ahorros de opciones como prompt caching, recorte de tokens de entrada y salida innecesarios, procesamiento por lotes, esfuerzo y elección de modelo, un cambio a la vez | v2.1.247 o posterior |100| `cost-optimize` | Perfil dónde va el gasto de Claude API de su proyecto y proponga ahorros de opciones como prompt caching, recorte de tokens de entrada y salida innecesarios, procesamiento por lotes, esfuerzo y elección de modelo, un cambio a la vez | v2.1.247 o posterior |

99| `build-eval` | Construya un conjunto de evaluación para su aplicación impulsada por Claude | v2.1.259 o posterior |101| `build-eval` | Construya un conjunto de evaluación para su aplicación impulsada por Claude | v2.1.259 o posterior |

sub-agents.md +3 −1

Details

609El modo de permiso de la conversación principal decide si Claude Code usa el valor que establece:609El modo de permiso de la conversación principal decide si Claude Code usa el valor que establece:

610 610 

611* Cuando la conversación principal está en `bypassPermissions`, `acceptEdits`, o [modo auto](/docs/es/permission-modes#eliminate-prompts-with-auto-mode), el subagente se ejecuta en ese mismo modo y Claude Code ignora el `permissionMode` que establece. Bajo modo auto, el clasificador evalúa las llamadas de herramientas del subagente con las reglas de bloqueo y permiso de la conversación principal. Cuando el subagente termina, el clasificador también revisa su trabajo y su informe final antes de que el informe se entregue, como [Cómo el modo auto maneja subagentes](/docs/es/permission-modes#eliminate-prompts-with-auto-mode) describe.611* Cuando la conversación principal está en `bypassPermissions`, `acceptEdits`, o [modo auto](/docs/es/permission-modes#eliminate-prompts-with-auto-mode), el subagente se ejecuta en ese mismo modo y Claude Code ignora el `permissionMode` que establece. Bajo modo auto, el clasificador evalúa las llamadas de herramientas del subagente con las reglas de bloqueo y permiso de la conversación principal. Cuando el subagente termina, el clasificador también revisa su trabajo y su informe final antes de que el informe se entregue, como [Cómo el modo auto maneja subagentes](/docs/es/permission-modes#eliminate-prompts-with-auto-mode) describe.

612* Cuando la conversación principal está en modo `default`, `dontAsk`, o `plan`, el subagente se ejecuta en el modo de permiso que establece, excepto `bypassPermissions`. Un subagente que declara `bypassPermissions` mantiene el modo de la conversación principal en su lugar. La excepción `bypassPermissions` requiere Claude Code v2.1.267 o posterior.612* Cuando la conversación principal está en modo `default`, `dontAsk` o `plan`, el subagente se ejecuta en el modo de permisos que estableces. En su lugar, mantiene el modo de permisos de la conversación principal en estos casos:

613 * Estableces `bypassPermissions`. La excepción de `bypassPermissions` requiere Claude Code v2.1.267 o posterior.

614 * Estableces `auto` y el [modo automático no está disponible](/docs/es/permission-modes#eliminate-prompts-with-auto-mode) para el subagente, por ejemplo cuando un archivo de configuración establece [`disableAutoMode`](/docs/es/settings-reference#disableautomode) o el modelo del subagente no soporta el modo automático.

613 615 

614`permissionMode` acepta estos valores, y `manual` como alias para `default`:616`permissionMode` acepta estos valores, y `manual` como alias para `default`:

615 617 

Details

666 666 

667* WebFetch rechaza `localhost` y cualquier otro nombre de host sin un punto, como un nombre de intranet simple, antes de hacer una solicitud. El [error que devuelve](/docs/es/errors#webfetch-cannot-fetch-localhost) le dice a Claude que alcance servidores locales con `curl` a través de Bash en su lugar.667* WebFetch rechaza `localhost` y cualquier otro nombre de host sin un punto, como un nombre de intranet simple, antes de hacer una solicitud. El [error que devuelve](/docs/es/errors#webfetch-cannot-fetch-localhost) le dice a Claude que alcance servidores locales con `curl` a través de Bash en su lugar.

668* Las URLs HTTP se actualizan automáticamente a HTTPS.668* Las URLs HTTP se actualizan automáticamente a HTTPS.

669* Las páginas grandes se truncan a un límite de caracteres fijo antes del procesamiento.669* WebFetch lee hasta 100,000 caracteres del contenido de una página por llamada. En Claude Code v2.1.290 o posterior, el resultado de una página más larga le indica a Claude cuánto quedó sin leer, para que Claude pueda obtener la siguiente parte.

670* WebFetch almacena en caché cada respuesta durante 15 minutos de forma predeterminada, por lo que las búsquedas repetidas de la misma URL se devuelven rápidamente. En Claude Code v2.1.233 o posterior, establezca [`CLAUDE_CODE_WEBFETCH_CACHE_TTL_MS`](/docs/es/env-vars#variables) para cambiar cuánto tiempo WebFetch mantiene cada respuesta.670* WebFetch almacena en caché cada respuesta durante 15 minutos de forma predeterminada, por lo que las búsquedas repetidas de la misma URL se devuelven rápidamente. En Claude Code v2.1.233 o posterior, establezca [`CLAUDE_CODE_WEBFETCH_CACHE_TTL_MS`](/docs/es/env-vars#variables) para cambiar cuánto tiempo WebFetch mantiene cada respuesta.

671* Una página que no haya terminado de descargar dentro de cinco minutos, incluidos los redireccionamientos que WebFetch sigue, falla con un error de límite de tiempo. En Claude Code v2.1.268 o posterior, establezca [`CLAUDE_CODE_WEBFETCH_DEADLINE_MS`](/docs/es/env-vars#variables) para cambiar el límite, o a `0` para eliminarlo.671* Una página que no haya terminado de descargar dentro de cinco minutos, incluidos los redireccionamientos que WebFetch sigue, falla con un error de límite de tiempo. En Claude Code v2.1.268 o posterior, establezca [`CLAUDE_CODE_WEBFETCH_DEADLINE_MS`](/docs/es/env-vars#variables) para cambiar el límite, o a `0` para eliminarlo.

672* Cuando una URL se redirige a un host diferente, WebFetch devuelve un resultado de texto que nombra la URL original y el destino de redirección en lugar de seguirlo. Claude luego obtiene la nueva URL con una segunda llamada a WebFetch.672* Cuando una URL se redirige a un host diferente, WebFetch devuelve un resultado de texto que nombra la URL original y el destino de redirección en lugar de seguirlo. Claude luego obtiene la nueva URL con una segunda llamada a WebFetch.

ultrareview.md +6 −6

Details

56 Revisa una solicitud de extracción56 Revisa una solicitud de extracción

57</h3>57</h3>

58 58 

59Para revisar una solicitud de extracción de GitHub en su lugar de una rama local, pase el número de PR:59Para revisar un pull request en `github.com` en lugar de una rama local, pasa el número de PR:

60 60 

61```text theme={null}61```text theme={null}

62/code-review ultra 123462/code-review ultra 1234


64 64 

65El comando también acepta `#1234`, `PR 1234` y URLs de PR pegadas; una URL pegada debe apuntar al repositorio en su directorio actual.65El comando también acepta `#1234`, `PR 1234` y URLs de PR pegadas; una URL pegada debe apuntar al repositorio en su directorio actual.

66 66 

67En modo PR, el sandbox remoto clona la solicitud de extracción directamente desde el host en lugar de agrupar su árbol de trabajo local. El modo PR funciona con repositorios en `github.com` y en instancias de [GitHub Enterprise Server](/docs/es/github-enterprise-server) que un administrador ha conectado a Claude Code.67El modo PR necesita un repositorio en `github.com`. Para un repositorio en una instancia de [GitHub Enterprise Server](/docs/es/github-enterprise-server), ejecuta `/code-review ultra` sin un número de PR para revisar tu rama local en su lugar.

68 68 

69Para repositorios en `github.com`, el sandbox clona con la cuenta de GitHub conectada a su cuenta de Claude, por lo que la cuenta debe poder leer el repositorio del PR.69En modo PR, el sandbox en la nube clona el pull request desde `github.com` en lugar de cargar tu árbol de trabajo. Usa la cuenta de GitHub conectada a tu cuenta de Claude, por lo que esa cuenta necesita acceso de lectura al repositorio.

70 70 

71Ejecute [`/web-setup`](/docs/es/web-quickstart#connect-from-your-terminal) para conectar su inicio de sesión de GitHub CLI a su cuenta de Claude.71Ejecute [`/web-setup`](/docs/es/web-quickstart#connect-from-your-terminal) para conectar su inicio de sesión de GitHub CLI a su cuenta de Claude.

72 72 


74 Publica hallazgos en la solicitud de extracción74 Publica hallazgos en la solicitud de extracción

75</h3>75</h3>

76 76 

77En Claude Code v2.1.227 o posterior, cuando revisa una solicitud de extracción en `github.com`, puede hacer que Claude publique los hallazgos terminados en el PR como un único comentario simple desde su propia cuenta de GitHub. El comentario no es una revisión ni una aprobación, y termina con una nota "Generado por Claude Code". Cuando revisa una rama o una solicitud de extracción de GitHub Enterprise Server, Claude Code muestra los hallazgos solo en su sesión.77En Claude Code v2.1.227 o posterior, cuando revisas un pull request en `github.com`, puedes hacer que Claude publique los hallazgos terminados en el PR como un único comentario simple desde tu propia cuenta de GitHub. El comentario no es una revisión ni una aprobación, y termina con una nota "Generated by Claude Code". Cuando revisas una rama, Claude Code muestra los hallazgos solo en tu sesión.

78 78 

79Claude Code nunca publica a menos que elija hacerlo en esa ejecución, y `--no-post` es el predeterminado. Publicar es una opción que realiza para cada ejecución:79Claude Code nunca publica a menos que elija hacerlo en esa ejecución, y `--no-post` es el predeterminado. Publicar es una opción que realiza para cada ejecución:

80 80 


106Claude Code trata su texto como una nota solo cuando tiene más de una palabra y no es un nombre de rama o referencia de PR. Lee una sola palabra como un nombre de rama o referencia de PR, por lo que un nombre de rama mal escrito obtiene el error de rama más cercana de [Revisa contra una base diferente](#review-against-a-different-base) en su lugar de lanzar con una nota. Si su texto combina una referencia de PR con otras palabras, como `check PR 123 again`, Claude Code tampoco se lanza; le pide que vuelva a ejecutar con solo el número de PR para revisar ese PR, o sin la referencia para revisar su rama actual.106Claude Code trata su texto como una nota solo cuando tiene más de una palabra y no es un nombre de rama o referencia de PR. Lee una sola palabra como un nombre de rama o referencia de PR, por lo que un nombre de rama mal escrito obtiene el error de rama más cercana de [Revisa contra una base diferente](#review-against-a-different-base) en su lugar de lanzar con una nota. Si su texto combina una referencia de PR con otras palabras, como `check PR 123 again`, Claude Code tampoco se lanza; le pide que vuelva a ejecutar con solo el número de PR para revisar ese PR, o sin la referencia para revisar su rama actual.

107 107 

108<Tip>108<Tip>

109 Si su repositorio es demasiado grande para agrupar, Claude Code le solicita que use el modo PR en su lugar. Envíe su rama y abra un PR borrador, luego ejecute `/code-review ultra <PR-number>`.109 Si tu repositorio es demasiado grande para empaquetarlo, Claude Code te pide que uses el modo PR en su lugar. Para un repositorio en `github.com`, haz push de tu rama y abre un PR en borrador, luego ejecuta `/code-review ultra <PR-number>`.

110</Tip>110</Tip>

111 111 

112<h3 id="diff-limits-and-fallbacks">112<h3 id="diff-limits-and-fallbacks">


173claude ultrareview origin/main173claude ultrareview origin/main

174```174```

175 175 

176Sin argumentos, el subcomando revisa el diff entre su rama actual y la rama predeterminada, con el mismo [respaldo de repositorio completo](#diff-limits-and-fallbacks) que `/code-review ultra` cuando no existe una base de fusión. Pase un número de PR para revisar una solicitud de extracción, o una rama base para revisar contra ella; el [manejo de rama base](#review-against-a-different-base) coincide con el comando interactivo.176Sin argumentos, el subcomando revisa el diff entre tu rama actual y la rama predeterminada, con el mismo [respaldo de repositorio completo](#diff-limits-and-fallbacks) que `/code-review ultra` cuando no existe una base de fusión. Pasa un número de PR para [revisar un pull request en `github.com`](#review-a-pull-request), o una rama base para revisar contra ella; el [manejo de rama base](#review-against-a-different-base) coincide con el comando interactivo.

177 177 

178Usted da su consentimiento al respaldo de repositorio completo y al aviso de facturación y términos cuando ejecuta el subcomando, por lo que la ejecución comienza sin esperar entrada. Ejecutarlo usted mismo es lo que cuenta como consentimiento. Cuando Claude ejecuta el subcomando por usted, por ejemplo a través de la herramienta Bash, Claude Code rechaza la revisión de repositorio completo.178Usted da su consentimiento al respaldo de repositorio completo y al aviso de facturación y términos cuando ejecuta el subcomando, por lo que la ejecución comienza sin esperar entrada. Ejecutarlo usted mismo es lo que cuenta como consentimiento. Cuando Claude ejecuta el subcomando por usted, por ejemplo a través de la herramienta Bash, Claude Code rechaza la revisión de repositorio completo.

179 179 

vs-code.md +1 −1

Details

596| `attachOpenFile` | `true` | Agregue el archivo que está abierto en el editor a sus mensajes y muéstrelo en el cuadro de mensaje. Cuando está desactivado, solo se agrega el texto seleccionado. Requiere Claude Code v2.1.271 o posterior |596| `attachOpenFile` | `true` | Agregue el archivo que está abierto en el editor a sus mensajes y muéstrelo en el cuadro de mensaje. Cuando está desactivado, solo se agrega el texto seleccionado. Requiere Claude Code v2.1.271 o posterior |

597| `useCtrlEnterToSend` | `false` | Usar Ctrl/Cmd+Enter en lugar de Enter para enviar mensajes |597| `useCtrlEnterToSend` | `false` | Usar Ctrl/Cmd+Enter en lugar de Enter para enviar mensajes |

598| `scrollToBottomOnSend` | `true` | Desplazarse a la conversación hacia el final cuando envía un mensaje. Cuando está desactivado, la conversación permanece donde la dejó. Requiere Claude Code v2.1.275 o posterior |598| `scrollToBottomOnSend` | `true` | Desplazarse a la conversación hacia el final cuando envía un mensaje. Cuando está desactivado, la conversación permanece donde la dejó. Requiere Claude Code v2.1.275 o posterior |

599| `showMessageTimestamps` | `false` | Mostrar cuándo se envió cada mensaje. Una línea con la fecha marca dónde cambia el día. Requiere Claude Code v2.1.284 o posterior |599| `showMessageTimestamps` | `true` | Mostrar cuándo se envió cada mensaje. Una línea con la fecha marca dónde cambia el día. Requiere Claude Code v2.1.284 o posterior. Antes de v2.1.290, el valor predeterminado era `false` |

600| `enableNewConversationShortcut` | `false` | Habilitar Cmd/Ctrl+N para iniciar una nueva conversación |600| `enableNewConversationShortcut` | `false` | Habilitar Cmd/Ctrl+N para iniciar una nueva conversación |

601| `enableReopenClosedSessionShortcut` | `true` | Usar Cmd/Ctrl+Shift+T para reabrir la pestaña de sesión de Claude cerrada más recientemente. Cuando la última pestaña cerrada no era una sesión de Claude, el atajo ejecuta el comando normal de reapertura de editor cerrado de VS Code en su lugar. |601| `enableReopenClosedSessionShortcut` | `true` | Usar Cmd/Ctrl+Shift+T para reabrir la pestaña de sesión de Claude cerrada más recientemente. Cuando la última pestaña cerrada no era una sesión de Claude, el atajo ejecuta el comando normal de reapertura de editor cerrado de VS Code en su lugar. |

602| `archiveInactiveSessions` | `14` | [Archivar una sesión automáticamente](#resume-past-conversations) después de estos muchos días sin actividad: `1`, `2`, `7` o `14`. Establezca `0` para desactivarlo. Requiere Claude Code v2.1.265 o posterior |602| `archiveInactiveSessions` | `14` | [Archivar una sesión automáticamente](#resume-past-conversations) después de estos muchos días sin actividad: `1`, `2`, `7` o `14`. Establezca `0` para desactivarlo. Requiere Claude Code v2.1.265 o posterior |

workflows.md +27 −1

Details

354 354 

355El cuerpo es JavaScript simple con `await` de nivel superior. `agent()` genera un subagente, `pipeline()` ejecuta uno por elemento en una lista, y `parallel()` ejecuta un conjunto de tareas de agente al mismo tiempo y espera a que todas se completen.355El cuerpo es JavaScript simple con `await` de nivel superior. `agent()` genera un subagente, `pipeline()` ejecuta uno por elemento en una lista, y `parallel()` ejecuta un conjunto de tareas de agente al mismo tiempo y espera a que todas se completen.

356 356 

357Una llamada a `agent()` se resuelve a `null` si la detiene a mitad de la ejecución o si alcanza un error de API irrecuperable. `pipeline()` mantiene cada `null` en la matriz de resultados, por lo que el ejemplo termina con `.filter(Boolean)` para descartar esas entradas.357Una llamada a `agent()` se resuelve a `null` si la detienes a mitad de la ejecución o si alcanza un error de API irrecuperable. `pipeline()` mantiene cada `null` en la matriz de resultados, por lo que el ejemplo termina con `.filter(Boolean)` para descartar esas entradas, incluida la posición de [un agente que se bloqueó en cada intento](#when-an-agent-stalls-and-restarts).

358 358 

359En [modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode), el prompt que su script pasa a `agent()` no cuenta como una solicitud suya cuando el clasificador revisa las acciones de ese subagente, porque Claude Code lo marca como texto que el script calculó.359En [modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode), el prompt que su script pasa a `agent()` no cuenta como una solicitud suya cuando el clasificador revisa las acciones de ese subagente, porque Claude Code lo marca como texto que el script calculó.

360 360 


463* El límite se reinicia dentro de 24 horas. Un límite semanal puede reiniciarse más adelante.463* El límite se reinicia dentro de 24 horas. Un límite semanal puede reiniciarse más adelante.

464* La ejecución aún no ha esperado dos veces. Cuando alcanza el límite por tercera vez, el agente falla.464* La ejecución aún no ha esperado dos veces. Cuando alcanza el límite por tercera vez, el agente falla.

465 465 

466<h3 id="when-an-agent-stalls-and-restarts">

467 Cuando un agente se estanca y se reinicia

468</h3>

469 

470Un agente cuya salida deja de llegar durante suficiente tiempo comienza de nuevo desde el mismo prompt. En [`/workflows`](#watch-the-run), su nombre recibe un sufijo `(retry 1)` y su detalle muestra `attempt 2 (stalled)`. El reinicio es automático, así que no necesitas hacer nada.

471 

472El nuevo intento comienza sin la transcripción del intento estancado. Los archivos que el intento estancado ya cambió permanecen cambiados, y los tokens que gastó permanecen en el total de la ejecución. La ventana de estancamiento es cuánto tiempo espera Claude Code la salida de un agente antes de terminar el intento. El tiempo que el agente pasa esperando sus propias llamadas a herramientas o un [reinicio del límite de uso](#when-a-run-hits-your-usage-limit) no cuenta para la ventana de estancamiento.

473 

474Un agente se reinicia como máximo cinco veces, contando cualquier reinicio que solicites con `r`. Si el sexto intento también se estanca, la llamada a `agent()` falla, y el inicio del error indica por qué:

475 

476* `agent stalled on all 6 attempts`: cada intento pasó toda la ventana sin salida. Si el trabajo del agente lo mantiene en silencio tanto tiempo, amplía la ventana

477* `agent lost its reply on all 6 attempts`: el stream de respuesta de cada intento quedó en silencio y Claude Code dejó de esperarlo. Ampliar la ventana de estancamiento no ayuda, ya que un [watchdog de inactividad de streaming](/docs/es/network-config#streaming-idle-watchdogs) terminó primero la respuesta y `CLAUDE_STREAM_IDLE_TIMEOUT_MS` establece el tiempo de espera de ese watchdog

478* `agent abandoned after 6 attempts`: los intentos terminaron de diferentes maneras, que el error enumera en orden

479 

480Para darle a un agente más tiempo para producir salida antes de que termine la ventana:

481 

482* **Un agente**: pasa `stallMs` en milisegundos en su llamada a `agent()`, como `agent(prompt, { stallMs: 1800000 })` para 30 minutos

483* **Todos los agentes**: establece [`CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS`](/docs/es/env-vars#variables), que también se aplica a los subagentes fuera de los workflows

484 

485Si la ejecución continúa después de la falla depende de cómo tu script llamó al agente:

486 

487* **Dentro de [`parallel()` o `pipeline()`](#what-the-saved-script-looks-like)**: la ejecución continúa con `null` en lugar del resultado del agente

488* **Esperado directamente**: la ejecución termina con el error

489 

490Para intentarlo de nuevo, pide a Claude que relance el workflow. [Reanudar después de una pausa](#resume-after-a-pause) cubre lo que se ejecuta de nuevo.

491 

466<h3 id="cost">492<h3 id="cost">

467 Costo493 Costo

468</h3>494</h3>

worktrees.md +1 −1

Details

104* **Redirecciones de git**: Claude Code bloquea un comando Bash o Monitor que redirige git al checkout principal. La redirección puede venir a través de `git -C`, `--git-dir`, una variable `GIT_DIR` o `GIT_WORK_TREE`, o un `cd` al checkout principal antes de ejecutar git.104* **Redirecciones de git**: Claude Code bloquea un comando Bash o Monitor que redirige git al checkout principal. La redirección puede venir a través de `git -C`, `--git-dir`, una variable `GIT_DIR` o `GIT_WORK_TREE`, o un `cd` al checkout principal antes de ejecutar git.

105* **Forma del comando**: Claude Code bloquea un comando Bash o Monitor cuando no puede verificar desde el texto del comando que cualquier git que ejecute el comando permanece dentro del worktree. Eso sucede, por ejemplo, cuando el nombre del comando se calcula en tiempo de ejecución, cuando la sintaxis no se puede analizar, o cuando una expansión como `${!name}` o `${ command; }` podría ejecutar un comando que el texto no especifica. Claude Code le dice a Claude cómo reescribir el comando rechazado, como dividirlo en comandos simples y separados. No puede desactivar esta verificación.105* **Forma del comando**: Claude Code bloquea un comando Bash o Monitor cuando no puede verificar desde el texto del comando que cualquier git que ejecute el comando permanece dentro del worktree. Eso sucede, por ejemplo, cuando el nombre del comando se calcula en tiempo de ejecución, cuando la sintaxis no se puede analizar, o cuando una expansión como `${!name}` o `${ command; }` podría ejecutar un comando que el texto no especifica. Claude Code le dice a Claude cómo reescribir el comando rechazado, como dividirlo en comandos simples y separados. No puede desactivar esta verificación.

106 106 

107Estas verificaciones leen la ruta a la que apunta una edición, el directorio en el que se ejecuta un comando y el texto del comando. Ninguna de ellas rastrea qué archivos escribe un comando de shell, por lo que un comando que escribe en el checkout principal sin ejecutar git allí, como `cp` o una redirección del shell, no es rechazado por ellas. Claude Code trata ese comando como cualquier otro comando de shell, así que si se ejecuta o te solicita permiso depende de tu [modo de permisos](/docs/es/permission-modes) y de tus reglas.107Estas verificaciones leen la ruta a la que apunta una edición, el directorio en el que se ejecuta un comando y el texto del comando. Ninguna de ellas rastrea qué archivos escribe un comando de shell, por lo que un comando que escribe en el checkout principal sin ejecutar git allí, como `cp` o una redirección del shell, no es rechazado por ellas. Claude Code trata ese comando como cualquier otro comando de shell según tu configuración de [permisos](/docs/es/permissions) y de [sandboxing](/docs/es/sandboxing).

108 108 

109Las verificaciones se aplican al repositorio desde el que lanzó Claude Code. También cubren el checkout principal desde el que está vinculado un worktree vinculado. Para comandos PowerShell, Claude Code aplica solo la verificación del directorio de trabajo.109Las verificaciones se aplican al repositorio desde el que lanzó Claude Code. También cubren el checkout principal desde el que está vinculado un worktree vinculado. Para comandos PowerShell, Claude Code aplica solo la verificación del directorio de trabajo.

110 110