截至 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.jsonrequirements.txt、Makefile、安裝腳本及 CI 設定。
  • [ ] 使用 readlinkrealpath 或同等工具檢查符號連結的真實目標。
  • [ ] 搜尋硬編碼網域、下載指令、外部 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 目錄、雲端設定目錄、瀏覽器資料、密鑰鏈、簽名憑據及生產環境變數列為拒絕範圍。denyaskallow 的設計應服務於最小權限,而不是把所有提示轉成永久允許。

需要注意的是,權限系統管理的是 Claude Code 是否可執行某項工具;macOS Seatbelt 管理的是進程與子進程可接觸的作業系統資源,兩者不能互相取代。

第一次執行時同時收緊檔案與網路

Anthropic 對 Claude Code 沙箱的說明指出,macOS 使用 Seatbelt、Linux 使用 bubblewrap;沙箱可限制工作目錄及網路主機,並讓 Bash 與其子進程在預先定義的邊界內執行。官方也特別提醒,只有檔案隔離而沒有網路隔離,仍可能造成敏感資料外洩;反過來,只有網路隔離而沒有檔案隔離,也可能讓 Agent 先取得不應接觸的檔案。(anthropic.com)

可按以下順序操作:

  1. 在乾淨工作目錄中建立倉庫副本,避免直接使用主力專案目錄。
  2. 啟動 Claude Code 後先進入計劃或唯讀階段,再確認 /sandbox 的狀態與可用範圍。
  3. 將工作目錄設為主要可寫位置,禁止存取 SSH、雲端設定、簽名材料及其他與任務無關的路徑。
  4. 把網路限制為必要的 API、套件來源或程式碼託管服務;不必要的 DNS、SSH 及任意外連應預設拒絕。
  5. npm install、套件建置、腳本執行、MCP 工具與下載操作逐項審批。
  6. 若命令要求離開沙箱、存取額外目錄或連線未列入白名單的網域,先停止並重新評估環境,不要直接新增長期 allow 規則。
  7. 記錄執行前後的 Git 狀態、檔案清單、程序、網路連線與新增環境變數。

Claude Code 需要連線至 Anthropic API 等服務才能完成驗證與模型處理;在受限制的容器或企業網路內,官方列出的連線需求包括 api.anthropic.comstatsig.anthropic.comsentry.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 工具鏈、長時間執行或可銷毀重建的工作節點,先建立隔離環境,再按本文清單驗收,通常比讓陌生程式碼直接進入主力電腦更容易控制爆炸半徑。