오픈AI가 7월 29일 애플리케이션 보안 에이전트 Codex Security의 명령줄 인터페이스(CLI)와 TypeScript SDK를 오픈소스로 공개했다. 새 CLI는 저장소를 스캔하고 검사마다 발견한 취약점의 변화를 추적하며, 수정 여부를 검증하고 CI에서 보안 검사를 실행한다. 공개 npm 패키지는 누구나 설치할 수 있고, 단일 저장소와 특정 파일부터 조직 단위 일괄 검사까지 다룬다.[1][3][4]
Codex Security를 터미널과 SDK에서 호출한다
Codex 채팅의 Codex Security 플러그인이 현재 작업 중인 저장소를 대화형으로 검사한다면, 독립 CLI와 SDK는 터미널과 자동화 환경에서 Codex Security를 호출하고 여러 저장소의 검사 결과를 실행별로 관리하는 클라이언트다. Codex Security 자체는 지난 3월 연구 프리뷰로 먼저 공개됐다. 저장소는 Apache 2.0 라이선스로 공개됐고 npm의 @openai/codex-security 패키지는 0.1.1이 최신 버전이다. 설치 환경은 Node.js 22 이상이며 실제 스캔과 결과 내보내기에는 Python 3.10 이상도 필요하다.[2][3][4][5][6][7][8]
기본 명령은 codex-security scan이다. 전체 저장소뿐 아니라 특정 경로, 두 Git 리비전 사이의 변경, 커밋하지 않은 작업 트리를 대상으로 삼을 수 있다. 위협 모델과 아키텍처 문서를 지식 기반으로 추가해 시스템 맥락을 보완하고, 표준 검사보다 넓은 범위를 보는 심층 모드도 선택할 수 있다.[3]
단일 저장소부터 조직 전체와 CI까지 다룬다
bulk-scan은 GitHub 계정이나 조직에서 최근 90일 동안 활동한 저장소를 찾아 선택하게 하고, 보관된 저장소와 포크는 기본적으로 제외한다. 반복 가능한 검사는 저장소 주소와 정확한 Git 커밋을 적은 CSV로 실행할 수 있다. 결과 디렉터리를 그대로 두고 같은 명령을 다시 실행하면 완료된 저장소를 건너뛰고 중단된 캠페인을 이어간다.[2][3]
각 스캔은 사람이 읽는 보고서와 함께 발견 사항, 검사 범위와 제외 영역을 구조화한 파일을 남긴다. 이전 검사 결과와 새 결과의 발견 사항을 대응시켜 새로 생긴 문제, 계속 남은 문제, 다시 열린 문제와 해결된 문제를 비교할 수 있고, 오탐으로 판단한 이유는 다음 스캔에 맥락 정보로 전달된다. CI에서는 pull request 변경분을 검사해 심각도 기준으로 작업을 실패시키고 CSV, JSON, SARIF 형식으로 내보낼 수 있다. SARIF 결과는 GitHub Code Security에 올릴 수 있다.[2][3]
저장소를 스캔하고 결과를 확인하는 방법
가장 간단한 사용 흐름은 패키지를 설치하고 로그인한 뒤 검사할 저장소에서 scan을 실행하는 것이다. 스캔이 끝나면 결과 디렉터리에 사람이 읽는 report.md와 구조화된 findings.json, 검사 범위를 담은 coverage.json, 실행 정보를 기록한 scan-manifest.json이 생성된다. 기본 결과를 확인하는 데 export는 필요하지 않다.[1][3][5]
npm install @openai/codex-security
npx codex-security login
cd /path/to/repository
OUT=~/.local/share/codex-security-results
mkdir -p "$OUT" && chmod 700 "$OUT"
npx codex-security scan . \
--output-dir "$OUT"
less "$OUT/report.md"
less "$OUT/findings.json"
export는 완료된 스캔을 다시 분석하지 않고 CSV, JSON, SARIF 같은 외부 연동 형식으로 변환하는 선택 단계다. 예를 들어 GitHub Code Security에 결과를 올리려면 SARIF 파일을 만들 수 있다. 이 작업은 Codex를 다시 실행하거나 로그인 정보를 불러오지 않는다.[3]
npx codex-security export "$OUT" \
--export-format sarif \
--source-root . \
--output "${OUT}.sarif"
scan .은 현재 저장소 전체를 검사한다. 특정 파일이나 디렉터리만 보려면 --path, 두 Git 리비전의 차이를 보려면 --diff, 커밋하지 않은 변경을 보려면 --working-tree를 추가한다. CI에서는 --fail-on-severity로 지정한 심각도 이상의 발견 사항이 있을 때 작업을 실패시킬 수 있다.[2][3]