Herramientas de IA para Programar

Modos de Sandbox y Aprobación de Codex: Guía Completa (2026)

21 ago 202611 min de lectura

Codex divide la seguridad en dos ajustes independientes: el modo sandbox (lo que el agente PUEDE hacer) y la política de aprobación (cuándo debe PREGUNTAR antes de hacerlo). El valor por defecto es workspace-write + on-request. Nunca combines danger-full-access con never (ni con --yolo) fuera de un entorno desechable. Esta guía cubre los tres modos de sandbox, las tres políticas de aprobación, cómo cambiarlos con la CLI/config.toml, la nueva capa Permission Profiles y una tabla de decisión para elegir el par correcto en menos de un minuto.

- Los mecanismos de sandbox/aprobación de Codex (y la nueva capa Permission Profiles) cambian rápido, y la documentación oficial está actualmente repartida en varias rutas de learn.chatgpt.com; los detalles de abajo se contrastaron con la documentación oficial al momento de escribir (08/2026) - verifica la documentación en vivo antes de depender de ella.

Modo sandbox vs. política de aprobación - dos preguntas distintas

Codex se hace a sí mismo dos preguntas completamente separadas antes de hacer nada: "¿Qué me está PERMITIDO hacer?" (modo sandbox) y "¿Cuándo debo PREGUNTAR primero?" (política de aprobación). Según la documentación oficial learn.chatgpt.com/codex/sandboxing, las dos capas funcionan de forma independiente - un sandbox de par en par no significa que Codex deje de preguntarte, y una política de aprobación estricta no significa que Codex quede automáticamente limitado en lo que puede tocar.

¿Nuevo en Codex? Lee qué es OpenAI Codex antes de esta inmersión en la configuración. Una línea para evitar confusiones: este es el propio sistema de permisos de Codex - no tiene nada que ver con instalar AgentKit encima de él.

Los tres modos de sandbox

El modo sandbox decide qué puede tocar Codex en tu máquina SIN esperar a que confirmes. Según la documentación oficial de sandbox (consultada en 08/2026), hay tres niveles:

Modo sandboxLo que Codex puede hacerNivel de riesgo
read-onlySolo lee archivos; no puede escribir/modificar nada en el disco ni ejecutar comandos con efectos secundarios.Bajo
workspace-write (por defecto)Lee/escribe dentro del directorio del workspace actual (más algunas rutas temporales del sistema); cualquier cosa fuera de ese ámbito necesita aprobación aparte.Medio
danger-full-accessSin frontera de sistema de archivos - lee/escribe en cualquier lugar donde el proceso de Codex tenga permiso a nivel de SO para tocar.Alto

workspace-write es lo que Codex elige por defecto cuando no especificas nada - también es lo que yo uso para casi toda la programación diaria, ya que es lo bastante amplio para trabajo real sin abrir la máquina entera.

Ejemplo rápido: abre Codex en un repositorio en el que ya estás programando, no cambies nada, y usará workspace-write por defecto - libre para editar archivos dentro del repositorio. Pero si intenta escribir fuera de ese ámbito (digamos, tocar ~/.ssh/ u otro directorio del sistema), eso es una acción fuera del sandbox - se bloquea del todo o dispara un paso de pregunta aparte, según la política de aprobación que esté fijada al mismo tiempo.

Las tres políticas de aprobación

La política de aprobación decide cuándo Codex debe DETENERSE y preguntarte, algo completamente separado de lo que tiene permitido hacer. Según la documentación oficial de aprobaciones y seguridad de agentes (consultada en 08/2026), hay tres niveles:

Política de aprobaciónCuándo pregunta Codex
untrustedPregunta antes de la mayoría de los comandos, incluso los que parecen inofensivos - el ajuste más cauteloso.
on-request (por defecto para carpetas con control de versiones)Codex decide por sí mismo qué comandos son seguros de ejecutar directamente, y solo pregunta cuando juzga que un comando es arriesgado o está fuera del sandbox actual.
neverNunca pregunta - avanza directo según el modo sandbox fijado, incluidos los comandos arriesgados.

La parte que la mayoría de las guías pasa por alto: la documentación oficial afirma que on-request es el valor por defecto "para carpetas con control de versiones" - no un valor por defecto incondicional para toda carpeta. Casi todas las demás guías que revisé (en ambos idiomas) se saltan esa condición. Si estás ejecutando Codex fuera de un directorio versionado con git, no des por hecho que on-request está activo - revisa tu configuración real.

Cómo cambiar de modo - /permissions, flags de la CLI, config.toml

Tres formas comunes de fijar el modo sandbox + la política de aprobación:

  • En la sesión (CLI): escribe /permissions para abrir el selector y elegir directamente.
  • IDE/escritorio: un control de permisos justo en el compositor.
  • Flags de inicio: --sandbox y --ask-for-approval.
  • Configuración persistente: las claves sandbox_mode y approval_policy en ~/.codex/config.toml.

