Claude Code

Cómo permitir que Claude Code ejecute todos los comandos: modos de permisos, reglas allow y omitir permisos

¿Cómo hago que Claude Code deje de pedir permiso cada vez?

Presiona Shift+Tab para alternar entre modos de permisos, inicia con claude --permission-mode <mode> o preaprueba comandos específicos con reglas permissions.allow como Bash(npm run *) en .claude/settings.json. El modo auto se ejecuta sin confirmaciones rutinarias mientras un clasificador revisa las acciones; --dangerously-skip-permissions está pensado solo para contenedores o VMs.

Esta página es una traducción de la guía en inglés. Los comandos, claves de configuración y el código no se modifican; si hay diferencias, prevalece la versión en inglés. Leer en inglés → · Otros idiomas: 简体中文 · 日本語 · 한국어 · Português (Brasil)

Entérate cuando cambie la configuración

Cuando cambie un ajuste, flag o regla de permisos de estas herramientas, te avisamos en un correo semanal (en inglés), verificado con la documentación oficial.

Modos de permisos

  • default (etiquetado Manual): pide confirmación la primera vez que se usa cada herramienta.
  • acceptEdits: acepta automáticamente ediciones de archivos y comandos comunes del sistema de archivos como mkdir, touch, mv y cp en tus directorios de trabajo.
  • plan: explora y ejecuta comandos de solo lectura, pero no edita tus archivos fuente.
  • auto: sin confirmaciones rutinarias; un clasificador en segundo plano revisa los comandos de shell y las solicitudes de red en función de lo que pediste. Es el modo inicial integrado desde v2.1.283.
  • dontAsk: deniega todo lo que pediría confirmación, excepto las herramientas que preaprobaste.
  • bypassPermissions: omite las confirmaciones, incluso para escrituras en rutas protegidas como .git y .claude. Solo para contenedores o VMs aislados.

Cambiar de modo

  • Durante una sesión: presiona Shift+Tab para alternar default → acceptEdits → plan (y otros modos habilitados).
  • Para una sesión: claude --permission-mode plan (o default, acceptEdits, auto, dontAsk).
  • Como predeterminado: configura permissions.defaultMode en ~/.claude/settings.json.

Mejor preaprueba comandos exactos

Las reglas allow son más seguras que omitir todas las comprobaciones. Pon el * después del subcomando: Bash(git log *) permite solo git log, mientras que Bash(git *) permite todos los comandos de git. Las reglas deny siempre ganan.

.claude/settings.json

{
  "permissions": {
    "allow": ["Bash(npm run *)", "Bash(git commit *)"],
    "deny": ["Bash(git push *)"]
  }
}

Usa /permissions dentro de Claude Code para ver cada regla y de qué archivo de configuración viene.

Ejecuciones totalmente desatendidas

Solo dentro de un contenedor o VM, como usuario no root

claude -p "run the test suite and fix failures" --dangerously-skip-permissions

Herramientas permitidas: --allowedTools y permissions.allow

--allowedTools (también escrito --allowed-tools) enumera las herramientas que se ejecutan sin confirmación durante una sesión. Usa la misma sintaxis de reglas que permissions.allow en settings.json. --disallowedTools agrega reglas deny, y un nombre de herramienta solo, como Edit, quita esa herramienta de la sesión.

Una sesión con comandos de lectura de git preaprobados

claude --allowedTools "Bash(git log *)" "Bash(git diff *)" "Read"
  • Las reglas se comprueban primero deny, luego ask y luego allow. Un deny amplio como Bash(aws *) bloquea una llamada aunque también coincida una regla allow más específica.
  • Las reglas de Bash entienden los operadores de shell: Bash(safe-cmd *) no aprueba safe-cmd && other-cmd. Cada subcomando tiene que coincidir por sí mismo.
  • Bash(ls:*) es lo mismo que Bash(ls *). La forma :* solo funciona al final de un patrón.
  • Herramientas MCP: mcp__puppeteer permite todas las herramientas del servidor puppeteer y mcp__puppeteer__puppeteer_navigate permite una sola herramienta. Los globs en allow necesitan un nombre de servidor literal, así que una regla allow de mcp__* se omite con una advertencia.
  • Web fetches: WebFetch(domain:example.com) coincide solo con example.com. Agrega WebFetch(domain:*.example.com) para cubrir subdominios.
  • Para limitar qué herramientas integradas existen, usa --tools "Bash,Edit,Read" en lugar de una lista allow.

Fuentes

Documentación oficial (en inglés) con la que se verificó esta guía. Versión en inglés revisada el: 2026-10-18

Más guías en español