Dokuz satırlık Express kodu içeren, tek dosyalı bir depoyu yeni Codex Security CLI ile taradım. Sekiz buçuk dakika sonra tarama, 6,00 dolarlık limite çarparak durdu; 1.605 kelimelik bir tehdit modeli üretmek için 7,0 milyon giriş token'ı harcamıştı ve sonuçta sıfır bulgu vardı. Bunu CI sürecine eklemeyi düşünenler için asıl çıkarım şu: tarama maliyetini kod satırı sayısı değil, ajanın muhakeme döngüsü belirliyor. Bu nedenle ayarlamanız gereken ilk parametre --max-cost.
Yine de aracı yakından tanımakta fayda var. Çünkü bu, deponuzu bir GitHub App'e teslim etmeden çalıştırabileceğiniz ilk Codex Security sürümü.
CLI neler sunuyor, neleri sunmuyor?
Codex Security yeni bir ürün değil. OpenAI, Mart 2026'da bunu barındırılan bir hizmet olarak araştırma önizlemesine açtı: Bir GitHub deposu bağlıyorsunuz, araç tehdit modeli çıkarıyor, commit geçmişini izole bir ortamda tarıyor ve bulguları ChatGPT çalışma alanında raporluyor. SecurityWeek, hizmetin ChatGPT Pro, Enterprise, Business ve Edu müşterilerine sunulduğunu bildirdi.
28 Temmuz 2026'da gelen yenilik ise farklı. openai/codex-security, Apache-2.0 lisanslı bir CLI ve TypeScript SDK'sı. npm'de 0.1.0 sürümüyle 17:09 UTC'de yayımlandı; aynı gün 23:48 UTC'de 0.1.1 geldi. Yazının hazırlandığı sırada 1,8 bin yıldızı ve 28 açık sorunu vardı. Bu, henüz ilk gününde olan bir proje.
Tarama motoru paketlenmiş bir Python eklentisi olarak geldiği için kurulumda Node.js 22 veya sonrası ile Python 3.10 veya sonrası gerekiyor:
npm install @openai/codex-security
npx codex-security info
Kurulan bileşenleri en hızlı info komutuyla görebilirsiniz:
sdkVersion: 0.1.1
bundledPluginVersion: 0.1.14
cliVersion: 0.1.1
codexVersion: 0.144.6
model: gpt-5.6-sol
reasoningEffort: xhigh
Maliyet hikâyesi son iki satırda özetleniyor. Bu kurulumda taramalar varsayılan olarak GPT-5.6 Sol ve xhigh muhakeme eforuyla çalışıyor. --model ile model seçimini değiştirebilirsiniz; ancak eklenti derin bir ajan döngüsü üzerine kurulu ve faturayı kabartan da bu döngü.
Komut kapsamı, barındırılan ürünün ilk bakışta düşündürdüğünden daha geniş: scan, validate, patch, scans (listeleme, görüntüleme, yeniden çalıştırma, eşleştirme, karşılaştırma), bulk-scan, CSV, JSON veya SARIF'e export, install-hook ve aracı MCP sunucusu olarak kaydeden bir mcp modu var. Ayrıca info çıktısında scanMcp: false görmeniz normal; MCP aktarımı üzerinden taramalar iptal edilemiyor.
İki kimlik doğrulama yolu var; biri önünüzü kesebilir
npx codex-security login, ChatGPT hesabıyla oturum açıyor; --device-auth başsız makineler için, OPENAI_API_KEY ise CI için kullanılabiliyor. Hem API anahtarı hem oturum varsa etkileşimli taramalar hangisini kullanacağını soruyor; etkileşimsiz çalıştırmalarda API anahtarı öncelik kazanıyor.
Resmî dokümanlardaki bir uyarıyı iki kez okumakta yarar var: Tam depo taramaları ek olarak Trusted Access for Cyber gerektirebilir. Oturum açmak da API anahtarı tanımlamak da bu erişimi sağlamıyor. Yani yalnızca giriş yapmayı değil, bir erişim talebi sürecini de hesaba katın.
OpenAI Codex Security CLI'yi uyumlu bir endpoint ile çalıştırmak
OPENAI_API_KEY değişkenine üçüncü taraf bir anahtar koyup trafiğin oraya yönleneceğini beklemek, ilk başarısız olan adım:
codex-security: Authentication failed using OPENAI_API_KEY.
Anahtar tek başına yönlendirme yapmıyor; çünkü gömülü Codex çalışma zamanı hâlâ OpenAI'ın kendi temel URL'sini hedefliyor ve OPENAI_BASE_URL ayarını yok sayıyor. Sağlayıcı yapılandırmasını, TOML değerleri alan --codex üzerinden geçersiz kılmanız gerekiyor:
OPENAI_API_KEY=sk-... npx codex-security scan . --auth api-key --max-cost 5 \
--codex 'model_provider="relay"' \
--codex 'model_providers.relay.name="relay"' \
--codex 'model_providers.relay.base_url="https://your-endpoint/api/v1"' \
--codex 'model_providers.relay.env_key="OPENAI_API_KEY"' \
--codex 'model_providers.relay.wire_api="responses"'
İki ayrıntı, bende birer taramanın boşa gitmesine neden oldu. Tırnaksız değerler Invalid --codex TOML value hatası veriyor. Ayrıca wire_api="chat", Codex 0.144.6 tarafından doğrudan reddediliyor; hata mesajı discussion #7782 bağlantısına yönlendirip responses kullanmanızı söylüyor. Endpoint'iniz yalnızca Chat Completions'ı değil, Responses API'yi de uygulamak zorunda.
Model faturasının nereye yazılacağı da aynı ayardan anlaşılıyor. CLI, hangi endpoint'i kullanırsanız kullanın tahminini her zaman GPT-5.6 Sol için OpenAI liste fiyatlarıyla yapıyor. Dolayısıyla ekrandaki toplam, gerçek faturanız değil token sayısına dayalı bir hesap. Aynı trafiği liste fiyatının yarısına ücretlendiren bir endpoint'e yönlendirirseniz, aşağıdaki 6,03 dolarlık çalıştırma size yaklaşık 3 dolara mal olur; CLI ise 6,03 dolar yazmayı sürdürür.
Tek bir taramanın faturası
Aşağıdaki rakamları şu koşulla değerlendirin: beş çalıştırmanın tamamı üçüncü taraf, OpenAI uyumlu endpoint'ler üzerinden yapıldı. Resmî yolu denemek için ChatGPT Business veya Enterprise oturumum yoktu. Buradaki ölçüm, yetkili hesaptaki barındırılan hizmetin davranışını değil, sıradan bir geliştiricinin bugün çalıştırabileceği CLI deneyimini yansıtıyor.
Test deposu özellikle küçük ve özellikle sorunlu tutuldu. Dokuz satırda dört kasıtlı açık var:
const express = require('express');
const { exec } = require('child_process');
const db = require('./db');
const app = express();
const API_KEY = "sk-live-9f3a2b7c1d4e5f6a8b9c0d1e2f3a4b5c";
app.get('/u', (req, res) => db.query("SELECT * FROM users WHERE id = " + req.query.id, (e, r) => res.json(r)));
app.get('/ping', (req, res) => exec("ping -c 1 " + req.query.host, (e, o) => res.send(o)));
app.get('/f', (req, res) => res.sendFile(__dirname + "/files/" + req.query.name));
app.listen(3000);
String birleştirmeyle oluşturulmuş SQL, sorgu parametresi üzerinde child_process.exec, temizlenmemiş bir sendFile yolu ve kod içine gömülü bir anahtar. Ortam: macOS, Node v22.17.0, Python 3.14.6, @openai/[email protected], paketlenmiş eklenti 0.1.14; tüm çalıştırmalar 29 Temmuz 2026'da 02:20 ile 03:05 UTC arasında yapıldı.
| Çalıştırma | Hedef | Bütçe | Durduğu tutar | Süre | Önbellekten giriş | Yeni giriş | Çıktı | Bulgular |
|---|---|---|---|---|---|---|---|---|
| 1 | Tam depo, standart mod | $1.00 | $1.46 | 3dk 23sn | 1,092,608 | 121,396 | 10,300 | 0 |
| 2 | Tam depo, standart mod | $6.00 | $6.03 | 8dk 33sn | 6,654,720 | 331,330 | 34,946 | 0 |
| 3 | Çalışma ağacı, tek satırlık fark | $3.00 | $3.06 | 9dk 46sn | 2,035,712 | 240,448 | 28,120 | 0 |
| 4 | Tam depo, eksiksiz proje | $8.00 | $8.54 | 8dk 00sn | 7,299,840 | 634,419 | 57,223 | 0 |
| 5 | Tam depo, reasoning_effort=low | $3.00 | $3.20 | 4dk 13sn | 1,749,248 | 366,841 | 16,269 | 0 |
Dolardaki bu değerler, tarama sürerken ekrana basılan ve scans list içinde saklanan CLI tahminleri. Endpoint'in gerçekten kestiği fatura değiller; OpenAI liste fiyatlarındaki token hesaplamasına dayanıyorlar. Token miktarlarına kıyasla toplamların düşük görünmesinin sebebi de önbellekten gelen girişler. İkinci çalıştırma, milyon yeni giriş token'ı başına 5,00 dolar, milyon önbellek girişi başına 0,50 dolar ve milyon çıktı token'ı başına 30,00 dolarla tam olarak uyuşuyor:
331,330 x $5.00/M = $1.657
6,654,720 x $0.50/M = $3.327
34,946 x $30.00/M = $1.048
------
$6.032 (CLI reported $6.03239)
Aynı üç oran, beş çalıştırmanın toplamını da sent düzeyinde yeniden üretiyor. Kendi rakamlarınız beklenmedik görünürse bu, işinize yarayacak iyi bir tutarlılık kontrolü.
Beş çalıştırmanın hiçbiri tamamlanmadı. Hepsi bütçe sınırında durdu ve scans list her biri için phase: preflight, status: failed ile coverage: worklistRows 0 gösteriyor. Başka bir deyişle, hiçbir çalıştırma açıkların raporlandığı aşamaya ulaşamadı.
Dördüncü çalıştırma kontrol senaryosu. İlk depom tasarım gereği eksikti: package.json yoktu ve ./db içe aktarılmış ama depoda bulunmuyordu; aracın kendi tehdit modeli de bunu açık bir bilinmeyen olarak işaretledi. Depoyu dört dosya ve on üç satırla, bağımlılıkları tanımlanmış biçimde düzgünce yeniden kurduğumda maliyet düşmek yerine arttı: 8,54 dolar ve 7,9 milyon giriş token'ı.
Eğri doğrusal değil. İlk üç dakika maliyet yavaşça yükseliyor, ardından iki kez sıçrıyor; her sıçrama ajanın iş kapsamını genişletmesiyle örtüşüyor. Günlük, mekanizmayı 51. saniyede bir kez duyuruyor: Preflight: worker delegation supported (up to 8 worker slots).
Giriş token'larının %95'i önbellek okumalarıydı. Bu, aynı bağlamın yeni baştan okunmak yerine tur tur yeniden gönderildiğini gösteriyor. Token başına ucuz, fakat yine de faturadaki en büyük kalem. Dokuz satırlık bir dosya için bile, önbellekten giriş ücretleriyle hesaplandığında yedi milyon token ciddi bir toplam ediyor.
Bu noktada, 1.000 kod satırı başına yaklaşık 0,02 dolar şeklinde sıkça tekrarlanan tahmin geçerliliğini yitiriyor. Bu orana göre benim depomun maliyetinin sentin küçük bir kesri olması gerekirdi.
Muhakeme düzeyini düşürmek beklediğiniz kadar fark yaratmıyor
Beşinci çalıştırma, dördüncü çalıştırmayla aynı projede model_reasoning_effort="low" ayarını kullanıyor. Token tüketimi dakikada yaklaşık 1,0 milyondan 0,5 milyona indi; yani aynı parayla iki kat duvar saati süresi elde ediliyor. Buna rağmen raporlayacak bir şey üretmeden yine aynı preflight aşamasında limite ulaştı. İşlem hattı her durumda bütçenin karşılayabileceğinden fazla tur gerektiriyorsa, yakım hızını yarıya indirmek çözüm olmuyor.
--max-cost fren değil, kontrol noktası
Resmî CLI dokümanları, başlamış isteklerin limitin üzerinde tamamlanabileceğini söylüyor. Ancak ne kadar aşılabileceğini belirtmiyor. Beş çalıştırmada aşım %0,5 ile %46 arasındaydı: 1,00 dolarlık limitte tarama 1,46 dolarda, 6,00 dolarlık limitte 6,03 dolarda durdu; ortadaki üç limit ise %2 ila %7 oranında aşıldı. Aşım, ajanın o anda yürütmekte olduğu işe eşit; limite yakın bir anda işçi fan-out'u gerçekleşirse maliyetli senaryo ortaya çıkıyor. Limiti, kesinlikle aşmamanız gereken tutarın altında belirleyin.
Pre-commit seçeneği ucuz bir kestirme değil
Kontrolden çıkan tam depo taramasına verilecek bariz yanıt, yalnızca değişenleri taramak. Temiz bir başlangıç commit'i oluşturdum, string birleştirmeyle yazılmış bir LIKE koşulu olan tek bir güvenlik açığı satırı ekledim ve --working-tree --base HEAD komutunu çalıştırdım.
İlk tam taramadan daha pahalıya geldi: 9dk 46sn, 2.276.160 giriş token'ı; 3,00 dolarlık limite karşılık 3,06 dolarda durdu. Tam taramalardan daha ileride bir aşamaya ulaşarak bütçe tükenmeden önce sıralanmış bir inceleme iş listesi yazdı (rank_input.jsonl, deep_review_input.jsonl), ancak yine bulgu üretmedi. Taramayı farka daraltmak, tur başına bağlamı küçültmüyor: ajan hâlâ depoyu okuyor, tam bir tehdit modeli yazıyor ve işçilere dağıtım yapıyor.
install-hook, bunu Git pre-commit hook'una bağlayarak yüksek önem dereceli bulgular ve tarama hatalarında commit'i engelliyor. Bir ekipte kurmadan önce kendi kod tabanınızda tek bir fark taramasının fiyatını çıkarın; çünkü bu hook her commit'e dakikalar ve dolarlar ekleyebilir.
Hangi sorunlarda hâlâ yetersiz kalıyor?
Aracın dokuz satır için yazdığı tehdit modeli iyi bir iş çıkarıyor. Dört güven sınırının tamamını belirliyor, eksik ./db modülünü açık bir bilinmeyen olarak tanımlıyor ve doğrulayamadığı korumalar için Express'e kredi vermiyor. Kendi sınırını da açıkça ifade ediyor: "Controls not present in the repository must not be assumed."
Yapısal kısıt tam olarak burada. Tek girdi kaynak kod olduğu için, dağıtım sırasında belirlenen her şey görünmez kalıyor: CORS politikası, açık bırakılmış hata ayıklama modu, zayıf TLS, eksik güvenlik başlıkları, önbellek zehirleme ve servisler arası çalışma zamanı yetkilendirmesi. Özellikle nesne düzeyindeki yetkilendirme açıklarının doğrulanması, iki gerçek kimlikle yapılmış kimliği doğrulanmış istekler gerektiriyor; bunu salt kaynak kod okumakla sağlamak mümkün değil.
Dil kapsamının da eşit olmadığı bildiriliyor. Barındırılan hizmeti kullanan bir uzmanın yazısı, kapsamanın Python, JavaScript, TypeScript, Go ve Java'da en güçlü; Ruby, PHP ve Kotlin'de ise geride olduğunu belirtiyor. Ben yalnızca JavaScript test ettim; bu nedenle bu bilgiyi ikinci el olarak değerlendirin.
Çalıştırmaya değer mi?
Tehdit modelini istiyorsanız bugün kurun. Her çalıştırmada aldığım tek çıktı buydu: güven sınırlarını haritalayan, saldırgan senaryolarını sıralayan ve bu hizmet için kritik, yüksek, orta ve düşük seviyelerin ne anlama geldiğini tanımlayan 1.605 kelimelik bir belge. Ayrıca çalıştırdığınız diğer araçlar için de faydalı bir girdi olabilir; çünkü --knowledge-base kendi mimari dokümanlarınızı kabul ediyor ve oluşturulan model düzenlenebiliyor.
Öngörülebilir harcama veya gerçek bir bulgu listesine ihtiyacınız varsa bekleyin. Beş yapılandırma boyunca, on saniyede okuyabileceğiniz bir depoda çalıştırma başına 1,46 ila 8,54 dolar karşılığında bunların hiçbirini alamadım. İşlem hattının daha aşağısında dokümante edilen findings.json, coverage.json ve report.md çıktılarının hiçbirine ulaşamadım. Yetkili bir ChatGPT Business hesabının farklı davranıp davranmadığı, bu testlerin yanıtlayamadığı açık soru.
Burada bariz iki maliyet kolu da işe yaramadı: fark kapsamı ve düşük muhakeme eforu aynı duvara tosladı. Hesabı gerçekten değiştiren tek unsur model fiyatıydı; tahmin liste fiyatındaki token hesaplamasıyla yapıldığından, liste fiyatının yarısındaki bir endpoint aynı çalıştırmanın maliyetini yarıya indiriyor. Bütçeyi depo boyutuna göre değil, ölçülmüş çalıştırmalara göre planlayın; limiti de gerçek üst sınırınızın altında, bir işçi turunun maliyeti kadar pay bırakarak ayarlayın. Benim gördüğüm en yüksek aşım, limitin %46'sıydı.
SSS
Codex Security CLI ücretsiz mi?
CLI ve SDK Apache-2.0 lisanslı; kurulumu ücretsiz. Taramalar ise ücretsiz değil. Kimlik doğrulamada kullandığınız kimlik bilgileri üzerinden GPT-5.6 Sol token'ları tüketiyor ve CLI, OpenAI liste fiyatlarına göre anlık bir tahmin gösteriyor.
ChatGPT Business veya Enterprise planına ihtiyacım var mı?
Barındırılan GitHub entegrasyonu için evet: bu yol Pro, Enterprise, Business ve Edu ile sınırlı. CLI sıradan bir OPENAI_API_KEY kabul ediyor; ancak dokümanlar tam depo taramalarının yine de hiçbir planın otomatik vermediği Trusted Access for Cyber erişimini gerektirebileceği uyarısını yapıyor.
CI içinde çalışabilir mi?
Evet. OPENAI_API_KEY ayarlayın, bulguların sıfır olmayan çıkış koduna dönüşmesi için --fail-on-severity ekleyin ve CODEX_SECURITY_STATE_DIR değişkenini depo dışında, yazılabilir bir yola yönlendirin. Taramalar varsayılan olarak yalnızca rapor üretir.
Üçüncü taraf, OpenAI uyumlu bir endpoint ile çalışır mı?
Endpoint Responses API'yi uyguluyorsa çalışır. Yalnızca OPENAI_API_KEY tanımlamak kimlik doğrulamada başarısız olduğu için Codex sağlayıcı yapılandırmasını --codex bayraklarıyla geçersiz kılmanız gerekir.
CLI, Codex Security plugin'den nasıl ayrılıyor?
Tarama motoru aynı, giriş noktası farklı. Plugin, OpenAI altyapısında bağlı bir GitHub deposu üzerinde çalışıyor. CLI ise makinenizde yerel bir yol üzerinde çalışıyor, tarama geçmişini yerel durum dizininde saklıyor ve fark kapsamlı tarama, pre-commit hook'u, SARIF dışa aktarımı ile MCP kaydı ekliyor.
İlgili okumalar: GPT-5.6 fiyatlandırma rehberi · Codex auto mode
