--dangerously-skip-permissions inicia Claude Code en modo bypassPermissions, así que las llamadas a herramientas se ejecutan sin preguntarte antes. Es la forma más rápida de acabar con las peticiones, y también la más arriesgada. La propia documentación de Anthropic dice que se use solo en entornos aislados, como contenedores o VMs. Normalmente no lo necesitas. Unas cuantas reglas allow, el modo auto o un sandbox eliminan la mayoría de las peticiones y mantienen las barreras.
Este artículo explica qué se salta el flag, qué no, dónde falla y cuáles son las opciones más seguras. Al final muestra cómo resuelve AgentVera el mismo problema cuando hay varios agentes en marcha a la vez.
Qué hace realmente el flag
Claude Code tiene modos de permisos. El flag es un atajo para uno de ellos:
claude --dangerously-skip-permissions
# same as
claude --permission-mode bypassPermissions
En este modo Claude edita archivos, ejecuta comandos de shell y llama a herramientas sin detenerse. Según la documentación de los modos de permisos, algunas cosas lo siguen frenando:
- Reglas deny. Una regla deny en tus ajustes bloquea una herramienta en todos los modos, incluido bypass.
- Reglas ask explícitas. Si escribiste una regla
ask, sigue preguntando. - Preguntas que te hace Claude. Claude todavía puede detenerse para hacerte una pregunta.
- Borrado de rutas críticas.
rmormdirsobre la raíz del sistema de archivos, carpetas de primer nivel, tu carpeta personal o el directorio de trabajo y sus padres siguen pidiendo confirmación.
Las reglas allow no tienen efecto en modo bypass, porque ya está todo permitido. También se permiten las escrituras en rutas protegidas como .git y .claude.
Algunos detalles más importan en la práctica:
- La primera vez que lo usas de forma interactiva, Claude Code muestra un diálogo de advertencia. Al aceptarlo se escribe
skipDangerousModePermissionPrompt: trueen~/.claude/settings.json. - En una ejecución no interactiva (
claude -p) no hay diálogo. - En Linux y macOS el flag se niega a ejecutarse como root o con sudo. La comprobación se omite dentro de un sandbox reconocido.
- No puedes pasar a bypass desde una sesión que no empezó con él.
--allow-dangerously-skip-permissionsañade el modo al ciclo de Shift+Tab sin activarlo. - Los administradores pueden desactivar el modo para todos con
permissions.disableBypassPermissionsMode: "disable"en los ajustes gestionados.
Los riesgos
La documentación lo dice claramente: el modo bypass «no ofrece protección contra la inyección de prompts ni contra acciones no deseadas». Esto es lo que significa en el día a día.
Inyección de prompts
Claude lee archivos, páginas web, texto de issues y salida de herramientas. Si algo de eso contiene instrucciones, el modelo podría seguirlas. Con las peticiones activadas, ves ese curl raro a un host desconocido antes de que se ejecute. En modo bypass te enteras después.
Comandos destructivos que no están en la lista de críticos
La comprobación de rutas críticas cubre rm sobre tu carpeta personal o la raíz del proyecto. No cubre git reset --hard, git clean -fd, una tabla de base de datos eliminada, un force push ni una migración lanzada contra el entorno equivocado. Todo eso se ejecuta sin pedir confirmación.
Secretos y el resto de tu máquina
En tu portátil, Claude se ejecuta como tú. Puede leer tus claves SSH, tus credenciales en la nube y tus archivos .env, y puede acceder a la red. Un error o una instrucción inyectada tienen toda tu cuenta con la que trabajar.
Los checkpoints no lo cubren todo
Claude Code crea un checkpoint antes de cada prompt, y /rewind (o Esc dos veces) restaura el código, la conversación o ambos. Pero la documentación de checkpoints dice que los cambios hechos por comandos de Bash como rm, mv y cp no se registran, ni tampoco los cambios fuera de la sesión. Rewind no sustituye a git.
Formas más seguras de reducir las peticiones de permiso
La mayoría recurre al flag porque las peticiones los frenan. Estas opciones se ocupan de las peticiones y mantienen las barreras.
1. Elige el modo de permisos adecuado
| Modo | Se ejecuta sin preguntar | Ideal para |
|---|---|---|
default (Manual) | Solo lecturas | Código desconocido, repositorios sensibles |
acceptEdits | Lecturas, edición de archivos, comandos de archivos comunes como mkdir, mv, cp | Programación diaria en la que revisas el diff |
plan | Solo lecturas, sin editar código fuente | Explorar y planificar antes de un cambio |
auto | Todo, con un clasificador que comprueba antes cada acción | Tareas largas en las que confías en la dirección |
dontAsk | Solo herramientas preaprobadas; todo lo demás se deniega | CI y scripts |
bypassPermissions | Todo salvo los casos anteriores | Solo contenedores y VMs aislados |
Shift+Tab recorre los modos dentro de una sesión. --permission-mode elige uno al arrancar, y permissions.defaultMode en los ajustes fija tu modo por defecto.
El modo auto es el punto medio que quiere la mayoría. Un modelo clasificador revisa cada acción antes de ejecutarla. Bloquea las acciones que van más allá de lo que pediste, que apuntan a infraestructura que no reconoce o que parecen dirigidas por contenido hostil. Si bloquea tres veces seguidas o 20 en total, el modo auto se pausa y vuelven las peticiones normales. Se aplican dos límites: necesita un modelo compatible, y la documentación dice que «reduce las peticiones de permiso pero no garantiza la seguridad». Las versiones recientes de Claude Code inician las sesiones interactivas en modo auto por defecto. Revisa /permissions para ver en qué modo estás.
2. Escribe reglas allow y deny
Las reglas de permisos viven en settings.json y las aplica Claude Code, no el modelo. Se comprueban en orden: deny, luego ask, luego allow. Gana la primera coincidencia, así que una regla allow nunca puede anular una deny.
{
"permissions": {
"allow": ["Bash(npm run test *)", "Bash(npm run lint)", "Bash(git diff *)"],
"ask": ["Bash(git commit *)"],
"deny": ["Bash(git push *)", "Read(./.env)"]
}
}
Usa /permissions para ver y editar reglas en una sesión. Permite los comandos que ejecutas cincuenta veces al día, como tests, lint y git de solo lectura. Deniega los que nunca quieres que ejecute un agente. CLAUDE.md es una guía para el modelo. No cambia los permisos.
Para scripts, dontAsk con una lista corta de allow es más estricto que bypass:
claude -p "run the test suite and fix failures" \
--permission-mode dontAsk --allowedTools "Bash(npm test)" "Read" "Edit"
3. Activa el sandbox de Bash
La documentación de sandboxing describe un sandbox a nivel de sistema operativo que limita a qué archivos y dominios de red pueden llegar los comandos de shell. Actívalo con /sandbox o sandbox.enabled: true. Funciona en macOS, Linux y WSL2. Se aplica solo a los comandos de shell. Las herramientas de archivos, los servidores MCP y los hooks se ejecutan fuera de él.
4. Si te saltas los permisos, aísla primero
A veces bypass es la decisión correcta, como en una ejecución larga sin supervisión sobre código desechable. Entonces sigue la configuración de la documentación: un contenedor, VM o dev container, un usuario no root, sin secretos montados y, idealmente, sin acceso a internet. La forma habitual sin supervisión es:
claude -p "<task>" --dangerously-skip-permissions
Ejecútalo dentro del contenedor, no en tu portátil.
5. Trabaja en un worktree y haz commits a menudo
Un git worktree da al agente su propia carpeta y rama. Si destroza la rama, borras el worktree y main ni se entera. Los commits frecuentes te dan puntos de restauración que también cubren lo que cambió Bash, algo que los checkpoints no pueden.
Una tabla de decisión rápida
| Situación | Qué usar |
|---|---|
| Sigues aprobando los mismos comandos de tests y lint | Reglas allow |
| Quieres menos peticiones pero con una comprobación de seguridad | Modo auto |
| Trabajo de CI o script con un conjunto conocido de herramientas | dontAsk más --allowedTools |
| Los comandos de shell no deben tocar la red ni tu carpeta personal | Sandbox de Bash |
| Ejecución larga sin supervisión sobre código desechable | Bypass dentro de un contenedor, como no root |
| Credenciales de producción en la máquina | Nunca bypass |
Cómo lo gestiona AgentVera
Cuando ejecutas varios agentes, las peticiones se multiplican. Cinco agentes son cinco sitios que pueden estar esperando un sí. AgentVera te da las mismas opciones por agente, además de formas de responder a las peticiones desde cualquier sitio.
Un nivel de permisos para cada agente
En el diálogo del agente y en el selector de modelo hay un campo Permissions con tres opciones:
- Ask: la CLI pregunta como de costumbre.
- Auto: el modo auto propio de la CLI. Las ediciones y los comandos seguros siguen adelante, los arriesgados siguen deteniéndose. Para Claude Code esto inicia el agente con
--permission-mode auto. - Full access: nunca pregunta. Para Claude Code es
--dangerously-skip-permissions. La pista de la app lo dice claro: «Best in a worktree or container».
La cabecera del agente muestra una insignia como «Permissions: Auto». Codex y otras CLI tienen sus propios equivalentes. Cambiar el nivel reinicia el agente, y la conversación continúa. Si una política de equipo limita las aprobaciones, los agentes siguen preguntando.
Aprobar automáticamente las peticiones seguras (Pro y Team)
La aprobación automática es un camino intermedio para los agentes de Claude Code. Con Auto-approve safe requests activado, AgentVera responde solo a las peticiones por las que Claude habría preguntado de todas formas, y solo a las seguras:
- herramientas de lectura como Read, Glob, Grep y LS,
- comandos de shell y git de solo lectura,
- comandos de test, lint, typecheck y build para npm, pnpm, yarn, bun, pytest, cargo, go y más.
Los comandos con >, $() o comillas invertidas nunca se aprueban automáticamente. Tus propias reglas allow y deny de Claude siguen aplicándose. Also approve file edits inside the project está desactivado por defecto. Cuando se activa, cubre las ediciones dentro del proyecto o worktree y nunca toca .git ni .env. La lista Never auto-approve empieza con git push, npm publish, rm, git reset --hard y git clean, y puedes añadir las tuyas. Recent auto-approvals muestra lo que pasó en la sesión actual.
El interruptor viene activado por defecto, pero solo surte efecto en Pro y Team. En el plan gratuito, las peticiones siguen llegándote a ti.
Responde desde tu escritorio, tu móvil o Telegram
Las peticiones que quedan te llegan estés donde estés. En el escritorio hay una cola de aprobaciones en la barra de estado, ⇧⌘A salta al agente que lleva más tiempo esperando y el Dock muestra una insignia. Si dejas una aprobación esperando, llega un recordatorio a los cinco minutos. Consulta notificaciones y aprobaciones.
Lejos del escritorio:
- Telegram envía las peticiones de aprobación con botones Approve y Deny.
- La vista de móvil en app.agentvera.dev muestra las aprobaciones con Approve y Reject.
- La app móvil envía notificaciones push para ellas.
Como responder a una petición lleva segundos, tienes menos motivos para recurrir a Full access.
Agentes en Docker para un aislamiento real
Para las ejecuciones en las que sí quieres Full access, inicia el agente con Run in a Docker container. Funciona con los agentes locales de Claude Code y Codex, y está en todos los planes. Consulta agentes en Docker.
- El contenedor solo ve la carpeta del proyecto, no tus claves SSH ni el resto de tu ordenador.
- Cuando el agente se detiene, el contenedor se elimina. Solo quedan los cambios en la carpeta del proyecto.
- Puedes fijar límites de CPU y memoria.
- Los hooks y MCP siguen funcionando.
Necesita Docker Desktop, Colima u OrbStack. Es el entorno aislado que pide la documentación de Claude Code, sin que tengas que escribir un Dockerfile.
Checkpoints en cada turno
Los checkpoints de AgentVera hacen una instantánea de la carpeta de trabajo en una ref de git oculta al inicio de cada turno, y conservan los últimos 60 turnos por agente. Como la instantánea es de la propia carpeta, también capturan los archivos que cambió un comando de shell. Puedes ver qué archivos tocó un turno, deshacer el turno y deshacer el deshacer. Tus ramas, el índice y el stash no se tocan.
Lista de comprobación antes de saltarte los permisos
- ¿Podrían las reglas allow o el modo auto eliminar las peticiones en su lugar?
- ¿Está el agente en un contenedor o VM, no en tu máquina principal?
- ¿Se ejecuta como usuario no root?
- ¿Están fuera de su alcance los secretos, las claves SSH y las credenciales de producción?
- ¿El acceso a la red está limitado o desactivado?
- ¿Está el trabajo en su propia rama o worktree, con un commit reciente al que volver?
- ¿Cubren las reglas deny
git pushy todo lo demás que nunca quieres?
Para terminar
--dangerously-skip-permissions es una herramienta real con un uso estrecho: entornos desechables y aislados. Para el trabajo diario, las reglas allow y deny, el modo auto y el sandbox eliminan la mayoría de las peticiones y dejan el control en tus manos. Si ejecutas muchos agentes, da a cada uno el nivel que necesita. Deja pasar las peticiones seguras por sí solas, responde el resto desde el móvil y pon en un contenedor a los agentes que necesiten Full access.
Para seguir leyendo:
- Aprobación automática
- Agentes en Docker
- Checkpoints y repetición
- Ejecutar varios agentes de Claude Code
- Agente Claude Code
Para probar AgentVera, empieza en la página de inicio.