-
Permitir a Codex y a Claude Code ejecutar comandos sin confirmación
Cuando usamos asistentes de programación en terminal, como Codex o Claude Code, una de las cosas que más corta el flujo de trabajo es tener que aprobar cada comando, cada edición o cada operación potencialmente sensible. Ese comportamiento tiene sentido por seguridad, dado que estas herramientas pueden leer ficheros, modificar código, ejecutar comandos, instalar dependencias, lanzar tests, borrar archivos o interactuar con Git. Pero también hay casos donde queremos que trabajen de forma más autónoma: por ejemplo, dentro de una máquina virtual, un contenedor, un entorno de laboratorio o un directorio de proyecto sin datos sensibles.
En este artículo veremos cómo ejecutar Codex y Claude Code sin confirmaciones constantes, qué comandos usar y qué riesgos tiene cada modo. Eso sí, no debemos ejecutar estos modos en nuestro $HOME, en /, en /etc, en /var, en /usr, ni en ningún directorio donde tengas información importante. Lo razonable es usarlos dentro de un entorno controlado o, mejor aún, dentro de una máquina virtual, un contenedor systemd-nspawn, Docker, Podman, LXC o una VM de Proxmox.
Codex
Codex permite controlar dos cosas distintas:
- La política de aprobaciones, que decide cuándo Codex debe pedir permiso.
- El sandbox, que decide qué puede tocar Codex cuando ejecuta comandos.
El comando más equilibrado para trabajar sin interrupciones, pero manteniendo cierto aislamiento, es este:
codex --sandbox workspace-write --ask-for-approval never
Con esto le estamos diciendo a Codex:
- Usa el sandbox workspace-write, permitiendo escribir dentro del workspace actual, pero desactivando la red por defecto, incluida la resolucción DNS).
- No pidas aprobación (impide que Codex solicite permiso para salir del sandbox. No concede acceso adicional).
Este modo es útil cuando queremos que Codex pueda editar archivos y ejecutar comandos dentro del proyecto, pero sin darle acceso completo al sistema.
Para activar la red:
codex \ --sandbox workspace-write \ --ask-for-approval never \ -c 'sandbox_workspace_write.network_access=true'
Otra opción es usar –ask-for-approval on-request; así Codex podrá pedir autorización cuando necesite red.
Qué hace exactamente workspace-write
El modo workspace-write permite que Codex pueda escribir SÓLO dentro del directorio del proyecto, aunque desactivando la red por defecto, incluida la resolucción DNS). Ejemplo:
cd ~/LabsIA/mi-proyecto codex --sandbox workspace-write --ask-for-approval never
Con esto Codex podrá trabajar sobre los ficheros del proyecto sin preguntarnos cada dos por tres. La diferencia importante es que aquí no estamos desactivando el sandbox sino eliminando las confirmaciones, pero manteniendo una barrera de permisos.
Usar solo –ask-for-approval never
También podemos ejecutar:
codex --ask-for-approval never
Esto desactiva las solicitudes de aprobación, pero no define explícitamente el sandbox. En ese caso Codex usará la configuración que tenga por defecto o la que hayamos definido en su configuración. No es la opción más clara, porque no deja visible qué permisos reales estás usando.
Modo YOLO
Codex también tiene un modo más agresivo:
codex --yolo
Este comando es un alias de:
codex --dangerously-bypass-approvals-and-sandbox
Esto significa: sin aprobaciones y sin sandbox. Dicho claramente: este modo le da mucha más libertad a Codex. No solo deja de pedir confirmación, sino que además elimina la capa de aislamiento del sandbox. No deberíamos usarlo en nuestro sistema principal. Deberíamos usarlo ÚNICAMENTE dentro de un entorno aislado, por ejemplo:
- Una VM descartable.
- Un contenedor.
- Un entorno de laboratorio.
- Un proyecto sin secretos.
- Un sistema donde puedas romper cosas sin consecuencias.
Ejemplo razonable:
mkdir -p ~/LabsIA/codex-yolo cd ~/LabsIA/codex-yolo git init codex --yolo
Ejemplo poco recomendable:
cd ~ codex --yolo
Peor todavía:
cd / codex --yolo
Alias cómodo
Si vamos a usar este modo con frecuencia, podemos crear un alias.
Opción razonable:
echo "alias codex-auto='codex --sandbox workspace-write --ask-for-approval never'" >> ~/.bashrc source ~/.bashrc
Después lo ejecutamos así:
codex-auto
Opción peligrosa:
echo "alias codex-yolo='codex --yolo'" >> ~/.bashrc source ~/.bashrc
Y luego:
codex-yolo
El alias codex-auto es bastante más sensato para uso normal.
Configuración persistente
También podemos dejarlo configurado en el fichero de configuración de Codex. Editamos:
nano ~/.codex/config.toml
Y añadimos:
approval_policy = "never" sandbox_mode = "workspace-write"
Con esto Codex usará por defecto el modo sin aprobaciones y con escritura limitada al workspace.
Si queremos una configuración más peligrosa, podríamos usar:
approval_policy = "never" sandbox_mode = "danger-full-access"
Pero esto ya se parece más al modo YOLO. No es recomendable salvo en entornos aislados.
Claude Code
Claude Code tiene un sistema parecido de permisos. Por defecto, cuando quiere editar archivos, ejecutar comandos o hacer determinadas acciones, pide aprobación.
Modo bypassPermissions
Para saltarnos esas confirmaciones podemos usar:
claude --dangerously-skip-permissions
Este flag equivale a:
claude --permission-mode bypassPermissions
Modo auto
Si no queremos ir tan lejos, Claude Code también tiene el modo auto:
claude --permission-mode auto
Este modo reduce muchas confirmaciones, pero no es lo mismo que bypassPermissions.
La diferencia práctica es esta:
- auto intenta trabajar con menos interrupciones, pero mantiene comprobaciones de seguridad.
- bypassPermissions salta prácticamente todo el sistema de confirmaciones.
Para trabajar en proyectos reales, auto es más razonable. Para laboratorios aislados, bypassPermissions puede tener sentido.
NOTA: bypassPermissions no se puede activar si claude se está ejecutando como root o con sudo, excepto que «engañemos» a Claude Code haciéndole creer que ya está ejecutándose en un entorno aislado pasándole la variable de entorno IS_SANDBOX=1 antes de ejecutarlo:
IS_SANDBOX=1 claude --dangerously-skip-permissions
Hacer bypassPermissions permanente
Podemos configurar Claude Code para arrancar por defecto en modo bypassPermissions. Editamos:
nano ~/.claude/settings.json
Y dejamos algo parecido a esto:
{ "$schema": "https://json.schemastore.org/claude-code-settings.json", "permissions": { "defaultMode": "bypassPermissions", "skipDangerousModePermissionPrompt": true } }La clave importante es esta:
"defaultMode": "bypassPermissions"
Y esta otra evita el aviso de entrada al modo peligroso:
"skipDangerousModePermissionPrompt": true
Alias cómodo
También podemos crear un alias:
echo "alias claude-yolo='claude --dangerously-skip-permissions'" >> ~/.bashrc source ~/.bashrc
Y lanzarlo así:
claude-yolo
Otra opción menos agresiva:
echo "alias claude-auto='claude --permission-mode auto'" >> ~/.bashrc source ~/.bashrc
Y luego:
claude-auto
Este el equivalente al comando de Codex:
claude --permission-mode auto --allow-dangerously-skip-permissions --settings '{"sandbox":{"enabled":true,"network":{"allowedDomains":["*"]}}}'Para limitar el acceso de red sólo a determinados dominios:
claude --permission-mode auto --allow-dangerously-skip-permissions --settings '{"sandbox":{"enabled":true,"network":{"allowedDomains":["dominio1.com","api.dominio2.com"]}}}'Enlaces oficiales