Quick Syntax
# 최종 메시지만 표준 출력으로 받는다.
codex exec "summarize the repository structure"
# 실행 이벤트 전체를 JSON Lines로 받는다.
codex exec --json "summarize the repository structure" | jq
# 수정이 필요한 자동화만 workspace 쓰기를 허용한다.
codex exec --sandbox workspace-write "update the changelog and run its check"
# 안정된 JSON 결과를 파일에도 남긴다.
codex exec "Extract metadata" --output-schema ./schema.json -o ./result.jsoncodex exec는 TUI 없이 scripts와 CI에서 Codex를 실행한다. 진행 정보는 stderr, 최종 agent 메시지는 stdout으로 분리되므로, 사람용 로그와 다음 단계로 넘길 결과를 구분하기 좋다.
출력을 파이프라인에 연결하는 방법
기본 출력은 최종 메시지만 필요할 때 쓴다. --json은 thread.started, command 실행, file change, tool call, error 같은 실행 이벤트를 JSONL로 보내므로, 상태를 수집하거나 실패 원인을 처리하는 프로그램에 맞다. 단순한 최종 답변을 JSON으로 파싱하려고 --json을 켜면 이벤트 처리가 불필요하게 복잡해진다.
--output-schema는 마지막 응답을 JSON Schema에 맞추도록 요청한다. -o 또는 --output-last-message는 마지막 메시지를 파일에 남기면서 stdout 출력도 유지한다. 둘을 함께 쓰면 다음 단계가 기대하는 필드를 안정적으로 읽을 수 있다.
최종 요약만 다음 명령으로 넘긴다 -> 기본 실행
진행·명령·도구 이벤트까지 수집한다 -> --json
후속 작업이 정해진 JSON 필드를 요구한다 -> --output-schema + -o
세션 파일을 남기지 않는다 -> --ephemeral--ephemeral은 session rollout 파일을 디스크에 남기지 않는다. 이후 codex exec resume --last "..."로 이어갈 실행이면 ephemeral을 사용하지 않는다.
권한과 인증을 좁히는 방법
기본 실행은 read-only sandbox다. 파일 수정이 정말 필요할 때만 --sandbox workspace-write를 붙이고, danger-full-access는 격리된 CI runner나 컨테이너처럼 통제된 환경에 한정한다. 기존 --full-auto는 호환성을 위해 남아 있지만 경고가 표시되는 deprecated 옵션이므로 새 script에는 쓰지 않는다.
# 신뢰할 수 있는 단일 실행에만 API key를 범위 제한한다.
CODEX_API_KEY=<api-key> codex exec --json "triage open bug reports"CI에서 repository-controlled code를 checkout하거나 실행하는 job의 전역 환경 변수로 OPENAI_API_KEY나 CODEX_API_KEY를 두면 build script, test, dependency hook, 손상된 action도 읽을 수 있다. GitHub Actions에서는 직접 CLI를 설치·인증하는 대신 Codex GitHub Action을 우선 검토한다.
codex exec 자동화는 승인 prompt가 나타나면 멈출 수 있습니다. 권한을 넓혀 우회하기보다, 읽기·쓰기·네트워크·비밀값이 각각 필요한지 작업 단위로 정하고 통제된 실행 환경에서 검증하세요.
참고 링크
2 sources