GitHub Action de Codex
Activa acciones de Codex desde eventos de GitHub
Usa GitHub Action de Codex (openai/codex-action@v1) para ejecutar Codex en trabajos de CI/CD, aplicar parches o publicar revisiones desde un flujo de trabajo de GitHub Actions.
La acción instala Codex CLI, inicia el proxy de Responses API cuando proporcionas una API key y ejecuta codex exec con los permisos que especifiques.
Usa la acción cuando quieras:
- Automatizar los comentarios de Codex sobre solicitudes de incorporación de cambios o versiones sin tener que gestionar el CLI por tu cuenta.
- Condicionar los cambios a comprobaciones de calidad realizadas por Codex como parte de tu canalización de CI.
- Ejecutar tareas repetibles de Codex (revisión de código, preparación de versiones, migraciones) desde un archivo de flujo de trabajo.
Para ver un ejemplo de CI, consulta el Modo no interactivo y explora el código fuente en el repositorio openai/codex-action.
Requisitos previos
- Almacena tu clave de OpenAI como un secreto de GitHub (por ejemplo,
OPENAI_API_KEY) y haz referencia a ella en el flujo de trabajo. - Ejecuta el trabajo en un ejecutor de Linux o macOS. En Windows, establece
safety-strategy: unsafe. - Obtén una copia de tu código antes de invocar la acción para que Codex pueda leer el contenido del repositorio.
- Decide qué instrucciones quieres ejecutar. Puedes proporcionar texto en línea mediante
prompto indicar un archivo confirmado en el repositorio conprompt-file.
Flujo de trabajo de ejemplo
El flujo de trabajo de ejemplo que aparece a continuación revisa las nuevas solicitudes de incorporación de cambios, captura la respuesta de Codex y la publica en la solicitud.
name: Codex pull request review
on:
pull_request:
types: [opened, synchronize, reopened]
jobs:
codex:
runs-on: ubuntu-latest
permissions:
contents: read
outputs:
final_message: ${{ steps.run_codex.outputs.final-message }}
steps:
- uses: actions/checkout@v5
with:
ref: refs/pull/${{ github.event.pull_request.number }}/merge
fetch-depth: 0
persist-credentials: false
- name: Run Codex
id: run_codex
uses: openai/codex-action@v1
with:
openai-api-key: ${{ secrets.OPENAI_API_KEY }}
prompt-file: .github/codex/prompts/review.md
output-file: codex-output.md
post_feedback:
runs-on: ubuntu-latest
needs: codex
if: needs.codex.outputs.final_message != ''
permissions:
issues: write
pull-requests: write
steps:
- name: Post Codex feedback
uses: actions/github-script@v7
with:
github-token: ${{ github.token }}
script: |
await github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.payload.pull_request.number,
body: process.env.CODEX_FINAL_MESSAGE,
});
env:
CODEX_FINAL_MESSAGE: ${{ needs.codex.outputs.final_message }}Sustituye .github/codex/prompts/review.md por tu propio archivo de instrucciones o usa la entrada prompt para proporcionar texto en línea. El ejemplo también escribe el mensaje final de Codex en codex-output.md para poder inspeccionarlo posteriormente o cargarlo como artefacto.
Configurar codex exec
Ajusta la ejecución de Codex mediante las entradas de la acción que se corresponden con las opciones de codex exec:
promptoprompt-file(elige una): instrucciones en línea o una ruta del repositorio a un archivo Markdown o de texto con tu tarea. Considera almacenar las instrucciones en.github/codex/prompts/.codex-args: opciones adicionales del CLI. Proporciona una matriz JSON (por ejemplo,["--ephemeral"]) o una cadena de shell (--profile ci) para configurar sesiones, perfiles o ajustes de MCP.modelyeffort: selecciona la configuración del agente de Codex que quieras; déjalas vacías para usar los valores predeterminados.sandbox: adapta el modo de entorno aislado (workspace-write,read-only,danger-full-access) a los permisos que Codex necesite durante la ejecución.output-file: guarda el mensaje final de Codex en el disco para que los pasos posteriores puedan cargarlo o compararlo.codex-version: fija una versión específica del CLI. Déjala en blanco para usar la última versión publicada.codex-home: indica un directorio principal compartido de Codex si quieres reutilizar archivos de configuración o ajustes de MCP entre pasos.
Gestionar privilegios
Codex tiene acceso amplio en los ejecutores alojados por GitHub, a menos que lo restrinjas. Usa estas entradas para controlar la exposición:
safety-strategy(valor predeterminado:drop-sudo) eliminasudoantes de ejecutar Codex. Esta operación es irreversible durante el trabajo y protege los secretos en la memoria. En Windows, debes establecersafety-strategy: unsafe.unprivileged-usercombinasafety-strategy: unprivileged-userconcodex-userpara ejecutar Codex como una cuenta específica. Asegúrate de que el usuario pueda leer y escribir en la copia de trabajo del repositorio (consulta el ejemplo deunprivileged-userpara corregir la propiedad).read-onlyimpide que Codex modifique archivos o use la red, pero sigue ejecutándose con privilegios elevados. No dependas únicamente deread-onlypara proteger los secretos.sandboxlimita el acceso al sistema de archivos y a la red dentro del propio Codex. Elige la opción más restrictiva que permita completar la tarea.allow-usersyallow-botsrestringen quién puede activar el flujo de trabajo. De forma predeterminada, solo los usuarios con acceso de escritura pueden ejecutar la acción; incluye explícitamente otras cuentas de confianza o deja el campo vacío para mantener el comportamiento predeterminado.
Capturar resultados
La acción emite el último mensaje de Codex mediante la salida final-message. Asígnala a una salida del trabajo (como se muestra arriba) o procésala directamente en pasos posteriores. Combina output-file con la función de carga de artefactos si prefieres recopilar la transcripción completa del ejecutor. Cuando necesites datos estructurados, pasa --output-schema mediante codex-args para imponer una estructura JSON.
Lista de comprobación de seguridad
- Limita quién puede iniciar el flujo de trabajo. Da preferencia a eventos de confianza o aprobaciones explícitas en lugar de permitir que cualquiera ejecute Codex en tu repositorio.
- Sanea las entradas de instrucciones procedentes de solicitudes de incorporación de cambios, mensajes de confirmación o cuerpos de incidencias para evitar la inyección de instrucciones. Revisa los comentarios HTML o el texto oculto antes de proporcionárselos a Codex.
- Protege tu
OPENAI_API_KEYmanteniendosafety-strategyendrop-sudoo trasladando Codex a un usuario sin privilegios. Nunca dejes la acción en modounsafeen ejecutores multiusuario. - Ejecuta Codex como último paso de un trabajo para que los pasos posteriores no hereden cambios de estado inesperados.
- Rota las claves inmediatamente si sospechas que los registros del proxy o la salida de la acción han expuesto material secreto.
Solución de problemas
- Has establecido tanto prompt como prompt-file: elimina la entrada duplicada para proporcionar exactamente una fuente.
- responses-api-proxy no escribió la información del servidor: confirma que la API key está presente y es válida; el proxy solo se inicia cuando proporcionas
openai-api-key. - Se esperaba que se eliminara
sudo, perosudose ejecutó correctamente: asegúrate de que ningún paso anterior haya restauradosudoy de que el sistema operativo del ejecutor sea Linux o macOS. Vuelve a ejecutar el flujo con un trabajo nuevo. - Errores de permisos después de
drop-sudo: concede acceso de escritura antes de ejecutar la acción (por ejemplo, conchmod -R g+rwX "$GITHUB_WORKSPACE"o mediante el patrón de usuario sin privilegios). - Activación no autorizada bloqueada: ajusta las entradas
allow-usersoallow-botssi necesitas permitir cuentas de servicio además de los colaboradores con acceso de escritura predeterminados.