SpyBara
Go Premium

Documentation 2026-05-13 23:01 UTC to 2026-05-14 17:02 UTC

21 files changed +411 −87. View all changes and history on the product overview
2026
Sun 31 06:39 Sat 30 06:23 Fri 29 06:38 Thu 28 06:37 Wed 27 06:42 Tue 26 06:33 Sun 24 06:25 Sat 23 06:18 Fri 22 06:33 Thu 21 06:36 Wed 20 06:35 Tue 19 06:34 Mon 18 23:59 Sun 17 01:01 Fri 15 22:58 Thu 14 17:02 Wed 13 23:01 Tue 12 22:57 Mon 11 23:00 Sun 10 23:03 Sat 9 04:57 Fri 8 22:00 Thu 7 22:59 Tue 5 23:00 Mon 4 22:58 Sat 2 18:14 Fri 1 18:19
Details

235 235 

236Su devolución de llamada devuelve un objeto con dos categorías de campos:236Su devolución de llamada devuelve un objeto con dos categorías de campos:

237 237 

238* **Campos de nivel superior** controlan la conversación: `systemMessage` inyecta un mensaje en la conversación visible para el modelo, y `continue` (`continue_` en Python) determina si el agente sigue ejecutándose después de este hook.238* **Campos de nivel superior** funcionan igual en cada evento: `systemMessage` muestra un mensaje al usuario, y `continue` (`continue_` en Python) determina si el agente sigue ejecutándose después de este hook.

