Bayangkan punya security engineer AI yang bisa membaca seluruh isi repository kamu, menemukan celah keamanan seperti SQL injection, hardcoded credential, atau path traversal, lalu membuktikan bahwa celah itu benar-benar bisa dieksploitasi — bahkan langsung membetulkan kodenya. Itulah yang dilakukan Codex Security, CLI terbaru dari OpenAI untuk finding, validating, and fixing security vulnerabilities di kode kamu.
Di tutorial ini kamu akan belajar memakainya dari nol: install CLI-nya, login, menjalankan scan pertama, membaca laporan hasil, memperbaiki temuan secara otomatis, hingga memasangnya sebagai gate di pipeline CI/CD. Semua perintah di bawah sudah diuji dan bisa langsung kamu jalankan.
Codex Security (@openai/codex-security) adalah CLI dan TypeScript SDK yang memakai model AI untuk menemukan, mengonfirmasi, dan memperbaiki kerentanan keamanan di repository yang kamu miliki atau yang kamu punya izin untuk menilainya. Berbeda dari static analyzer biasa yang hanya melaporkan pola mencurigakan, Codex Security bekerja layaknya pentester: ia menelusuri alur kode, menilai apakah sebuah temuan valid, lalu menyusun langkah remediasinya.
Hasilnya disimpan sebagai laporan terstruktur (Markdown, JSON, dan SARIF) sehingga mudah dibaca manusia sekaligus mudah diotomasi di CI/CD.
Codex Security dirilis publik oleh OpenAI. Menjalankan scan memerlukan akses Codex Security melalui akun ChatGPT atau API key OpenAI. Beberapa permintaan keamanan siber dan temuan yang dilindungi memerlukan persetujuan lewat program Trusted Access for Cyber (chatgpt.com/cyber).
Sebelum mulai, pastikan environment kamu sudah siap:
- Node.js versi 22.13.0 atau lebih baru (mendukung 22, 24, dan 26). Cek dengan
node --version. - Python versi 3.10 atau lebih baru — dibutuhkan untuk scan, bulk scan, export, riwayat scan, dan temuan tersimpan. Cek dengan
python3 --version. - Sebuah repository yang kamu miliki atau berizin untuk dinilai.
- Akun ChatGPT (untuk login interaktif) atau OpenAI API key (untuk CI/otomasi).
Kamu tidak perlu install global — jalankan saja lewat npx. Cek versi untuk memastikan package bisa diunduh dan berjalan:
npx @openai/codex-security --version
Untuk melihat versi package sekaligus versi plugin yang dibundel, jalankan:
npx @openai/codex-security info --json
Terakhir, lihat daftar perintah yang tersedia:
npx @openai/codex-security --help
Kalau kamu sering memakainya, kamu bisa install global dengan npm install -g @openai/codex-security lalu panggil codex-security langsung tanpa npx. Contoh di tutorial ini tetap memakai npx agar bisa dijalankan tanpa setup tambahan.
Untuk pemakaian lokal, login dengan akun ChatGPT kamu:
npx @openai/codex-security login
Di mesin remote atau tanpa browser, pakai device authentication:
npx @openai/codex-security login --device-auth
Untuk CI dan workflow otomatis lainnya, cukup set API key sebagai environment variable:
export OPENAI_API_KEY="sk-..."
Kalau API key dan sesi ChatGPT sama-sama aktif, kamu bisa memilih sumber autentikasi secara eksplisit:
npx @openai/codex-security scan . --auth chatgpt # pakai sesi ChatGPT
npx @openai/codex-security scan . --auth api-key # wajib pakai API key
Sebelum scan beneran, siapkan lokasi hasil di luar repository agar hasil scan tidak ikut ter-commit. Definisikan variabel REPOSITORY dan SCAN_DIR:
REPOSITORY=/path/ke/repository
SCAN_DIR=/path/di-luar/repository/codex-security-results
Jalankan --dry-run untuk memeriksa input lokal (termasuk path --knowledge-base kalau ada) tanpa memulai Codex, memuat kredensial, atau menyentuh interpreter Python plugin:
npx @openai/codex-security scan "$REPOSITORY" --output-dir "$SCAN_DIR" --dry-run
Hanya scan repository yang kamu percaya dan berizin untuk dinilai. Scan memakai izin sistem operasi lokal kamu, tidak berhenti untuk meminta persetujuan, dan prosesnya bisa mewarisi environment kamu. Hapus kredensial yang tidak relevan sebelum mulai, dan simpan hasil scan di lokasi privat.
Jalankan scan standar dan simpan hasilnya ke SCAN_DIR:
npx @openai/codex-security scan "$REPOSITORY" --output-dir "$SCAN_DIR"
Di terminal interaktif, kamu akan melihat dashboard scan secara live. Kalau tidak interaktif (misalnya di CI), tambahkan --headless agar progress ditampilkan sebagai baris teks biasa:
npx @openai/codex-security scan "$REPOSITORY" --output-dir "$SCAN_DIR" --headless
Saat selesai, CLI mencetak ringkasan seperti ini (ke stderr, bukan stdout):
REPORT /path/di-luar/repository/codex-security-results/report.md
FINDINGS 2 (2 confirmed this scan; 0 previously found; 1 high, 1 medium)
COVERAGE complete
ELAPSED 42s
RESULTS /path/di-luar/repository/codex-security-results
Kalau butuh hasil lengkap dalam format JSON yang bisa diproses mesin, minta output terstruktur secara eksplisit:
npx @openai/codex-security scan "$REPOSITORY" --output-dir "$SCAN_DIR" --json
Buka report.md untuk laporan yang mudah dibaca manusia. Selain itu, direktori hasil berisi file terstruktur untuk otomasi:
codex-security-results/
├── scan-manifest.json # target, scope, producer, artefak
├── findings.json # severity, confidence, lokasi, bukti, remediasi
├── coverage.json # permukaan yang direview & area yang ditunda
├── report.md # laporan yang mudah dibaca
├── artifacts/
└── exports/
└── results.sarif # jika diproduksi
Berikut contoh isi findings.json (disederhanakan) yang memuat severity, confidence, lokasi, bukti, dan langkah remediasi untuk setiap temuan:
{
"findings": [
{
"id": "FIND-001",
"severity": "high",
"confidence": "high",
"title": "SQL injection pada endpoint /search",
"locations": [
{ "file": "app/routes.py", "line": 42 }
],
"evidence": "Query dibangun dari input user tanpa parameterisasi...",
"remediation": "Gunakan parameterized query / ORM untuk memisahkan data dari SQL."
}
]
}
Perhatikan coverage.json: nilai coverage bisa complete, partial, atau unknown. Baca dulu area yang deferred atau pertanyaan yang belum terjawab sebelum kamu menganggap hasil scan sebagai bukti review menyeluruh.
Setelah scan interaktif selesai dan ada temuan, CLI menawarkan finding browser untuk meninjau bukti dan memilih temuan mana yang diperbaiki. Kalau kamu mau langsung mem-patch temuan high dan critical tanpa browser, pakai flag --patch:
npx @openai/codex-security scan "$REPOSITORY" --patch --patch-severity high --json
Tambahkan --create-pr untuk langsung commit patch yang sudah terverifikasi dan membuka pull request di GitHub:
npx @openai/codex-security scan "$REPOSITORY" --patch --patch-severity high --create-pr
Daripada scan seluruh repository setiap kali, kamu bisa meninjau perubahan saja. Untuk melihat commit antara origin/main dan HEAD:
npx @openai/codex-security scan "$REPOSITORY" --diff origin/main --head HEAD
Untuk meninjau perubahan yang sudah staged dan belum staged terhadap HEAD:
npx @openai/codex-security scan "$REPOSITORY" --working-tree --base HEAD
Catatan: scan --diff dan --working-tree mengharapkan argumen repository berupa root Git worktree. Pastikan revisi yang diseleksi sudah di-fetch sebelum scan diff.
Secara default, scan memakai model gpt-5.6-sol dengan reasoning effort xhigh. Untuk review yang lebih dalam, gunakan deep mode dan kontrol jumlah worker:
npx @openai/codex-security scan "$REPOSITORY" --mode deep --workers 2 --subagents 0 --stop-after-no-new 3 --max-discovery-runs 10 --max-time-hours 1.5
Kamu juga bisa mengganti model dan tingkat reasoning. Level effort yang didukung: minimal, low, medium, high, xhigh, dan max:
npx @openai/codex-security scan "$REPOSITORY" --model gpt-5.6-terra --effort high
Untuk mengendalikan biaya, set anggaran maksimal (dalam USD) — scan akan berhenti saat estimasi biaya model melebihi batas:
npx @openai/codex-security scan "$REPOSITORY" --max-cost 5
Kamu bisa memberikan konteks arsitektur, threat model, atau kebijakan keamanan agar AI menilai temuan sesuai cara sistemmu benar-benar bekerja:
npx @openai/codex-security scan "$REPOSITORY" --knowledge-base /path/architecture.md --knowledge-base /path/security-policies
Deep mode mendukung target repository dan path, bukan scan --diff atau --working-tree. Opsi seperti --workers, --subagents, dan --max-time-hours hanya berlaku di deep mode. Pantau biaya bila kamu menaikkan effort atau memakai deep mode.
Agar perubahan berisiko tidak lolos ke commit, pasang pre-commit hook keamanan di repository. Hook ini akan men-scan perubahan staged dan belum staged sebelum setiap commit, lalu memblokir temuan ber-severity high dan error scan — tanpa menimpa script pre-commit yang sudah ada:
npx @openai/codex-security install-hook
Untuk CI, cukup set OPENAI_API_KEY sebagai secret dan jalankan perintah scan dengan --headless plus severity threshold agar pipeline gagal saat ada temuan serius. Hasil results.sarif bisa di-upload ke GitHub Code Scanning untuk visualisasi di tab Security.
Punya banyak repository? Login ke GitHub dulu, lalu jalankan flow interaktif untuk menemukan dan memilih repository (repository yang diarsipkan dan fork otomatis dikecualikan):
gh auth login
npx @openai/codex-security bulk-scan
Untuk daftar repository yang sudah disiapkan, berikan CSV dan direktori output. Jalankan ulang perintah yang sama untuk resume — repository yang sudah selesai akan dilewati:
npx @openai/codex-security bulk-scan repositories.csv --output-dir /path/security-scans --workers 4
Kalau aksesmu menyertakan image Docker Codex Security, kamu bisa menjalankan bulk scan di container dengan Compose:
docker compose run --rm codex-security bulk-scan /input/repositories.csv --output-dir /output --workers 4
Selain OpenAI, Codex Security bisa memakai provider lain. Set API key provider tersebut lalu pilih model dengan --provider dan --model. Contoh memakai OpenRouter:
export OPENROUTER_API_KEY="..."
npx @openai/codex-security scan . --provider openrouter --model anthropic/claude-sonnet-4.5
Provider yang didukung antara lain Amazon Bedrock, OpenRouter, dan Fireworks — detail lengkapnya ada di dokumentasi CLI reference resmi.
Codex Security mengubah review keamanan dari aktivitas manual yang memakan waktu menjadi langkah otomatis yang bisa dipasang di mana saja: lokal saat ngoding, sebagai pre-commit hook, hingga gate di CI/CD. Alurnya sederhana — login → scan → baca report.md → --patch — tapi fleksibel lewat deep mode, knowledge base, anggaran biaya, dan multi-provider.
Coba mulai dari repository kecil milikmu sendiri, pelajari laporan findings.json, lalu perluas ke scan diff di setiap pull request. Selamat mengamankan kode — dan jangan lupa selalu review temuan AI sebelum menggabungkannya ke production.
BengkelKode