截至 2026 年 8 月 15 日更新;資料核實自 Anthropic 官方文件、Claude Code 官方安全公告及 Wiz 原始研究。
84%:Anthropic 表示,啟用沙箱後,Claude Code 的權限提示數量在其內部使用資料中下降了 84%;但這不代表陌生倉庫已經安全。可執行的防護仍必須同時限制檔案系統、網路出口與權限繞過。(anthropic.com)
可執行結論:可信自有倉庫可在收緊權限後使用本機沙箱;來源不明、需要安裝依賴或必須開放網路的倉庫,不應直接接觸主力 Mac 的 SSH 私鑰、雲端憑據或簽名材料,應改用專用虛擬機或獨立雲端 Mac。
這篇指南適合哪些人
需要用 Claude Code 審查開源專案或陌生 Pull Request 的開發者,可按本文步驟降低倉庫內容影響主機的風險。
允許 Claude Code 執行測試、安裝依賴或呼叫 MCP 工具的團隊負責人,可用本文劃定檔案、網路與權限邊界;準備部署 AI Agent 執行節點的管理員,也可把最後的驗收項目納入環境流程。
啟動前先切斷四條常見越界路徑
直接在外部倉庫根目錄啟動 Claude Code,問題不只來自模型產生的 Shell 指令。專案設定檔可能改動環境變數,Hooks 可能在特定事件觸發腳本,依賴安裝流程可能執行 postinstall,符號連結則可能把原本看似位於工作目錄內的路徑導向其他位置。
Anthropic 官方安全公告曾記錄一個專案載入流程問題:受攻擊者控制的倉庫可透過設定 ANTHROPIC_BASE_URL,在信任提示出現前讓 Claude Code 對外發出 API 請求,受影響版本低於 2.0.65,修補版本為 2.0.65。這不是所有版本目前都可被利用的結論,而是官方對特定問題與版本範圍的描述。(github.com)
Wiz 在 2026 年披露的 GhostApproval 研究,則把焦點放在惡意符號連結與信任邊界;Anthropic 回應稱,該情境涉及使用者在含有惡意符號連結的目錄內明確確認權限提示,與其原先威脅模型存在差異,且新客戶會自動取得修補版本。這項研究應視為具名第三方研究,不宜擴大解讀成所有 Claude Code 版本都必然受到影響。(wiz.io)
啟動前至少完成以下檢查:
- [ ] 檢查
.claude/內的設定、Hooks、指令與代理宣告。 - [ ] 搜尋 MCP Server 設定,確認是否連到不熟悉的本機程式或外部網域。
- [ ] 檢查
package.json、requirements.txt、Makefile、安裝腳本及 CI 設定。 - [ ] 使用
readlink、realpath或同等工具檢查符號連結的真實目標。 - [ ] 搜尋硬編碼網域、下載指令、外部 Shell、Base64 解碼及可疑的資料上傳流程。
- [ ] 移除主機上的 SSH 私鑰、雲端存取金鑰、簽名憑據與生產環境變數。
提醒:信任彈窗只表示使用者正在批准某個行為,不等於作業系統已經隔離該行為。Anthropic 對 Agent containment 的復盤也明確把人工作業審批、沙箱、虛擬機與出口控制視為不同層次的防護。(anthropic.com)
先按風險選擇執行環境
在首次執行前,不宜先問「哪一個工具最方便」,而應先判斷陌生倉庫需要接觸哪些資源。下表用來區分本機沙箱、Dev Container 與專用虛擬機或雲端 Mac 的適用範圍。
| 倉庫與任務條件 | 建議環境 | 必須保留的限制 |
|---|---|---|
| 自有倉庫、無生產憑據、只做閱讀與小範圍測試 | 本機 Claude Code 沙箱 | 工作目錄可寫,其他敏感路徑拒絕 |
| 開源倉庫、需要安裝依賴、需要有限網路 | Dev Container 或專用 VM | 不掛載主機家目錄,出口只允許必要網域 |
| 來源不明、需要長時間自主執行、可能呼叫 MCP | 專用虛擬機或獨立雲端 Mac | 憑據隔離、可銷毀重建、禁止直接連到生產環境 |
| 需要 Xcode、macOS 專屬工具或實際簽名流程 | 獨立 Mac 執行節點 | 簽名材料按任務注入,完成後撤銷或重建 |
決策條件
- 若倉庫可信、沒有長期憑據、只需讀取或測試,則選本機沙箱。
- 若需要安裝第三方依賴,但可接受固定的網路白名單,則先選 Dev Container 或專用 VM。
- 若來源無法確認、需要開放網路、必須長時間無人值守,則回退到獨立虛擬機或雲端 Mac。
- 若任務需要 SSH、雲端 API 或簽名材料,則先建立一次性或限權憑據,不要掛載主力 Mac 的原有密鑰。
- 若沙箱功能無法啟用、網路無法套用白名單,則停止執行,不以一次永久放行換取相容性。
首次信任時從最小權限開始
Claude Code 的權限模式應按任務階段調整,而不是一開始就追求全自動。官方 CLI 文件列出計劃模式、工具允許與拒絕清單,以及跳過權限提示的參數;其中 --dangerously-skip-permissions 應被視為高風險選項,不適合作為陌生倉庫的預設入口。(docs.anthropic.com)
較穩妥的順序如下:
第一階段:計劃與唯讀。
先要求 Claude Code 說明目錄結構、依賴、測試入口、可能執行的指令及外部連線需求,不批准修改、安裝或刪除操作。此階段的目標是取得風險清單,不是立即完成任務。
第二階段:逐項審批。
對讀取、編輯、Shell、安裝依賴及網路請求分開判斷。對陌生命令,應檢查實際路徑、參數、輸入檔案與輸出位置;不能只根據命令名稱判斷安全。
第三階段:明確拒絕。
把 SSH 目錄、雲端設定目錄、瀏覽器資料、密鑰鏈、簽名憑據及生產環境變數列為拒絕範圍。deny、ask、allow 的設計應服務於最小權限,而不是把所有提示轉成永久允許。
需要注意的是,權限系統管理的是 Claude Code 是否可執行某項工具;macOS Seatbelt 管理的是進程與子進程可接觸的作業系統資源,兩者不能互相取代。
第一次執行時同時收緊檔案與網路
Anthropic 對 Claude Code 沙箱的說明指出,macOS 使用 Seatbelt、Linux 使用 bubblewrap;沙箱可限制工作目錄及網路主機,並讓 Bash 與其子進程在預先定義的邊界內執行。官方也特別提醒,只有檔案隔離而沒有網路隔離,仍可能造成敏感資料外洩;反過來,只有網路隔離而沒有檔案隔離,也可能讓 Agent 先取得不應接觸的檔案。(anthropic.com)
可按以下順序操作:
- 在乾淨工作目錄中建立倉庫副本,避免直接使用主力專案目錄。
- 啟動 Claude Code 後先進入計劃或唯讀階段,再確認
/sandbox的狀態與可用範圍。 - 將工作目錄設為主要可寫位置,禁止存取 SSH、雲端設定、簽名材料及其他與任務無關的路徑。
- 把網路限制為必要的 API、套件來源或程式碼託管服務;不必要的 DNS、SSH 及任意外連應預設拒絕。
- 對
npm install、套件建置、腳本執行、MCP 工具與下載操作逐項審批。 - 若命令要求離開沙箱、存取額外目錄或連線未列入白名單的網域,先停止並重新評估環境,不要直接新增長期
allow規則。 - 記錄執行前後的 Git 狀態、檔案清單、程序、網路連線與新增環境變數。
Claude Code 需要連線至 Anthropic API 等服務才能完成驗證與模型處理;在受限制的容器或企業網路內,官方列出的連線需求包括 api.anthropic.com、statsig.anthropic.com 及 sentry.io。這些是 Claude Code 本身的服務需求,不代表陌生倉庫應獲得任意外連能力。(docs.anthropic.com)
Dev Container、虛擬機與沙箱不能混為一談
| 防護層 | 能解決的問題 | 不能單獨解決的問題 |
|---|---|---|
| Claude Code 權限模式 | 控制工具是否需要審批、哪些工具可直接使用 | 無法防止已批准命令在主機上造成副作用 |
| macOS Seatbelt 沙箱 | 收緊 Bash 及子進程的檔案與網路範圍 | 無法保護已掛載進環境的 SSH 私鑰 |
| Dev Container | 固定依賴與工作目錄,方便重建 | 掛載、出口、Git 憑據及容器權限仍可能形成外洩路徑 |
| 專用虛擬機 | 把執行環境與主力系統分開 | 若注入主力憑據或保留長期狀態,隔離效果會下降 |
| 獨立雲端 Mac | 提供獨立 macOS 工具鏈與可重建的執行節點 | 不是天然安全,仍需設定權限、出口與清理流程 |
Dev Container 適合需要固定依賴與可重複建置的團隊,但不能宣稱完全隔離 Claude Code。若容器掛載了主機的家目錄、SSH Agent、Git 設定或雲端憑據,攻擊面會隨掛載內容擴大。對需要 Xcode、macOS 專屬工具或長時間執行的任務,獨立 Mac 比把主力電腦硬塞進更多容器規則更容易驗收。
若團隊需要臨時建立獨立 macOS 執行節點,可先參考 RUVCLOUD 的雲端 Mac 方案 與 方案價格說明,但仍應按照本文的檔案、網路及憑據邊界逐項驗收;雲端位置本身不能取代安全設計。
經驗法則:長任務最怕的不是單次命令失敗,而是環境在無人監看時持續保留憑據、網路出口與寫入權限。若三者不能同時收緊,應改用可銷毀重建的執行節點。
結束後驗收清理與是否重建
任務完成不等於風險結束。陌生腳本可能已修改 Shell 設定、建立持久化工作、增加 authorized_keys、寫入排程,或把資料傳送到外部服務;Git 回滾只能處理版本庫內的變更,無法撤銷外部副作用。
完成工作後逐項確認:
- [ ] 檢查
git diff、未追蹤檔案、子模組與工作樹狀態。 - [ ] 檢查 Shell 啟動檔、排程、背景程序與新增服務。
- [ ] 檢查 SSH
authorized_keys、已使用的 Agent socket 及臨時密鑰。 - [ ] 撤銷本次注入的 API Token、雲端憑據與簽名材料。
- [ ] 檢查網路代理、DNS、套件來源及異常外連紀錄。
- [ ] 對照執行前的快照,確認是否有工作目錄以外的檔案變更。
- [ ] 若環境曾執行來源不明腳本,優先銷毀並重建,不要只刪除幾個可疑檔案後繼續使用。
最後可用三種結果判斷環境去留:若只在預期工作目錄內變更,且憑據未進入環境,可繼續使用;若出現未解釋的路徑、程序或外連,先補充限制並重新審查;若曾接觸生產憑據、無法確認清理完整性或發生沙箱繞過,立即廢棄該環境並撤銷相關憑據。
常見問題
Claude Code 打開陌生 GitHub 倉庫安全嗎?
不能只看信任提示判斷安全。陌生倉庫可能包含專案設定、Hooks、安裝腳本、符號連結或 MCP 宣告,並在使用者完全理解內容前影響執行流程。應先以唯讀方式檢查,再於沒有長期憑據的隔離環境中執行。
Claude Code 的 sandbox 能否保護 SSH 密鑰?
只有在 SSH 私鑰根本沒有掛載進執行環境,並且檔案與網路邊界同時收緊時,才可把風險降到合理範圍。macOS Seatbelt 與 Claude Code 權限系統不能把已暴露在主機上的私鑰變回安全狀態,也不能取代憑據撤銷與重建。
Claude Code 應該用主力 Mac 還是虛擬機運行?
可信、無敏感憑據且只需讀取或測試的倉庫,可在主力 Mac 上使用沙箱與逐項審批。來源不明、需要安裝依賴、開放網路或執行長任務時,應改用專用虛擬機或獨立雲端 Mac,讓主力環境與執行副作用分離。
Dev Container 能否完全隔離 Claude Code?
不能把 Dev Container 視為自動完成的安全邊界。容器仍可能擁有網路、掛載目錄、Git 憑據或特定工具權限;若容器能推送程式碼或連線外部服務,資料外洩路徑仍然存在。管理員必須另外檢查掛載、出口規則與憑據注入方式。
Claude Code 怎麼限制聯網網域和檔案存取?
先啟用沙箱,再以工作目錄作為唯一可寫範圍,對 SSH、雲端憑據、簽名材料及其他敏感路徑設定拒絕規則;網路方面只允許任務必要的網域,並讓未列入白名單的連線失敗,而不是自動跳出沙箱要求放行。
對陌生倉庫而言,直接在主力 Mac 上執行的方案通常有三個缺點:長期憑據容易被意外帶入、一次批准可能讓 Shell 或 MCP 取得過大的操作範圍,而且任務結束後很難證明所有外部副作用都已清除。RUVCLOUD 的獨立雲端 Mac 不能取代權限與出口設計,但若任務需要 macOS 工具鏈、長時間執行或可銷毀重建的工作節點,先建立隔離環境,再按本文清單驗收,通常比讓陌生程式碼直接進入主力電腦更容易控制爆炸半徑。