239* **`hookSpecificOutput`** controla la operación actual. Los campos dentro dependen del tipo de evento de hook. Para hooks `PreToolUse`, aquí es donde establece `permissionDecision` (`"allow"`, `"deny"`, `"ask"` o `"defer"`), `permissionDecisionReason` e `updatedInput`. Devolver `"defer"` finaliza la consulta para que pueda [reanudarla más tarde](/es/hooks#defer-a-tool-call-for-later). Para hooks `PostToolUse`, puede establecer `additionalContext` para agregar información al resultado de la herramienta, o `updatedToolOutput` para reemplazar completamente la salida de la herramienta antes de que Claude la vea.239* **`hookSpecificOutput`** controla la operación actual. Los campos dentro dependen del tipo de evento de hook. Para hooks `PreToolUse`, aquí es donde establece `permissionDecision` (`"allow"`, `"deny"`, `"ask"` o `"defer"`), `permissionDecisionReason` e `updatedInput`. Devolver `"defer"` finaliza la consulta para que pueda [reanudarla más tarde](/es/hooks#defer-a-tool-call-for-later). Para hooks `PostToolUse`, puede establecer `additionalContext` para agregar información al resultado de la herramienta, o `updatedToolOutput` para reemplazar completamente la salida de la herramienta antes de que Claude la vea.

240 240 

241Devuelva `{}` para permitir la operación sin cambios. Los hooks de devolución de llamada del SDK usan el mismo formato de salida JSON que [hooks de comandos de shell de Claude Code](/es/hooks#json-output), que documenta cada campo y opción específica del evento. Para las definiciones de tipo del SDK, vea las referencias del SDK de [TypeScript](/es/agent-sdk/typescript#synchookjsonoutput) y [Python](/es/agent-sdk/python#synchookjsonoutput).241Devuelva `{}` para permitir la operación sin cambios. Los hooks de devolución de llamada del SDK usan el mismo formato de salida JSON que [hooks de comandos de shell de Claude Code](/es/hooks#json-output), que documenta cada campo y opción específica del evento. Para las definiciones de tipo del SDK, vea las referencias del SDK de [TypeScript](/es/agent-sdk/typescript#synchookjsonoutput) y [Python](/es/agent-sdk/python#synchookjsonoutput).


331 331 

332### Agregar contexto y bloquear una herramienta332### Agregar contexto y bloquear una herramienta

333 333 

334Este ejemplo bloquea cualquier intento de escribir en el directorio `/etc` y usa dos campos de salida juntos: `permissionDecision: 'deny'` detiene la llamada de herramienta, mientras que `systemMessage` inyecta un recordatorio en la conversación para que el agente reciba contexto sobre por qué se bloqueó la operación y evite reintentar:334Este ejemplo bloquea escrituras en el directorio `/etc` y explica por qué tanto al modelo como al usuario:

335 

336* `permissionDecision: 'deny'` detiene la llamada de herramienta.

337* `permissionDecisionReason` le dice al modelo por qué, para que evite reintentar.

338* `systemMessage` muestra al usuario qué sucedió.

335 339 

336<CodeGroup>340<CodeGroup>

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


340 344 

341 if file_path.startswith("/etc"):345 if file_path.startswith("/etc"):

342 return {346 return {

343 # Top-level field: inject guidance into the conversation347 # Top-level field: message shown to the user

344 "systemMessage": "Remember: system directories like /etc are protected.",348 "systemMessage": "Remember: system directories like /etc are protected.",

345 # hookSpecificOutput: block the operation349 # hookSpecificOutput: block the operation

346 "hookSpecificOutput": {350 "hookSpecificOutput": {


360 364 

361 if (filePath?.startsWith("/etc")) {365 if (filePath?.startsWith("/etc")) {

362 return {366 return {

363 // Top-level field: inject guidance into the conversation367 // Top-level field: message shown to the user

364 systemMessage: "Remember: system directories like /etc are protected.",368 systemMessage: "Remember: system directories like /etc are protected.",

365 // hookSpecificOutput: block the operation369 // hookSpecificOutput: block the operation

366 hookSpecificOutput: {370 hookSpecificOutput: {


807 811 

808### systemMessage no aparece en la salida812### systemMessage no aparece en la salida

809 813 

810El campo `systemMessage` agrega contexto a la conversación que el modelo ve, pero puede no aparecer en todos los modos de salida del SDK. Si necesita exponer decisiones de hook a su aplicación, regístrelas por separado o use un canal de salida dedicado.814El campo `systemMessage` muestra un mensaje al usuario, no al modelo. Por defecto, el SDK no expone la salida de hooks en el flujo de mensajes, por lo que el mensaje puede no aparecer a menos que establezca `includeHookEvents` (`include_hook_events` en Python). Para pasar contexto al modelo en su lugar, devuelva [`additionalContext`](/es/hooks#add-context-for-claude).

815 

816Si necesita exponer decisiones de hook a su aplicación de manera confiable, regístrelas por separado o use un canal de salida dedicado.

811 817 

812## Recursos relacionados818## Recursos relacionados

813 819 

Details

1860Devuelve un [`HookJSONOutput`](#hookjsonoutput) que puede contener:1860Devuelve un [`HookJSONOutput`](#hookjsonoutput) que puede contener:

1861 1861 

1862* `decision`: `"block"` para bloquear la acción1862* `decision`: `"block"` para bloquear la acción

1863* `systemMessage`: Mensaje del sistema a agregar a la transcripción1863* `systemMessage`: Mensaje de advertencia mostrado al usuario

1864* `hookSpecificOutput`: Datos de salida específicos del hook1864* `hookSpecificOutput`: Datos de salida específicos del hook

1865 1865 

1866### `HookContext`1866### `HookContext`


2645 2645 

2646**Nombre de herramienta:** `TodoWrite`2646**Nombre de herramienta:** `TodoWrite`

2647 2647 

2648<Note>

2649 `TodoWrite` está deprecado y será eliminado en una versión futura. Use `TaskCreate`, `TaskGet`, `TaskUpdate`, y `TaskList` en su lugar. Establezca `CLAUDE_CODE_ENABLE_TASKS=1` para optar por participar. Ver [Migrar a herramientas Task](/es/agent-sdk/todo-tracking#migrate-to-task-tools) para cómo monitorear cambios de código.

2650</Note>

2651 

2648**Entrada:**2652**Entrada:**

2649 2653 

2650```python theme={null}2654```python theme={null}


2668}2672}

2669```2673```

2670 2674 

2675### TaskCreate

2676 

2677**Nombre de herramienta:** `TaskCreate`

2678 

2679**Entrada:**

2680 

2681```python theme={null}

2682{

2683 "subject": str, # Short task title

2684 "description": str, # Detailed task body

2685 "activeForm": str | None, # Present-tense label shown while in progress

2686 "metadata": dict | None, # Arbitrary caller metadata

2687}

2688```

2689 

2690**Salida:**

2691 

2692```python theme={null}

2693{

2694 "task": {"id": str, "subject": str}, # Created task with assigned ID

2695}

2696```

2697 

2698### TaskUpdate

2699 

2700**Nombre de herramienta:** `TaskUpdate`

2701 

2702**Entrada:**

2703 

2704```python theme={null}

2705{

2706 "taskId": str, # ID of the task to patch

2707 "status": Literal["pending", "in_progress", "completed", "deleted"] | None,

2708 "subject": str | None,

2709 "description": str | None,

2710 "activeForm": str | None,

2711 "addBlocks": list[str] | None, # Task IDs this task now blocks

2712 "addBlockedBy": list[str] | None, # Task IDs that now block this task

2713 "owner": str | None,

2714 "metadata": dict | None,

2715}

2716```

2717 

2718**Salida:**

2719 

2720```python theme={null}

2721{

2722 "success": bool,

2723 "taskId": str,

2724 "updatedFields": list[str], # Names of fields that changed

2725 "error": str | None,

2726 "statusChange": {"from": str, "to": str} | None,

2727}

2728```

2729 

2730### TaskGet

2731 

2732**Nombre de herramienta:** `TaskGet`

2733 

2734**Entrada:**

2735 

2736```python theme={null}

2737{

2738 "taskId": str, # ID of the task to read

2739}

2740```

2741 

2742**Salida:**

2743 

2744```python theme={null}

2745{

2746 "task": {

2747 "id": str,

2748 "subject": str,

2749 "description": str,

2750 "status": Literal["pending", "in_progress", "completed"],

2751 "blocks": list[str],

2752 "blockedBy": list[str],

2753 } | None, # None when the ID is not found

2754}

2755```

2756 

2757### TaskList

2758 

2759**Nombre de herramienta:** `TaskList`

2760 

2761**Entrada:**

2762 

2763```python theme={null}

2764{}

2765```

2766 

2767**Salida:**

2768 

2769```python theme={null}

2770{

2771 "tasks": [

2772 {

2773 "id": str,

2774 "subject": str,

2775 "status": Literal["pending", "in_progress", "completed"],

2776 "owner": str | None,

2777 "blockedBy": list[str],

2778 }

2779 ],

2780}

2781```

2782 

2671### BashOutput2783### BashOutput

2672 2784 

2673**Nombre de herramienta:** `BashOutput`2785**Nombre de herramienta:** `BashOutput`

Details

389| `fallbackModel` | `string` | `undefined` | Modelo a usar si el principal falla |389| `fallbackModel` | `string` | `undefined` | Modelo a usar si el principal falla |

390| `forkSession` | `boolean` | `false` | Cuando se reanuda con `resume`, bifurque a un nuevo ID de sesión en lugar de continuar la sesión original |390| `forkSession` | `boolean` | `false` | Cuando se reanuda con `resume`, bifurque a un nuevo ID de sesión en lugar de continuar la sesión original |

391| `hooks` | `Partial<Record<`[`HookEvent`](#hookevent)`, `[`HookCallbackMatcher`](#hookcallbackmatcher)`[]>>` | `{}` | Devoluciones de llamada de hooks para eventos |391| `hooks` | `Partial<Record<`[`HookEvent`](#hookevent)`, `[`HookCallbackMatcher`](#hookcallbackmatcher)`[]>>` | `{}` | Devoluciones de llamada de hooks para eventos |

392| `includeHookEvents` | `boolean` | `false` | Incluya eventos del ciclo de vida de hooks en la transmisión de mensajes como [`SDKHookStartedMessage`](#sdkhookstartedmessage), [`SDKHookProgressMessage`](#sdkhookprogressmessage), y [`SDKHookResponseMessage`](#sdkhookresponsemessage) |

392| `includePartialMessages` | `boolean` | `false` | Incluya eventos de mensaje parcial |393| `includePartialMessages` | `boolean` | `false` | Incluya eventos de mensaje parcial |

393| `maxBudgetUsd` | `number` | `undefined` | Detenga la consulta cuando la estimación de costo del lado del cliente alcance este valor en USD. Comparado con la misma estimación que `total_cost_usd`; vea [Rastrear costo y uso](/es/agent-sdk/cost-tracking) para advertencias de precisión |394| `maxBudgetUsd` | `number` | `undefined` | Detenga la consulta cuando la estimación de costo del lado del cliente alcance este valor en USD. Comparado con la misma estimación que `total_cost_usd`; vea [Rastrear costo y uso](/es/agent-sdk/cost-tracking) para advertencias de precisión |

394| `maxThinkingTokens` | `number` | `undefined` | *Deprecado:* Use `thinking` en su lugar. Tokens máximos para el proceso de pensamiento |395| `maxThinkingTokens` | `number` | `undefined` | *Deprecado:* Use `thinking` en su lugar. Tokens máximos para el proceso de pensamiento |


1596 | ReadMcpResourceInput1597 | ReadMcpResourceInput

1597 | SubscribeMcpResourceInput1598 | SubscribeMcpResourceInput

1598 | SubscribePollingInput1599 | SubscribePollingInput

1600 | TaskCreateInput

1601 | TaskGetInput

1602 | TaskListInput

1599 | TaskStopInput1603 | TaskStopInput

1604 | TaskUpdateInput

1600 | TodoWriteInput1605 | TodoWriteInput

1601 | UnsubscribeMcpResourceInput1606 | UnsubscribeMcpResourceInput

1602 | UnsubscribePollingInput1607 | UnsubscribePollingInput


1850**Nombre de herramienta:** `TaskCreate`1855**Nombre de herramienta:** `TaskCreate`

1851 1856 

1852```typescript theme={null}1857```typescript theme={null}

1853// No se exporta aún desde el SDK; defina localmente.

1854type TaskCreateInput = {1858type TaskCreateInput = {

1855 subject: string;1859 subject: string;

1856 description: string;1860 description: string;


1866**Nombre de herramienta:** `TaskUpdate`1870**Nombre de herramienta:** `TaskUpdate`

1867 1871 

1868```typescript theme={null}1872```typescript theme={null}

1869// No se exporta aún desde el SDK; defina localmente.

1870type TaskUpdateInput = {1873type TaskUpdateInput = {

1871 taskId: string;1874 taskId: string;

1872 status?: "pending" | "in_progress" | "completed" | "deleted";1875 status?: "pending" | "in_progress" | "completed" | "deleted";


1887**Nombre de herramienta:** `TaskGet`1890**Nombre de herramienta:** `TaskGet`

1888 1891 

1889```typescript theme={null}1892```typescript theme={null}

1890// No se exporta aún desde el SDK; defina localmente.

1891type TaskGetInput = {1893type TaskGetInput = {

1892 taskId: string;1894 taskId: string;

1893};1895};


1900**Nombre de herramienta:** `TaskList`1902**Nombre de herramienta:** `TaskList`

1901 1903 

1902```typescript theme={null}1904```typescript theme={null}

1903// No se exporta aún desde el SDK; defina localmente.

1904type TaskListInput = {};1905type TaskListInput = {};

1905```1906```

1906 1907 


1983 | MonitorOutput1984 | MonitorOutput

1984 | NotebookEditOutput1985 | NotebookEditOutput

1985 | ReadMcpResourceOutput1986 | ReadMcpResourceOutput

1987 | TaskCreateOutput

1988 | TaskGetOutput

1989 | TaskListOutput

1986 | TaskStopOutput1990 | TaskStopOutput

1991 | TaskUpdateOutput

1987 | TodoWriteOutput1992 | TodoWriteOutput

1988 | WebFetchOutput1993 | WebFetchOutput

1989 | WebSearchOutput;1994 | WebSearchOutput;


2347**Nombre de herramienta:** `TaskCreate`2352**Nombre de herramienta:** `TaskCreate`

2348 2353 

2349```typescript theme={null}2354```typescript theme={null}

2350// No se exporta aún desde el SDK; defina localmente.

2351type TaskCreateOutput = {2355type TaskCreateOutput = {

2352 task: {2356 task: {

2353 id: string;2357 id: string;


2363**Nombre de herramienta:** `TaskUpdate`2367**Nombre de herramienta:** `TaskUpdate`

2364 2368 

2365```typescript theme={null}2369```typescript theme={null}

2366// No se exporta aún desde el SDK; defina localmente.

2367type TaskUpdateOutput = {2370type TaskUpdateOutput = {

2368 success: boolean;2371 success: boolean;

2369 taskId: string;2372 taskId: string;


2383**Nombre de herramienta:** `TaskGet`2386**Nombre de herramienta:** `TaskGet`

2384 2387 

2385```typescript theme={null}2388```typescript theme={null}

2386// No se exporta aún desde el SDK; defina localmente.

2387type TaskGetOutput = {2389type TaskGetOutput = {

2388 task: {2390 task: {

2389 id: string;2391 id: string;


2403**Nombre de herramienta:** `TaskList`2405**Nombre de herramienta:** `TaskList`

2404 2406 

2405```typescript theme={null}2407```typescript theme={null}

2406// No se exporta aún desde el SDK; defina localmente.

2407type TaskListOutput = {2408type TaskListOutput = {

2408 tasks: Array<{2409 tasks: Array<{

2409 id: string;2410 id: string;

agent-view.md +43 −5

Details

46 </Step>46 </Step>

47 47 

48 <Step title="Distribuir una sesión">48 <Step title="Distribuir una sesión">

49 Escriba un mensaje describiendo una tarea y presione `Enter`. Una nueva sesión en segundo plano comienza en esa tarea y aparece como una fila que muestra si está funcionando, esperando su entrada o está hecha. La nueva sesión utiliza el modelo mostrado en el encabezado de la vista de agentes y el mismo [modo de permisos](#permission-mode-and-settings) que obtendría ejecutando `claude` en ese directorio.49 Escriba un mensaje describiendo una tarea y presione `Enter`. Una nueva sesión en segundo plano comienza en esa tarea y aparece como una fila que muestra si está funcionando, esperando su entrada o está hecha. La nueva sesión utiliza el modelo mostrado en el encabezado de la vista de agentes y el mismo [modo de permisos](#permission-mode-model-and-effort) que obtendría ejecutando `claude` en ese directorio.

50 50 

51 Cada mensaje que ingrese aquí inicia su propia sesión nueva. Escribir otro mensaje y presionar `Enter` lanza una segunda sesión junto a la primera en lugar de enviar una continuación a ella. Puede ejecutar varias en paralelo de esta manera.51 Cada mensaje que ingrese aquí inicia su propia sesión nueva. Escribir otro mensaje y presionar `Enter` lanza una segunda sesión junto a la primera en lugar de enviar una continuación a ella. Puede ejecutar varias en paralelo de esta manera.

52 52 


74 74 

75La lista cubre cada sesión en segundo plano que ha iniciado, en todos sus proyectos. Una sesión que trabaja en un repositorio y otra en un worktree diferente aparecen aquí, independientemente de qué directorio abrió la vista de agentes. Las sesiones interactivas que tiene abiertas en otras terminales no aparecen hasta que las [envíe al segundo plano](#from-inside-a-session). Los [subagentes](/es/sub-agents) y [compañeros de equipo](/es/agent-teams) que una sesión genera no se enumeran como filas separadas.75La lista cubre cada sesión en segundo plano que ha iniciado, en todos sus proyectos. Una sesión que trabaja en un repositorio y otra en un worktree diferente aparecen aquí, independientemente de qué directorio abrió la vista de agentes. Las sesiones interactivas que tiene abiertas en otras terminales no aparecen hasta que las [envíe al segundo plano](#from-inside-a-session). Los [subagentes](/es/sub-agents) y [compañeros de equipo](/es/agent-teams) que una sesión genera no se enumeran como filas separadas.

76 76 

77Para limitar la vista a un proyecto, inicie con `claude agents --cwd <path>`. Solo aparecen las sesiones iniciadas en ese directorio, incluidas las que se ejecutan en un [worktree](/es/worktrees) distribuido desde él.

78 

77```text theme={null}79```text theme={null}

78Pinned80Pinned

79 ✽ clawd walk cycle Write assets/sprites/clawd-walk.png 3m81 ✽ clawd walk cycle Write assets/sprites/clawd-walk.png 3m


285 287 

286### Establecer el modelo288### Establecer el modelo

287 289 

288El nombre del modelo mostrado en el encabezado de la vista de agentes es el valor predeterminado de distribución. Las nuevas sesiones que inicia desde la entrada utilizan este modelo, que es la misma configuración que [`/model`](/es/model-config) controla en cualquier sesión.290El nombre del modelo mostrado en el encabezado de la vista de agentes es el valor predeterminado de distribución. Las nuevas sesiones que inicia desde la entrada utilizan este modelo, que es la misma configuración que [`/model`](/es/model-config) controla en cualquier sesión. Para anularlo para toda la sesión de vista de agentes, pase `--model` al abrir la vista de agentes. Consulte [Modo de permiso, modelo y esfuerzo](#permission-mode-model-and-effort).

289 291 

290Cada sesión en segundo plano puede ejecutarse en un modelo diferente. Para anularlo para una sesión:292Cada sesión en segundo plano puede ejecutarse en un modelo diferente. Para anularlo para una sesión:

291 293 


293* Conéctese a una sesión en ejecución y ejecute `/model` allí. El cambio persiste si la sesión se reinicia.295* Conéctese a una sesión en ejecución y ejecute `/model` allí. El cambio persiste si la sesión se reinicia.

294* Distribuya un [subagente](/es/sub-agents) cuyo frontmatter establezca un campo `model`.296* Distribuya un [subagente](/es/sub-agents) cuyo frontmatter establezca un campo `model`.

295 297 

296### Modo de permiso y configuración298### Modo de permiso, modelo y esfuerzo

299 

300Una sesión en segundo plano lee su [configuración](/es/settings) desde el directorio en el que se ejecuta, igual que si hubiera iniciado `claude` allí.

301 

302El [modo de permiso](/es/permissions) depende de cómo inició la sesión. Enviar al segundo plano una sesión existente con `/bg` o `←` mantiene el modo de permiso actual, por lo que una sesión que cambió a `acceptEdits` o `auto` permanece en ese modo después de desconectarse. Distribuir desde la entrada de la vista de agentes o ejecutar `claude --bg` desde su shell utiliza el `defaultMode` de la configuración de ese directorio, o el `permissionMode` del [frontmatter del subagente distribuido](/es/sub-agents#supported-frontmatter-fields).

303 

304Para establecer valores predeterminados para cada sesión que distribuya desde la vista de agentes, pase cualquiera de `--permission-mode`, `--model` o `--effort` al abrirla:

305 

306```bash theme={null}

307claude agents --permission-mode plan --model opus --effort high

308```

309 

310<Note>

311 Pasar `--permission-mode`, `--model` o `--effort` a `claude agents` requiere Claude Code v2.1.142 o posterior. Las versiones anteriores rechazan estas banderas con un error de opción desconocida.

312</Note>

297 313 

298Una sesión distribuida lee su [configuración](/es/settings) y [modo de permiso](/es/permissions) desde el directorio en el que se ejecuta, igual que si hubiera iniciado `claude` allí. Distribuir desde la entrada de la vista de agentes no pasa un modo de permiso, por lo que la sesión utiliza el `defaultMode` de la configuración de ese directorio o el `permissionMode` del [frontmatter del subagente](/es/sub-agents#supported-frontmatter-fields) distribuido.314Los valores predeterminados activos aparecen en el pie de página debajo de la entrada de distribución.

299 315 

300Para establecer el modo desde el shell, pase `--permission-mode` con `claude --bg`. El uso de `bypassPermissions` o `auto` de esta manera se rechaza hasta que haya aceptado ese modo ejecutando `claude` con él una vez de forma interactiva, ya que esos modos permiten que una sesión que no está viendo actúe sin aprobación.316Sin estas banderas, la sesión utiliza el `defaultMode` de la configuración de ese directorio o el `permissionMode` del [frontmatter del subagente distribuido](/es/sub-agents#supported-frontmatter-fields), y el modelo mostrado en el encabezado de la vista de agentes.

317 

318El uso de `bypassPermissions` o `auto` se rechaza hasta que haya aceptado ese modo ejecutando `claude` con él una vez de forma interactiva, ya que esos modos permiten que una sesión que no está viendo actúe sin aprobación. Lo mismo se aplica si pasa el modo a `claude agents` o a `claude --bg --permission-mode`.

319 

320### Configuración, plugins y servidores MCP

321 

322La vista de agentes acepta las mismas banderas de configuración que `claude` para cargar configuración, plugins, servidores MCP y directorios adicionales. Cada bandera se aplica a la vista de agentes en sí y se pasa a cada sesión que distribuya desde ella, por lo que un plugin o servidor MCP que cargue de esta manera está disponible en esas sesiones también.

323 

324| Bandera | Efecto |

325| :----------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------- |

326| [`--settings <file-or-json>`](/es/settings) | Anule la configuración para la vista de agentes y las sesiones distribuidas |

327| [`--add-dir <path>`](/es/permissions#additional-directories-grant-file-access-not-configuration) | Otorgue acceso a archivos a un directorio adicional |

328| [`--plugin-dir <path>`](/es/plugins) | Cargue un plugin desde un directorio local |

329| [`--mcp-config <file-or-json>`](/es/mcp) | Cargue servidores MCP desde un archivo de configuración o cadena JSON |

330| `--strict-mcp-config` | Use solo los servidores MCP de `--mcp-config`, ignorando otra configuración de MCP |

331 

332Repita `--add-dir`, `--plugin-dir` o `--mcp-config` una vez por valor. La forma separada por espacios, como `--add-dir a b c`, no es compatible con `claude agents`.

333 

334El siguiente ejemplo abre la vista de agentes con una anulación de configuración y un directorio adicional:

335 

336```bash theme={null}

337claude agents --settings ./ci-settings.json --add-dir ../shared-lib

338```

301 339 

302## Gestionar sesiones desde el shell340## Gestionar sesiones desde el shell

303 341 

Details

170 170 

171Claude Code admite la actualización automática de credenciales para AWS SSO y proveedores de identidad corporativos. Agregue estas configuraciones a su archivo de configuración de Claude Code (vea [Configuración](/es/settings) para ubicaciones de archivos).171Claude Code admite la actualización automática de credenciales para AWS SSO y proveedores de identidad corporativos. Agregue estas configuraciones a su archivo de configuración de Claude Code (vea [Configuración](/es/settings) para ubicaciones de archivos).

172 172 

173Cuando Claude Code detecta que sus credenciales de AWS han expirado (ya sea localmente según su marca de tiempo o cuando Bedrock devuelve un error de credencial), ejecutará automáticamente sus comandos `awsAuthRefresh` y/o `awsCredentialExport` configurados para obtener nuevas credenciales antes de reintentar la solicitud.173Estas dos configuraciones tienen diferentes condiciones de activación:

174 

175* **`awsAuthRefresh`**: se ejecuta solo cuando Claude Code detecta que sus credenciales de AWS han expirado, ya sea localmente según su marca de tiempo o cuando Bedrock devuelve un error de credencial, luego reintenta la solicitud con credenciales actualizadas.

176* **`awsCredentialExport`**: se ejecuta al inicio de la sesión y en cada recarga de credenciales, incluso cuando las credenciales en su cadena de proveedores de credenciales predeterminada de AWS aún son válidas. Utilice esto cuando su cuenta de Bedrock requiera credenciales entre cuentas que difieran de las que la cadena de proveedores predeterminada resolvería.

174 177 

175##### Configuración de ejemplo178##### Configuración de ejemplo

176 179 


187 190 

188**`awsAuthRefresh`**: Utilice esto para comandos que modifiquen el directorio `.aws`, como actualizar credenciales, caché de SSO o archivos de configuración. La salida del comando se muestra al usuario, pero la entrada interactiva no es compatible. Esto funciona bien para flujos de SSO basados en navegador donde la CLI muestra una URL o código y usted completa la autenticación en el navegador.191**`awsAuthRefresh`**: Utilice esto para comandos que modifiquen el directorio `.aws`, como actualizar credenciales, caché de SSO o archivos de configuración. La salida del comando se muestra al usuario, pero la entrada interactiva no es compatible. Esto funciona bien para flujos de SSO basados en navegador donde la CLI muestra una URL o código y usted completa la autenticación en el navegador.

189 192 

190**`awsCredentialExport`**: Solo use esto si no puede modificar `.aws` y debe devolver credenciales directamente. La salida se captura silenciosamente y no se muestra al usuario. El comando debe generar JSON en este formato:193**`awsCredentialExport`**: Solo use esto si no puede modificar `.aws` y debe devolver credenciales directamente. Este comando se ejecuta siempre que sea necesario actualizar las credenciales, no solo cuando las credenciales han expirado. La salida se captura silenciosamente y no se muestra al usuario. El comando debe generar JSON en este formato:

191 194 

192```json theme={null}195```json theme={null}

193{196{

best-practices.md +19 −25

Details

52 Separe la investigación y la planificación de la implementación para evitar resolver el problema incorrecto.52 Separe la investigación y la planificación de la implementación para evitar resolver el problema incorrecto.

53</Tip>53</Tip>

54 54 

55Dejar que Claude salte directamente a la codificación puede producir código que resuelve el problema incorrecto. Use [Plan Mode](/es/common-workflows#use-plan-mode-for-safe-code-analysis) para separar la exploración de la ejecución.55Dejar que Claude salte directamente a la codificación puede producir código que resuelve el problema incorrecto. Use [plan mode](/es/permission-modes#analyze-before-you-edit-with-plan-mode) para separar la exploración de la ejecución.

56 56 

57El flujo de trabajo recomendado tiene cuatro fases:57El flujo de trabajo recomendado tiene cuatro fases:

58 58 

59<Steps>59<Steps>

60 <Step title="Explorar">60 <Step title="Explorar">

61 Ingrese Plan Mode. Claude lee archivos y responde preguntas sin hacer cambios.61 Ingrese plan mode. Claude lee archivos y responde preguntas sin hacer cambios.

62 62 

63 ```txt claude (Plan Mode) theme={null}63 ```txt claude (plan mode) theme={null}

64 read /src/auth and understand how we handle sessions and login.64 read /src/auth and understand how we handle sessions and login.

65 also look at how we manage environment variables for secrets.65 also look at how we manage environment variables for secrets.

66 ```66 ```


69 <Step title="Planificar">69 <Step title="Planificar">

70 Pida a Claude que cree un plan de implementación detallado.70 Pida a Claude que cree un plan de implementación detallado.

71 71 

72 ```txt claude (Plan Mode) theme={null}72 ```txt claude (plan mode) theme={null}

73 I want to add Google OAuth. What files need to change?73 I want to add Google OAuth. What files need to change?

74 What's the session flow? Create a plan.74 What's the session flow? Create a plan.

75 ```75 ```


78 </Step>78 </Step>

79 79 

80 <Step title="Implementar">80 <Step title="Implementar">

81 Vuelva al Modo Normal y deje que Claude codifique, verificando contra su plan.81 Salga de plan mode y deje que Claude codifique, verificando contra su plan.

82 82 

83 ```txt claude (Normal Mode) theme={null}83 ```txt claude (default mode) theme={null}

84 implement the OAuth flow from your plan. write tests for the84 implement the OAuth flow from your plan. write tests for the

85 callback handler, run the test suite and fix any failures.85 callback handler, run the test suite and fix any failures.

86 ```86 ```


89 <Step title="Confirmar">89 <Step title="Confirmar">

90 Pida a Claude que confirme con un mensaje descriptivo y cree un PR.90 Pida a Claude que confirme con un mensaje descriptivo y cree un PR.

91 91 

92 ```txt claude (Normal Mode) theme={null}92 ```txt claude (default mode) theme={null}

93 commit with a descriptive message and open a PR93 commit with a descriptive message and open a PR

94 ```94 ```

95 </Step>95 </Step>

96</Steps>96</Steps>

97 97 

98<Callout>98<Callout>

99 Plan Mode es útil, pero también agrega sobrecarga.99 Plan mode es útil, pero también agrega sobrecarga.

100 100 

101 Para tareas donde el alcance es claro y la corrección es pequeña (como corregir un error tipográfico, agregar una línea de registro o renombrar una variable) pida a Claude que lo haga directamente.101 Para tareas donde el alcance es claro y la corrección es pequeña (como corregir un error tipográfico, agregar una línea de registro o renombrar una variable) pida a Claude que lo haga directamente.

102 102 


396* Use `/clear` frecuentemente entre tareas para restablecer completamente la ventana de contexto396* Use `/clear` frecuentemente entre tareas para restablecer completamente la ventana de contexto

397* Cuando se activa la compactación automática, Claude resume lo que más importa, incluyendo patrones de código, estados de archivo y decisiones clave397* Cuando se activa la compactación automática, Claude resume lo que más importa, incluyendo patrones de código, estados de archivo y decisiones clave

398* Para más control, ejecute `/compact <instructions>`, como `/compact Focus on the API changes`398* Para más control, ejecute `/compact <instructions>`, como `/compact Focus on the API changes`

399* Para compactar solo parte de la conversación, use `Esc + Esc` o `/rewind`, seleccione un punto de control de mensaje y elija **Summarize from here**. Esto condensa mensajes desde ese punto hacia adelante mientras mantiene el contexto anterior intacto.399* Para compactar solo parte de la conversación, use `Esc + Esc` o `/rewind`, seleccione un punto de control de mensaje y elija **Summarize from here** o **Summarize up to here**. El primero condensa mensajes desde ese punto hacia adelante mientras mantiene el contexto anterior intacto; el segundo condensa mensajes anteriores mientras mantiene los recientes en su totalidad. Consulte [Restore vs. summarize](/es/checkpointing#restore-vs-summarize).

400* Personalice el comportamiento de compactación en CLAUDE.md con instrucciones como `"When compacting, always preserve the full list of modified files and any test commands"` para asegurar que el contexto crítico sobreviva a la resumición400* Personalice el comportamiento de compactación en CLAUDE.md con instrucciones como `"When compacting, always preserve the full list of modified files and any test commands"` para asegurar que el contexto crítico sobreviva a la resumición

401* Para preguntas rápidas que no necesitan permanecer en contexto, use [`/btw`](/es/interactive-mode#side-questions-with-%2Fbtw). La respuesta aparece en una superposición descaritable y nunca entra en el historial de conversación, para que pueda verificar un detalle sin aumentar el contexto.401* Para preguntas rápidas que no necesitan permanecer en contexto, use [`/btw`](/es/interactive-mode#side-questions-with-%2Fbtw). La respuesta aparece en una superposición descaritable y nunca entra en el historial de conversación, para que pueda verificar un detalle sin aumentar el contexto.

402 402 


424### Rebobine con puntos de control424### Rebobine con puntos de control

425 425 

426<Tip>426<Tip>

427 Cada acción que Claude realiza crea un punto de control. Puede restaurar conversación, código o ambos a cualquier punto de control anterior.427 Cada indicación que envía crea un punto de control. Puede restaurar conversación, código o ambos a cualquier punto de control anterior.

428</Tip>428</Tip>

429 429 

430Claude automáticamente crea puntos de control antes de cambios. Presione Escape dos veces o ejecute `/rewind` para abrir el menú de rebobinado. Puede restaurar solo conversación, restaurar solo código, restaurar ambos o resumir desde un mensaje seleccionado. Consulte [Checkpointing](/es/checkpointing) para detalles.430Claude automáticamente crea instantáneas de archivos antes de cada cambio para que un punto de control pueda restaurarlos. Presione Escape dos veces o ejecute `/rewind` para abrir el menú de rebobinado. Puede restaurar solo conversación, restaurar solo código, restaurar ambos o resumir desde un mensaje seleccionado. Consulte [Checkpointing](/es/checkpointing) para detalles.

431 431 

432En lugar de planificar cuidadosamente cada movimiento, puede decirle a Claude que intente algo arriesgado. Si no funciona, rebobine e intente un enfoque diferente. Los puntos de control persisten entre sesiones, para que pueda cerrar su terminal y aún rebobinar más tarde.432En lugar de planificar cuidadosamente cada movimiento, puede decirle a Claude que intente algo arriesgado. Si no funciona, rebobine e intente un enfoque diferente. Los puntos de control persisten entre sesiones, para que pueda cerrar su terminal y aún rebobinar más tarde.

433 433 


438### Reanudar conversaciones438### Reanudar conversaciones

439 439 

440<Tip>440<Tip>

441 Ejecute `claude --continue` para continuar donde lo dejó, o `--resume` para elegir entre sesiones recientes.441 Nombre sesiones con `/rename` y trate las como ramas: cada flujo de trabajo obtiene su propio contexto persistente.

442</Tip>442</Tip>

443 443 

444Claude Code guarda conversaciones localmente. Cuando una tarea abarca múltiples sesiones, no tiene que re-explicar el contexto:444Claude Code guarda conversaciones localmente, por lo que cuando una tarea abarca múltiples sesiones no tiene que re-explicar el contexto. Ejecute `claude --continue` para continuar con la sesión más reciente, o `claude --resume` para elegir de una lista. Dé a las sesiones nombres descriptivos como `oauth-migration` para que pueda encontrarlas más tarde. Consulte [Manage sessions](/es/sessions) para el conjunto completo de controles de reanudación, ramificación y denominación.

445 

446```bash theme={null}

447claude --continue # Resume the most recent conversation

448claude --resume # Select from recent conversations

449```

450 

451Use `/rename` para dar a las sesiones nombres descriptivos como `"oauth-migration"` o `"debugging-memory-leak"` para que pueda encontrarlas más tarde. Trate las sesiones como ramas: diferentes flujos de trabajo pueden tener contextos separados y persistentes.

452 445 

453***446***

454 447 


464 Use `claude -p "prompt"` en CI, hooks previos a la confirmación o scripts. Agregue `--output-format stream-json` para salida JSON de transmisión.457 Use `claude -p "prompt"` en CI, hooks previos a la confirmación o scripts. Agregue `--output-format stream-json` para salida JSON de transmisión.

465</Tip>458</Tip>

466 459 

467Con `claude -p "your prompt"`, puede ejecutar Claude de forma no interactiva, sin una sesión. El modo no interactivo es cómo integra Claude en canalizaciones de CI, hooks previos a la confirmación o cualquier flujo de trabajo automatizado. Los formatos de salida le permiten analizar resultados mediante programación: texto sin formato, JSON o JSON de transmisión.460Con `claude -p "your prompt"`, puede ejecutar Claude de forma no interactiva, sin una sesión. [El modo no interactivo](/es/headless) es cómo integra Claude en canalizaciones de CI, hooks previos a la confirmación o cualquier flujo de trabajo automatizado. Los formatos de salida le permiten analizar resultados mediante programación: texto sin formato, JSON o JSON de transmisión.

468 461 

469```bash theme={null}462```bash theme={null}

470# One-off queries463# One-off queries


483 Ejecute múltiples sesiones de Claude en paralelo para acelerar el desarrollo, ejecutar experimentos aislados o iniciar flujos de trabajo complejos.476 Ejecute múltiples sesiones de Claude en paralelo para acelerar el desarrollo, ejecutar experimentos aislados o iniciar flujos de trabajo complejos.

484</Tip>477</Tip>

485 478 

486Hay tres formas principales de ejecutar sesiones paralelas:479Elija el enfoque paralelo que se ajuste a cuánta coordinación desea hacer usted mismo:

487 480 

488* [Aplicación de escritorio Claude Code](/es/desktop#work-in-parallel-with-sessions): Gestione múltiples sesiones locales visualmente. Cada sesión obtiene su propio worktree aislado.481* [Worktrees](/es/worktrees): ejecute sesiones de CLI separadas en checkouts de git aislados para que las ediciones no choquen

489* [Claude Code en la web](/es/claude-code-on-the-web): Ejecutar en la infraestructura en la nube segura de Anthropic en máquinas virtuales aisladas.482* [Aplicación de escritorio](/es/desktop#work-in-parallel-with-sessions): gestione múltiples sesiones locales visualmente, cada una en su propio worktree

490* [Equipos de agentes](/es/agent-teams): Coordinación automatizada de múltiples sesiones con tareas compartidas, mensajería y un líder de equipo.483* [Claude Code en la web](/es/claude-code-on-the-web): ejecute sesiones en infraestructura en la nube administrada por Anthropic en máquinas virtuales aisladas

484* [Equipos de agentes](/es/agent-teams): coordinación automatizada de múltiples sesiones con tareas compartidas, mensajería y un líder de equipo

491 485 

492Más allá de paralelizar el trabajo, múltiples sesiones habilitan flujos de trabajo enfocados en la calidad. Un contexto nuevo mejora la revisión de código ya que Claude no estará sesgado hacia el código que acaba de escribir.486Más allá de paralelizar el trabajo, múltiples sesiones habilitan flujos de trabajo enfocados en la calidad. Un contexto nuevo mejora la revisión de código ya que Claude no estará sesgado hacia el código que acaba de escribir.

493 487 

checkpointing.md +10 −9

Details

28* **Restaurar conversación**: revierte a ese mensaje mientras mantiene el código actual28* **Restaurar conversación**: revierte a ese mensaje mientras mantiene el código actual

29* **Restaurar código**: revierte los cambios de archivo mientras mantiene la conversación29* **Restaurar código**: revierte los cambios de archivo mientras mantiene la conversación

30* **Resumir desde aquí**: comprime la conversación desde este punto en adelante en un resumen, liberando espacio de context window30* **Resumir desde aquí**: comprime la conversación desde este punto en adelante en un resumen, liberando espacio de context window

31* **Resumir hasta aquí**: comprime la conversación antes de este punto en un resumen, manteniendo los mensajes posteriores intactos

31* **Cancelar**: regresa a la lista de mensajes sin hacer cambios32* **Cancelar**: regresa a la lista de mensajes sin hacer cambios

32 33 

33Después de restaurar la conversación o resumir, la solicitud original del mensaje seleccionado se restaura en el campo de entrada para que pueda reenviarlo o editarlo.34Después de restaurar la conversación o elegir Resumir desde aquí, la solicitud original del mensaje seleccionado se restaura en el campo de entrada para que pueda reenviarlo o editarlo.

35 

36Al elegir Resumir hasta aquí, se queda al final de la conversación con la entrada vacía.

34 37 

35#### Restaurar vs. resumir38#### Restaurar vs. resumir

36 39 

37Las tres opciones de restauración revierten el estado: deshacen cambios de código, historial de conversación, o ambos. "Resumir desde aquí" funciona de manera diferente:40Las opciones de restauración revierten el estado: deshacen cambios de código, historial de conversación, o ambos. Las opciones de resumir comprimen parte de la conversación en un resumen generado por IA sin cambiar archivos en el disco:

38 41 

39* Los mensajes anteriores al mensaje seleccionado permanecen intactos42* **Resumir desde aquí**: los mensajes anteriores al mensaje seleccionado permanecen intactos. El mensaje seleccionado y todo lo que viene después se reemplazan con un resumen. Utilice esto para descartar una discusión secundaria mientras mantiene el contexto inicial en detalle completo.

40* El mensaje seleccionado y todos los mensajes posteriores se reemplazan con un resumen compacto generado por IA43* **Resumir hasta aquí**: los mensajes anteriores al mensaje seleccionado se reemplazan con un resumen. El mensaje seleccionado y todo lo que viene después permanecen intactos, y usted permanece al final de la conversación. Utilice esto para comprimir la discusión de configuración inicial mientras mantiene el trabajo reciente en detalle completo.

41* No se cambian archivos en el disco

42* Los mensajes originales se conservan en la transcripción de la sesión, por lo que Claude puede hacer referencia a los detalles si es necesario

43 44 

44Esto es similar a `/compact`, pero dirigido: en lugar de resumir toda la conversación, mantiene el contexto inicial en detalle completo y solo comprime las partes que están usando espacio. Puede escribir instrucciones opcionales para guiar en qué se enfoca el resumen.45En ambos casos, los mensajes originales se conservan en la transcripción de la sesión, por lo que Claude puede hacer referencia a los detalles si es necesario. Puede escribir instrucciones opcionales para guiar en qué se enfoca el resumen. Esto es similar a `/compact`, pero dirigido: en lugar de resumir toda la conversación, elige qué lado del mensaje seleccionado comprimir.

45 46 

46<Note>47<Note>

47 Resumir lo mantiene en la misma sesión y comprime el contexto. Si desea ramificarse e intentar un enfoque diferente mientras preserva la sesión original intacta, use [fork](/es/how-claude-code-works#resume-or-fork-sessions) en su lugar (`claude --continue --fork-session`).48 Resumir lo mantiene en la misma sesión y comprime el contexto. Si desea ramificarse e intentar un enfoque diferente mientras preserva la sesión original intacta, use [fork](/es/sessions#branch-a-session) en su lugar (`claude --continue --fork-session`).

48</Note>49</Note>

49 50 

50## Casos de uso comunes51## Casos de uso comunes


85## Ver también86## Ver también

86 87 

87* [Modo interactivo](/es/interactive-mode) - Atajos de teclado y controles de sesión88* [Modo interactivo](/es/interactive-mode) - Atajos de teclado y controles de sesión

88* [Comandos integrados](/es/commands) - Acceso a checkpoints usando `/rewind`89* [Comandos](/es/commands) - Acceso a checkpoints usando `/rewind`

89* [Referencia de CLI](/es/cli-reference) - Opciones de línea de comandos90* [Referencia de CLI](/es/cli-reference) - Opciones de línea de comandos

Details

782 782 

783### Sesión de Control Remoto expirada o acceso denegado783### Sesión de Control Remoto expirada o acceso denegado

784 784 

785`--teleport` se conecta a través de la misma infraestructura de sesión de Control Remoto que usan las sesiones en la nube, por lo que los errores de autenticación y vencimiento de sesión aparecen con la redacción de Control Remoto. Puede ver `Remote Control session has expired` o `Access denied`. El token de conexión es de corta duración y está limitado a su cuenta.785`--teleport` se conecta a través de la misma infraestructura de sesión de Control Remoto que usan las sesiones en la nube, por lo que los errores de autenticación y vencimiento de sesión aparecen con la redacción de Control Remoto. Puede ver `Remote Control session expired` o `Access denied`. El token de conexión es de corta duración y está limitado a su cuenta.

786 786 

787* Ejecute `/login` localmente para actualizar sus credenciales, luego reconecte787* Ejecute `/login` localmente para actualizar sus credenciales, luego reconecte

788* Confirme que está conectado a la misma cuenta que posee la sesión788* Confirme que está conectado a la misma cuenta que posee la sesión

Details

24| `claude auth login` | Inicie sesión en su cuenta de Anthropic. Use `--email` para rellenar previamente su dirección de correo electrónico, `--sso` para forzar la autenticación SSO y `--console` para iniciar sesión con Anthropic Console para facturación de uso de API en lugar de una suscripción a Claude | `claude auth login --console` |24| `claude auth login` | Inicie sesión en su cuenta de Anthropic. Use `--email` para rellenar previamente su dirección de correo electrónico, `--sso` para forzar la autenticación SSO y `--console` para iniciar sesión con Anthropic Console para facturación de uso de API en lugar de una suscripción a Claude | `claude auth login --console` |

25| `claude auth logout` | Cerrar sesión en su cuenta de Anthropic | `claude auth logout` |25| `claude auth logout` | Cerrar sesión en su cuenta de Anthropic | `claude auth logout` |

26| `claude auth status` | Mostrar estado de autenticación como JSON. Use `--text` para salida legible por humanos. Sale con código 0 si ha iniciado sesión, 1 si no | `claude auth status` |26| `claude auth status` | Mostrar estado de autenticación como JSON. Use `--text` para salida legible por humanos. Sale con código 0 si ha iniciado sesión, 1 si no | `claude auth status` |

27| `claude agents` | Abrir [vista de agentes](/es/agent-view) para monitorear y enviar sesiones de fondo paralelas. Cuando la salida se canaliza, enumera [subagentes](/es/sub-agents) configurados en su lugar | `claude agents` |27| `claude agents` | Abrir [vista de agentes](/es/agent-view) para monitorear y enviar sesiones de fondo paralelas. Use `--cwd <path>` para mostrar solo sesiones iniciadas en ese directorio | `claude agents` |

28| `claude attach <id>` | Adjuntar a una [sesión de fondo](/es/agent-view#manage-sessions-from-the-shell) en esta terminal | `claude attach 7c5dcf5d` |28| `claude attach <id>` | Adjuntar a una [sesión de fondo](/es/agent-view#manage-sessions-from-the-shell) en esta terminal | `claude attach 7c5dcf5d` |

29| `claude auto-mode defaults` | Imprimir las reglas del clasificador de [auto mode](/es/permission-modes#eliminate-prompts-with-auto-mode) integradas como JSON. Use `claude auto-mode config` para ver su configuración efectiva con la configuración aplicada | `claude auto-mode defaults > rules.json` |29| `claude auto-mode defaults` | Imprimir las reglas del clasificador de [auto mode](/es/permission-modes#eliminate-prompts-with-auto-mode) integradas como JSON. Use `claude auto-mode config` para ver su configuración efectiva con la configuración aplicada | `claude auto-mode defaults > rules.json` |

30| `claude logs <id>` | Imprimir salida reciente de una [sesión de fondo](/es/agent-view#manage-sessions-from-the-shell) | `claude logs 7c5dcf5d` |30| `claude logs <id>` | Imprimir salida reciente de una [sesión de fondo](/es/agent-view#manage-sessions-from-the-shell) | `claude logs 7c5dcf5d` |

desktop.md +5 −2

Details

148 148 

149### Ejecutar comandos en la terminal149### Ejecutar comandos en la terminal

150 150 

151La terminal integrada le permite ejecutar comandos junto a su sesión sin cambiar a otra aplicación. Ábrala desde el menú **Views** o presione **Ctrl+\`** en macOS o Windows. La terminal se abre en el directorio de trabajo de su sesión y comparte el mismo entorno que Claude, por lo que comandos como `npm test` o `git status` ven los mismos archivos que Claude está editando. La terminal está disponible solo en sesiones locales.151La terminal integrada le permite ejecutar comandos junto a su sesión sin cambiar a otra aplicación. Ábrala desde el menú **Views** o presione **Ctrl+\`** en macOS o Windows. La terminal se abre en el directorio de trabajo de su sesión y comparte el mismo entorno que Claude, por lo que comandos como `npm test` o `git status` ven los mismos archivos que Claude está editando. Para abrir una segunda pestaña de terminal, haga clic en **+** en el encabezado del panel de terminal o haga clic con el botón derecho en una carpeta en el chat para elegir **Open in terminal**. La terminal está disponible solo en sesiones locales.

152 152 

153### Abrir y editar archivos153### Abrir y editar archivos

154 154 


296 296 

297Use los controles en la parte superior de la barra lateral para filtrar sesiones por estado, proyecto o entorno, y para agrupar sesiones por proyecto. Para renombrar una sesión, haga clic en el título de la sesión en la barra de herramientas en la parte superior de la sesión activa. Para verificar el uso del contexto, consulte [Verificar uso](#check-usage). Cuando el contexto se llena, Claude resume automáticamente la conversación y continúa trabajando. También puede escribir `/compact` para activar la compresión antes y liberar espacio de contexto. Consulte [la ventana de contexto](/es/how-claude-code-works#the-context-window) para obtener detalles sobre cómo funciona la compresión.297Use los controles en la parte superior de la barra lateral para filtrar sesiones por estado, proyecto o entorno, y para agrupar sesiones por proyecto. Para renombrar una sesión, haga clic en el título de la sesión en la barra de herramientas en la parte superior de la sesión activa. Para verificar el uso del contexto, consulte [Verificar uso](#check-usage). Cuando el contexto se llena, Claude resume automáticamente la conversación y continúa trabajando. También puede escribir `/compact` para activar la compresión antes y liberar espacio de contexto. Consulte [la ventana de contexto](/es/how-claude-code-works#the-context-window) para obtener detalles sobre cómo funciona la compresión.

298 298 

299La aplicación de escritorio envía una notificación del sistema operativo cuando una sesión de Code termina una tarea y usted no está viendo actualmente esa sesión.

300 

299### Hacer una pregunta lateral sin descarrilar la sesión301### Hacer una pregunta lateral sin descarrilar la sesión

300 302 

301Un chat lateral le permite hacer una pregunta a Claude que usa el contexto de su sesión pero no agrega nada de vuelta a la conversación principal. Úselo cuando desee entender un fragmento de código, verificar una suposición o explorar una idea sin dirigir la sesión fuera de curso.303Un chat lateral le permite hacer una pregunta a Claude que usa el contexto de su sesión pero no agrega nada de vuelta a la conversación principal. Úselo cuando desee entender un fragmento de código, verificar una suposición o explorar una idea sin dirigir la sesión fuera de curso.


598La configuración administrada anula la configuración del proyecto y usuario y se aplica cuando Desktop genera sesiones de CLI. Puede establecer estas claves en el archivo de [configuración administrada](/es/settings#settings-precedence) de su organización o enviarlas de forma remota a través de la consola de administración.600La configuración administrada anula la configuración del proyecto y usuario y se aplica cuando Desktop genera sesiones de CLI. Puede establecer estas claves en el archivo de [configuración administrada](/es/settings#settings-precedence) de su organización o enviarlas de forma remota a través de la consola de administración.

599 601 

600| Clave | Descripción |602| Clave | Descripción |

601| ------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |603| ------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

602| `permissions.disableBypassPermissionsMode` | establezca en `"disable"` para evitar que los usuarios habiliten el modo bypass permissions. |604| `permissions.disableBypassPermissionsMode` | establezca en `"disable"` para evitar que los usuarios habiliten el modo bypass permissions. |

603| `disableAutoMode` | establezca en `"disable"` para evitar que los usuarios habiliten el modo [Auto](/es/permission-modes#eliminate-prompts-with-auto-mode). Elimina Auto del selector de modo. También aceptado bajo `permissions`. |605| `disableAutoMode` | establezca en `"disable"` para evitar que los usuarios habiliten el modo [Auto](/es/permission-modes#eliminate-prompts-with-auto-mode). Elimina Auto del selector de modo. También aceptado bajo `permissions`. |

604| `autoMode` | personalice lo que el clasificador de modo auto confía y bloquea en toda su organización. Consulte [Configurar el modo auto](/es/auto-mode-config). |606| `autoMode` | personalice lo que el clasificador de modo auto confía y bloquea en toda su organización. Consulte [Configurar el modo auto](/es/auto-mode-config). |

605| `sshConfigs` | pre-configure [conexiones SSH](#pre-configure-ssh-connections-for-your-team) que aparecen en el menú desplegable de entorno. Los usuarios no pueden editar ni eliminar conexiones administradas. |607| `sshConfigs` | pre-configure [conexiones SSH](#pre-configure-ssh-connections-for-your-team) que aparecen en el menú desplegable de entorno. Los usuarios no pueden editar ni eliminar conexiones administradas. |

606| `sshHostAllowlist` | restrinja [sesiones SSH](#restrict-which-ssh-hosts-users-can-connect-to) a hosts cuyo nombre de host resuelto coincida con uno de estos patrones. Una matriz vacía deshabilita las sesiones SSH. Se lee solo desde configuración administrada. |608| `sshHostAllowlist` | restrinja [sesiones SSH](#restrict-which-ssh-hosts-users-can-connect-to) a hosts cuyo nombre de host resuelto coincida con uno de estos patrones. Una matriz vacía deshabilita las sesiones SSH. Se lee solo desde configuración administrada. |

609| `managedMcpServers` | envíe configuraciones de servidor MCP a todos los usuarios en una implementación de terceros. Cada entrada especifica un transporte de `"http"`, `"sse"` o `"stdio"`, detalles de conexión y opcionalmente un mapa `toolPolicy` que restringe qué herramientas en ese servidor pueden invocar los usuarios. Disponible solo en implementaciones de Desktop de terceros (3P). |

607 610 

608Un archivo de configuración administrada implementado en disco en cada máquina se aplica a sesiones de Desktop. La configuración administrada enviada de forma remota a través de la consola de administración actualmente solo llega a sesiones de CLI e IDE, por lo que para implementaciones de Desktop distribuya el archivo a través de MDM o use los [controles de consola de administración](#admin-console-controls) anteriores.611Un archivo de configuración administrada implementado en disco en cada máquina se aplica a sesiones de Desktop. La configuración administrada enviada de forma remota a través de la consola de administración actualmente solo llega a sesiones de CLI e IDE, por lo que para implementaciones de Desktop distribuya el archivo a través de MDM o use los [controles de consola de administración](#admin-console-controls) anteriores.

609 612 

desktop-scheduled-tasks.md +106 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Programar tareas recurrentes en Claude Code Desktop

6 

7> Configure tareas programadas en Claude Code Desktop para ejecutar Claude automáticamente de forma recurrente para revisiones de código diarias, auditorías de dependencias o resúmenes matutinos.

8 

9Las tareas programadas inician una nueva sesión automáticamente en la hora y frecuencia que elija. Úselas para trabajos recurrentes como revisiones de código diarias, comprobaciones de actualizaciones de dependencias o resúmenes matutinos que extraigan información de su calendario e bandeja de entrada.

10 

11La página **Routines** de la aplicación de escritorio le permite crear tanto tareas programadas locales como [routines](/es/routines) remotas. Una tarea local se ejecuta en su máquina con acceso directo a sus archivos y herramientas, pero solo se activa mientras la aplicación está abierta y su computadora está despierta. Una routine remota se ejecuta en la infraestructura en la nube administrada por Anthropic incluso cuando su computadora está apagada, y también puede activarse mediante llamadas API o eventos de GitHub. Esta página cubre tareas programadas locales; para routines remotas y sus opciones de activación, consulte [Routines](/es/routines).

12 

13## Comparar opciones de programación

14 

15Claude Code offers three ways to schedule recurring or one-off work:

16 

17| | [Cloud](/en/routines) | [Desktop](/en/desktop-scheduled-tasks) | [`/loop`](/en/scheduled-tasks) |

18| :------------------------- | :----------------------------- | :------------------------------------- | :---------------------------------- |

19| Runs on | Anthropic cloud | Your machine | Your machine |

20| Requires machine on | No | Yes | Yes |

21| Requires open session | No | No | Yes |

22| Persistent across restarts | Yes | Yes | Restored on `--resume` if unexpired |

23| Access to local files | No (fresh clone) | Yes | Yes |

24| MCP servers | Connectors configured per task | [Config files](/en/mcp) and connectors | Inherits from session |

25| Permission prompts | No (runs autonomously) | Configurable per task | Inherits from session |

26| Customizable schedule | Via `/schedule` in the CLI | Yes | Yes |

27| Minimum interval | 1 hour | 1 minute | 1 minute |

28 

29<Tip>

30 Use **cloud tasks** for work that should run reliably without your machine. Use **Desktop tasks** when you need access to local files and tools. Use **`/loop`** for quick polling during a session.

31</Tip>

32 

33<Note>

34 De forma predeterminada, las tareas programadas se ejecutan contra el estado en el que se encuentre su directorio de trabajo, incluidos los cambios no confirmados. Active el toggle de worktree al crear la tarea para dar a cada ejecución su propio Git worktree aislado, de la misma manera que funcionan las [sesiones paralelas](/es/desktop#work-in-parallel-with-sessions).

35</Note>

36 

37## Crear una tarea programada

38 

39Haga clic en **Routines** en la barra lateral, luego haga clic en **New routine** y elija **Local**. Configure estos campos:

40 

41| Campo | Descripción |

42| ------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

43| Name | Identificador de la tarea. Se convierte a kebab-case en minúsculas y se utiliza como nombre de carpeta en disco. Debe ser único en todas sus tareas. |

44| Description | Resumen breve que se muestra en la lista de tareas. |

45| Instructions | Lo que Claude debe hacer cuando se ejecute la tarea. Escriba esto de la misma manera que escribiría cualquier mensaje en el cuadro de solicitud. La entrada de instrucciones incluye selectores para el modo de permiso y el modelo, y debajo selecciona la carpeta de trabajo y si desea ejecutar en un worktree aislado. |

46| Schedule | Con qué frecuencia se ejecuta la tarea. Consulte [opciones de programación](#schedule-options) a continuación. |

47 

48Se requiere una carpeta antes de poder guardar la tarea. Si aún no ha confiado en esa carpeta, Desktop le solicita que la confíe antes de guardar.

49 

50También puede crear una tarea describiendo lo que desea en cualquier sesión. Por ejemplo, "configurar una revisión de código diaria que se ejecute cada mañana a las 9am" crea una tarea recurrente, y "recuérdame a las 3pm mañana que verifique el deploy" crea una tarea única que se desactiva después de ejecutarse.

51 

52## Opciones de programación

53 

54Elija un ajuste preestablecido del control Schedule:

55 

56* **Manual**: sin programación, solo se ejecuta cuando hace clic en **Run now**. Útil para guardar un prompt que activa bajo demanda

57* **Hourly**: se ejecuta cada hora

58* **Daily**: muestra un selector de hora, por defecto a las 9:00 AM hora local

59* **Weekdays**: igual que Daily pero omite sábado y domingo

60* **Weekly**: muestra un selector de hora y un selector de día

61 

62Para intervalos que el selector no ofrece, como cada 15 minutos, el primero de cada mes, o una única ejecución en un momento futuro específico, pídale a Claude en cualquier sesión de Desktop que configure la programación. Use lenguaje natural; por ejemplo, "programa una tarea para ejecutar todas las pruebas cada 6 horas."

63 

64## Cómo se ejecutan las tareas programadas

65 

66Las tareas programadas se ejecutan en su máquina. Desktop verifica la programación cada minuto mientras la aplicación está abierta e inicia una sesión nueva cuando una tarea vence, independientemente de cualquier sesión manual que tenga abierta. Cada tarea obtiene un pequeño retraso de unos pocos minutos después de la hora programada para escalonar el tráfico de API. El retraso es determinista: la misma tarea siempre comienza en el mismo desplazamiento.

67 

68Cuando se activa una tarea, recibe una notificación de escritorio y aparece una nueva sesión bajo una sección **Scheduled** en la barra lateral. Ábrala para ver qué hizo Claude, revisar cambios o responder a solicitudes de permiso. La sesión funciona como cualquier otra: Claude puede editar archivos, ejecutar comandos, crear commits y abrir pull requests.

69 

70Las tareas solo se ejecutan mientras la aplicación de escritorio está en ejecución y su computadora está despierta. Si su computadora se duerme durante una hora programada, la ejecución se omite. Para evitar el reposo inactivo, active **Keep computer awake** en Configuración bajo **Desktop app → General**. Cerrar la tapa del portátil aún lo pone en reposo. Para tareas que necesitan ejecutarse incluso cuando su computadora está apagada, o que deben activarse mediante una llamada API o evento de GitHub, cree una [routine](/es/routines) remota en su lugar.

71 

72## Ejecuciones perdidas

73 

74Cuando la aplicación se inicia o su computadora se despierta, Desktop verifica si cada tarea perdió alguna ejecución en los últimos siete días. Si es así, Desktop inicia exactamente una ejecución de recuperación para el tiempo más recientemente perdido y descarta cualquier cosa más antigua. Una tarea diaria que perdió seis días se ejecuta una vez al despertar. Desktop muestra una notificación cuando comienza una ejecución de recuperación.

75 

76Tenga esto en cuenta al escribir prompts. Una tarea programada para las 9am podría ejecutarse a las 11pm si su computadora estuvo dormida todo el día. Si el tiempo es importante, agregue protecciones al prompt mismo, por ejemplo: "Solo revise los commits de hoy. Si es después de las 5pm, omita la revisión y solo publique un resumen de lo que se perdió."

77 

78## Permisos para tareas programadas

79 

80Cada tarea tiene su propio modo de permiso, que establece al crear o editar la tarea. Las reglas de permiso de `~/.claude/settings.json` también se aplican a sesiones de tareas programadas. Si una tarea se ejecuta en modo Ask y necesita ejecutar una herramienta para la que no tiene permiso, la ejecución se detiene hasta que la apruebe. La sesión permanece abierta en la barra lateral para que pueda responder más tarde.

81 

82Para evitar detenciones, haga clic en **Run now** después de crear una tarea, observe las solicitudes de permiso y seleccione "always allow" para cada una. Las ejecuciones futuras de esa tarea aprueban automáticamente las mismas herramientas sin solicitar. Puede revisar y revocar estas aprobaciones desde la página de detalles de la tarea.

83 

84## Administrar tareas programadas

85 

86Haga clic en una tarea en la lista **Routines** para abrir su página de detalles. Desde aquí puede:

87 

88* **Run now**: inicie la tarea inmediatamente sin esperar a la próxima hora programada

89* **Status**: alterne entre Active y Paused para pausar o reanudar ejecuciones programadas sin eliminar la tarea

90* **Edit**: cambie las instrucciones, la programación, la carpeta u otras configuraciones

91* **Review history**: vea cada ejecución anterior, incluidas las ejecuciones omitidas. Pase el cursor sobre una entrada omitida para ver por qué: su computadora estaba dormida, la ejecución anterior aún estaba en progreso, u otras tareas programadas ya estaban en ejecución. Haga clic en **Show more** para cargar entradas más antiguas.

92* **Review allowed permissions**: vea y revoque aprobaciones de herramientas guardadas para esta tarea desde el panel **Always allowed**

93* **Delete**: elimine la tarea y archive todas las sesiones que creó. Aparece una casilla de verificación **Also delete files on disk** en el diálogo de confirmación; márquela para eliminar también el archivo `SKILL.md` de la tarea y los datos asociados de `~/.claude/scheduled-tasks/`.

94 

95También puede enumerar, crear, editar y pausar tareas pidiendo a Claude en cualquier sesión de Desktop. Por ejemplo, "pausa mi tarea dependency-audit" o "muéstrame mis tareas programadas." Para eliminar una tarea, use el botón **Delete** en su página de detalles.

96 

97Una tarea programada también puede modificar su propia programación o prompt desde dentro de una sesión en ejecución usando la herramienta MCP `update_scheduled_task`. Esto permite que una tarea se reprograme a sí misma según lo que encuentre, por ejemplo, reprogramar una revisión de código para ejecutarse antes cuando detecta que se ha creado una rama de lanzamiento.

98 

99Para editar el prompt de una tarea en disco, abra `~/.claude/scheduled-tasks/<task-name>/SKILL.md` (o bajo [`CLAUDE_CONFIG_DIR`](/es/env-vars) si está configurado). El archivo utiliza frontmatter YAML para `name` y `description`, con el prompt como cuerpo. Los cambios surten efecto en la próxima ejecución. La programación, carpeta, modelo y estado habilitado no están en este archivo: cámbielos a través del formulario Edit o pídale a Claude.

100 

101## Recursos relacionados

102 

103* [Routines](/es/routines): ejecute tareas en infraestructura administrada por Anthropic en una programación, mediante llamada API o en respuesta a eventos de GitHub, incluso cuando su computadora está apagada

104* [Run prompts on a schedule](/es/scheduled-tasks): programación con alcance de sesión con `/loop` en la CLI

105* [Claude Code GitHub Actions](/es/github-actions): ejecute Claude en una programación en CI en lugar de en su máquina

106* [Use Claude Code Desktop](/es/desktop): la guía completa de la aplicación de escritorio

env-vars.md +3 −1

Details

45| `ANTHROPIC_SMALL_FAST_MODEL_AWS_REGION` | Anule la región de AWS para el modelo de clase Haiku al usar Bedrock o Bedrock Mantle |45| `ANTHROPIC_SMALL_FAST_MODEL_AWS_REGION` | Anule la región de AWS para el modelo de clase Haiku al usar Bedrock o Bedrock Mantle |

46| `ANTHROPIC_VERTEX_BASE_URL` | Anule la URL del endpoint de Vertex AI. Utilice para endpoints de Vertex personalizados o cuando enrute a través de una [puerta de enlace LLM](/es/llm-gateway). Consulte [Google Vertex AI](/es/google-vertex-ai) |46| `ANTHROPIC_VERTEX_BASE_URL` | Anule la URL del endpoint de Vertex AI. Utilice para endpoints de Vertex personalizados o cuando enrute a través de una [puerta de enlace LLM](/es/llm-gateway). Consulte [Google Vertex AI](/es/google-vertex-ai) |

47| `ANTHROPIC_VERTEX_PROJECT_ID` | ID de proyecto de GCP para solicitudes de Vertex AI. Anulado por `GCLOUD_PROJECT`, `GOOGLE_CLOUD_PROJECT` o el proyecto en su archivo de credenciales `GOOGLE_APPLICATION_CREDENTIALS`. Consulte [Google Vertex AI](/es/google-vertex-ai) |47| `ANTHROPIC_VERTEX_PROJECT_ID` | ID de proyecto de GCP para solicitudes de Vertex AI. Anulado por `GCLOUD_PROJECT`, `GOOGLE_CLOUD_PROJECT` o el proyecto en su archivo de credenciales `GOOGLE_APPLICATION_CREDENTIALS`. Consulte [Google Vertex AI](/es/google-vertex-ai) |

48| `ANTHROPIC_WORKSPACE_ID` | ID de espacio de trabajo para [federación de identidad de carga de trabajo](https://platform.claude.com/docs/en/manage-claude/workload-identity-federation). Establezca esto cuando su regla de federación esté limitada a más de un espacio de trabajo para que el intercambio de tokens sepa a qué espacio de trabajo dirigirse |

48| `API_TIMEOUT_MS` | Tiempo de espera para solicitudes de API en milisegundos (predeterminado: 600000, o 10 minutos; máximo: 2147483647). Aumente esto cuando las solicitudes agoten el tiempo de espera en redes lentas o cuando enrute a través de un proxy. Los valores por encima del máximo desbordan el temporizador subyacente y causan que las solicitudes fallen inmediatamente |49| `API_TIMEOUT_MS` | Tiempo de espera para solicitudes de API en milisegundos (predeterminado: 600000, o 10 minutos; máximo: 2147483647). Aumente esto cuando las solicitudes agoten el tiempo de espera en redes lentas o cuando enrute a través de un proxy. Los valores por encima del máximo desbordan el temporizador subyacente y causan que las solicitudes fallen inmediatamente |

49| `AWS_BEARER_TOKEN_BEDROCK` | Clave de API de Bedrock para autenticación (consulte [Claves de API de Bedrock](https://aws.amazon.com/blogs/machine-learning/accelerate-ai-development-with-amazon-bedrock-api-keys/)) |50| `AWS_BEARER_TOKEN_BEDROCK` | Clave de API de Bedrock para autenticación (consulte [Claves de API de Bedrock](https://aws.amazon.com/blogs/machine-learning/accelerate-ai-development-with-amazon-bedrock-api-keys/)) |

50| `BASH_DEFAULT_TIMEOUT_MS` | Tiempo de espera predeterminado para comandos bash de larga duración (predeterminado: 120000, o 2 minutos) |51| `BASH_DEFAULT_TIMEOUT_MS` | Tiempo de espera predeterminado para comandos bash de larga duración (predeterminado: 120000, o 2 minutos) |


138| `CLAUDE_CODE_PLUGIN_CACHE_DIR` | Anule el directorio raíz de plugins. A pesar del nombre, esto establece el directorio principal, no el caché en sí: los marketplaces y el caché de plugins viven en subdirectorios bajo esta ruta. El valor predeterminado es `~/.claude/plugins` |139| `CLAUDE_CODE_PLUGIN_CACHE_DIR` | Anule el directorio raíz de plugins. A pesar del nombre, esto establece el directorio principal, no el caché en sí: los marketplaces y el caché de plugins viven en subdirectorios bajo esta ruta. El valor predeterminado es `~/.claude/plugins` |

139| `CLAUDE_CODE_PLUGIN_GIT_TIMEOUT_MS` | Tiempo de espera en milisegundos para operaciones de git al instalar o actualizar plugins (predeterminado: 120000). Aumente este valor para repositorios grandes o conexiones de red lentas. Consulte [Las operaciones de Git agotan el tiempo de espera](/es/plugin-marketplaces#git-operations-time-out) |140| `CLAUDE_CODE_PLUGIN_GIT_TIMEOUT_MS` | Tiempo de espera en milisegundos para operaciones de git al instalar o actualizar plugins (predeterminado: 120000). Aumente este valor para repositorios grandes o conexiones de red lentas. Consulte [Las operaciones de Git agotan el tiempo de espera](/es/plugin-marketplaces#git-operations-time-out) |

140| `CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE` | Establezca en `1` para mantener el caché de marketplace existente cuando un `git pull` falla en lugar de borrar y volver a clonar. Útil en entornos sin conexión o aislados donde volver a clonar fallaría de la misma manera. Consulte [Las actualizaciones de Marketplace fallan en entornos sin conexión](/es/plugin-marketplaces#marketplace-updates-fail-in-offline-environments) |141| `CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE` | Establezca en `1` para mantener el caché de marketplace existente cuando un `git pull` falla en lugar de borrar y volver a clonar. Útil en entornos sin conexión o aislados donde volver a clonar fallaría de la misma manera. Consulte [Las actualizaciones de Marketplace fallan en entornos sin conexión](/es/plugin-marketplaces#marketplace-updates-fail-in-offline-environments) |

142| `CLAUDE_CODE_PLUGIN_PREFER_HTTPS` | Establezca en `1` para clonar fuentes de plugins de GitHub `owner/repo` sobre HTTPS en lugar de SSH. Útil en ejecutores de CI, contenedores o cualquier entorno sin una clave SSH configurada para `github.com` |

141| `CLAUDE_CODE_PLUGIN_SEED_DIR` | Ruta a uno o más directorios de semilla de plugins de solo lectura, separados por `:` en Unix o `;` en Windows. Utilice esto para agrupar un directorio de plugins previamente poblado en una imagen de contenedor. Claude Code registra mercados desde estos directorios al inicio y utiliza plugins almacenados en caché previamente sin volver a clonar. Consulte [Pre-popular plugins para contenedores](/es/plugin-marketplaces#pre-populate-plugins-for-containers) |143| `CLAUDE_CODE_PLUGIN_SEED_DIR` | Ruta a uno o más directorios de semilla de plugins de solo lectura, separados por `:` en Unix o `;` en Windows. Utilice esto para agrupar un directorio de plugins previamente poblado en una imagen de contenedor. Claude Code registra mercados desde estos directorios al inicio y utiliza plugins almacenados en caché previamente sin volver a clonar. Consulte [Pre-popular plugins para contenedores](/es/plugin-marketplaces#pre-populate-plugins-for-containers) |

142| `CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST` | Se establece por plataformas host que incrustan Claude Code y administran el enrutamiento del proveedor de modelo en su nombre. Cuando se establece, la selección de proveedor, endpoint y variables de autenticación como `CLAUDE_CODE_USE_BEDROCK`, `ANTHROPIC_BASE_URL` y `ANTHROPIC_API_KEY` en archivos de configuración se ignoran para que la configuración del usuario no pueda anular el enrutamiento del host. La opción de exclusión automática de telemetría para Bedrock, Vertex y Foundry también se omite, por lo que la telemetría sigue la opción de exclusión estándar `DISABLE_TELEMETRY`. Consulte [Comportamientos predeterminados por proveedor de API](/es/data-usage#default-behaviors-by-api-provider) |144| `CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST` | Se establece por plataformas host que incrustan Claude Code y administran el enrutamiento del proveedor de modelo en su nombre. Cuando se establece, la selección de proveedor, endpoint y variables de autenticación como `CLAUDE_CODE_USE_BEDROCK`, `ANTHROPIC_BASE_URL` y `ANTHROPIC_API_KEY` en archivos de configuración se ignoran para que la configuración del usuario no pueda anular el enrutamiento del host. La opción de exclusión automática de telemetría para Bedrock, Vertex y Foundry también se omite, por lo que la telemetría sigue la opción de exclusión estándar `DISABLE_TELEMETRY`. Consulte [Comportamientos predeterminados por proveedor de API](/es/data-usage#default-behaviors-by-api-provider) |

143| `CLAUDE_CODE_PROXY_RESOLVES_HOSTS` | Establezca en `1` para permitir que el proxy realice la resolución de DNS en lugar de la persona que llama. Opción de inclusión para entornos donde el proxy debe manejar la resolución de nombres de host |145| `CLAUDE_CODE_PROXY_RESOLVES_HOSTS` | Establezca en `1` para permitir que el proxy realice la resolución de DNS en lugar de la persona que llama. Opción de inclusión para entornos donde el proxy debe manejar la resolución de nombres de host |


152| `CLAUDE_CODE_SHELL` | Anule la detección automática de shell. Útil cuando su shell de inicio difiere de su shell de trabajo preferido (por ejemplo, `bash` vs `zsh`) |154| `CLAUDE_CODE_SHELL` | Anule la detección automática de shell. Útil cuando su shell de inicio difiere de su shell de trabajo preferido (por ejemplo, `bash` vs `zsh`) |

153| `CLAUDE_CODE_SHELL_PREFIX` | Prefijo de comando que envuelve comandos shell que Claude Code genera: llamadas de herramienta Bash, comandos [hook](/es/hooks) y comandos de inicio de [servidor MCP](/es/mcp) stdio. Útil para registro o auditoría. Ejemplo: establecer `/path/to/logger.sh` ejecuta cada comando como `/path/to/logger.sh <command>` |155| `CLAUDE_CODE_SHELL_PREFIX` | Prefijo de comando que envuelve comandos shell que Claude Code genera: llamadas de herramienta Bash, comandos [hook](/es/hooks) y comandos de inicio de [servidor MCP](/es/mcp) stdio. Útil para registro o auditoría. Ejemplo: establecer `/path/to/logger.sh` ejecuta cada comando como `/path/to/logger.sh <command>` |

154| `CLAUDE_CODE_SIMPLE` | Establezca en `1` para ejecutar con un indicador del sistema mínimo y solo las herramientas Bash, lectura de archivo y edición de archivo. Las herramientas MCP de `--mcp-config` siguen estando disponibles. Deshabilita el descubrimiento automático de hooks, skills, plugins, servidores MCP, memoria automática y CLAUDE.md. La bandera CLI [`--bare`](/es/headless#start-faster-with-bare-mode) establece esto |156| `CLAUDE_CODE_SIMPLE` | Establezca en `1` para ejecutar con un indicador del sistema mínimo y solo las herramientas Bash, lectura de archivo y edición de archivo. Las herramientas MCP de `--mcp-config` siguen estando disponibles. Deshabilita el descubrimiento automático de hooks, skills, plugins, servidores MCP, memoria automática y CLAUDE.md. La bandera CLI [`--bare`](/es/headless#start-faster-with-bare-mode) establece esto |

155| `CLAUDE_CODE_SIMPLE_SYSTEM_PROMPT` | Establezca en `1` para utilizar un indicador del sistema más corto y descripciones de herramientas abreviadas en Opus 4.7. No tiene efecto en otros modelos. El conjunto completo de herramientas, hooks, servidores MCP y descubrimiento de CLAUDE.md permanecen habilitados |157| `CLAUDE_CODE_SIMPLE_SYSTEM_PROMPT` | Establezca en `1` para utilizar un indicador del sistema más corto y descripciones de herramientas abreviadas en cualquier modelo. Establezca en `0`, `false`, `no` u `off` para optar por no participar incluso en modelos donde el experimento o la configuración del servidor lo habilitaría de otra manera. El conjunto completo de herramientas, hooks, servidores MCP y descubrimiento de CLAUDE.md permanecen habilitados |

156| `CLAUDE_CODE_SKIP_ANTHROPIC_AWS_AUTH` | Omita la autenticación del lado del cliente para [Claude Platform on AWS](/es/claude-platform-on-aws), para puertas de enlace que firman solicitudes por sí mismas |158| `CLAUDE_CODE_SKIP_ANTHROPIC_AWS_AUTH` | Omita la autenticación del lado del cliente para [Claude Platform on AWS](/es/claude-platform-on-aws), para puertas de enlace que firman solicitudes por sí mismas |

157| `CLAUDE_CODE_SKIP_BEDROCK_AUTH` | Omita la autenticación de AWS para Bedrock (por ejemplo, cuando se utiliza una puerta de enlace LLM) |159| `CLAUDE_CODE_SKIP_BEDROCK_AUTH` | Omita la autenticación de AWS para Bedrock (por ejemplo, cuando se utiliza una puerta de enlace LLM) |

158| `CLAUDE_CODE_SKIP_FOUNDRY_AUTH` | Omita la autenticación de Azure para Microsoft Foundry (por ejemplo, cuando se utiliza una puerta de enlace LLM) |160| `CLAUDE_CODE_SKIP_FOUNDRY_AUTH` | Omita la autenticación de Azure para Microsoft Foundry (por ejemplo, cuando se utiliza una puerta de enlace LLM) |

Details

156 156 

157### Usar skills157### Usar skills

158 158 

159La entrada `prompt` acepta una [invocación de skill](/es/skills) así como texto sin formato:

160 

161* Para un skill en el directorio `.claude/skills/` de su repositorio, ejecute `actions/checkout` antes del paso de acción y pase `/skill-name`.

162* Para un skill empaquetado en un plugin, instale el plugin con las entradas `plugin_marketplaces` y `plugins` y pase el `/plugin-name:skill-name` con espacio de nombres.

163 

164El siguiente flujo de trabajo instala el plugin `code-review` y ejecuta su skill en cada solicitud de extracción nueva o actualizada:

165 

159```yaml theme={null}166```yaml theme={null}

160name: Code Review167name: Code Review

161on:168on:


168 - uses: anthropics/claude-code-action@v1175 - uses: anthropics/claude-code-action@v1

169 with:176 with:

170 anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}177 anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}

171 prompt: "Review this pull request for code quality, correctness, and security. Analyze the diff, then post your findings as review comments."178 plugin_marketplaces: "https://github.com/anthropics/claude-code.git"

172 claude_args: "--max-turns 5"179 plugins: "code-review@claude-code-plugins"

180 prompt: "/code-review:code-review ${{ github.repository }}/pull/${{ github.event.pull_request.number }}"

173```181```

174 182 

175### Automatización personalizada con solicitudes183### Automatización personalizada con solicitudes


622Claude Code Action v1 utiliza una configuración simplificada:630Claude Code Action v1 utiliza una configuración simplificada:

623 631 

624| Parámetro | Descripción | Requerido |632| Parámetro | Descripción | Requerido |

625| ------------------- | -------------------------------------------------------------------------------- | --------- |633| --------------------- | ----------------------------------------------------------------------------------------- | --------- |

626| `prompt` | Instrucciones para Claude (texto sin formato o un nombre de [skill](/es/skills)) | No\* |634| `prompt` | Instrucciones para Claude (texto sin formato o un nombre de [skill](/es/skills)) | No\* |

627| `claude_args` | Argumentos de CLI pasados a Claude Code | No |635| `claude_args` | Argumentos de CLI pasados a Claude Code | No |

636| `plugin_marketplaces` | Lista separada por saltos de línea de URLs de Git de marketplace de plugins | No |

637| `plugins` | Lista separada por saltos de línea de nombres de plugins a instalar antes de la ejecución | No |

628| `anthropic_api_key` | Clave API de Claude | Sí\*\* |638| `anthropic_api_key` | Clave API de Claude | Sí\*\* |

629| `github_token` | Token de GitHub para acceso a API | No |639| `github_token` | Token de GitHub para acceso a API | No |

630| `trigger_phrase` | Frase de disparo personalizada (predeterminado: "@claude") | No |640| `trigger_phrase` | Frase de disparo personalizada (predeterminado: "@claude") | No |

glossary.md +1 −1

Details

70 70 

71### Checkpoint71### Checkpoint

72 72 

73Una instantánea automática de su código capturada antes de cada edición que Claude realiza. Presione `Esc` dos veces o ejecute `/rewind` para restaurar código, conversación o ambos a un punto anterior. Los checkpoints son locales a la sesión, separados de git, y no rastrean cambios realizados a través de la herramienta Bash.73Un punto de restauración creado en cada prompt que envía. Claude Code captura instantáneas de archivos antes de cada edición para que un checkpoint pueda revertirlos. Presione `Esc` dos veces o ejecute `/rewind` para restaurar código, conversación o ambos a un punto anterior, o para resumir parte de la conversación desde un mensaje seleccionado. Los checkpoints son locales a la sesión, separados de git, y no rastrean cambios realizados a través de la herramienta Bash.

74 74 

75Más información: [Checkpointing](/es/checkpointing)75Más información: [Checkpointing](/es/checkpointing)

76 76 

goal.md +1 −1

Details

108 108 

109### Ejecutar de forma no interactiva109### Ejecutar de forma no interactiva

110 110 

111`/goal` funciona en [modo no interactivo](/es/headless) y a través de [Control Remoto](/es/remote-control). Establecer un objetivo con `-p` ejecuta el bucle hasta completarse en una única invocación:111`/goal` funciona en [modo no interactivo](/es/headless), en la [aplicación de escritorio](/es/desktop) y a través de [Control Remoto](/es/remote-control). Establecer un objetivo con `-p` ejecuta el bucle hasta completarse en una única invocación:

112 112 

113```bash theme={null}113```bash theme={null}

114claude -p "/goal CHANGELOG.md has an entry for every PR merged this week"114claude -p "/goal CHANGELOG.md has an entry for every PR merged this week"

hooks.md +47 −7

Details

297| :-------------- | :-------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |297| :-------------- | :-------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

298| `type` | sí | `"command"`, `"http"`, `"mcp_tool"`, `"prompt"` o `"agent"` |298| `type` | sí | `"command"`, `"http"`, `"mcp_tool"`, `"prompt"` o `"agent"` |

299| `if` | no | Sintaxis de regla de permiso para filtrar cuándo se ejecuta este hook, como `"Bash(git *)"` o `"Edit(*.ts)"`. El hook solo se genera si la llamada a herramienta coincide con el patrón, o si un comando Bash es demasiado complejo para analizar. Solo se evalúa en eventos de herramientas: `PreToolUse`, `PostToolUse`, `PostToolUseFailure`, `PermissionRequest` y `PermissionDenied`. En otros eventos, un hook con `if` establecido nunca se ejecuta. Utiliza la misma sintaxis que [reglas de permiso](/es/permissions) |299| `if` | no | Sintaxis de regla de permiso para filtrar cuándo se ejecuta este hook, como `"Bash(git *)"` o `"Edit(*.ts)"`. El hook solo se genera si la llamada a herramienta coincide con el patrón, o si un comando Bash es demasiado complejo para analizar. Solo se evalúa en eventos de herramientas: `PreToolUse`, `PostToolUse`, `PostToolUseFailure`, `PermissionRequest` y `PermissionDenied`. En otros eventos, un hook con `if` establecido nunca se ejecuta. Utiliza la misma sintaxis que [reglas de permiso](/es/permissions) |

300| `timeout` | no | Segundos antes de cancelar. Valores predeterminados: 600 para comando, 30 para prompt, 60 para agente |300| `timeout` | no | Segundos antes de cancelar. Valores predeterminados: 600 para `command`, `http` y `mcp_tool`; 30 para `prompt`; 60 para `agent`. [`UserPromptSubmit`](#userpromptsubmit) reduce el valor predeterminado de `command`, `http` y `mcp_tool` a 30 |

301| `statusMessage` | no | Mensaje de spinner personalizado mostrado mientras se ejecuta el hook |301| `statusMessage` | no | Mensaje de spinner personalizado mostrado mientras se ejecuta el hook |

302| `once` | no | Si es `true`, se ejecuta una vez por sesión y luego se elimina. Solo se honra para hooks declarados en [skill frontmatter](#hooks-in-skills-and-agents); se ignora en archivos de configuración y frontmatter de agente |302| `once` | no | Si es `true`, se ejecuta una vez por sesión y luego se elimina. Solo se honra para hooks declarados en [skill frontmatter](#hooks-in-skills-and-agents); se ignora en archivos de configuración y frontmatter de agente |

303 303 


558 558 

559Los hooks de comando reciben datos JSON a través de stdin y comunican resultados a través de códigos de salida, stdout y stderr. Los hooks HTTP reciben el mismo JSON que el cuerpo de la solicitud POST y comunican resultados a través del cuerpo de la respuesta HTTP. Esta sección cubre campos y comportamiento comunes a todos los eventos. Cada sección de evento bajo [Hook events](#hook-events) incluye su esquema de entrada específico y opciones de control de decisión.559Los hooks de comando reciben datos JSON a través de stdin y comunican resultados a través de códigos de salida, stdout y stderr. Los hooks HTTP reciben el mismo JSON que el cuerpo de la solicitud POST y comunican resultados a través del cuerpo de la respuesta HTTP. Esta sección cubre campos y comportamiento comunes a todos los eventos. Cada sección de evento bajo [Hook events](#hook-events) incluye su esquema de entrada específico y opciones de control de decisión.

560 560 

561En macOS y Linux, los hooks de comando se ejecutan en su propia sesión sin una terminal de control a partir de v2.1.139. El proceso de hook y cualquier proceso secundario no pueden abrir `/dev/tty` o enviar secuencias de escape directamente a la interfaz de Claude Code. Windows no tiene `/dev/tty`. Para mostrar un mensaje al usuario en cualquier plataforma, devuelva [`systemMessage`](#json-output) en la salida JSON. Para activar una notificación de escritorio, establecer un título de ventana o sonar la campana, devuelva [`terminalSequence`](#emit-terminal-notifications) en su lugar.

562 

561### Campos de entrada comunes563### Campos de entrada comunes

562 564 

563Los eventos de hook reciben estos campos como JSON, además de campos específicos del evento documentados en cada sección [hook event](#hook-events). Para hooks de comando, este JSON llega a través de stdin. Para hooks HTTP, llega como el cuerpo de la solicitud POST.565Los eventos de hook reciben estos campos como JSON, además de campos específicos del evento documentados en cada sección [hook event](#hook-events). Para hooks de comando, este JSON llega a través de stdin. Para hooks HTTP, llega como el cuerpo de la solicitud POST.


685 687 

686El stdout de su hook debe contener solo el objeto JSON. Si su perfil de shell imprime texto al inicio, puede interferir con el análisis JSON. Consulte [JSON validation failed](/es/hooks-guide#json-validation-failed) en la guía de solución de problemas.688El stdout de su hook debe contener solo el objeto JSON. Si su perfil de shell imprime texto al inicio, puede interferir con el análisis JSON. Consulte [JSON validation failed](/es/hooks-guide#json-validation-failed) en la guía de solución de problemas.

687 689 

688La salida de hook inyectada en contexto (`additionalContext`, `systemMessage` o stdout plano) está limitada a 10.000 caracteres. La salida que excede este límite se guarda en un archivo y se reemplaza con una vista previa y ruta de archivo, de la misma manera que se manejan los resultados de herramientas grandes.690Las cadenas de salida de hook, incluyendo `additionalContext`, `systemMessage` y stdout plano, están limitadas a 10.000 caracteres. La salida que excede este límite se guarda en un archivo y se reemplaza con una vista previa y ruta de archivo, de la misma manera que se manejan los resultados de herramientas grandes.

689 691 

690El objeto JSON admite tres tipos de campos:692El objeto JSON admite tres tipos de campos:

691 693 


694* **`hookSpecificOutput`** es un objeto anidado para eventos que necesitan control más rico. Requiere un campo `hookEventName` establecido en el nombre del evento.696* **`hookSpecificOutput`** es un objeto anidado para eventos que necesitan control más rico. Requiere un campo `hookEventName` establecido en el nombre del evento.

695 697 

696| Campo | Predeterminado | Descripción |698| Campo | Predeterminado | Descripción |

697| :--------------- | :------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |699| :----------------- | :------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

698| `continue` | `true` | Si es `false`, Claude detiene el procesamiento completamente después de que se ejecuta el hook. Tiene precedencia sobre cualquier campo de decisión específico del evento |700| `continue` | `true` | Si es `false`, Claude detiene el procesamiento completamente después de que se ejecuta el hook. Tiene precedencia sobre cualquier campo de decisión específico del evento |

699| `stopReason` | ninguno | Mensaje mostrado al usuario cuando `continue` es `false`. No se muestra a Claude |701| `stopReason` | ninguno | Mensaje mostrado al usuario cuando `continue` es `false`. No se muestra a Claude |

700| `suppressOutput` | `false` | Si es `true`, omite stdout del registro de depuración |702| `suppressOutput` | `false` | Si es `true`, omite stdout del registro de depuración |

701| `systemMessage` | ninguno | Mensaje de advertencia mostrado al usuario |703| `systemMessage` | ninguno | Mensaje de advertencia mostrado al usuario |

704| `terminalSequence` | ninguno | Una secuencia de escape de terminal para que Claude Code emita en su nombre, como una notificación de escritorio, título de ventana o campana. Restringido a OSC `0`/`1`/`2`/`9`/`99`/`777` y BEL. Si el valor contiene algo fuera de la lista de permitidos, el campo se ignora. Use esto en lugar de escribir en `/dev/tty`, que no está disponible para hooks |

702 705 

703Para detener Claude completamente independientemente del tipo de evento:706Para detener Claude completamente independientemente del tipo de evento:

704 707 


706{ "continue": false, "stopReason": "Build failed, fix errors before continuing" }709{ "continue": false, "stopReason": "Build failed, fix errors before continuing" }

707```710```

708 711 

712#### Emitir notificaciones de terminal

713 

714El campo `terminalSequence` requiere Claude Code v2.1.141 o posterior.

715 

716Los hooks se ejecutan sin una terminal de control, por lo que escribir secuencias de escape directamente en `/dev/tty` falla. En su lugar, devuelva la secuencia de escape en el campo `terminalSequence` y Claude Code la emite por usted a través de su propia ruta de escritura de terminal. Esto es libre de carreras, funciona dentro de tmux y GNU screen, y funciona en Windows donde no hay `/dev/tty`.

717 

718El campo acepta una cadena de una o más secuencias de escape permitidas:

719 

720* OSC `0`, `1`, `2`: títulos de ventana e icono

721* OSC `9`: notificaciones de iTerm2, ConEmu, Windows Terminal y WezTerm, incluyendo progreso de barra de tareas `9;4`

722* OSC `99`: notificaciones de Kitty

723* OSC `777`: notificaciones de urxvt, Ghostty y Warp

724* BEL desnudo

725 

726Las secuencias pueden terminarse con BEL o con ST. Cualquier cosa fuera de la lista de permitidos, incluyendo secuencias de cursor y color CSI, secuencias de paleta OSC, hipervínculos OSC 8, escrituras de portapapeles OSC 52 y OSC 1337, se rechaza y el campo se ignora.

727 

728El ejemplo a continuación dispara una notificación de escritorio desde un hook `Notification`. La secuencia de escape se construye con escapes octales `printf` para que los bytes de control nunca aparezcan en la línea de comandos del shell, y `jq -n --arg` construye la salida JSON para que las comillas, barras invertidas y saltos de línea en el mensaje de notificación se escapen correctamente:

729 

730```bash theme={null}

731#!/bin/bash

732# Hook de notificación: ping al escritorio cuando Claude Code necesita atención.

733input=$(cat)

734title="Claude Code'

735body=$(jq -r '.message // "Needs your attention"' <<<"$input")

736seq=$(printf '\033]777;notify;%s;%s\007' "$title" "$body")

737jq -nc --arg seq "$seq" '{terminalSequence: $seq}'

738```

739 

740La forma `{ "terminalSequence": "..." }` es la misma desde cualquier shell o lenguaje. En Windows, construya la cadena de escape en PowerShell o un script y emita el mismo objeto JSON.

741 

742<Note>

743 `terminalSequence` es el reemplazo compatible para hooks que anteriormente escribían secuencias de escape directamente en `/dev/tty`. La lista de permitidos está restringida a secuencias que no pueden mover el cursor o alterar colores, por lo que un hook nunca puede corromper un prompt en pantalla.

744</Note>

745 

709#### Agregar contexto para Claude746#### Agregar contexto para Claude

710 747 

711El campo `additionalContext` pasa una cadena de su hook a la ventana de contexto de Claude. Claude Code envuelve la cadena en un recordatorio del sistema e la inserta en la conversación en el punto donde se activó el hook. Claude lee el recordatorio en la siguiente solicitud del modelo, pero no aparece como un mensaje de chat en la interfaz.748El campo `additionalContext` pasa una cadena de su hook a la ventana de contexto de Claude. Claude Code envuelve la cadena en un recordatorio del sistema e la inserta en la conversación en el punto donde se activó el hook. Claude lee el recordatorio en la siguiente solicitud del modelo, pero no aparece como un mensaje de chat en la interfaz.


989 1026 

990Se ejecuta cuando el usuario envía un prompt, antes de que Claude lo procese. Esto le permite agregar contexto adicional basado en el prompt/conversación, validar prompts o bloquear ciertos tipos de prompts.1027Se ejecuta cuando el usuario envía un prompt, antes de que Claude lo procese. Esto le permite agregar contexto adicional basado en el prompt/conversación, validar prompts o bloquear ciertos tipos de prompts.

991 1028 

1029Los hooks `UserPromptSubmit` tienen un tiempo de espera predeterminado de 30 segundos para tipos `command`, `http` y `mcp_tool`, más corto que el predeterminado de 600 segundos para esos tipos en otros eventos. Debido a que este hook se ejecuta antes de cada prompt y bloquea el procesamiento del modelo hasta que se completa, un hook atascado detiene la sesión. Si su hook necesita más tiempo, establezca el campo `timeout` en la entrada del hook.

1030 

992#### Entrada de UserPromptSubmit1031#### Entrada de UserPromptSubmit

993 1032 

994Además de los [campos de entrada comunes](#common-input-fields), los hooks UserPromptSubmit reciben el campo `prompt` que contiene el texto que el usuario envió.1033Además de los [campos de entrada comunes](#common-input-fields), los hooks UserPromptSubmit reciben el campo `prompt` que contiene el texto que el usuario envió.


2598 2637 

2599Cuando se activa un hook asincrónico, Claude Code inicia el proceso del hook e inmediatamente continúa sin esperar a que finalice. El hook recibe la misma entrada JSON a través de stdin que un hook sincrónico.2638Cuando se activa un hook asincrónico, Claude Code inicia el proceso del hook e inmediatamente continúa sin esperar a que finalice. El hook recibe la misma entrada JSON a través de stdin que un hook sincrónico.

2600 2639 

2601Después de que el proceso de fondo sale, si el hook produjo una respuesta JSON con un campo `systemMessage` o `additionalContext`, ese contenido se entrega a Claude como contexto en el siguiente turno de conversación.2640Después de que el proceso de fondo sale, si el hook produjo una respuesta JSON con un campo `additionalContext`, ese contenido se entrega a Claude como contexto en el siguiente turno de conversación. Un campo `systemMessage` se muestra a usted, no a Claude.

2602 2641 

2603Las notificaciones de finalización de hooks asincronos se suprimen por defecto. Para verlas, habilite el modo detallado con `Ctrl+O` o inicie Claude Code con `--verbose`.2642Las notificaciones de finalización de hooks asincronos se suprimen por defecto. Para verlas, habilite el modo detallado con `Ctrl+O` o inicie Claude Code con `--verbose`.

2604 2643 


2619 exit 02658 exit 0

2620fi2659fi

2621 2660 

2622# Ejecute pruebas e informe resultados a través de systemMessage2661# Ejecute pruebas e informe resultados a Claude a través de additionalContext

2623RESULT=$(npm test 2>&1)2662RESULT=$(npm test 2>&1)

2624EXIT_CODE=$?2663EXIT_CODE=$?

2625 2664 

2626if [ $EXIT_CODE -eq 0 ]; then2665if [ $EXIT_CODE -eq 0 ]; then

2627 echo "{\"systemMessage\": \"Tests passed after editing $FILE_PATH\"}"2666 MSG="Tests passed after editing $FILE_PATH"

2628else2667else

2629 echo "{\"systemMessage\": \"Tests failed after editing $FILE_PATH: $RESULT\"}"2668 MSG="Tests failed after editing $FILE_PATH: $RESULT"

2630fi2669fi

2670jq -nc --arg msg "$MSG" '{hookSpecificOutput: {hookEventName: "PostToolUse", additionalContext: $msg}}'

2631```2671```

2632 2672 

2633Luego agregue esta configuración a `.claude/settings.json` en la raíz de su proyecto. La bandera `async: true` permite que Claude continúe trabajando mientras se ejecutan las pruebas:2673Luego agregue esta configuración a `.claude/settings.json` en la raíz de su proyecto. La bandera `async: true` permite que Claude continúe trabajando mientras se ejecutan las pruebas:

hooks-guide.md +4 −1

Details

865### Limitaciones865### Limitaciones

866 866 

867* Los hooks de comando se comunican solo a través de stdout, stderr y códigos de salida. No pueden activar comandos `/` o llamadas a herramientas. El texto devuelto a través de `additionalContext` se inyecta como un recordatorio del sistema que Claude lee como texto plano. Los HTTP hooks se comunican a través del cuerpo de respuesta en su lugar.867* Los hooks de comando se comunican solo a través de stdout, stderr y códigos de salida. No pueden activar comandos `/` o llamadas a herramientas. El texto devuelto a través de `additionalContext` se inyecta como un recordatorio del sistema que Claude lee como texto plano. Los HTTP hooks se comunican a través del cuerpo de respuesta en su lugar.

868* El tiempo de espera del hook es 10 minutos por defecto, configurable por hook con el campo `timeout` (en segundos).868* Los tiempos de espera del hook varían según el tipo. Anule por hook con el campo `timeout` en segundos.

869 * `command`, `http`, `mcp_tool`: 10 minutos. `UserPromptSubmit` reduce estos a 30 segundos.

870 * `prompt`: 30 segundos.

871 * `agent`: 60 segundos.

869* Los hooks `PostToolUse` no pueden deshacer acciones ya que la herramienta ya se ha ejecutado.872* Los hooks `PostToolUse` no pueden deshacer acciones ya que la herramienta ya se ha ejecutado.

870* Los hooks `PermissionRequest` no se activan en [modo no interactivo](/es/headless) (`-p`). Usa hooks `PreToolUse` para decisiones de permiso automatizadas.873* Los hooks `PermissionRequest` no se activan en [modo no interactivo](/es/headless) (`-p`). Usa hooks `PreToolUse` para decisiones de permiso automatizadas.

871* Los hooks `Stop` se activan cada vez que Claude termina de responder, no solo en la finalización de tareas. No se activan en interrupciones del usuario. Los errores de API activan [StopFailure](/es/hooks#stopfailure) en su lugar.874* Los hooks `Stop` se activan cada vez que Claude termina de responder, no solo en la finalización de tareas. No se activan en interrupciones del usuario. Los errores de API activan [StopFailure](/es/hooks#stopfailure) en su lugar.

mcp.md +1 −1

Details

458 458 

459Muchos servidores MCP basados en la nube requieren autenticación. Claude Code admite OAuth 2.0 para conexiones seguras.459Muchos servidores MCP basados en la nube requieren autenticación. Claude Code admite OAuth 2.0 para conexiones seguras.

460 460 

461Claude Code marca un servidor remoto como que requiere autenticación cuando el servidor responde con `401 Unauthorized` y un encabezado `WWW-Authenticate` que apunta a su servidor de autorización. Cualquier servidor personalizado que devuelva esa respuesta obtiene el mismo flujo de autenticación `/mcp` que cualquier otro servidor remoto.461Claude Code marca un servidor remoto como que requiere autenticación cuando el servidor responde con `401 Unauthorized` o `403 Forbidden`. Cualquiera de estos códigos de estado marca el servidor en `/mcp` para que pueda completar el flujo de OAuth. Un servidor personalizado que devuelve un encabezado `WWW-Authenticate` que apunta a su servidor de autorización obtiene el mismo descubrimiento automático que cualquier otro servidor remoto.

462 462 

463<Steps>463<Steps>

464 <Step title="Agregar el servidor que requiere autenticación">464 <Step title="Agregar el servidor que requiere autenticación">

Details

51 Banderas disponibles:51 Banderas disponibles:

52 52 

53 | Bandera | Descripción |53 | Bandera | Descripción |

54 | ----------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |54 | ----------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

55 | `--name "My Project"` | Establezca un título de sesión personalizado visible en la lista de sesiones en claude.ai/code. |55 | `--name "My Project"` | Establezca un título de sesión personalizado visible en la lista de sesiones en claude.ai/code. |

56 | `--remote-control-session-name-prefix <prefix>` | Prefijo para nombres de sesión generados automáticamente cuando no se establece un nombre explícito. El valor predeterminado es el nombre de host de su máquina, produciendo nombres como `myhost-graceful-unicorn`. Establezca `CLAUDE_REMOTE_CONTROL_SESSION_NAME_PREFIX` para el mismo efecto. |56 | `--remote-control-session-name-prefix <prefix>` | Prefijo para nombres de sesión generados automáticamente cuando no se establece un nombre explícito. El valor predeterminado es el nombre de host de su máquina, produciendo nombres como `myhost-graceful-unicorn`. Establezca `CLAUDE_REMOTE_CONTROL_SESSION_NAME_PREFIX` para el mismo efecto. |

57 | `--spawn <mode>` | Cómo el servidor crea sesiones.<br />• `same-dir` (predeterminado): todas las sesiones comparten el directorio de trabajo actual, por lo que pueden entrar en conflicto si editan los mismos archivos.<br />• `worktree`: cada sesión bajo demanda obtiene su propio [git worktree](/es/common-workflows#run-parallel-claude-code-sessions-with-git-worktrees). Requiere un repositorio git.<br />• `session`: modo de sesión única. Sirve exactamente una sesión y rechaza conexiones adicionales. Se establece solo al inicio.<br />Presione `w` en tiempo de ejecución para alternar entre `same-dir` y `worktree`. |57 | `--spawn <mode>` | Cómo el servidor crea sesiones.<br />• `same-dir` (predeterminado): todas las sesiones comparten el directorio de trabajo actual, por lo que pueden entrar en conflicto si editan los mismos archivos.<br />• `worktree`: cada sesión bajo demanda obtiene su propio [git worktree](/es/worktrees). Requiere un repositorio git.<br />• `session`: modo de sesión única. Sirve exactamente una sesión y rechaza conexiones adicionales. Se establece solo al inicio.<br />Presione `w` en tiempo de ejecución para alternar entre `same-dir` y `worktree`. |

58 | `--capacity <N>` | Número máximo de sesiones concurrentes. El valor predeterminado es 32. No se puede usar con `--spawn=session`. |58 | `--capacity <N>` | Número máximo de sesiones concurrentes. El valor predeterminado es 32. No se puede usar con `--spawn=session`. |

59 | `--verbose` | Mostrar registros detallados de conexión y sesión. |59 | `--verbose` | Mostrar registros detallados de conexión y sesión. |

60 | `--sandbox` / `--no-sandbox` | Habilitar o deshabilitar [sandboxing](/es/sandboxing) para aislamiento del sistema de archivos y red. Deshabilitado de forma predeterminada. |60 | `--sandbox` / `--no-sandbox` | Habilitar o deshabilitar [sandboxing](/es/sandboxing) para aislamiento del sistema de archivos y red. Deshabilitado de forma predeterminada. |


113 113 

114* **Abra la URL de la sesión** en cualquier navegador para ir directamente a la sesión en [claude.ai/code](https://claude.ai/code).114* **Abra la URL de la sesión** en cualquier navegador para ir directamente a la sesión en [claude.ai/code](https://claude.ai/code).

115* **Escanee el código QR** que se muestra junto a la URL de la sesión para abrirlo directamente en la aplicación Claude. Con `claude remote-control`, presione la barra espaciadora para alternar la visualización del código QR.115* **Escanee el código QR** que se muestra junto a la URL de la sesión para abrirlo directamente en la aplicación Claude. Con `claude remote-control`, presione la barra espaciadora para alternar la visualización del código QR.

116* **Abra [claude.ai/code](https://claude.ai/code) o la aplicación Claude** y encuentre la sesión por nombre en la lista de sesiones. Las sesiones de Remote Control muestran un icono de computadora con un punto de estado verde cuando están en línea.116* **Abra [claude.ai/code](https://claude.ai/code) o la aplicación Claude** y encuentre la sesión por nombre en la lista de sesiones. En la aplicación móvil Claude, toque **Code** en la navegación para llegar a la lista de sesiones. Las sesiones de Remote Control muestran un icono de computadora con un punto de estado verde cuando están en línea.

117 117 

118El título de la sesión remota se elige en este orden:118El título de la sesión remota se elige en este orden:

119 119 


130 130 

131### Habilite Remote Control para todas las sesiones131### Habilite Remote Control para todas las sesiones

132 132 

133De forma predeterminada, Remote Control solo se activa cuando ejecuta explícitamente `claude remote-control`, `claude --remote-control`, o `/remote-control`. Para habilitarlo automáticamente para cada sesión interactiva, ejecute `/config` dentro de Claude Code y establezca **Enable Remote Control for all sessions** en `true`. Establézcalo de nuevo en `false` para deshabilitar.133De forma predeterminada, Remote Control solo se activa cuando ejecuta explícitamente `claude remote-control`, `claude --remote-control`, o `/remote-control`. Para habilitarlo automáticamente para cada sesión interactiva, ejecute `/config` dentro de Claude Code y establezca **Enable Remote Control for all sessions** en `true`. Establézcalo de nuevo en `false` para deshabilitar. En la aplicación de escritorio, también puede alternar esto desde **Settings → Claude Code → Enable remote control by default**.

134 134 

135Con esta configuración activada, cada proceso interactivo de Claude Code registra una sesión remota. Si ejecuta varias instancias, cada una obtiene su propio entorno y sesión. Para ejecutar varias sesiones concurrentes desde un único proceso, use el [modo servidor](#start-a-remote-control-session) en su lugar.135Con esta configuración activada, cada proceso interactivo de Claude Code registra una sesión remota. Si ejecuta varias instancias, cada una obtiene su propio entorno y sesión. Para ejecutar varias sesiones concurrentes desde un único proceso, use el [modo servidor](#start-a-remote-control-session) en su lugar.

136 136 


215 215 

216### "Remote Control is disabled by your organization's policy"216### "Remote Control is disabled by your organization's policy"

217 217 

218Este error tiene tres causas distintas. Ejecute `/status` primero para ver qué método de inicio de sesión y suscripción está usando.218Este error tiene cuatro causas distintas. Ejecute `/status` primero para ver qué método de inicio de sesión y suscripción está usando.

219 219 

220* **Está autenticado con una clave API o cuenta de Console**: Remote Control requiere OAuth de claude.ai. Ejecute `/login` y elija la opción de claude.ai. Si `ANTHROPIC_API_KEY` está configurado en su entorno, desactívelo.220* **Está autenticado con una clave API o cuenta de Console**: Remote Control requiere OAuth de claude.ai. Ejecute `/login` y elija la opción de claude.ai. Si `ANTHROPIC_API_KEY` está configurado en su entorno, desactívelo.

221* **Su administrador de Team o Enterprise no lo ha habilitado**: Remote Control está deshabilitado de forma predeterminada en estos planes. Un administrador puede habilitarlo en [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code) activando el botón de alternancia **Remote Control**. Esta es una configuración de organización del lado del servidor, no una clave de [configuración administrada](/es/permissions#managed-only-settings).221* **Su administrador de Team o Enterprise no lo ha habilitado**: Remote Control está deshabilitado de forma predeterminada en estos planes. Un administrador puede habilitarlo en [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code) activando el botón de alternancia **Remote Control**. Este botón de alternancia es una configuración de organización del lado del servidor.

222* **El botón de alternancia del administrador está atenuado**: su organización tiene una configuración de retención de datos o cumplimiento que es incompatible con Remote Control. Esto no se puede cambiar desde el panel de administración. Póngase en contacto con el soporte de Anthropic para discutir opciones.222* **El botón de alternancia del administrador está atenuado**: su organización tiene una configuración de retención de datos o cumplimiento que es incompatible con Remote Control. Esto no se puede cambiar desde el panel de administración. Póngase en contacto con el soporte de Anthropic para discutir opciones.

223* **El error menciona `disableRemoteControl`**: su administrador de TI ha deshabilitado Remote Control en este dispositivo a través de [configuración administrada](/es/settings#settings-files), independientemente del botón de alternancia de toda la organización.

223 224 

224### "Remote credentials fetch failed"225### "Remote credentials fetch failed"

225 226 

sub-agents.md +7 −5

Details

158 158 

159Esta es la forma recomendada de crear y administrar subagentes. Para creación manual o automatización, también puede agregar archivos de subagentes directamente.159Esta es la forma recomendada de crear y administrar subagentes. Para creación manual o automatización, también puede agregar archivos de subagentes directamente.

160 160 

161Para enumerar todos los subagentes configurados desde la línea de comandos sin abrir [agent view](/es/agent-view), canalice la salida de `claude agents`. Por ejemplo, `claude agents | cat` imprime agentes agrupados por fuente e indica cuáles se anulan por definiciones de mayor prioridad.

162 

163### Elegir el alcance del subagente161### Elegir el alcance del subagente

164 162 

165Los subagentes son archivos Markdown con frontmatter YAML. Guárdelos en diferentes ubicaciones según el alcance. Cuando múltiples subagentes comparten el mismo nombre, la ubicación de mayor prioridad gana.163Los subagentes son archivos Markdown con frontmatter YAML. Guárdelos en diferentes ubicaciones según el alcance. Cuando múltiples subagentes comparten el mismo nombre, la ubicación de mayor prioridad gana.


174 172 

175**Los subagentes de proyecto** (`.claude/agents/`) son ideales para subagentes específicos de una base de código. Verifíquelos en control de versiones para que su equipo pueda usarlos y mejorarlos colaborativamente.173**Los subagentes de proyecto** (`.claude/agents/`) son ideales para subagentes específicos de una base de código. Verifíquelos en control de versiones para que su equipo pueda usarlos y mejorarlos colaborativamente.

176 174 

177Los subagentes se descubren caminando hacia arriba desde el directorio de trabajo actual. Los directorios agregados con `--add-dir` [otorgan acceso a archivos solamente](/es/permissions#additional-directories-grant-file-access-not-configuration) y no se escanean para subagentes. Para compartir subagentes entre proyectos, use `~/.claude/agents/` o un [plugin](/es/plugins).175Los subagentes de proyecto se descubren caminando hacia arriba desde el directorio de trabajo actual. Los directorios agregados con `--add-dir` [otorgan acceso a archivos solamente](/es/permissions#additional-directories-grant-file-access-not-configuration) y no se escanean para subagentes. Para compartir subagentes entre proyectos, use `~/.claude/agents/` o un [plugin](/es/plugins).

178 176 

179**Los subagentes de usuario** (`~/.claude/agents/`) son subagentes personales disponibles en todos sus proyectos.177**Los subagentes de usuario** (`~/.claude/agents/`) son subagentes personales disponibles en todos sus proyectos.

180 178 

179Claude Code escanea `.claude/agents/` y `~/.claude/agents/` recursivamente, por lo que puede organizar definiciones en subcarpetas como `agents/review/` o `agents/research/`. La ruta del subdirectorio no afecta cómo se identifica o invoca un subagente, porque la identidad proviene solo del campo `name` del frontmatter. Mantenga los valores de `name` únicos en todo el árbol: si dos archivos dentro de un alcance declaran el mismo nombre, Claude Code mantiene uno y descarta el otro sin advertencia.

180 

181Los directorios `agents/` de plugins también se escanean recursivamente. A diferencia de los alcances de proyecto y usuario, una subcarpeta dentro del directorio `agents/` de un plugin se convierte en parte del [identificador con alcance](#invoke-subagents-explicitly): un archivo en `agents/review/security.md` en el plugin `my-plugin` se registra como `my-plugin:review:security`.

182 

181**Los subagentes definidos por CLI** se pasan como JSON al lanzar Claude Code. Existen solo para esa sesión y no se guardan en disco, lo que los hace útiles para pruebas rápidas o scripts de automatización. Puede definir múltiples subagentes en una única llamada `--agents`:183**Los subagentes definidos por CLI** se pasan como JSON al lanzar Claude Code. Existen solo para esa sesión y no se guardan en disco, lo que los hace útiles para pruebas rápidas o scripts de automatización. Puede definir múltiples subagentes en una única llamada `--agents`:

182 184 

183<Tabs>185<Tabs>


638 640 

639Su mensaje completo aún va a Claude, que escribe el mensaje de tarea del subagente basado en lo que pidió. El @-mention controla qué subagente Claude invoca, no qué mensaje recibe.641Su mensaje completo aún va a Claude, que escribe el mensaje de tarea del subagente basado en lo que pidió. El @-mention controla qué subagente Claude invoca, no qué mensaje recibe.

640 642 

641Los subagentes proporcionados por un [plugin](/es/plugins) habilitado aparecen en el typeahead como `<plugin-name>:<agent-name>`. Los subagentes de fondo nombrados actualmente en ejecución en la sesión también aparecen en el typeahead, mostrando su estado junto al nombre. También puede escribir la mención manualmente sin usar el selector: `@agent-<name>` para subagentes locales, o `@agent-<plugin-name>:<agent-name>` para subagentes de plugin.643Los subagentes proporcionados por un [plugin](/es/plugins) habilitado aparecen en el typeahead bajo su nombre con alcance, como `my-plugin:code-reviewer` o `my-plugin:review:security` cuando el plugin [organiza agentes en subcarpetas](#choose-the-subagent-scope). Los subagentes de fondo nombrados actualmente en ejecución en la sesión también aparecen en el typeahead, mostrando su estado junto al nombre. También puede escribir la mención manualmente sin usar el selector: `@agent-<name>` para subagentes locales, o `@agent-` seguido del nombre con alcance para subagentes de plugin, por ejemplo `@agent-my-plugin:code-reviewer`.

642 644 

643**Ejecute toda la sesión como un subagente.** Pase [`--agent <name>`](/es/cli-reference) para iniciar una sesión donde el hilo principal en sí toma el mensaje del sistema del subagente, restricciones de herramientas y modelo:645**Ejecute toda la sesión como un subagente.** Pase [`--agent <name>`](/es/cli-reference) para iniciar una sesión donde el hilo principal en sí toma el mensaje del sistema del subagente, restricciones de herramientas y modelo:

644 646 


650 652 

651Esto funciona con subagentes integrados y personalizados, y la opción persiste cuando reanuda la sesión.653Esto funciona con subagentes integrados y personalizados, y la opción persiste cuando reanuda la sesión.

652 654 

653Para un subagente proporcionado por plugin, pase el nombre con alcance: `claude --agent <plugin-name>:<agent-name>`.655Para un subagente proporcionado por plugin, pase el nombre con alcance: `claude --agent <plugin-name>:<agent-name>`. Si el plugin coloca el agente en una subcarpeta de su directorio `agents/`, incluya la subcarpeta en el nombre con alcance, por ejemplo `claude --agent my-plugin:review:security`.

654 656 

655Para hacerlo el predeterminado para cada sesión en un proyecto, establezca `agent` en `.claude/settings.json`:657Para hacerlo el predeterminado para cada sesión en un proyecto, establezca `agent` en `.claude/settings.json`:

656 658 

Details

16 16 

17El dictado de voz transmite su audio grabado a los servidores de Anthropic para su transcripción. El audio no se procesa localmente. El servicio de voz a texto solo está disponible cuando se autentica con una cuenta de Claude.ai, y no está disponible cuando Claude Code está configurado para usar una clave de API de Anthropic directamente, Amazon Bedrock, Google Vertex AI o Microsoft Foundry. La transcripción no consume mensajes de Claude ni tokens y no cuenta hacia los límites mostrados en `/usage`. Consulte [uso de datos](/es/data-usage) para ver cómo Anthropic maneja sus datos.17El dictado de voz transmite su audio grabado a los servidores de Anthropic para su transcripción. El audio no se procesa localmente. El servicio de voz a texto solo está disponible cuando se autentica con una cuenta de Claude.ai, y no está disponible cuando Claude Code está configurado para usar una clave de API de Anthropic directamente, Amazon Bedrock, Google Vertex AI o Microsoft Foundry. La transcripción no consume mensajes de Claude ni tokens y no cuenta hacia los límites mostrados en `/usage`. Consulte [uso de datos](/es/data-usage) para ver cómo Anthropic maneja sus datos.

18 18 

19El dictado de voz también necesita acceso local al micrófono, por lo que no funciona en entornos remotos como [Claude Code en la web](/es/claude-code-on-the-web) o sesiones SSH. En WSL, el dictado de voz requiere WSLg para acceso de audio, que se incluye con WSL2 en Windows 11. En Windows 10 o WSL1, ejecute Claude Code en Windows nativo en su lugar.19El dictado de voz también necesita acceso local al micrófono, por lo que no funciona en entornos remotos como [Claude Code en la web](/es/claude-code-on-the-web) o sesiones SSH. En WSL, el dictado de voz requiere WSLg para acceso de audio. WSLg se incluye con WSL2 cuando se instala desde Microsoft Store en Windows 10 u 11. Si WSLg no está disponible, por ejemplo en WSL1, ejecute Claude Code en Windows nativo en su lugar.

20 20 

21La grabación de audio utiliza un módulo nativo integrado en macOS, Linux y Windows. En Linux, si el módulo nativo no puede cargarse, Claude Code vuelve a `arecord` de ALSA utils o `rec` de SoX. Si ninguno está disponible, `/voice` imprime un comando de instalación para su gestor de paquetes.21La grabación de audio utiliza un módulo nativo integrado en macOS, Linux y Windows. En Linux, si el módulo nativo no puede cargarse, Claude Code vuelve a `arecord` de ALSA utils o `rec` de SoX. Si ninguno está disponible, `/voice` imprime un comando de instalación para su gestor de paquetes.

22 22 


51}51}

52```52```

53 53 

54Mientras el dictado de voz está habilitado, el pie de página de entrada muestra una sugerencia `hold Space to speak` cuando la indicación está vacía. El texto de la sugerencia es el mismo en ambos modos, y no aparece si tiene una [línea de estado personalizada](/es/statusline) configurada.54Mientras el dictado de voz está habilitado, el pie de página de entrada muestra una sugerencia `hold Space to speak` cuando la indicación está vacía. La sugerencia refleja su enlace actual `voice:pushToTalk` y se actualiza si [revincula la tecla de dictado](#rebind-the-dictation-key). El texto de la sugerencia es el mismo en ambos modos, y no aparece si tiene una [línea de estado personalizada](/es/statusline) configurada.

55 55 

56La transcripción se ajusta para vocabulario de codificación en ambos modos. Los términos de desarrollo comunes como `regex`, `OAuth`, `JSON` y `localhost` se reconocen correctamente, y el nombre del proyecto actual y el nombre de la rama de git se agregan automáticamente como sugerencias de reconocimiento.56La transcripción se ajusta para vocabulario de codificación en ambos modos. Los términos de desarrollo comunes como `regex`, `OAuth`, `JSON` y `localhost` se reconocen correctamente, y el nombre del proyecto actual y el nombre de la rama de git se agregan automáticamente como sugerencias de reconocimiento.

57 57 


155* **`Voice mode requires a Claude.ai account`**: está autenticado con una clave de API o un proveedor de terceros. Ejecute `/login` para iniciar sesión con una cuenta de Claude.ai.155* **`Voice mode requires a Claude.ai account`**: está autenticado con una clave de API o un proveedor de terceros. Ejecute `/login` para iniciar sesión con una cuenta de Claude.ai.

156* **`Microphone access is denied`**: otorgue permiso de micrófono a su terminal en la configuración del sistema. En macOS, vaya a Configuración del Sistema → Privacidad y Seguridad → Micrófono y habilite su aplicación de terminal, luego ejecute `/voice` nuevamente. En Windows, vaya a Configuración → Privacidad y seguridad → Micrófono y active el acceso al micrófono para aplicaciones de escritorio, luego ejecute `/voice` nuevamente. Si su terminal no aparece en la configuración de macOS, consulte [Terminal no aparece en la configuración de micrófono de macOS](#terminal-not-listed-in-macos-microphone-settings).156* **`Microphone access is denied`**: otorgue permiso de micrófono a su terminal en la configuración del sistema. En macOS, vaya a Configuración del Sistema → Privacidad y Seguridad → Micrófono y habilite su aplicación de terminal, luego ejecute `/voice` nuevamente. En Windows, vaya a Configuración → Privacidad y seguridad → Micrófono y active el acceso al micrófono para aplicaciones de escritorio, luego ejecute `/voice` nuevamente. Si su terminal no aparece en la configuración de macOS, consulte [Terminal no aparece en la configuración de micrófono de macOS](#terminal-not-listed-in-macos-microphone-settings).

157* **`No audio recording tool found` en Linux**: el módulo de audio nativo no pudo cargarse y no hay alternativa instalada. Instale SoX con el comando que se muestra en el mensaje de error, por ejemplo `sudo apt-get install sox`.157* **`No audio recording tool found` en Linux**: el módulo de audio nativo no pudo cargarse y no hay alternativa instalada. Instale SoX con el comando que se muestra en el mensaje de error, por ejemplo `sudo apt-get install sox`.

158* **`Voice mode could not find a working audio recorder in WSL`**: WSLg enruta el audio a través de PulseAudio en lugar de un dispositivo ALSA, por lo que SoX necesita que su backend de PulseAudio esté instalado explícitamente. Ejecute `sudo apt install sox libsox-fmt-pulse`. Instalar `sox` solo extrae el backend de ALSA, que no puede grabar en WSL porque no hay un dispositivo `/dev/snd`.

159* **`Voice input is failing repeatedly and has been paused`**: el dictado de voz encontró varios fallos de inicio seguidos y dejó de intentar nuevas sesiones hasta que una tenga éxito. Esto generalmente significa que el micrófono o la pila de audio en este host no puede capturar audio, por ejemplo un servidor sin interfaz gráfica, un shell remoto sin paso de audio, o un permiso de micrófono denegado. Confirme un dispositivo de entrada que funcione, corrija la causa subyacente de las entradas anteriores, luego active la voz nuevamente.

158* **Nada sucede al mantener presionada la `Barra espaciadora` en modo de mantener**: observe la entrada de indicación mientras mantiene presionada. Si los espacios siguen acumulándose, el dictado de voz probablemente esté desactivado; ejecute `/voice hold` para habilitarlo. Si solo aparecen uno o dos espacios y luego nada, el dictado de voz está activado pero la detección de mantener no se activa. La detección de mantener requiere que su terminal envíe eventos de repetición de teclas, por lo que no puede detectar una tecla mantenida si la repetición de teclas está deshabilitada a nivel del sistema operativo. Cambie al modo de toque con `/voice tap` para evitar el requisito de repetición de teclas.160* **Nada sucede al mantener presionada la `Barra espaciadora` en modo de mantener**: observe la entrada de indicación mientras mantiene presionada. Si los espacios siguen acumulándose, el dictado de voz probablemente esté desactivado; ejecute `/voice hold` para habilitarlo. Si solo aparecen uno o dos espacios y luego nada, el dictado de voz está activado pero la detección de mantener no se activa. La detección de mantener requiere que su terminal envíe eventos de repetición de teclas, por lo que no puede detectar una tecla mantenida si la repetición de teclas está deshabilitada a nivel del sistema operativo. Cambie al modo de toque con `/voice tap` para evitar el requisito de repetición de teclas.

159* **Tocar la `Barra espaciadora` escribe un espacio en lugar de grabar en modo de toque**: el primer toque solo comienza a grabar cuando la entrada de indicación está vacía. Borre la entrada primero, o verifique que esté en modo de toque ejecutando `/voice tap`.161* **Tocar la `Barra espaciadora` escribe un espacio en lugar de grabar en modo de toque**: el primer toque solo comienza a grabar cuando la entrada de indicación está vacía. Borre la entrada primero, o verifique que esté en modo de toque ejecutando `/voice tap`.

160* **`No audio detected from microphone`**: la grabación comenzó pero capturó silencio. Confirme que el dispositivo de entrada correcto está configurado como predeterminado del sistema y que su nivel de entrada no está silenciado ni cerca de cero. En Windows, abra Configuración → Sistema → Sonido → Entrada y seleccione su micrófono. En macOS, abra Configuración del Sistema → Sonido → Entrada.162* **`No audio detected from microphone`**: la grabación comenzó pero capturó silencio. Confirme que el dispositivo de entrada correcto está configurado como predeterminado del sistema y que su nivel de entrada no está silenciado ni cerca de cero. En Windows, abra Configuración → Sistema → Sonido → Entrada y seleccione su micrófono. En macOS, abra Configuración del Sistema → Sonido → Entrada.