2026 年 7 月 29 日,OpenAI 在 X 公開了〈We quietly released the open-source Codex Security CLI…〉。這次 Codex Security 開源的是 Apache-2.0 CLI、TypeScript SDK 與隨套件提供的工作流資產;不是 3 月已推出的整套 Codex Security,也不是模型權重突然開放下載。
真正的新意,不是 Codex Security 第一次離開託管介面;6 月的 plugin 已能在 Codex CLI 與自動化 pipeline 使用。這次是把 scanner 正式包成公開的 standalone CLI 與 SDK,讓本機 checkout、批次、CI 與程式化整合更標準化,也讓團隊能閱讀、稽核與改造整合層。先把 OpenAI 原始貼文放在這裡,點擊截圖可前往 X 閱讀原文。

這篇文章分三步走:先釐清這次發布與原產品的時間線,再拆開「哪些真的開源、哪些仍依賴 OpenAI」,最後把本機權限、CI、誤報漏報與修補風險放回真實工程環境,判斷它到底適合扮演什麼角色。
一、這次 Codex Security 開源的是 CLI/SDK,新鮮事件是什麼?
OpenAI 的語氣很罕見:不是精心安排的舞台發布,而是承認 Hacker News 先發現了公開套件,他們才趕上來分享。
“We quietly released the open-source Codex Security CLI”
中文:「我們悄悄發布了開源 Codex Security CLI。」
— OpenAI,X,2026 年 7 月 29 日
時間點不能寫錯。Codex Security 的前身 Aardvark 早在 2025 年 10 月進入私人測試;OpenAI 又在 2026 年 3 月 6 日以 Codex Security 之名推出 research preview,6 月 22 日還發布了可在 Codex 裡操作的安全 plugin。7 月這次才是獨立 CLI、TypeScript SDK 與 npm 套件公開。
| 日期 | 真正發生的事 | 不應誤寫成 |
|---|---|---|
| 2025/10/30 | Aardvark 私人測試 | 公開 CLI |
| 2026/03/06 | Codex Security research preview | 本次開源事件 |
| 2026/06/22 | Daybreak 與 Codex Security plugin 更新 | 獨立 SDK 首發 |
| 2026/07/29(UTC+8) | npm 0.1.0、CLI 與 TypeScript SDK 公開事件成為焦點 | 整套產品或模型權重開源 |
更精確地說,npm 0.1.0 在 7 月 29 日台北時間凌晨 1:09 發布;HN 約 3 小時 43 分後出現討論,OpenAI 再於上午 8:35 發文。這正好吻合「HN 先找到」的敘事。公開 repo 雖建立得更早,但建立日不等於公開發布日。
熱度是真的,但它只證明注意力。截至 2026 年 7 月 30 日 15:00(UTC+8),X 貼文約有 114.4 萬觀看、1.28 萬個讚;GitHub repo 有 5,380 顆星;HN 討論為 589 分、225 則留言。這些數字會繼續變動,也不能代替 precision、recall 或修補品質。
二、Codex Security 開源的是 CLI/SDK,不是整套產品
OpenAI 對公開套件的定位很直接:它是用來做漏洞發現、驗證與修補的 CLI 與 TypeScript SDK。repo 不只放了一層薄薄的 command wrapper;裡面還能看到 bundled plugin、threat model、finding discovery、validation、fix-finding、scan contract、schema、workbench、匯出器與測試。
“finding, validating, and fixing security vulnerabilities in your code.”
中文:「在你的程式碼中尋找、驗證並修補安全漏洞。」
— openai/codex-security README
| Apache-2.0 repo/npm 裡可檢查與延伸 | 沒有由這個 repo/npm 一併開放 |
|---|---|
| CLI 與 TypeScript SDK 原始碼 | hosted 模型推理與模型權重 |
| Bundled plugin、skills、scripts、schemas | Codex Security access 與 Trusted Access |
| 本機目標選擇、掃描編排、歷史與產物管理 | Codex Security cloud/GitHub-connected 體驗 |
| JSON、CSV、SARIF、CI 與 pre-commit glue code | OpenAI 後端服務內部 |
所以最準確的說法是:工作流與整合層開源,本機與 CI 介面公開;核心分析仍是 service-backed。Apache-2.0 讓團隊能依授權條款閱讀、修改與整合這一層,但不會自動重新授權 npm dependencies;「能 fork client」與「能自行託管同等能力的掃描引擎」也是兩件不同的事。

