\
CONTEXT/academy
Lección 03 · ≈ 14 min

Permission modes

Los modos que fijan la línea base de aprobación y cómo cambiar entre ellos.

Permission modes

Las reglas de la lección anterior afinan el detalle. El permission mode pone la línea base: cuánto te interrumpe Claude por defecto. Las dos capas trabajan juntas — el modo decide el comportamiento general, las reglas pre-aprueban o bloquean casos concretos.

Los modos

ModoQué corre sin preguntarPara qué
defaultsolo lecturasempezar, trabajo sensible
acceptEditslecturas + edición de ficheros + mkdir/mv/cp… en tu working diriterar revisando luego con git diff
plansolo lecturas (explora y propone, no edita)entender el repo antes de tocar
autotodo, con un clasificador de seguridad detrás (research preview)tareas largas con dirección confiable
dontAsksolo lo pre-aprobado en allowCI y scripts bloqueados
bypassPermissionstodo, sin red de seguridadsolo en contenedores/VMs aislados

Los dos que usarás a diario son default (revisas cada acción) y acceptEdits (le dejas editar y revisas después con git diff). plan es el "mira antes de tocar" que adelantamos en la intro.

Cómo cambiar de modo

El modo se controla desde la herramienta, no pidiéndoselo a Claude en el chat:

  • En vivo (CLI): pulsa Shift+Tab para ciclar default → acceptEdits → plan. El modo actual aparece en la barra de estado.
  • Al arrancar: claude --permission-mode plan.
  • Por defecto: defaultMode en settings.
{ "permissions": { "defaultMode": "acceptEdits" } }

En VS Code / Desktop hay un selector de modo en la caja del prompt.

Rutas protegidas

En todos los modos salvo bypassPermissions, hay un conjunto de rutas que nunca se auto-aprueban, para que el agente no corrompa por accidente el estado del repo o su propia config:

  • directorios como .git, .config/git, .claude (excepto .claude/worktrees, donde Claude guarda sus propios worktrees), .vscode, .idea, .husky, .devcontainer
  • ficheros como .mcp.json, .gitconfig, tu .bashrc/.zshrc

Escribir ahí siempre pregunta (o se deniega en dontAsk). Es una red contra errores del modelo.

Y aunque estés en acceptEdits, hay ficheros de config que dan ejecución de código.npmrc, .yarnrc*, bunfig.toml, .bazelrc, .pre-commit-config.yaml, los de .devcontainer/…— que también te preguntan antes de tocarlos. La auto-aprobación de ediciones no se extiende a lo que podría ejecutarse luego en tu máquina.

El modo peligroso: bypassPermissions

bypassPermissions (alias --dangerously-skip-permissions) se salta todas las comprobaciones, incluidas las rutas protegidas. Solo rm -rf / y rm -rf ~ siguen preguntando, como cortacircuitos.

Úsalo solo en un entorno aislado —contenedor, VM, dev container sin internet— donde Claude no pueda dañar tu host. Nunca en tu máquina de trabajo. No protege contra inyección de prompt; para "menos prompts pero con red de seguridad", el modo auto es la opción, no este. (En Linux/macOS, además, se niega a arrancar como root.)

Un admin puede bloquear este modo con permissions.disableBypassPermissionsMode: "disable" en managed settings.

Cómo encaja con las reglas

Los modos ponen la base; las reglas de la lección anterior se superponen en cualquier modo (excepto bypassPermissions, que se salta la capa de permisos entera). Combinación recomendada para empezar:

  • Modo default o acceptEdits.
  • Tus allow/deny versionados en .claude/settings.json.
  • bypassPermissions reservado para sandboxes (siguiente: la red de seguridad del sistema operativo).

Qué llevas hasta aquí

  • Seis modos; en el día a día, default y acceptEdits, con plan para explorar.
  • Cambias de modo con Shift+Tab, --permission-mode o defaultMode — no por chat.
  • Las rutas protegidas te cubren en todos los modos salvo bypassPermissions, que se reserva para entornos aislados.

En las dos últimas lecciones: el porqué de todo esto (seguridad) y la barrera que impone el sistema operativo (sandbox).

Fuente oficial: Permission modes

¿Quieres llevar la cuenta de las lecciones que has terminado?

Entrar para guardar progreso