本卡屬 FR-078(母卡 CM-1602)。來源:N2(CM-1604)F2 的延伸——報告指出金鑰也散在 docs/conversation-history/首腦查證後發現範圍比報告所寫更廣這些金鑰已於 2026-09-08 全數撤銷,無財務風險,本卡是清理不是止血。

問題是什麼(白話)

2026-09-08 已經把 .env.test 撤出版控、四把 API 金鑰也都撤銷重發了(commit 5746cef156c1dc43)。但同樣那四把金鑰的字串,還散落在版控裡的 15 個檔案中——13 個是對話紀錄的原始 dump,2 個是 Trivy 掃描報告的 JSON。

為什麼還是要清:① 下一次資安掃描會再把它們掃出來一次,而掃描工具無從判斷金鑰已撤銷,會再報一次 HIGH,浪費一輪驗收;② 交外部稽核或客戶時,版控裡有一堆看起來像活金鑰的字串,解釋成本很高;③ 對話紀錄以外的地方(Trivy 報告)代表掃描工具自己的產出也會外洩掃到的秘密,這件事本身要記下來。

首腦查證過的範圍

含金鑰字串的檔案:15
其中受版控:      13
與已撤銷金鑰同一把:9 個檔(OpenAI/Anthropic/Google 各 9;LangChain 1)

分布:
  docs/conversation-history/**   13 檔(對話原始 dump)
  docs/security-reports/2026-07-25/trivy-backend.json
  docs/security-reports/2026-07-25/trivy-backend-final.json

確認方式(runner 自己重跑一次確認範圍沒變,不要把值印進任何落地檔或 commit message):

grep -rlE 'sk-proj-|sk-ant-api03-|AIzaSy|lsv2_pt_' docs/ | wc -l

怎麼修

不要做的事

建議一併評估(回寫給首腦,不要自己做)

N2 的報告建議「加 CI 的 secret scanning,讓下一次在 push 前就被擋下」。這是治本的做法,但屬新增基礎設施、要決策者裁。請在卡片回寫時提出評估(用什麼工具、掛在哪個階段、誤報怎麼處理),不要直接動手建。

紀律