Un ejemplo real para un pipeline de CI (nadie cerca para responder los prompts):

codex --sandbox read-only --ask-for-approval never

Este par funciona en ejecuciones no interactivas porque Codex nunca se detiene a esperar entrada (never), mientras que read-only evita que escriba nada inesperado. Esta configuración se combina directamente con la forma en que montas el AGENTS.md para Codex - mira la guía de AGENTS.md para Codex para unir ambos en un solo flujo de trabajo.

Permission Profiles - la capa de configuración más nueva

Más allá del par clásico sandbox_mode/approval_policy de arriba, Codex tiene una capa de configuración más nueva: los Permission Profiles, confirmados mediante una consulta directa a learn.chatgpt.com/docs/permissions (consultada en 08/2026). Cómo funciona:

  • La clave default_permissions apunta a un perfil integrado o personalizado.
  • Tres perfiles integrados: :read-only, :workspace, :danger-full-access - que corresponden a grandes rasgos a los tres modos de sandbox de arriba, solo que con otros nombres.
  • Puedes escribir tu propio perfil con una tabla [permissions.<name>], declarando qué rutas son legibles, escribibles o explícitamente denegadas.
  • El acceso a la red va por separado: network.enabled (red encendida/apagada) es distinto de features.network_proxy (enrutado a través de un proxy controlado).

Con sinceridad: casi nadie cubre esto en los resultados de búsqueda que revisé mientras investigaba este texto - solo un artículo lo menciona, y de forma aislada, nunca puesto junto al par sandbox_mode/approval_policy para compararlos. Y una cosa que la documentación oficial no deja clara: la precedencia si fijas a la vez default_permissions y sandbox_mode/approval_policy. Algunas fuentes no oficiales suponen que gana sandbox_mode, pero no encontré una página de documentación primaria que lo confirme directamente - así que no lo tomes como un hecho. La jugada segura en la práctica: elige un sistema y sé consistente - o el par heredado completo, o los Permission Profiles completos, no los mezcles.

Un ejemplo conceptual para que te imagines el valor real de esta capa (no es sintaxis de campo oficial confirmada): quieres un perfil que lea todo el repositorio pero que solo pueda escribir en un directorio logs/, negando explícitamente un par de rutas sensibles como .env o .ssh/ aunque, de otro modo, cayeran dentro del ámbito de lectura más amplio. Ese es un control por ruta que el par clásico sandbox_mode/approval_policy (solo tres niveles amplios) no puede dar. Verifica la sintaxis exacta de los campos en la documentación en vivo antes de depender de ella, ya que es una parte de la documentación añadida hace poco.

Tabla de decisión - qué modo para qué tarea

Esta es la tabla que de verdad uso para decidir en menos de un minuto, en lugar de repensarlo cada vez que abro Codex:

Escenariosandbox_modeapproval_policyPor qué
Solo lectura, planificaciónread-onlyon-requestNada que escribir, así que es seguro aunque Codex evalúe mal un riesgo.
Programación diaria en un repositorio local (el propio valor por defecto de Codex)workspace-writeon-requestAcceso suficiente para trabajo real, mientras Codex sigue preguntando en comandos arriesgados o fuera del sandbox.
Tareas locales repetitivas y de confianzaworkspace-writeuntrustedAlgo contraintuitivo: usa untrusted (pregunta más) en tareas repetitivas para confirmar rápido, paso a paso, en vez de saltártelo todo con never.
CI/CD, no interactivoread-only (o un workspace-write de ámbito muy acotado)neverNo hay nadie para hacer clic en aprobar, así que tiene que ser never; mantén el sandbox lo más ajustado posible para compensar.
Necesitas de verdad acceso a todo el sistemadanger-full-accesson-requestAún deja una capa de pregunta antes de que Codex toque algo peligroso fuera del workspace.
Solo sandbox desechable (contenedor/VM de usar y tirar)danger-full-accessnever/--yoloEl par más arriesgado solo es aceptable cuando la máquina entera es desechable tras la sesión.

Una línea para recordar: nunca combines danger-full-access con never/--yolo fuera de un entorno desechable. Es la única fila de esta tabla que renuncia a las dos capas de seguridad a la vez.

La lección de seguridad en producción - un bofetón de verdad

La tabla de arriba suena razonable sobre el papel, pero la razón de que exista no es teórica. El propio artículo de este sitio cómo usar /goal con eficacia cuenta el "Slap #1": el objetivo estaba escrito con claridad - desplegar solo en staging - pero tras unos cuantos auto-compactados, el agente se salió de contexto, olvidó el límite y desplegó directo a producción, incluso con un hook que le recordaba la tarea después de cada compactación.

