Sandbox Docker do Codex

Execute Codex a partir de um sandbox Docker do Dagu.

Use uma imagem runner com a Codex CLI e deixe o Dagu executar provider: codex dentro de um container por passo ou raiz. Login ChatGPT funciona quando o container consegue ler um CODEX_HOME em arquivo; runs com API key usam CODEX_API_KEY.

Verificacao de login Codex no Docker
steps:
  - id: codex_login_status
    action: harness.run
    container:
      image: dagu-codex-runner:local
      pull_policy: never
      working_dir: /workspace
      volumes:
        - .:/workspace:ro
        - ${HOME}/.codex:/codex-home
      env:
        - CODEX_HOME=/codex-home
    with:
      provider: shell
      prompt: |
        set -eu
        codex --version
        codex login status

Usa a imagem base publica ghcr.io/openai/codex-universal.

Verifica codex --version e login status antes de chamadas ao modelo.

Suporta CODEX_HOME montado para login ChatGPT.

Suporta CODEX_API_KEY para runs codex exec nao interativos.

01

Imagem runner

Instale Codex na imagem runner e limpe o entrypoint da base para que o Dagu controle o comando. A verificacao de versao deve passar antes do uso no DAG.

Dockerfile
FROM ghcr.io/openai/codex-universal:latest

USER root
RUN apt-get update \
  && apt-get install -y --no-install-recommends ca-certificates curl \
  && rm -rf /var/lib/apt/lists/*

ENV CODEX_NON_INTERACTIVE=1 \
    CODEX_INSTALL_DIR=/usr/local/bin

RUN curl -fsSL https://chatgpt.com/codex/install.sh | sh
RUN codex --version

WORKDIR /workspace
ENTRYPOINT []
CMD ["/bin/bash"]
02

Auth com assinatura ChatGPT

Se a CLI do host ja esta logada com ChatGPT e as credenciais estao em arquivo, monte esse Codex home em um caminho separado e defina CODEX_HOME dentro do container.

  • Nao monte sobre /root/.codex nesta imagem, porque o cache do pacote standalone fica ali.
  • Se o host usa keychain do sistema, crie um CODEX_HOME em arquivo separado para o worker Dagu.
  • auth.json contem access tokens e deve ser tratado como segredo.
03

Run com API key

Para automacao que nao deve reutilizar login ChatGPT, passe CODEX_API_KEY apenas ao passo harness que executa Codex.

Run Codex por passo
steps:
  - id: codex_review
    action: harness.run
    container:
      image: dagu-codex-runner:local
      pull_policy: never
      working_dir: /workspace
      volumes:
        - .:/workspace:ro
      env:
        - CODEX_API_KEY=${CODEX_API_KEY}
    with:
      provider: codex
      prompt: |
        Review this repository and summarize the highest-risk issues.
04

Escopo do container

Use container por passo quando apenas Codex precisa da credencial. Use container raiz apenas quando passos command e Codex devem compartilhar a mesma toolchain e workspace.