三、從 terminal 到 CI:開發者多了四種控制
如果只把它理解成「把網頁按鈕搬到命令列」,會低估這次發布。真正的變化是掃描成為可以被版本化、觀測、重跑與設政策的工程元件。
- 控制掃描範圍:
scan可針對整個 repository、指定 path、已提交 diff 或 working tree,另有 standard 與 deep 模式。 - 控制長期狀態:
scans match與scans compare會把 finding 分成 new、persisting、reopened、resolved 或 unknown;人工判定的 false positive 也能留下理由。 - 控制 CI 結果:掃描可輸出 JSON、CSV、SARIF,以 severity policy 決定 exit code,也能安裝 pre-commit hook。SARIF 讓 finding 進入既有 code-scanning 介面,但格式本身不替內容背書。
- 控制應用整合:TypeScript SDK 提供 preflight、typed result、進度 callback、取消訊號、成本限制與自訂 plugin path,讓 IDE、內部平台或批次服務不用解析 terminal 文字。
這也解釋了為什麼一名 HN 讀者先說它只是「方便的 CI wrapper」,讀完 source 後又改口承認裡面比想像中有料。安全工作的瓶頸從來不只在「模型能不能指出 bug」,而是 finding 能否被保存、去重、追蹤、驗證、交給 reviewer,最後安全地落成修補。
四、技術討論真正值得注意的是 harness,不是又一個 prompt
傳統 SAST、SCA、secret scanning 與 CodeQL 各有擅長的證據模型;agentic scanner 的機會,則在於讀懂架構與 threat model、沿著 attacker-controlled input 追到敏感結果、嘗試重現,再提出最小修補。這不代表前者過時,而是多了一個能處理語意與系統脈絡的第二意見。
Codex Security repo 最有研究價值的部分,正是這些可讀的工作流。validation skill 要求優先從真實介面、PoC、測試、sanitizer 或 debugger 重現;無法動態證明時必須留下 evidence chain 與 proof gap。fix-finding workflow 則要求保留原始重現、建立正常輸入的 positive control、做最小修改,再檢查是否存在繞過與 regression。
這才是開源帶來的槓桿:團隊不必相信一個黑盒按鈕「應該有做驗證」,而是能看到驗證合約、coverage schema、failure handling 與修補步驟,甚至換掉或加強其中一段。它降低的是整合與稽核的不透明度,不是把安全判斷變成確定性答案。
五、最大的誤解:開源 CLI 不等於離線掃描器
這是整件事最容易被標題抹掉的邊界。OpenAI 官方 quickstart 寫得很清楚:
“Running scans requires Codex Security access.”
中文:「執行掃描需要 Codex Security 存取權。」
— Codex Security CLI quickstart
本機可選 ChatGPT stored credentials 或 API key;非互動 CI 的官方範例則使用 OPENAI_API_KEY 或 CODEX_API_KEY。官方 reference 把預設 provider 與 model 都指向 OpenAI。README 建議申請 Trusted Access,它可能降低部分資安任務被 guardrail 拒絕的機率,但不是一般 scan 的硬性註冊條件。
一名參與 CLI 的 OpenAI 團隊成員也在 HN 直接澄清:CLI 在本機跑,但分析需要的程式碼與脈絡會送往 hosted OpenAI model;若公司政策禁止 source code 離開既有環境,就不應把它當成純本機工具。官方提供的發布流程仍以 hosted OpenAI model 為主;截至 7 月 30 日,官方、文件化且穩定的 local/custom endpoint 支援仍由issue #52 追蹤。開源程式碼可以自行修改 model path,不代表它已是受支援的產品功能。
因此「local」應被精確理解為:target checkout、部分工具執行、state 與報告能在本機或 CI;它不等於離線推理,也不等於 compute sovereignty。這個差異跟本機、雲端與 API 三條路徑的判斷相同:介面在哪裡,不足以回答模型、資料與權限邊界在哪裡。
六、掃描器也是具廣泛本機讀取與工作區寫入權限的 Agent
安全工具最弔詭的地方,是它為了看見漏洞,往往需要看見比一般工具更多的東西。Codex Security 的 SECURITY.md 沒有迴避這一點:
“Permission to assess a repository does not mean you can trust it.”
中文:「獲准評估一個 repository,不代表你就能信任它。」
— openai/codex-security Security Policy
官方 local security model 明列:掃描在目前的作業系統帳號下執行,採 approvalPolicy: "never";可讀本機檔案系統,並能寫入 workspace roots 與 scan state。scan/workbench subprocess 還可能繼承與任務無關的 GitHub token、雲端 credential 或其他環境變數;workbench 會移除 OpenAI 與 Codex API key,卻不是全面的 credential sanitation。repo 文字、Git 設定、hook、filter 與工具設定,則可能成為模型或本機工具讀取、解析或觸發的攻擊者可控輸入。
這不是證明 Codex Security 已存在可利用漏洞;它說明真正的安全邊界應放在整個 runner 的隔離與最小權限,不能只把希望放在 prompt。掃描自己擁有或獲准評估的 repo 中、尚未審查且可由攻擊者控制的 PR 內容時,尤其不該使用長期 self-hosted runner、production credential 或可寫主分支的 token。這與 AlphaLab 在AI Agent 密鑰安全和OpenAI 模型攻入 Hugging Face 事件裡反覆看到的教訓一致:工具越能行動,credential scope 與執行邊界就越重要。
七、validation 的設計目標是降低誤報,效果仍需實測
OpenAI 把「validation」明寫進套件定位與工作流,是合理的方向:finding 在露出前先嘗試動態重現;若成本、環境或風險不允許,則做 evidence-backed static assessment,並留下 proof gap 或 deferred 狀態。這套設計通常比只看 pattern 更有訊號,但目前沒有公開 precision benchmark 能證明改善幅度;而且 discovery 與 validation 若共享相近模型與脈絡,也可能共享定位錯誤或推理盲點。
官方 FAQ 自己承認,相同設定重跑仍可能得到不同結果;finding 在下一次沒出現,不能單獨證明漏洞已修好。CLI 因此把 coverage 寫進產物:輸入錯誤、coverage 不完整或 runtime/export failure 應回傳 exit code 2,不能偽裝成綠燈。完成的 scan 若觸發 severity policy,則回傳 exit code 1;預設仍是 report-only,而 exit 0 也不代表不存在未知漏洞。
這個 contract 是優點,因為它把「沒有找到」與「沒有掃完」拆開。真正的高保證流程仍應用獨立 PoC、regression test 與人工 trace 驗證同一 finding,並保留 SAST、SCA、CodeQL 與 secret scanner 作為並行防線。standalone validate 與 patch 都可能以 workspace-write 執行,兩者都應放進 disposable branch/worktree、container 或 VM;呼叫命令是人工授權邊界,啟動後不會逐次詢問。最後仍由人審 diff、跑原始重現與正常行為測試,再進既有 CI;不要讓安全 agent 直接 auto-merge。可參考 AlphaLab 的大型 Repo 安全改版流程。
八、early release 的三個警訊,也有三個好訊號
第一,API 還在快速變動。套件 README 明寫 1.0.0 以前,public API 可能在 minor version 之間改變;0.1.0 發布後約 31 小時內已走到 0.1.4。這對實驗是活力,對 production pinning 則代表你不能直接追 latest。
第二,launch roughness 是真的,但團隊有快速修。HN 上多人回報 authentication 問題,參與 CLI 的 OpenAI 成員承認 launch issue;PR #22 已合併,修補隨 0.1.1 發布,不能把首日 bug 說成現版仍未處理。
第三,存取、guardrail 與成本仍會決定實用性。HN 與 issue tracker 有個別使用者回報長時間掃描後遇到 cyber refusal;團隊把 Trusted Access 視為降低此類阻擋的路徑,而不是全面 bypass。官方也明寫 --max-cost 是估算式停止條件,進行中的請求可能讓最終成本超過設定值。這些是導入前要用自己的 repo 與預算重演的邊界,不能從幾則回報外推出普遍失敗率。
partial output 也不等於能從中斷點續跑。一名使用者回報 rate limit 後無法續接;團隊回覆當時 single failed scan 尚不能 resume,proper retries/resume 仍待改善。這是單一案例與當時狀態,不能外推成普遍失敗率,卻足以提醒團隊把長掃描的可恢復性列入驗收。
好訊號則是:程式碼、issue 與修補節奏都公開;coverage、partial result、成本與 credential precedence 沒有藏在行銷頁後面;團隊也直接參與 HN 討論。透明不保證品質,但至少讓品質能被外部檢查與追責。
九、AlphaLab 的判讀:這次開源值不值得重視?
判讀一:它開放了安全流程的「方向盤」,不是引擎室
這個比喻最接近事實。你現在能控制何時掃、掃哪個 commit、結果落在哪裡、如何進 CI、finding 怎麼追、validation 與 patch 走哪些步驟;但推理服務、存取權與 guardrail 仍由 OpenAI 控制。對重視可整合性與可稽核性的團隊,這已是實質進步;對要求模型與資料完全留在自有環境的團隊,關鍵門檻仍沒消失。
判讀二:harness 的價值可能比單次 finding 更耐久
模型會換,真正進入組織記憶的是 scope、coverage、scan history、false-positive reason、severity policy 與 regression。這也是為什麼跨次比較、可重放 recipe、SARIF 與 typed SDK 並非配角;它們才決定 AI 安全掃描能不能從一次 demo 變成 SSDLC 的一層。
判讀三:安全工具的權限模型,比它的 prompt 更重要
如果 runner 同時帶著 production cloud key、主分支寫入權限與尚未審查的攻擊者可控 PR,最漂亮的 validation prompt 也救不了錯誤邊界。反過來說,專用且可快速撤銷/輪換的 restricted credential、一次性 runner、唯讀 GitHub token 與 branch 權限、外置產物與人類批准,能把 agent 的不確定性關進可接受的 blast radius。
判讀四:熱度要換成四個可對帳指標
- 可重現率:高嚴重度 finding 有多少能用獨立 PoC 穩定重現?
- coverage 誠實度:partial/unknown 是否被 CI 正確擋下,而不是算 pass?
- 修補閉合率:patch 是否通過 regression、正常輸入與繞過測試?
- 單位有效成本:每一個被人接受並修好的 finding,花多少時間、token 與 reviewer 成本?
我同意的部分:Codex Security 開源 CLI/SDK,確實讓安全掃描更容易進入本機、CI 與內部平台,也讓 workflow 可以被讀、被改、被質疑。我存疑的部分:社群熱度不能證明 precision/recall;service access、資料邊界、guardrail、成本與 early API churn,仍可能比模型能力更早卡住 production adoption。
十、現在要怎麼試,才不會把安全工具變成風險
- 先選低風險 repository:用一個你擁有、允許交由 OpenAI 服務分析、且有已知漏洞或 regression 的專案建立 replay set。
- 使用一次性 runner:優先採全新的 hosted runner 或隔離 VM;container 需維持 non-privileged,不能掛 Docker socket 或敏感 host path。不讓 fork PR 或未審內容進長期 self-hosted runner。
- 縮到最少 credential:只在 scan step 注入專用、restricted、可快速撤銷並定期輪換的 OpenAI project key;移除 PAT、production cloud key 與主分支寫入權限。
- pin 版本與 commit:在 checkout 前以
--ignore-scripts安裝固定版本,固定 action SHA 與待掃描 commit,Git credential 不落盤。dry run 只驗 target、mode、output 與 override,不驗 authentication、model access 或實際 runtime;產物與 state 放在 repo 外的私有目錄。 - 先 report-only:建立 false-positive baseline 後再開 severity gate;exit code 2 代表輸入、coverage 或 runtime/export 失敗,不得當作 pass。
- 把 validate 與 patch 當候選操作:兩者都只在 disposable branch/worktree 或 VM 執行,保留 PoC、regression、positive control、人工 review 與既有掃描器,禁止 auto-merge。
- 量測自己的單位成本:用Agent Observability記錄 token、時間與 failure,並用小型 Eval比較「找到多少真問題」而不是只看報告有多長。
📚 延伸閱讀
- AI Agent 密鑰安全:別讓 API Key 進入 Context 與 Session Log
- OpenAI 模型攻入 Hugging Face:高權限 Agent 真正警告了什麼
- 大型 Repo 安全改版:Blast Radius、Code Review Graph 與冷審查
- Agent Observability:監看工具、Token、成本與卡關位置
- 用 10 題小型 Eval 建立可驗收的 AI 模型路由
最有價值的下一步,不是把 5,000 顆 GitHub 星換算成「準確率」,而是拿一組你已知道答案的漏洞與安全修補,讓 Codex Security 在隔離環境裡重跑:它找到什麼、漏掉什麼、能否重現、修補是否閉合、成本多少。當這五個答案能持續被對帳,開源 harness 才真正變成安全能力。