Ese es justo el fallo que esta tabla de decisión evita: la línea de seguridad tiene que vivir en un sandbox_mode/approval_policy real (un límite técnico que Codex debe obedecer), no en una nota dentro de un prompt o un objetivo (algo que un agente puede olvidar tras suficiente compactación de contexto). Si tu entorno de producción está en cualquier punto al alcance de Codex, no fijes approval_policy = never para ese ámbito, por muy segura que estés de que ya le dijiste que no lo hiciera.

Dicho de otro modo, la tabla de decisión de arriba no es un ejercicio teórico para colgar en la pared. Es la respuesta técnica a la pregunta exacta que plantea el Slap #1: cómo detener a un agente persistente que se ha salido de contexto para que no toque algo que no debería. Un recordatorio en un prompt se puede olvidar; un límite fijado en sandbox_mode/approval_policy no.

AgentKit se ejecuta dentro del modo que elijas

Para ser directa sobre el límite: AgentKit no toca ni evade el sandbox ni la política de aprobación de Codex. Es solo una capa de skills/flujo de trabajo que se ejecuta dentro del modo que esté activo en ese momento - si fijas read-only + untrusted, AgentKit queda atado a ese mismo límite, sin ningún privilegio propio. Instalación para Codex: ak kit init engineer --target codex, luego llama a $ak:cook dentro de una nueva sesión de Codex - mira cómo usar AgentKit con Codex para el recorrido completo.

¿Quieres workflows/skills prefabricados que se queden dentro del sandbox que elijas? El AgentKit Engineer Kit añade ak:cook, ak:code-review, ak:ship para Codex - no cambia ninguno de los permisos existentes de Codex, sigues controlando el sandbox/la aprobación exactamente como antes.

Consigue el AgentKit Engineer Kit - 20% de descuento, ahora $79.20 →

Preguntas frecuentes (FAQ)

¿Cuál es el modo sandbox por defecto de Codex?

workspace-write - Codex puede leer/escribir dentro del directorio del workspace actual, sin acceso libre a todo el sistema. Se combina con la política de aprobación por defecto, on-request, para carpetas con control de versiones.

¿on-request siempre pregunta antes de cada comando?

No. on-request deja que Codex decida por sí mismo qué comandos son seguros de ejecutar directamente, y solo pregunta cuando juzga que un comando es arriesgado o está fuera del ámbito del sandbox actual - a diferencia de untrusted, que pregunta antes de la mayoría de los comandos.

¿Cuál es la diferencia entre danger-full-access y --yolo?

danger-full-access es un valor de sandbox_mode (elimina la frontera del sistema de archivos). --yolo (la flag que evade ambos) va más lejos - agrupa el sandbox más amplio con una política de aprobación never en una sola flag, lo que la hace más arriesgada que danger-full-access por sí solo. Confirma el nombre exacto de la flag en tu instalación antes de usarla, ya que esta superficie cambia a menudo.

¿Se pueden usar Permission Profiles y sandbox_mode juntos?

Técnicamente puedes declarar ambos, pero la documentación oficial no aclara cuál gana en un conflicto. No tomes como confirmada ninguna afirmación de precedencia - el enfoque seguro es elegir un sistema (heredado o Permission Profiles) y mantener la consistencia.

¿Qué modo deberías usar para CI/CD?

read-only (o un workspace-write de ámbito muy acotado) combinado con never - como no hay nadie para responder los prompts en un pipeline, la aprobación tiene que ser never, así que compénsalo con el sandbox más ajustado que siga funcionando.

¿/permissions cambia mi config.toml de forma permanente?

Ese es un detalle que conviene verificar en vivo antes de depender de él - el comportamiento puede diferir entre un cambio solo de sesión y algo realmente escrito de vuelta en config.toml. La comprobación más segura es abrir config.toml después de cambiar con el selector y confirmar tú misma si se guardó.

Conclusión

El modelo de seguridad de Codex se reduce a dos capas independientes: el modo sandbox (lo que puede hacer) y la política de aprobación (cuándo debe preguntar). El valor por defecto workspace-write + on-request encaja en casi toda la programación diaria; nunca combines danger-full-access con never/--yolo fuera de un entorno desechable. Usa la tabla de decisión de arriba en lugar de adivinar, y recuerda la lección del Slap #1: la línea de seguridad pertenece a la configuración, no a una nota en un prompt.

J

Jasmine

Autora · Jasmine Daily

La autora detrás de Jasmine Daily, anotando pensamientos, experiencias y momentos cotidianos. Honesta, sin prisa, imperfecta.

Jasmine Daily

Hay más esperando a ser leído.

Si este texto te llegó, explora algunas páginas más del diario.

Leer a continuación

Entradas relacionadas