Referencias Oficiales: Sandboxing · Config Basics · Cloud Environments · Review
Ruta del currículo
- Primeros Pasos con Codex — Instalación, Primera Tarea y Checkpoints — primeros loops seguros
- Instrucciones de Codex — Cómo Hacer que AGENTS.md Sirva de Verdad — reglas del repo y defaults
- Sandboxing en Codex — Permisos, Approvals y Entornos Cloud — permisos y límites ← Estás aquí
- Diseño de Tareas en Codex — Escribe Prompts Como Issues, No Como Deseos — dar buena forma al trabajo
- Skills de Codex — Convierte Prompts Repetidos en Workflows Reutilizables — convertir trabajo repetido en activos reutilizables
- Subagentes de Codex — Ejecución Paralela y Patrones de Delegación — ejecución paralela y delegación
- MCP en Codex — Conecta Contexto Externo en Vez de Copiarlo y Pegar — conectar sistemas externos
- Reviews y Automatizaciones con Codex — /review, Worktrees e Ingeniería Repetible — ejecutar workflows estables una y otra vez
- Codex Worktrees — Ejecución Paralela Aislada Sin Caos de Branches
- Handoffs en Codex — Convertir Lanes Paralelos en Resultados Listos para Merge
- Loops de Verificación en Codex — Demostrar que Funciona Antes del Merge
- Release Readiness en Codex — Gates Finales Antes de Producción
- Codex Loop Seguro del Primer Día — Flujo Inicial para Evitar Errores Tempranos
- Playbook de Entrega de Equipo en Codex — Operación Intermedia por Lanes
- Gobernanza de Cambios de Alto Riesgo en Codex — Controles Avanzados para Releases Críticas
- Manual Operativo de Codex — Ritmo Diario, Semanal y de Release para Equipos
- Playbook de Recuperación de Incidentes en Codex — Respuesta Determinista Bajo Presión
- Bucle de Hardening Post-Incidente en Codex — De la Recuperación a Controles Duraderos
- Simulacros de Resiliencia Caótica en Codex — Ensayar Fallos Antes de Recibirlos
- Métricas de Resiliencia y SLO en Codex — Medir Confiabilidad Antes del Fallo
- Loops de Persistencia Ralph en Codex — Llevar Tareas Largas a Cierre Verificado
Documentación oficial usada en esta guía
- Diferencia entre
read-only,workspace-writeydanger-full-access— Sandboxing - Combinaciones base de config — Config basics
- Ciclo de vida cloud, setup e internet — Cloud environments
El sandbox no es solo seguridad: también es ergonomía
La conversación equivocada es “¿cómo hago para que Codex tenga más poder?”. La conversación correcta es “¿cómo dejo que haga trabajo normal sin volver la revisión inmanejable?”.
Sandboxing en Codex define qué puede tocar, cuándo debe pedir permiso y qué tan caro sería un error. Si aprietas demasiado, te ahogas en approvals. Si aflojas demasiado, la revisión deja de ser cómoda y el blast radius crece.
La meta operativa es esta:
- Codex no debería pedir permiso para trabajo rutinario y local.
- Sí debería frenar antes de cruzar límites de riesgo.
- El diff resultante debe seguir siendo fácil de revisar y revertir.
Piensa en tres palancas, no en una sola
Mucha gente habla de “el sandbox” como si fuera un único switch. En la práctica, el comportamiento real sale de tres palancas combinadas:
sandbox_mode— qué puede hacer por defecto.approval_policy— en qué momento se detiene para pedir permiso.writable_roots— exactamente dónde puede escribir.
Si configuras solo una de las tres, el modelo mental queda incompleto.
Los modos locales más comunes
La documentación oficial resume así los modos más usados:
| Modo | Qué permite | Cuándo encaja mejor |
|---|---|---|
read-only |
inspección; editar o correr comandos requiere approval | auditoría, exploración, lectura segura |
workspace-write |
leer, editar dentro del workspace y ejecutar comandos rutinarios locales dentro de ese límite | desarrollo diario normal |
danger-full-access |
elimina restricciones del sandbox | automatización rara y de mucha confianza |
OpenAI describe workspace-write como el modo local de baja fricción por defecto.
Eso importa porque te da una pista de diseño: si no tienes una razón fuerte para salirte de ahí, probablemente todavía no la necesitas.
Approval policy: dónde nace la fatiga
El sandbox no suele doler por el nombre del modo. Duele por la frecuencia con la que interrumpe el flujo.
La combinación que aparece una y otra vez en la documentación es:
approval_policy = "on-request"
sandbox_mode = "workspace-write"Ese combo funciona bien como baseline porque deja pasar trabajo típico dentro del repo, pero sigue poniendo una puerta antes de acciones que cruzan el borde.
Cómo leer el tradeoff real
| Síntoma | Lo que suele significar | Ajuste más probable |
|---|---|---|
| “Pide approval cada dos minutos” | el límite está demasiado estrecho para el trabajo diario | revisar primero sandbox_mode y writable_roots |
| “No pide casi nada, pero revisar me da nervios” | abriste demasiado el perímetro | volver a cerrar permisos o reforzar checkpoints + review |
| “A veces pide approval por cosas raras” | la frontera no coincide con cómo trabaja tu repo | afinar rutas escribibles y comandos esperados |
La clave es distinguir approval fatigue de riesgo legítimo. No toda interrupción es mala. Pero si las pausas aparecen en acciones rutinarias y previsibles, el problema suele ser la configuración, no el usuario.
writable_roots decide el blast radius real
Los docs de Sandboxing señalan que, si necesitas trabajar sobre más de un directorio, puedes extender la escritura con writable roots en vez de desactivar el sandbox entero. Ese detalle cambia muchísimo la práctica diaria.
Buenos defaults
- el root del repo actual
- quizá un directorio temporal controlado
- como mucho, una segunda carpeta hermana si la tarea realmente la necesita
Defaults peligrosos
- todo tu home
- varios proyectos no relacionados
- carpetas con secretos, notas personales o repos fuera del flujo actual
Una regla útil: si no te sentirías cómodo viendo ese directorio en un diff inesperado, no debería ser writable root por defecto.
Local y cloud: modelos mentales distintos
Muchos tropiezos vienen de mezclar cómo se comporta Codex local con cómo funciona Codex cloud. No son lo mismo.
| Aspecto | Local | Cloud |
|---|---|---|
| Dónde corre | tu máquina | contenedor administrado por OpenAI |
| Qué suele importar más | sandbox local, approvals, writable roots | setup, internet, variables de entorno, reproducibilidad |
| Estado implícito | muy fácil depender sin querer de herramientas ya instaladas | el contenedor expone rápido lo que nunca declaraste |
| Rollback típico | Git local, checkout, revert, stash | rerun limpio + Git + config reproducible |
| Fuente clásica de confusión | permisos demasiado anchos o estrechos | asumir que cloud “ya sabe” preparar tu entorno |
La pregunta correcta no es “¿por qué cloud no hace lo mismo que local?” Sino: “qué parte de mi éxito local dependía de estado que nunca formalicé?”
En cloud, setup es el contrato operativo
Los docs de Cloud Environments describen un ciclo claro:
- Codex crea un contenedor y hace checkout del repo.
- Ejecuta tu setup script.
- Aplica la política de internet.
- Entra la fase del agente para editar y verificar.
Dos hechos oficiales importan muchísimo:
- los setup scripts corren con acceso a internet
- el acceso a internet en la fase del agente está apagado por defecto
Eso te da una guía directa: si algo necesita descargar dependencias, hacer bootstrap, preparar toolchains o generar artefactos base, normalmente pertenece a setup y no al loop de edición.
El borde de setup: qué sí y qué no meter ahí
Setup debe dejar el entorno listo para que el agente trabaje. No debe “resolver la tarea por adelantado”.
Sí conviene poner en setup
- instalación de dependencias
- pinning de runtimes o toolchains
- codegen repetible
- preparación de datos de test
- bootstrap de compilaciones nativas
- pasos de warming o caché que no requieran juicio humano
No conviene poner en setup
- implementar la feature
- mutar archivos de producto como parte silenciosa del arranque
- decisiones que dependan de leer el diff o del contexto del turno
- hacks temporales que solo existen para “hacer pasar” una tarea concreta
Un setup bueno es reproducible, declarativo y aburrido. Si cada tarea necesita explicar de nuevo cómo levantar el entorno, tu problema no es el prompt: es setup.
Variables de entorno, secretos y límites de exposición
Cloud Environments distingue entre variables de entorno y secretos:
- las environment variables están disponibles durante toda la tarea, incluyendo setup y agent phase
- los secrets solo están disponibles para los setup scripts y se eliminan antes de la fase del agente
Eso tiene implicaciones prácticas:
- si el agente necesita leer algo durante la edición, no asumas que puede ver un secret de setup
- si un dato solo se necesita para instalar o autenticar bootstrap, mejor dejarlo como secret de setup que exponerlo toda la sesión
- si dependes de credenciales en tiempo de ejecución, diseña explícitamente ese límite en vez de descubrirlo a mitad de una tarea
Review y permisos siempre van juntos
La documentación de Review dice que el panel se centra por defecto en uncommitted changes, y puede cambiar a:
- cambios contra la base branch
- cambios del último turno
- staged vs unstaged cuando trabajas localmente
Esto conecta directo con sandboxing. Cuanto más ancho sea el permiso, más necesaria es una disciplina de revisión explícita.
Traducción práctica
- sandbox más estricto → más pausas, pero el espacio de daño es menor
- sandbox más amplio → menos pausas, pero tu rutina de review tiene que ser mejor
Si amplías permisos y no mejoras /review, /diff, checkpoints o hábitos de verificación, solo cambiaste fricción por riesgo oculto.
Configuraciones sensatas para empezar
Baseline local de baja fricción
approval_policy = "on-request"
sandbox_mode = "workspace-write"A eso súmale writable roots estrechos. Ese detalle importa más que añadir una configuración “inteligente” extra.
Cuándo ampliar writable roots
Amplía raíces escribibles cuando:
- la tarea necesita tocar dos carpetas hermanas del mismo proyecto
- el repo genera artefactos en un directorio controlado fuera del root
- tienes un workspace multi-paquete donde la frontera real no coincide con un solo folder
No las amplíes solo para “que deje de molestar”. Primero confirma que la molestia viene de una frontera mal diseñada.
Cuándo evitar danger-full-access
Evítalo si:
- todavía estás afinando instrucciones del repo
- el diff de salida aún te sorprende con frecuencia
- estás onboarding a alguien nuevo
- no tienes una rutina clara de review y rollback
En otras palabras: más poder no arregla un flujo inmaduro.
Fallos típicos y cómo diagnosticarlos rápido
| Problema | Diagnóstico habitual | Primera corrección |
|---|---|---|
| “Me pide approval para casi todo” | read-only o roots demasiado estrechos |
pasar a workspace-write o revisar fronteras |
| “Funciona local, falla en cloud” | dependías de estado local no modelado | mover bootstrap a setup |
| “Cloud no ve algo que instalé” | se instaló manualmente fuera del setup | declarar instalación en setup |
| “El agente no encuentra credenciales” | el dato estaba como secret solo de setup | rediseñar exposición o el paso que lo necesita |
| “Ahora corre más libre, pero revisar cuesta” | ampliaste permisos sin subir rigor de review | usar review por scope y checkpoints más frecuentes |
Un playbook simple para no pasarte ni quedarte corto
Si estás empezando
- local primero
workspace-write+on-request- writable roots estrechos
- tareas pequeñas y reversibles
- review siempre al final
Si ya sientes approval fatigue real
- identifica qué acción te interrumpe demasiado
- revisa si el problema es el modo o el límite de escritura
- amplía solo la parte necesaria
- vuelve a medir si mejoró la fricción sin disparar el riesgo
Si migras un flujo a cloud
- documenta los comandos reales de verificación
- mueve bootstrap reproducible a setup
- no asumas internet en agent phase
- valida explícitamente qué necesita secrets y qué no
Checklist rápido antes de abrir más permisos
- ¿El cuello de botella es de verdad approval fatigue y no prompt vago?
- ¿La tarea cabe dentro de
workspace-writesi ajusto mejor los writable roots? - ¿Tengo checkpoints o rollback claros si algo sale mal?
- ¿La revisión final sigue siendo manejable en tamaño y alcance?
- ¿En cloud, el setup deja el entorno listo sin resolver la tarea por mí?
- ¿Estoy separando bien environment variables de secrets de setup?
Regla de cierre
Empieza con límites más estrechos. Ábrelos solo cuando la fricción ya sea un problema demostrado. Y cada vez que amplíes autonomía, sube también la calidad del review, los checkpoints y la claridad del entorno.
El mejor sandbox de Codex no es el más poderoso. Es el que tu equipo puede confiar una y otra vez.