6 6
7> Controle cómo su agente utiliza herramientas con modos de permiso, hooks y reglas declarativas de permitir/denegar.7> Controle cómo su agente utiliza herramientas con modos de permiso, hooks y reglas declarativas de permitir/denegar.
8 8
9El SDK del Agente Claude proporciona controles de permisos para gestionar cómo Claude utiliza herramientas. Utilice modos de permiso y reglas para definir qué está permitido automáticamente, y la devolución de llamada [`canUseTool`](/docs/es/agent-sdk/user-input) para manejar todo lo demás en tiempo de ejecución.9El SDK del Agente Claude proporciona controles de permisos para gestionar cómo Claude utiliza herramientas. Utilice modos de permiso y reglas para definir qué está permitido automáticamente, y la devolución de llamada [`canUseTool`](https://code.claude.com/docs/es/agent-sdk/user-input) para manejar todo lo demás en tiempo de ejecución.
10 10
11## Cómo se evalúan los permisos11## Cómo se evalúan los permisos
12 12
14 14
15**1. Hooks**15**1. Hooks**
16 16
17Ejecutar [hooks](/docs/es/agent-sdk/hooks.md) primero. Un hook puede denegar la llamada directamente o dejarla pasar. Un hook que devuelve `allow` no omite las reglas de denegación y pregunta a continuación; esas se evalúan independientemente del resultado del hook.17Ejecutar [hooks](https://code.claude.com/docs/es/agent-sdk/hooks.md) primero. Un hook puede denegar la llamada directamente o dejarla pasar. Un hook que devuelve `allow` no omite las reglas de denegación y pregunta a continuación; esas se evalúan independientemente del resultado del hook.
18 18
19Un hook `PreToolUse` que devuelve `allow` tampoco puede aprobar un comando `rm` o `rmdir` cuyo destino Claude Code reconoce como una [ruta crítica](/docs/es/permission-modes.md#critical-paths), como `rm -rf ~`. Para saber qué hace ese `allow` en modo plan, consulta [Aprobaciones de hooks en modo plan](/docs/es/permissions.md#hook-approvals-in-plan-mode).19Un hook `PreToolUse` que devuelve `allow` tampoco puede aprobar un comando `rm` o `rmdir` cuyo destino Claude Code reconoce como una [ruta crítica](https://code.claude.com/docs/es/permission-modes.md#critical-paths), como `rm -rf ~`. Para saber qué hace ese `allow` en modo plan, consulta [Aprobaciones de hooks en modo plan](https://code.claude.com/docs/es/permissions.md#hook-approvals-in-plan-mode).
20 20
21**2. Reglas de denegación**21**2. Reglas de denegación**
22 22
23Comprobar reglas `deny` (de `disallowed_tools` y [settings.json](/docs/es/settings-reference.md#permission-settings)). Si una regla de denegación coincide, la herramienta se bloquea, incluso en modo `bypassPermissions`. Las reglas de denegación de nombre simple como `Bash` eliminan la herramienta del contexto de Claude antes de que comience esta evaluación, por lo que solo se comprueban las reglas con alcance como `Bash(rm *)` en este paso.23Comprobar reglas `deny` (de `disallowed_tools` y [settings.json](https://code.claude.com/docs/es/settings-reference.md#permission-settings)). Si una regla de denegación coincide, la herramienta se bloquea, incluso en modo `bypassPermissions`. Las reglas de denegación de nombre simple como `Bash` eliminan la herramienta del contexto de Claude antes de que comience esta evaluación, por lo que solo se comprueban las reglas con alcance como `Bash(rm *)` en este paso.
24 24
25**3. Reglas de pregunta**25**3. Reglas de pregunta**
26 26
27Comprobar reglas `ask` de [settings.json](/docs/es/settings-reference.md#permission-settings). Si una regla de pregunta coincide, la llamada se pasa a tu devolución de llamada [`canUseTool`](/docs/es/agent-sdk/user-input) para confirmación, incluso en modo `bypassPermissions`.27Comprobar reglas `ask` de [settings.json](https://code.claude.com/docs/es/settings-reference.md#permission-settings). Si una regla de pregunta coincide, la llamada se pasa a tu devolución de llamada [`canUseTool`](https://code.claude.com/docs/es/agent-sdk/user-input) para confirmación, incluso en modo `bypassPermissions`.
28 28
29Las herramientas que requieren interacción del usuario se comportan de la misma manera: `AskUserQuestion` y herramientas MCP cuyo servidor establece [`_meta["anthropic/requiresUserInteraction"]`](/docs/es/mcp#require-approval-for-a-specific-tool) siempre se pasan a la devolución de llamada, incluso cuando una regla de permiso coincide. En modo `dontAsk` ambos casos se deniegan en su lugar, porque ese modo nunca solicita. La anotación MCP requiere Claude Code v2.1.199 o posterior.29Las herramientas que requieren interacción del usuario se comportan de la misma manera: `AskUserQuestion` y herramientas MCP cuyo servidor establece [`_meta["anthropic/requiresUserInteraction"]`](https://code.claude.com/docs/es/mcp#require-approval-for-a-specific-tool) siempre se pasan a la devolución de llamada, incluso cuando una regla de permiso coincide. En modo `dontAsk` ambos casos se deniegan en su lugar, porque ese modo nunca solicita. La anotación MCP requiere Claude Code v2.1.199 o posterior.
30 30
31Las herramientas del conector [claude.ai](/docs/es/mcp.md#organization-controls-on-connector-tools) que su organización ha establecido en `ask` también salen del flujo en este paso. Cada llamada se pasa a la devolución de llamada, incluso en modo `bypassPermissions` y incluso cuando una regla de permiso coincide. La devolución de llamada recibe la razón `Your organization requires approval for this tool`. En modo `dontAsk` la llamada se deniega en su lugar, porque ese modo nunca solicita.31Las herramientas del conector [claude.ai](https://code.claude.com/docs/es/mcp.md#organization-controls-on-connector-tools) que su organización ha establecido en `ask` también salen del flujo en este paso. Cada llamada se pasa a la devolución de llamada, incluso en modo `bypassPermissions` y incluso cuando una regla de permiso coincide. La devolución de llamada recibe la razón `Your organization requires approval for this tool`. En modo `dontAsk` la llamada se deniega en su lugar, porque ese modo nunca solicita.
32 32
33**4. Modo de permiso**33**4. Modo de permiso**
34 34
35Aplicar el [modo de permiso](#permission-modes) activo:35Aplicar el [modo de permiso](#permission-modes) activo:
36 36
37* En modo `bypassPermissions`, Claude Code aprueba todo lo que llega a este paso excepto las [eliminaciones de rutas críticas](/docs/es/permission-modes.md#critical-paths) reconocidas, que se pasan en su lugar.37* En modo `bypassPermissions`, Claude Code aprueba todo lo que llega a este paso excepto las [eliminaciones de rutas críticas](https://code.claude.com/docs/es/permission-modes.md#critical-paths) reconocidas, que se pasan en su lugar.
38* En modo `acceptEdits`, Claude Code aprueba las operaciones de archivo enumeradas en [Modo de aceptación de ediciones](#accept-edits-mode-acceptedits).38* En modo `acceptEdits`, Claude Code aprueba las operaciones de archivo enumeradas en [Modo de aceptación de ediciones](#accept-edits-mode-acceptedits).
39* En modo `plan`, Claude Code envía herramientas de edición de archivos y escritura de shell a tu devolución de llamada `canUseTool` independientemente de las reglas de permiso, por lo que las operaciones de escritura no pueden aprobarse automáticamente mientras se planifica.39* En modo `plan`, Claude Code envía herramientas de edición de archivos y escritura de shell a tu devolución de llamada `canUseTool` independientemente de las reglas de permiso, por lo que las operaciones de escritura no pueden aprobarse automáticamente mientras se planifica.
40* En otros modos, la solicitud se pasa.40* En otros modos, la solicitud se pasa.
41 41
42**5. Reglas de permiso**42**5. Reglas de permiso**
43 43
44Comprobar reglas `allow` (de `allowed_tools` y settings.json). Si una regla coincide, la herramienta se aprueba. Una llamada que la herramienta aprueba por sí sola también se resuelve en este paso, sin necesidad de regla: por ejemplo una lectura de archivo dentro de tus directorios de trabajo o un [comando Bash de solo lectura](/docs/es/permissions.md#read-only-commands).44Comprobar reglas `allow` (de `allowed_tools` y settings.json). Si una regla coincide, la herramienta se aprueba. Una llamada que la herramienta aprueba por sí sola también se resuelve en este paso, sin necesidad de regla: por ejemplo una lectura de archivo dentro de tus directorios de trabajo o un [comando Bash de solo lectura](https://code.claude.com/docs/es/permissions.md#read-only-commands).
45 45
46Las [eliminaciones de rutas críticas](/docs/es/permission-modes.md#critical-paths) reconocidas no se aprueban por una regla de permiso. Si luego llegan a tu devolución de llamada depende del modo de permisos: en una sesión del Agent SDK en modo `auto`, por ejemplo, Claude Code las deniega por defecto sin llamarla. La [tabla de modos de Rutas críticas](/docs/es/permission-modes.md#critical-path-removals-in-each-permission-mode) enumera lo que cada modo hace con ellas.46Las [eliminaciones de rutas críticas](https://code.claude.com/docs/es/permission-modes.md#critical-paths) reconocidas no se aprueban por una regla de permiso. Si luego llegan a tu devolución de llamada depende del modo de permisos: en una sesión del Agent SDK en modo `auto`, por ejemplo, Claude Code las deniega por defecto sin llamarla. La [tabla de modos de Rutas críticas](https://code.claude.com/docs/es/permission-modes.md#critical-path-removals-in-each-permission-mode) enumera lo que cada modo hace con ellas.
47 47
48Una regla de permiso no aprueba una lectura desde una [ruta de red](/docs/es/permissions.md#network-paths).48Una regla de permiso no aprueba una lectura desde una [ruta de red](https://code.claude.com/docs/es/permissions.md#network-paths).
49 49
50**6. Devolución de llamada canUseTool**50**6. Devolución de llamada canUseTool**
51 51
52Si no se resuelve por ninguno de los anteriores, llama a tu devolución de llamada [`canUseTool`](/docs/es/agent-sdk/user-input) para una decisión. En modo `dontAsk`, este paso se omite y la herramienta se deniega, aunque un [mod](/docs/es/plugins/mods/overview.md) que instalaste aún puede aprobar [algunas de esas llamadas](/docs/es/permissions.md#precedence-among-rules-hooks-and-mods).52Si no se resuelve por ninguno de los anteriores, llama a tu devolución de llamada [`canUseTool`](https://code.claude.com/docs/es/agent-sdk/user-input) para una decisión. En modo `dontAsk`, este paso se omite y la herramienta se deniega, aunque un [mod](https://code.claude.com/docs/es/plugins/mods/overview.md) que instalaste aún puede aprobar [algunas de esas llamadas](https://code.claude.com/docs/es/permissions.md#precedence-among-rules-hooks-and-mods).
53 53
54En el SDK de TypeScript, si establece [`permissionPrompts: 'none'`](/docs/es/agent-sdk/typescript#options), su devolución de llamada no se llama en este paso. Un hook [`PermissionRequest`](/docs/es/hooks#permissionrequest) aún tiene la oportunidad de decidir, y si no lo hace, Claude Code deniega la llamada. La opción requiere Claude Code v2.1.259 o posterior.54En el SDK de TypeScript, si establece [`permissionPrompts: 'none'`](https://code.claude.com/docs/es/agent-sdk/typescript#options), su devolución de llamada no se llama en este paso. Un hook [`PermissionRequest`](https://code.claude.com/docs/es/hooks#permissionrequest) aún tiene la oportunidad de decidir, y si no lo hace, Claude Code deniega la llamada. La opción requiere Claude Code v2.1.259 o posterior.
55 55
5656
57 57
58Si pasa una devolución de llamada `canUseTool` en una configuración donde el SDK de TypeScript espera que el orden de evaluación apruebe automáticamente las llamadas antes de que se consulte la devolución de llamada, el SDK emite una advertencia de proceso de Node.js una vez cuando se construye la consulta. El código de la advertencia es `CLAUDE_SDK_CAN_USE_TOOL_SHADOWED`. Dos configuraciones la activan:58Si pasa una devolución de llamada `canUseTool` en una configuración donde el SDK de TypeScript espera que el orden de evaluación apruebe automáticamente las llamadas antes de que se consulte la devolución de llamada, el SDK emite una advertencia de proceso de Node.js una vez cuando se construye la consulta. El código de la advertencia es `CLAUDE_SDK_CAN_USE_TOOL_SHADOWED`. Dos configuraciones la activan:
59 59
60* `permissionMode: 'bypassPermissions'`, que aprueba automáticamente cada llamada que llega al paso del modo de permiso aparte de las [acciones que ningún modo aprueba automáticamente](/docs/es/permission-modes.md#actions-no-mode-auto-approves)60* `permissionMode: 'bypassPermissions'`, que aprueba automáticamente cada llamada que llega al paso del modo de permiso aparte de las [acciones que ningún modo aprueba automáticamente](https://code.claude.com/docs/es/permission-modes.md#actions-no-mode-auto-approves)
61* Cada entrada `allowedTools` simple como `"Read"`, que aprueba automáticamente esa herramienta completa antes de que se consulte la devolución de llamada, aparte de las [acciones que ningún modo aprueba automáticamente](/docs/es/permission-modes.md#actions-no-mode-auto-approves) y las [lecturas desde rutas de red](/docs/es/permissions.md#network-paths)61* Cada entrada `allowedTools` simple como `"Read"`, que aprueba automáticamente esa herramienta completa antes de que se consulte la devolución de llamada, aparte de las [acciones que ningún modo aprueba automáticamente](https://code.claude.com/docs/es/permission-modes.md#actions-no-mode-auto-approves) y las [lecturas desde rutas de red](https://code.claude.com/docs/es/permissions.md#network-paths)
62 62
63Las entradas con un especificador como `Bash(ls *)` y el modo `acceptEdits` no la activan, y las reglas de permiso provenientes de archivos de configuración no son visibles para la comprobación.63Las entradas con un especificador como `Bash(ls *)` y el modo `acceptEdits` no la activan, y las reglas de permiso provenientes de archivos de configuración no son visibles para la comprobación.
64 64
65Escuche con `process.on('warning', ...)` y haga coincidir el código para registrarlo o suprimirlo. Para controlar cada llamada de herramienta independientemente del modo y las reglas, use un [hook `PreToolUse`](/docs/es/agent-sdk/hooks) en su lugar.65Escuche con `process.on('warning', ...)` y haga coincidir el código para registrarlo o suprimirlo. Para controlar cada llamada de herramienta independientemente del modo y las reglas, use un [hook `PreToolUse`](https://code.claude.com/docs/es/agent-sdk/hooks) en su lugar.
66 66
67Esta página se enfoca en **reglas de permiso y denegación** y **modos de permiso**. Para los otros pasos:67Esta página se enfoca en **reglas de permiso y denegación** y **modos de permiso**. Para los otros pasos:
68 68
69* **Hooks:** ejecutar código personalizado para permitir, denegar o modificar solicitudes de herramientas. Consulte [Controlar la ejecución con hooks](/docs/es/agent-sdk/hooks.md).69* **Hooks:** ejecutar código personalizado para permitir, denegar o modificar solicitudes de herramientas. Consulte [Controlar la ejecución con hooks](https://code.claude.com/docs/es/agent-sdk/hooks.md).
70* **Devolución de llamada canUseTool:** solicitar aprobación a los usuarios en tiempo de ejecución, cuando ningún paso anterior resuelve la llamada. Consulte [Manejar aprobaciones e entrada del usuario](/docs/es/agent-sdk/user-input.md).70* **Devolución de llamada canUseTool:** solicitar aprobación a los usuarios en tiempo de ejecución, cuando ningún paso anterior resuelve la llamada. Consulte [Manejar aprobaciones e entrada del usuario](https://code.claude.com/docs/es/agent-sdk/user-input.md).
71 71
72## Reglas de permitir y denegar72## Reglas de permitir y denegar
73 73
74`allowed_tools` y `disallowed_tools` (TypeScript: `allowedTools` / `disallowedTools`) añaden entradas a las listas de reglas de permitir y denegar en el flujo de evaluación anterior. Si nombra una de las [herramientas de seguimiento de tareas](/docs/es/agent-sdk/todo-tracking.md#model-availability) en `allowed_tools`, Claude Code también habilita esas herramientas en la sesión. Cualquier otra herramienta no listada en `allowed_tools` sigue estando disponible para Claude, y una llamada a ella que necesite aprobación cae en el modo de permisos. Las reglas de denegación se comportan de manera diferente dependiendo de si nombran una herramienta o delimitan un patrón dentro de una.74`allowed_tools` y `disallowed_tools` (TypeScript: `allowedTools` / `disallowedTools`) añaden entradas a las listas de reglas de permitir y denegar en el flujo de evaluación anterior. Si nombra una de las [herramientas de seguimiento de tareas](https://code.claude.com/docs/es/agent-sdk/todo-tracking.md#model-availability) en `allowed_tools`, Claude Code también habilita esas herramientas en la sesión. Cualquier otra herramienta no listada en `allowed_tools` sigue estando disponible para Claude, y una llamada a ella que necesite aprobación cae en el modo de permisos. Las reglas de denegación se comportan de manera diferente dependiendo de si nombran una herramienta o delimitan un patrón dentro de una.
75 75
76| Opción | Efecto |76| Opción | Efecto |
77| :- | :- |77| :- | :- |
78| `allowed_tools=["Read", "Grep"]` | `Read` y `Grep` se aprueban automáticamente, aparte de las [lecturas desde rutas de red](/docs/es/permissions.md#network-paths). Otras herramientas no listadas aquí siguen existiendo, y las llamadas a ellas que necesiten aprobación caen en el modo de permisos y `canUseTool`. |78| `allowed_tools=["Read", "Grep"]` | `Read` y `Grep` se aprueban automáticamente, aparte de las [lecturas desde rutas de red](https://code.claude.com/docs/es/permissions.md#network-paths). Otras herramientas no listadas aquí siguen existiendo, y las llamadas a ellas que necesiten aprobación caen en el modo de permisos y `canUseTool`. |
79| `disallowed_tools=["Bash"]` | La definición de la herramienta `Bash` se elimina de la solicitud. Claude no ve la herramienta y no puede intentarla. |79| `disallowed_tools=["Bash"]` | La definición de la herramienta `Bash` se elimina de la solicitud. Claude no ve la herramienta y no puede intentarla. |
80| `disallowed_tools=["Bash(rm *)"]` | `Bash` sigue disponible. Las llamadas que coincidan con `rm *` [tal como está escrito](/docs/es/permissions.md#bash-rule-limits) se deniegan en todos los modos de permisos, incluido `bypassPermissions`. Otras llamadas a `Bash`, incluido `/bin/rm`, caen en el modo de permisos. |80| `disallowed_tools=["Bash(rm *)"]` | `Bash` sigue disponible. Las llamadas que coincidan con `rm *` [tal como está escrito](https://code.claude.com/docs/es/permissions.md#bash-rule-limits) se deniegan en todos los modos de permisos, incluido `bypassPermissions`. Otras llamadas a `Bash`, incluido `/bin/rm`, caen en el modo de permisos. |
81| `disallowed_tools=["*"]` | Cada definición de herramienta se elimina de la solicitud. Los patrones globales de nombres de herramientas se admiten en reglas de denegación: `"*"` coincide con cada herramienta y `"mcp__*"` coincide con cada herramienta MCP en todos los servidores. |81| `disallowed_tools=["*"]` | Cada definición de herramienta se elimina de la solicitud. Los patrones globales de nombres de herramientas se admiten en reglas de denegación: `"*"` coincide con cada herramienta y `"mcp__*"` coincide con cada herramienta MCP en todos los servidores. |
82 82
83Las reglas de permitir aceptan patrones globales de nombres de herramientas solo después de un prefijo literal `mcp__<server>__`. El segmento del servidor debe estar libre de patrones globales para que la regla nombre un servidor específico que hayas configurado: `mcp__puppeteer__*` coincide con cada herramienta del servidor `puppeteer`, y `mcp__github__get_*` coincide con sus herramientas `get_`. Una entrada sin ancla como `allowed_tools=["*"]` o `allowed_tools=["mcp__*"]` se ignora y no aprueba automáticamente nada.83Las reglas de permitir aceptan patrones globales de nombres de herramientas solo después de un prefijo literal `mcp__<server>__`. El segmento del servidor debe estar libre de patrones globales para que la regla nombre un servidor específico que hayas configurado: `mcp__puppeteer__*` coincide con cada herramienta del servidor `puppeteer`, y `mcp__github__get_*` coincide con sus herramientas `get_`. Una entrada sin ancla como `allowed_tools=["*"]` o `allowed_tools=["mcp__*"]` se ignora y no aprueba automáticamente nada.
84 84
85Las reglas delimitadas para `Read` y `Edit` toman un patrón de ruta. Las reglas `Edit(path)` rigen todas las herramientas integradas que escriben archivos, incluidas `Write` y `NotebookEdit`; una regla `Write(path)` nunca es coincidida por las comprobaciones de permisos de archivo.85Las reglas delimitadas para `Read` y `Edit` toman un patrón de ruta. Las reglas `Edit(path)` rigen todas las herramientas integradas que escriben archivos, incluidas `Write` y `NotebookEdit`; una regla `Write(path)` nunca es coincidida por las comprobaciones de permisos de archivo.
86 86
87Use `//path` para una ruta del sistema de archivos absoluta: una regla de denegación de `Edit(//secrets/**)` bloquea escrituras en cualquier lugar bajo `/secrets` en el disco. Con una sola barra diagonal inicial, `Edit(/secrets/**)` se ancla en la fuente de la regla en su lugar. Para reglas pasadas a través de `allowed_tools` o `disallowed_tools`, eso significa el directorio de trabajo de la sesión, por lo que la regla no bloquea `/secrets` en el disco. Consulte [Reglas de Read y Edit](/docs/es/permissions.md#read-and-edit) para las cuatro formas de anclaje y cómo se resuelven las reglas de archivos de configuración.87Use `//path` para una ruta del sistema de archivos absoluta: una regla de denegación de `Edit(//secrets/**)` bloquea escrituras en cualquier lugar bajo `/secrets` en el disco. Con una sola barra diagonal inicial, `Edit(/secrets/**)` se ancla en la fuente de la regla en su lugar. Para reglas pasadas a través de `allowed_tools` o `disallowed_tools`, eso significa el directorio de trabajo de la sesión, por lo que la regla no bloquea `/secrets` en el disco. Consulte [Reglas de Read y Edit](https://code.claude.com/docs/es/permissions.md#read-and-edit) para las cuatro formas de anclaje y cómo se resuelven las reglas de archivos de configuración.
88 88
89> [!WARNING]89> [!WARNING]
90>90>
91> **Las herramientas aprobadas automáticamente nunca llegan a `canUseTool`.** Una llamada de herramienta aprobada en cualquier paso anterior, por `acceptEdits` o `bypassPermissions`, o por una regla de permitir, omite su devolución de llamada `canUseTool`, por lo que las comprobaciones de permisos que coloque allí se omiten silenciosamente para esa herramienta.91> **Las herramientas aprobadas automáticamente nunca llegan a `canUseTool`.** Una llamada de herramienta aprobada en cualquier paso anterior, por `acceptEdits` o `bypassPermissions`, o por una regla de permitir, omite su devolución de llamada `canUseTool`, por lo que las comprobaciones de permisos que coloque allí se omiten silenciosamente para esa herramienta.
92>92>
93> Ninguna regla de permitir aprueba automáticamente `AskUserQuestion`, herramientas MCP marcadas [`_meta["anthropic/requiresUserInteraction"]`](/docs/es/mcp#require-approval-for-a-specific-tool), herramientas de conector [que tu organización configuró como `ask`](/docs/es/mcp#organization-controls-on-connector-tools), ni las [eliminaciones de rutas críticas](/docs/es/permission-modes.md#critical-paths) reconocidas con `rm` y `rmdir`. En modo `dontAsk` Claude Code deniega estas llamadas sin invocar la devolución de llamada. En otros modos los tres primeros llegan a la devolución de llamada. La [tabla de modos de rutas críticas](/docs/es/permission-modes.md#critical-path-removals-in-each-permission-mode) indica qué hace cada modo con una eliminación de ruta crítica. La comprobación que reconoce estas eliminaciones [puede pasar por alto algunos comandos](/docs/es/permission-modes.md#critical-paths).93> Ninguna regla de permitir aprueba automáticamente `AskUserQuestion`, herramientas MCP marcadas [`_meta["anthropic/requiresUserInteraction"]`](https://code.claude.com/docs/es/mcp#require-approval-for-a-specific-tool), herramientas de conector [que tu organización configuró como `ask`](https://code.claude.com/docs/es/mcp#organization-controls-on-connector-tools), ni las [eliminaciones de rutas críticas](https://code.claude.com/docs/es/permission-modes.md#critical-paths) reconocidas con `rm` y `rmdir`. En modo `dontAsk` Claude Code deniega estas llamadas sin invocar la devolución de llamada. En otros modos los tres primeros llegan a la devolución de llamada. La [tabla de modos de rutas críticas](https://code.claude.com/docs/es/permission-modes.md#critical-path-removals-in-each-permission-mode) indica qué hace cada modo con una eliminación de ruta crítica. La comprobación que reconoce estas eliminaciones [puede pasar por alto algunos comandos](https://code.claude.com/docs/es/permission-modes.md#critical-paths).
94>94>
95> La cobertura depende de la forma de la entrada: un nombre simple como `Read` o `mcp__github__get_issue` aprueba automáticamente cada llamada a esa herramienta aparte de esas excepciones y de las [lecturas desde rutas de red](/docs/es/permissions.md#network-paths), mientras que una regla delimitada como `Bash(npm test *)` aprueba automáticamente solo las llamadas coincidentes, y otras llamadas a `Bash` que necesiten aprobación aún caen en la devolución de llamada. Para comprobaciones que deben ejecutarse en cada llamada a herramienta, usa un [hook `PreToolUse`](/docs/es/agent-sdk/hooks): los hooks se ejecutan antes de cualquier otro paso, y una denegación de hook se aplica incluso en modo `bypassPermissions`.95> La cobertura depende de la forma de la entrada: un nombre simple como `Read` o `mcp__github__get_issue` aprueba automáticamente cada llamada a esa herramienta aparte de esas excepciones y de las [lecturas desde rutas de red](https://code.claude.com/docs/es/permissions.md#network-paths), mientras que una regla delimitada como `Bash(npm test *)` aprueba automáticamente solo las llamadas coincidentes, y otras llamadas a `Bash` que necesiten aprobación aún caen en la devolución de llamada. Para comprobaciones que deben ejecutarse en cada llamada a herramienta, usa un [hook `PreToolUse`](https://code.claude.com/docs/es/agent-sdk/hooks): los hooks se ejecutan antes de cualquier otro paso, y una denegación de hook se aplica incluso en modo `bypassPermissions`.
96 96
97Para un agente bloqueado, empareje `allowedTools` con `permissionMode: "dontAsk"`:97Para un agente bloqueado, empareje `allowedTools` con `permissionMode: "dontAsk"`:
98 98
103};103};
104```104```
105 105
106Las herramientas listadas se aprueban, aparte de las [acciones que ningún modo aprueba automáticamente](/docs/es/permission-modes.md#actions-no-mode-auto-approves) y de las [lecturas desde rutas de red](/docs/es/permissions.md#network-paths). Cualquier otra llamada que pediría confirmación se deniega en su lugar, aunque un [mod](/docs/es/plugins/mods/overview.md) que hayas instalado aún puede aprobar [algunas de esas llamadas](/docs/es/permissions.md#precedence-among-rules-hooks-and-mods).106Las herramientas listadas se aprueban, aparte de las [acciones que ningún modo aprueba automáticamente](https://code.claude.com/docs/es/permission-modes.md#actions-no-mode-auto-approves) y de las [lecturas desde rutas de red](https://code.claude.com/docs/es/permissions.md#network-paths). Cualquier otra llamada que pediría confirmación se deniega en su lugar, aunque un [mod](https://code.claude.com/docs/es/plugins/mods/overview.md) que hayas instalado aún puede aprobar [algunas de esas llamadas](https://code.claude.com/docs/es/permissions.md#precedence-among-rules-hooks-and-mods).
107 107
108Las llamadas que no necesitan aprobación en modo `default` se ejecutan independientemente de si las listas o no. Incluyen [comandos Bash de solo lectura](/docs/es/permissions.md#read-only-commands), herramientas como `Agent` que no preguntan antes de ejecutarse y lecturas de archivos dentro de tus directorios de trabajo. Para eliminar una herramienta de la solicitud por completo, añade su nombre simple a `disallowedTools`.108Las llamadas que no necesitan aprobación en modo `default` se ejecutan independientemente de si las listas o no. Incluyen [comandos Bash de solo lectura](https://code.claude.com/docs/es/permissions.md#read-only-commands), herramientas como `Agent` que no preguntan antes de ejecutarse y lecturas de archivos dentro de tus directorios de trabajo. Para eliminar una herramienta de la solicitud por completo, añade su nombre simple a `disallowedTools`.
109 109
110> [!WARNING]110> [!WARNING]
111>111>
112> **`allowed_tools` no restringe `bypassPermissions`.** `allowed_tools` aprueba previamente las herramientas que lista. Otras herramientas no listadas no son coincididas por ninguna regla de permitir y caen en el modo de permisos, donde `bypassPermissions` las aprueba. Configurar `allowed_tools=["Read"]` junto con `permission_mode="bypassPermissions"` aún aprueba cada herramienta, incluidas `Bash`, `Write` y `Edit`. Si necesita `bypassPermissions` pero desea que herramientas específicas se bloqueen, use `disallowed_tools`.112> **`allowed_tools` no restringe `bypassPermissions`.** `allowed_tools` aprueba previamente las herramientas que lista. Otras herramientas no listadas no son coincididas por ninguna regla de permitir y caen en el modo de permisos, donde `bypassPermissions` las aprueba. Configurar `allowed_tools=["Read"]` junto con `permission_mode="bypassPermissions"` aún aprueba cada herramienta, incluidas `Bash`, `Write` y `Edit`. Si necesita `bypassPermissions` pero desea que herramientas específicas se bloqueen, use `disallowed_tools`.
113 113
114También puede configurar reglas de permitir, denegar y preguntar de manera declarativa en `.claude/settings.json`. Estas reglas se leen cuando la fuente de configuración `project` está habilitada, que lo está para las opciones predeterminadas de `query()`. Si establece `setting_sources` (TypeScript: `settingSources`) explícitamente, incluya `"project"` para que se apliquen. Consulte [Configuración de permisos](/docs/es/settings-reference.md#permission-settings) para la sintaxis de reglas.114También puede configurar reglas de permitir, denegar y preguntar de manera declarativa en `.claude/settings.json`. Estas reglas se leen cuando la fuente de configuración `project` está habilitada, que lo está para las opciones predeterminadas de `query()`. Si establece `setting_sources` (TypeScript: `settingSources`) explícitamente, incluya `"project"` para que se apliquen. Consulte [Configuración de permisos](https://code.claude.com/docs/es/settings-reference.md#permission-settings) para la sintaxis de reglas.
115 115
116## Modos de permisos116## Modos de permisos
117 117
118Los modos de permisos proporcionan control global sobre cómo Claude utiliza las herramientas. Puede establecer el modo de permisos al llamar a `query()` o cambiarlo dinámicamente durante sesiones de transmisión.118Los modos de permisos proporcionan control global sobre cómo Claude utiliza las herramientas. Puede establecer el modo de permisos al llamar a `query()` o cambiarlo dinámicamente durante sesiones de transmisión.
119 119
120Con Claude Code v2.1.302 o posterior, tu aplicación comienza en modo `default` a menos que establezcas un modo de permisos o la aplicación obtenga uno de [`permissions.defaultMode`](/docs/es/settings-reference#permissions-defaultmode) en sus archivos de configuración. En modo `default`, Claude Code deniega cualquier llamada a herramienta que necesite aprobación, a menos que la apruebes mediante una regla de permiso, un hook, una devolución de llamada `canUseTool` o una herramienta de solicitud de permisos. Si se deniegan llamadas a herramientas, consulta [Llamadas a herramientas denegadas en ejecuciones de `claude -p` y del Agent SDK](/docs/es/permission-modes#which-mode-a-non-interactive-run-starts-in).120Con Claude Code v2.1.302 o posterior, tu aplicación comienza en modo `default` a menos que establezcas un modo de permisos o la aplicación obtenga uno de [`permissions.defaultMode`](https://code.claude.com/docs/es/settings-reference#permissions-defaultmode) en sus archivos de configuración. En modo `default`, Claude Code deniega cualquier llamada a herramienta que necesite aprobación, a menos que la apruebes mediante una regla de permiso, un hook, una devolución de llamada `canUseTool` o una herramienta de solicitud de permisos. Si se deniegan llamadas a herramientas, consulta [Llamadas a herramientas denegadas en ejecuciones de `claude -p` y del Agent SDK](https://code.claude.com/docs/es/permission-modes#which-mode-a-non-interactive-run-starts-in).
121 121
122### Modos disponibles122### Modos disponibles
123 123
126| Modo | Descripción | Comportamiento de herramientas |126| Modo | Descripción | Comportamiento de herramientas |
127| :- | :- | :- |127| :- | :- | :- |
128| `default` | Comportamiento de permisos estándar | Sin aprobaciones automáticas basadas en modo; las llamadas que necesitan aprobación y no coinciden con ninguna regla de permiso activan su devolución de llamada `canUseTool` |128| `default` | Comportamiento de permisos estándar | Sin aprobaciones automáticas basadas en modo; las llamadas que necesitan aprobación y no coinciden con ninguna regla de permiso activan su devolución de llamada `canUseTool` |
129| `dontAsk` | Denegar en lugar de preguntar | Cualquier llamada que de otro modo solicitaría confirmación es denegada sin llamar a `canUseTool`, aunque un [mod](/docs/es/plugins/mods/overview.md) que instalaste aún puede aprobar [algunas de esas llamadas](/docs/es/permissions.md#precedence-among-rules-hooks-and-mods). Las llamadas aprobadas por `allowed_tools` o por reglas de permiso de `settings.json` se ejecutan, al igual que las llamadas que no necesitan aprobación en modo `default`. Algunas llamadas, como las [lecturas desde rutas de red](/docs/es/permissions.md#network-paths), son denegadas incluso cuando `allowed_tools` o una regla de permiso coinciden con ellas. Para ver la lista, consulta [Modo no preguntar](#don’t-ask-mode-dontask) |129| `dontAsk` | Denegar en lugar de preguntar | Cualquier llamada que de otro modo solicitaría confirmación es denegada sin llamar a `canUseTool`, aunque un [mod](https://code.claude.com/docs/es/plugins/mods/overview.md) que instalaste aún puede aprobar [algunas de esas llamadas](https://code.claude.com/docs/es/permissions.md#precedence-among-rules-hooks-and-mods). Las llamadas aprobadas por `allowed_tools` o por reglas de permiso de `settings.json` se ejecutan, al igual que las llamadas que no necesitan aprobación en modo `default`. Algunas llamadas, como las [lecturas desde rutas de red](https://code.claude.com/docs/es/permissions.md#network-paths), son denegadas incluso cuando `allowed_tools` o una regla de permiso coinciden con ellas. Para ver la lista, consulta [Modo no preguntar](#don’t-ask-mode-dontask) |
130| `acceptEdits` | Aceptar automáticamente ediciones de archivos | Las ediciones de archivos y [operaciones del sistema de archivos](#accept-edits-mode-acceptedits) (`mkdir`, `rm`, `mv`, etc.) se aprueban automáticamente |130| `acceptEdits` | Aceptar automáticamente ediciones de archivos | Las ediciones de archivos y [operaciones del sistema de archivos](#accept-edits-mode-acceptedits) (`mkdir`, `rm`, `mv`, etc.) se aprueban automáticamente |
131| `bypassPermissions` | Omitir verificaciones de permisos | Las herramientas se ejecutan sin solicitudes de permisos, excepto para las [acciones que ningún modo aprueba automáticamente](/docs/es/permission-modes.md#actions-no-mode-auto-approves). Úselo con precaución |131| `bypassPermissions` | Omitir verificaciones de permisos | Las herramientas se ejecutan sin solicitudes de permisos, excepto para las [acciones que ningún modo aprueba automáticamente](https://code.claude.com/docs/es/permission-modes.md#actions-no-mode-auto-approves). Úselo con precaución |
132| `plan` | Modo de planificación | Claude explora y planifica sin editar sus archivos fuente; las ediciones de archivos nunca se aprueban automáticamente y se solicitan a través de su devolución de llamada `canUseTool` |132| `plan` | Modo de planificación | Claude explora y planifica sin editar sus archivos fuente; las ediciones de archivos nunca se aprueban automáticamente y se solicitan a través de su devolución de llamada `canUseTool` |
133| `auto` | Aprobaciones clasificadas por modelo | Un clasificador de modelo revisa acciones como comandos de shell y solicitudes de red, permitiendo o bloqueando cada una que revisa. Consulte [Modo Auto](/docs/es/permission-modes.md#eliminate-prompts-with-auto-mode) para disponibilidad y el orden de decisión |133| `auto` | Aprobaciones clasificadas por modelo | Un clasificador de modelo revisa acciones como comandos de shell y solicitudes de red, permitiendo o bloqueando cada una que revisa. Consulte [Modo Auto](https://code.claude.com/docs/es/permission-modes.md#eliminate-prompts-with-auto-mode) para disponibilidad y el orden de decisión |
134 134
135> [!WARNING]135> [!WARNING]
136>136>
137> **Herencia de subagentes:** Un subagente se ejecuta en el modo de permisos de la sesión principal a menos que establezcas `permissionMode` en su [`AgentDefinition`](/docs/es/agent-sdk/typescript#agentdefinition) y la sesión principal esté en modo `default`, `dontAsk` o `plan`. Incluso entonces, Claude Code nunca aplica un valor `"bypassPermissions"`, y aplica un valor `"auto"` solo cuando el [modo automático está disponible](/docs/es/permission-modes.md#eliminate-prompts-with-auto-mode) para ese subagente. Un subagente se ejecuta en modo `bypassPermissions` solo cuando la propia sesión principal está en ese modo. La excepción `bypassPermissions` requiere Claude Code v2.1.267 o posterior.137> **Herencia de subagentes:** Si tu sesión principal está en [modo plan](https://code.claude.com/docs/es/permission-modes.md#analyze-before-you-edit-with-plan-mode), un subagente cuyo [`AgentDefinition`](https://code.claude.com/docs/es/agent-sdk/typescript#agentdefinition) establece `permissionMode: "acceptEdits"` se sigue ejecutando en modo plan. Las llamadas `Edit` y `Write` de ese subagente sobre tus archivos fuente siguen llegando a tu devolución de llamada `canUseTool`. El modo plan también se mantiene para los subagentes que defines, de modo que delegarle trabajo a uno no evite revisar primero el plan.
138>138>
139> Los subagentes pueden tener indicaciones del sistema diferentes y un comportamiento menos restringido que su agente principal, por lo que heredar `bypassPermissions` les otorga acceso completo y autónomo al sistema. Las [acciones que ningún modo aprueba automáticamente](/docs/es/permission-modes.md#actions-no-mode-auto-approves) aún se aplican.139> El subagente hereda `plan`, `acceptEdits`, `auto` o `bypassPermissions` de la sesión principal, y bajo una sesión principal en modo `default` o `dontAsk` se ejecuta en el modo que establezcas. Incluso entonces, Claude Code nunca aplica un valor `"bypassPermissions"`, y aplica un valor `"auto"` solo cuando el [modo automático está disponible](https://code.claude.com/docs/es/permission-modes.md#eliminate-prompts-with-auto-mode) para ese subagente. La excepción `bypassPermissions` requiere Claude Code v2.1.267 o posterior.
140>
141> Los subagentes pueden tener indicaciones del sistema diferentes y un comportamiento menos restringido que su agente principal, por lo que heredar `bypassPermissions` les otorga acceso completo y autónomo al sistema. Las [acciones que ningún modo aprueba automáticamente](https://code.claude.com/docs/es/permission-modes.md#actions-no-mode-auto-approves) aún se aplican.
140 142
141### Establecer modo de permisos143### Establecer modo de permisos
142 144
253 255
254* Trabaja en una ruta fuera de ese alcance256* Trabaja en una ruta fuera de ese alcance
255* Escribe en una ruta protegida257* Escribe en una ruta protegida
256* Elimina con `rm` o `rmdir` una ruta que Claude Code reconoce como [ruta crítica](/docs/es/permission-modes.md#critical-paths)258* Elimina con `rm` o `rmdir` una ruta que Claude Code reconoce como [ruta crítica](https://code.claude.com/docs/es/permission-modes.md#critical-paths)
257 259
258**Úselo cuando:** confíe en las ediciones de Claude y desee una iteración más rápida, como durante la creación de prototipos o cuando trabaja en un directorio aislado.260**Úselo cuando:** confíe en las ediciones de Claude y desee una iteración más rápida, como durante la creación de prototipos o cuando trabaja en un directorio aislado.
259 261
260#### Modo no preguntar (`dontAsk`)262#### Modo no preguntar (`dontAsk`)
261 263
262Convierte cualquier solicitud de permiso en una denegación, sin llamar a `canUseTool`, aunque un [mod](/docs/es/plugins/mods/overview.md) que instalaste aún puede aprobar [algunas de esas llamadas](/docs/es/permissions.md#precedence-among-rules-hooks-and-mods). Las herramientas preaprobadas por `allowed_tools`, reglas de permiso en `settings.json` o un hook se ejecutan normalmente. Las llamadas que no necesitan aprobación en modo `default` también se ejecutan, como lecturas de archivos dentro de tus directorios de trabajo y llamadas a `Agent`.264Convierte cualquier solicitud de permiso en una denegación, sin llamar a `canUseTool`, aunque un [mod](https://code.claude.com/docs/es/plugins/mods/overview.md) que instalaste aún puede aprobar [algunas de esas llamadas](https://code.claude.com/docs/es/permissions.md#precedence-among-rules-hooks-and-mods). Las herramientas preaprobadas por `allowed_tools`, reglas de permiso en `settings.json` o un hook se ejecutan normalmente. Las llamadas que no necesitan aprobación en modo `default` también se ejecutan, como lecturas de archivos dentro de tus directorios de trabajo y llamadas a `Agent`.
263 265
264Las herramientas de conector [que tu organización configuró como `ask`](/docs/es/mcp#organization-controls-on-connector-tools), las herramientas que requieren interacción del usuario, las [lecturas desde rutas de red](/docs/es/permissions.md#network-paths) y las [eliminaciones de rutas críticas](/docs/es/permission-modes.md#critical-paths) reconocidas son denegadas incluso cuando una regla de permiso coincide. Un permiso de hook `PreToolUse` tampoco habilita una eliminación de ruta crítica reconocida ni una lectura desde una ruta de red. La verificación que reconoce estas eliminaciones [puede pasar por alto algunos comandos](/docs/es/permission-modes.md#critical-paths).266Las herramientas de conector [que tu organización configuró como `ask`](https://code.claude.com/docs/es/mcp#organization-controls-on-connector-tools), las herramientas que requieren interacción del usuario, las [lecturas desde rutas de red](https://code.claude.com/docs/es/permissions.md#network-paths) y las [eliminaciones de rutas críticas](https://code.claude.com/docs/es/permission-modes.md#critical-paths) reconocidas son denegadas incluso cuando una regla de permiso coincide. Un permiso de hook `PreToolUse` tampoco habilita una eliminación de ruta crítica reconocida ni una lectura desde una ruta de red. La verificación que reconoce estas eliminaciones [puede pasar por alto algunos comandos](https://code.claude.com/docs/es/permission-modes.md#critical-paths).
265 267
266**Úselo cuando:** desee una superficie de herramientas fija y explícita para un agente sin interfaz y prefiera una denegación definitiva sobre la dependencia silenciosa de que `canUseTool` esté ausente.268**Úselo cuando:** desee una superficie de herramientas fija y explícita para un agente sin interfaz y prefiera una denegación definitiva sobre la dependencia silenciosa de que `canUseTool` esté ausente.
267 269
268#### Modo omitir permisos (`bypassPermissions`)270#### Modo omitir permisos (`bypassPermissions`)
269 271
270Aprueba automáticamente usos de herramientas sin solicitar confirmación, excepto en los casos enumerados en la advertencia a continuación. Los hooks aún se ejecutan y pueden bloquear operaciones si es necesario. En Linux y macOS, Claude Code se niega a iniciarse en este modo como root o bajo `sudo` fuera de una [zona de pruebas reconocida](/docs/es/permission-modes.md#skip-all-checks-with-bypasspermissions-mode), y la consulta falla antes del primer turno.272Aprueba automáticamente usos de herramientas sin solicitar confirmación, excepto en los casos enumerados en la advertencia a continuación. Los hooks aún se ejecutan y pueden bloquear operaciones si es necesario. En Linux y macOS, Claude Code se niega a iniciarse en este modo como root o bajo `sudo` fuera de una [zona de pruebas reconocida](https://code.claude.com/docs/es/permission-modes.md#skip-all-checks-with-bypasspermissions-mode), y la consulta falla antes del primer turno.
271 273
272> [!WARNING]274> [!WARNING]
273>275>
276> `allowed_tools` no restringe este modo. Cada herramienta se aprueba, no solo las que enumeró. Estos controles aún se aplican:278> `allowed_tools` no restringe este modo. Cada herramienta se aprueba, no solo las que enumeró. Estos controles aún se aplican:
277>279>
278> * Las reglas de denegación, las reglas explícitas de `ask` y los hooks se evalúan antes de la verificación del modo y aún pueden bloquear una herramienta.280> * Las reglas de denegación, las reglas explícitas de `ask` y los hooks se evalúan antes de la verificación del modo y aún pueden bloquear una herramienta.
279> * Las herramientas de conector [que tu organización configuró como `ask`](/docs/es/mcp#organization-controls-on-connector-tools), las herramientas que requieren interacción del usuario y las [eliminaciones de rutas críticas](/docs/es/permission-modes.md#critical-paths) reconocidas aún se transfieren a tu devolución de llamada `canUseTool`. La verificación que reconoce estas eliminaciones [puede pasar por alto algunos comandos](/docs/es/permission-modes.md#critical-paths).281> * Las herramientas de conector [que tu organización configuró como `ask`](https://code.claude.com/docs/es/mcp#organization-controls-on-connector-tools), las herramientas que requieren interacción del usuario y las [eliminaciones de rutas críticas](https://code.claude.com/docs/es/permission-modes.md#critical-paths) reconocidas aún se transfieren a tu devolución de llamada `canUseTool`. La verificación que reconoce estas eliminaciones [puede pasar por alto algunos comandos](https://code.claude.com/docs/es/permission-modes.md#critical-paths).
280> * Las [medidas de seguridad de mensajería entre sesiones](/docs/es/permission-modes.md#skip-all-checks-with-bypasspermissions-mode) aún se aplican.282> * Las [medidas de seguridad de mensajería entre sesiones](https://code.claude.com/docs/es/permission-modes.md#skip-all-checks-with-bypasspermissions-mode) aún se aplican.
281 283
282#### Modo de planificación (`plan`)284#### Modo de planificación (`plan`)
283 285
287 289
288En el SDK de TypeScript, si establece `allowDangerouslySkipPermissions: true` junto con `permissionMode: 'plan'`, las ediciones de archivos y los comandos de shell que modifican archivos aún llegan a su devolución de llamada `canUseTool`. La opción le permite cambiar a `bypassPermissions` más tarde con `setPermissionMode()`.290En el SDK de TypeScript, si establece `allowDangerouslySkipPermissions: true` junto con `permissionMode: 'plan'`, las ediciones de archivos y los comandos de shell que modifican archivos aún llegan a su devolución de llamada `canUseTool`. La opción le permite cambiar a `bypassPermissions` más tarde con `setPermissionMode()`.
289 291
290Claude puede usar `AskUserQuestion` para aclarar requisitos antes de finalizar el plan. Consulte [Manejar aprobaciones e entrada del usuario](/docs/es/agent-sdk/user-input.md#handle-clarifying-questions) para manejar estas solicitudes.292Claude puede usar `AskUserQuestion` para aclarar requisitos antes de finalizar el plan. Consulte [Manejar aprobaciones e entrada del usuario](https://code.claude.com/docs/es/agent-sdk/user-input.md#handle-clarifying-questions) para manejar estas solicitudes.
291 293
292**Úselo cuando:** desee que Claude proponga cambios sin ejecutarlos, como durante la revisión de código o cuando necesita aprobar cambios antes de que se realicen.294**Úselo cuando:** desee que Claude proponga cambios sin ejecutarlos, como durante la revisión de código o cuando necesita aprobar cambios antes de que se realicen.
293 295
294#### Modo automático (`auto`)296#### Modo automático (`auto`)
295 297
296Un modelo clasificador revisa acciones como comandos de shell y solicitudes de red antes de que se ejecuten, y permite o bloquea cada una que revisa. Para conocer los modelos y proveedores que requiere el modo automático y el orden en que evalúa las acciones, consulta [Eliminar las solicitudes de permiso con el modo automático](/docs/es/permission-modes.md#eliminate-prompts-with-auto-mode).298Un modelo clasificador revisa acciones como comandos de shell y solicitudes de red antes de que se ejecuten, y permite o bloquea cada una que revisa. Para conocer los modelos y proveedores que requiere el modo automático y el orden en que evalúa las acciones, consulta [Eliminar las solicitudes de permiso con el modo automático](https://code.claude.com/docs/es/permission-modes.md#eliminate-prompts-with-auto-mode).
297 299
298Si cambias una sesión que está en modo automático a un modelo que el modo automático no admite, usando [`set_model()`](/docs/es/agent-sdk/python#claudesdkclient), [`setModel()`](/docs/es/agent-sdk/typescript#query-object) o [`applyFlagSettings()`](/docs/es/agent-sdk/typescript#applyflagsettings), la sesión cambia al modo `default`:300Si cambias una sesión que está en modo automático a un modelo que el modo automático no admite, usando [`set_model()`](https://code.claude.com/docs/es/agent-sdk/python#claudesdkclient), [`setModel()`](https://code.claude.com/docs/es/agent-sdk/typescript#query-object) o [`applyFlagSettings()`](https://code.claude.com/docs/es/agent-sdk/typescript#applyflagsettings), la sesión cambia al modo `default`:
299 301
300* **Lo que ves**: un mensaje `system` con subtipo `status` y `permissionMode` establecido en `"default"`, que el SDK de TypeScript tipa como [`SDKStatusMessage`](/docs/es/agent-sdk/typescript#sdkstatusmessage). A partir de ese momento, las llamadas que necesitan aprobación y no coinciden con ninguna regla de permiso llegan a tu devolución de llamada `canUseTool`.302* **Lo que ves**: un mensaje `system` con subtipo `status` y `permissionMode` establecido en `"default"`, que el SDK de TypeScript tipa como [`SDKStatusMessage`](https://code.claude.com/docs/es/agent-sdk/typescript#sdkstatusmessage). A partir de ese momento, las llamadas que necesitan aprobación y no coinciden con ninguna regla de permiso llegan a tu devolución de llamada `canUseTool`.
301* **Para volver al modo automático**: cambia a un modelo compatible y luego llama a `set_permission_mode("auto")` o `setPermissionMode("auto")`. Si vuelves a cambiar el modelo sin hacer esa llamada, la sesión permanece en modo `default`. Mientras el modelo no compatible esté activo, la llamada falla con `Cannot set permission mode to auto: auto mode unavailable for this model`.303* **Para volver al modo automático**: cambia a un modelo compatible y luego llama a `set_permission_mode("auto")` o `setPermissionMode("auto")`. Si vuelves a cambiar el modelo sin hacer esa llamada, la sesión permanece en modo `default`. Mientras el modelo no compatible esté activo, la llamada falla con `Cannot set permission mode to auto: auto mode unavailable for this model`.
302 304
303El cambio al modo `default` después de una llamada a `set_model()`, `setModel()` o `applyFlagSettings()` requiere Claude Code v2.1.299 o posterior.305El cambio al modo `default` después de una llamada a `set_model()`, `setModel()` o `applyFlagSettings()` requiere Claude Code v2.1.299 o posterior.
306 308
307Para los otros pasos en el flujo de evaluación de permisos:309Para los otros pasos en el flujo de evaluación de permisos:
308 310
309* [Manejar aprobaciones e entrada del usuario](/docs/es/agent-sdk/user-input.md): mensajes de aprobación interactivos y preguntas aclaratorias311* [Manejar aprobaciones e entrada del usuario](https://code.claude.com/docs/es/agent-sdk/user-input.md): mensajes de aprobación interactivos y preguntas aclaratorias
310* [Guía de hooks](/docs/es/agent-sdk/hooks.md): ejecutar código personalizado en puntos clave del ciclo de vida del agente312* [Guía de hooks](https://code.claude.com/docs/es/agent-sdk/hooks.md): ejecutar código personalizado en puntos clave del ciclo de vida del agente
311* [Reglas de permisos](/docs/es/settings-reference.md#permission-settings): reglas declarativas de permitir/denegar en `settings.json`313* [Reglas de permisos](https://code.claude.com/docs/es/settings-reference.md#permission-settings): reglas declarativas de permitir/denegar en `settings.json`