TL;DR Quita
"defaultMode": "bypassPermissions"del.claude/settings.jsondel proyecto y ponlo en~/.claude/settings.json, o arranca conclaude --permission-mode bypassPermissions. Si lo dejas en el proyecto, no solo no funciona: anula también el modo que tengas en tu configuración de usuario.
Desde la v2.1.257, Claude Code ignora "defaultMode": "bypassPermissions" cuando está en el .claude/settings.json de un proyecto o en su .claude/settings.local.json. No hay error ni aviso: la sesión arranca en modo Manual y te pide permiso para cada edición y cada comando, con la configuración en apariencia intacta.
Es el mismo trato que ya recibía "auto" en esos dos ficheros. El resto de valores (plan, acceptEdits, default) siguen funcionando desde el proyecto.
Lo que comprobé
Con la v2.1.284 y claude -p, cambiando cada fichero y leyendo el permissionMode que Claude Code declara al arrancar (--output-format stream-json --verbose):
| En el proyecto | En ~/.claude/settings.json |
Arranca en |
|---|---|---|
bypassPermissions |
nada | default (Manual) |
bypassPermissions en settings.local.json |
nada | default (Manual) |
bypassPermissions |
auto, plan o acceptEdits |
default (Manual) |
bypassPermissions |
bypassPermissions |
bypassPermissions |
| nada | bypassPermissions |
bypassPermissions |
bypassPermissions, con --permission-mode bypassPermissions o --dangerously-skip-permissions |
nada | bypassPermissions |
La tercera fila es la trampa: el valor ignorado del proyecto no deja paso al tuyo, te lleva a Manual aunque tengas auto configurado a nivel de usuario. La única combinación que se salva es tener bypassPermissions en los dos sitios, por eso, si ya lo tenías también en tu usuario, no habrás notado nada. En una sesión interactiva sale lo mismo: la barra de estado muestra ⏸ manual mode on con la primera fila y ⏵⏵ bypass permissions on con la cuarta.
Cómo recuperarlo
1. Para todas tus sesiones: en tu configuración de usuario
Borra la línea del .claude/settings.json del proyecto (y de .claude/settings.local.json, si está ahí) y ponla en ~/.claude/settings.json:
{
"permissions": {
"defaultMode": "bypassPermissions"
}
}
2. Para una sola sesión: con el flag
claude --permission-mode bypassPermissions
--dangerously-skip-permissions hace exactamente lo mismo.
3. Para un proyecto concreto: un alias
El repositorio ya no puede activarlo por sí solo, así que la decisión pasa al momento de arrancar. Si solo lo quieres en ciertos proyectos, un alias en tu shell te ahorra escribir el flag:
alias claude-bypass='claude --permission-mode bypassPermissions'
Por qué tiene sentido
.claude/settings.json viaja con el repositorio. Si bastara con ese fichero, abrir Claude Code dentro de un repo ajeno te dejaría sin comprobaciones de permisos sin que tú lo hubieras decidido. La documentación da ese motivo para las sesiones en la nube, que ignoran este ajuste desde cualquier fichero; para la terminal el changelog no explica el porqué, pero el efecto es el mismo: el modo bypass lo activas tú, no el repo.
En la extensión de VS Code no cambia nada, porque nunca leyó el modo de arranque de los ajustes del proyecto. Allí se usa claudeCode.initialPermissionMode en tus ajustes de usuario de VS Code, con el interruptor Allow dangerously skip permissions activado.
La documentación reserva este modo para contenedores y máquinas aisladas. Si lo que buscas es dejar de aprobar diálogos, auto mode los quita con un clasificador que revisa cada acción. Tienes los 6 modos de permisos comparados en otro tip, y lo que --dangerously-skip-permissions sigue sin saltarse, en este otro.
Si lo que buscabas con bypass era dejar de aprobar cada acción, esta guía ordena las alternativas con menos riesgo.
Documentación oficial: Choose a permission mode