MobileSetting 流動科技 全部文章

Claude Code 設定檔洩密:香港開發者如何自查與輪替憑證(2026)

Apiiro 研究經 The Hacker News(2026-11-07)與 Ars Technica(2026-11-09)報道:公開 GitHub 上有 104,185 份 Claude Code 的 .claude/settings.local.json,其中 1,122 份含至少一項秘密(合共 1,379)。香港開發者如何自查所屬組織與版本庫、先輪替再清理。

Michelle Wong · · 7 分鐘閱讀
Claude Code 設定檔洩密:香港開發者如何自查與輪替憑證(2026)

安全公司 Apiiro 的研究,經 The Hacker News(2026-11-07) 與 Ars Technica(2026-11-09) 報道,指開發者在 Claude Code 選擇 “Yes, and don’t ask again” 後,帶有密碼或 token 的完整指令可能被寫入專案內的 .claude/settings.local.json,並出現在公開 GitHub。The Hacker News 寫:公開副本有 104,185 份(分布在 103,617 個版本庫),其中 1,122 份含至少一項秘密,合共 1,379 項。Ars 所寫「超過 10 萬/約 1,100」與上述精確數字相符。研究原文見 Apiiro 該篇報告。設定與權限說明請以官方 Claude Code 設定文件 與 權限文件 當日為準。

問題如何出現

Claude Code 在執行大多數 Bash 指令前會先詢問。當開發者選擇 “Yes, and don’t ask again”,許可規則會寫入專案內的 .claude/settings.local.json。若獲准的是一條完整的精確指令,其中的密碼、API 金鑰或其他秘密可能以明文一併寫入;檔案一旦被提交,便可能出現在公開版本庫。The Hacker News 與 Ars 都提到,在含有秘密的那些檔案擁有者之中,有 63 個組織。刪除目前工作樹上的檔案,並不能撤銷 git 歷史或 fork 裡的舊內容。設定與權限說明以官方文件當日為準。

機制

下表說明設定檔如何被寫入,以及官方保護的範圍:

項目說明注意
“Yes, and don’t ask again”選擇此項後,Claude Code 會把該次許可存成 allow 規則,寫入 .claude/settings.local.json此檔是專案本機設定,只作用於你在該專案中的工作階段
規則類型規則有時是模式(例如 npm test *),有時是一條完整的精確指令若是精確指令,其中的密碼或 token 可能以明文一併寫入
全域 git excludes官方文件寫,Claude Code 第一次在尚未忽略該檔的 git 版本庫寫入時,會把 **/.claude/settings.local.json 加入使用者電腦的全域 git excludes這是該使用者、該部電腦上的 git 設定,不會自動寫入專案 .gitignore,也不會隨版本庫帶走
專案 .gitignoreClaude Code 不會自動把該檔加入專案自己的 .gitignore若是親手建立該檔,須自行加入專案 .gitignore
複本與歷史版本庫被複製到另一部電腦,或資料夾後來才初始化成版本庫,該檔仍可能被意外上傳已提交的檔不會因刪除目前複本而從 git 歷史消失;fork 亦可能保留舊內容
與共享設定檔的分別.claude/settings.json 是官方預期可以提交給團隊的共享檔,與本機的 settings.local.json 不同不要把秘密寫進共享設定檔的 allow 規則

香港開發者可以做甚麼

以下步驟只適用於檢查自己所屬的組織、自己的版本庫與自己的 git 歷史。建議先輪替憑證,再清理檔案:

步驟做甚麼注意
自查檔案在自己的 GitHub 組織搜尋 .claude/settings.local.json 與 .claude/settings.json,並檢查各版本庫的 git 歷史即使目前檔案已刪除,歷史紀錄仍可能保留舊內容
先輪替再清理先更換該檔曾經保存過的每一組密碼、token 與金鑰,然後才清理檔案刪除目前的檔不能撤銷已公開的歷史;fork 與 git 歷史仍可能保留舊內容
停止追蹤本機檔執行 git rm --cached .claude/settings.local.json,並把該路徑加入專案自己的 .gitignore取消追蹤只作用於目前工作複本;要把忽略規則隨專案走,須把路徑寫入專案 .gitignore 並提交該變更
刪除含秘密的規則在自己的電腦打開該檔,刪除任何包含秘密的規則即使從未提交,本機檔案仍可能含有敏感內容
使用環境變數或機密管理工具指令改為引用變數(例如 $DB_URL)或機密管理工具,讓存下來的規則只有變數名不要把秘密直接寫進指令
批准模式而非帶秘密的精確指令使用模式寫法,例如 Bash(npm run test *) 或 Bash(npm run:*),而不是批准一條帶有秘密的完整指令官方設定文件的許可例子亦使用模式寫法

報道中的秘密類型

根據 The Hacker News 轉述的研究數據,這些秘密包括資料庫密碼、面向公開伺服器的 SSH 登入、GitHub/GitLab/npm token,以及 AWS 金鑰等。報道指超過三分之一的秘密可直接打開資料庫,其中包括 379 個資料庫密碼;另有 43 個 SSH 登入、42 個程式碼託管平台 token,以及 23 個 AWS 金鑰。Apiiro 並未逐一測試這些秘密是否仍然有效,但有機構確認,被通知的金鑰當時仍在使用。常見掃描器不一定能找出寫在指令裡的密碼:在 1,122 份含秘密的檔案之中,gitleaks 標出 564 份、TruffleHog 標出 643 份,兩者都沒有標出的仍有 215 份。

官方相關回應

Ars Technica 引述 Claude Code 的 Boris Cherny 在 Hacker News 週末討論中表示,團隊正在了解可以做些什麼來防止此事,並認為這些設定檔幾乎不應被提交到 git。他建議使用 secret scanner,並表示團隊考慮日後把這類掃描功能內建到 Claude Code。報道亦提到他建議使用 Claude Code 的 auto mode 處理例行權限提示;有使用者指出,即使在 auto mode 下,敏感指令仍可能被寫入設定檔,Cherny 稱之為 “good catch”,團隊正在思考如何改進。來源並未顯示官方修補已經推出。設定與權限說明以官方文件當日為準。

結論

香港若正在使用 Claude Code,應先檢查自己所屬組織與版本庫(包括 git 歷史)有沒有 .claude/settings.local.json 或把秘密寫進共享 .claude/settings.json 的情況,並先輪替受影響的密碼、token 與金鑰,再以 git rm --cached 加上專案 .gitignore 清理本機設定檔。批准權限時,優先使用模式規則,並避免把秘密寫進指令。若要一併了解 Claude Code 在香港開發流程中的其他用法,可參考 Claude Code 接 Xcode:香港開發者點用 Apple MCP(2026)、Claude Code 背景 subagent 狀態成本:v2.1.316+ 約平 99%(香港 2026)、Claude Code vs Codex:coding agent/harness 點 steer、點 delegate(香港 2026),以及今日已刊出的 Claude Fable 5.2 香港指南 2026:幾時用、點接入、同 Opus 5.5 分別。

更新於 2026-11-10(Asia/Hong_Kong)。