Claude Code 沙箱(sandbox)是什麼:限制命令能讀寫哪些文件、訪問哪些網站,怎麼開、有哪些限制

Claude Code 的沙箱由操作系統限制 Claude 所運行的 shell 命令能讀寫的文件和能連的域名,預設關閉,用 /sandbox 開啟。本文按官方文檔講它管什麼、不管什麼、兩種模式、Linux 與 WSL2 依賴、原生 Windows 不支持,以及官方列出的安全限制。

NNathaniel bigo··原創首發·AI 輔助撰寫
11 分鐘讀完
資料核對於 2026-11-05 · 依據官方文檔與公開資料整理 免費帳號 帳號
本文根據 Claude Code 官方文檔《Configure the sandboxed Bash tool》整理,資料核對於 2026-11-05。配圖為本站整理的示意圖,不是介面截圖。本站(bigolab.com)不是 Anthropic 官方網站。

適用於誰

  • 搜「claude code 電腦安全」「claude code 智能體安全」,擔心它亂改文件、亂聯網的人;
  • 不想一直點確認,又希望命令有邊界的人;
  • 在 Windows 上用 Claude Code,想知道能不能開沙箱的人。

結論先說

  1. 沙箱是操作系統層面的邊界,限制的是 Claude 運行的 shell 命令(Bash、PowerShell、Monitor)以及它們啟動的進程,能讀寫哪些文件、連哪些網絡域名。
  2. 預設關閉。在會話裏運行 /sandbox 開啟,或在設定文件裏把 sandbox.enabled 設為 true。
  3. 只管 shell 命令:Claude 自帶的 Read、Edit、Write、WebFetch、WebSearch 工具,以及鉤子、本地 MCP 伺服器、狀態欄命令等,都不在沙箱裏,它們受權限規則管理。
  4. 平台:macOS、Linux、WSL2 支持;原生 Windows 上命令不受沙箱限制,官方建議在 WSL2 發行版裏運行 Claude Code。
  5. 不是絕對安全:官方明確說它降低風險但不是完整的隔離邊界。

沙箱預設能做什麼

圖:本站根據 Claude Code 官方文檔:Sandboxing 整理的示意圖

一、沙箱預設的邊界

官方表格的大意:

  • 寫:工作目錄、每用戶臨時目錄,以及你用 --add-dir、/add-dir 或 permissions.additionalDirectories 加入的目錄;「受保護路徑」始終不可寫;
  • 讀:機器上的大部分位置,包括 ~/.ssh、~/.aws/credentials 這類憑據文件。要收緊用 filesystem.denyRead 或 credentials 設定;
  • 網絡:命令沒有直接出網路徑,連接經過本機上的代理,代理按「允許的域名」逐個檢查,這份名單一開始是空的;
  • 環境變量:繼承 Claude Code 的環境,包括裏面的密鑰;可用 credentials 設定或 CLAUDE_CODE_SUBPROCESS_ENV_SCRUB 處理。

受保護路徑包括:.claude 下的設定文件和 skills、agents、commands、hooks 目錄,.mcp.json,以及 .bashrc、.zshrc、.gitconfig、.vscode、.idea 和 .git 裏的 hooks、config 等。官方的理由是:能改這些文件的命令可能給自己加權限,或添加由 Claude Code 在沙箱外執行的鉤子、MCP 伺服器。

二、怎麼開啟

開啟沙箱的步驟

圖:本站根據 Claude Code 官方文檔:Sandboxing 整理的示意圖

  1. Linux 和 WSL2 先裝依賴:沙箱依賴 bubblewrap 和 socat。Ubuntu / Debian 用 sudo apt-get install bubblewrap socat,Fedora 用 sudo dnf install bubblewrap socat。macOS 用系統自帶的 Seatbelt,不用裝。沒裝也可以先運行 /sandbox,面板會告訴你缺什麼;
  2. 運行 /sandbox:面板有 Mode、Overrides、Config 三個標籤,缺依賴時會有 Dependencies 標籤;如果只有 Dependencies 一個標籤,說明沙箱還不能啟動;
  3. 選模式(見下節);
  4. 讓 Claude 跑一條命令,比如構建或測試。第一次需要新的網絡域名時,Claude Code 會提示你批准;
  5. 驗證:官方建議讓 Claude 執行 touch ~/sandbox-probe,在沙箱內應失敗(macOS 報 Operation not permitted,Linux 和 WSL2 報 Read-only file system)。注意你自己在 ! 提示符下輸入的命令通常不在沙箱裏,所以不能用來測試。

選擇的模式會儲存到項目的 .claude/settings.local.json;要對所有項目啟用,把 sandbox.enabled 寫進 ~/.claude/settings.json。設定文件的位置見 /guides/claude-code-settings-json。單次會話也可以用 --settings 傳入 JSON。

官方有一條重要警告:平台不支持或啟動時依賴檢查失敗時,預設會不加沙箱直接運行命令。 想讓它直接退出,把 sandbox.failIfUnavailable 設為 true。

三、兩種模式

官方說兩種模式下沙箱的限制完全相同,區別只在是否自動批准:

  • 自動允許(auto-allow):在沙箱內運行的命令不再彈出確認。但仍有例外:被 Bash 拒絕規則匹配的命令照樣被攔;rm 或 rmdir 指向關鍵路徑時仍走常規權限流程;Bash(git push *) 這類按內容限定的 ask 規則仍會提示;
  • 常規權限:即使命令在沙箱裏,仍保留常規權限提示。

這也是減少確認彈窗的一種方式,對照 /guides/claude-code-stop-asking-permission 和 /guides/claude-code-permission-modes。

四、兩個要小心的點

1. 沙箱外重試(unsandboxed retry)。命令在沙箱裏失敗時,Claude 可能會帶 dangerouslyDisableSandbox 參數重試,此時命令不受沙箱限制。誰來批准取決於權限模式:bypassPermissions 下不提示直接運行;手動和 acceptEdits 模式會彈出標題為「Bash command (unsandboxed)」的確認;自動模式由分類器判斷;dontAsk 模式拒絕。官方還說,如果有匹配的 allow 規則(如 Bash(curl *)),它也會批准這次重試。想完全禁止,可以把 allowUnsandboxedCommands 設為 false,例如:

bash
claude --settings '{"sandbox": {"enabled": true, "allowUnsandboxedCommands": false}}'

2. 憑據保護。sandbox.credentials 可以聲明要保護的文件和環境變量,官方示例是拒絕讀取 ~/.aws/credentials 和 ~/.ssh,並從沙箱命令的環境裏移除 GITHUB_TOKEN、NPM_TOKEN:

json
{
  "sandbox": {
    "enabled": true,
    "credentials": {
      "files": [
        { "path": "~/.aws/credentials", "mode": "deny" },
        { "path": "~/.ssh", "mode": "deny" }
      ],
      "envVars": [
        { "name": "GITHUB_TOKEN", "mode": "deny" },
        { "name": "NPM_TOKEN", "mode": "deny" }
      ]
    }
  }
}

五、官方列出的限制

  • 網絡過濾只看域名:內置代理預設不解密也不檢查 TLS,內容不被檢查。官方警告:放行 github.com 這類寬泛域名可能留下數據外泄的通道,沙箱內的代碼可能用域前置(domain fronting)等手段訪問名單外的主機;更強的保證需要自建能終止 TLS 並檢查流量的代理;
  • Unix socket:allowUnixSockets 配置不當可能造成權限提升;
  • 命令之外的東西不受保護(見開頭第 3 點);想把所有工具和進程放在同一條邊界裏,官方建議把 Claude Code 進程本身放進容器、虛擬機或沙箱運行時。

更多關於密鑰與權限的通用習慣見 /guides/ai-coding-security-secrets-permissions。想長期使用 Claude Code,可了解 /chongzhi/claude-code。

常見問題

Q:Windows 上能用沙箱嗎?

原生 Windows 不行;官方說要在 WSL2 裏運行 Claude Code。WSL 的相關說明見 /guides/claude-code-install-methods-git-npm-official。

Q:開了沙箱,命令一直報網絡錯誤?

預設允許域名為空,需要把需要的域名加入 network.allowedDomains,或在提示時批准。官方的 Configure sandboxing 一節有細節。

Q:沙箱能攔住 Claude 的 Edit 工具嗎?

不能,文件工具受權限規則管理,沙箱只管 shell 命令。

相關教學

參考資料

  • Claude Code 官方文檔:Configure the sandboxed Bash tool — https://code.claude.com/docs/en/sandboxing

Nathaniel 的更多內容

  1. 01

    Claude Code 在 Windows 上的常見坑:Git Bash 還是 PowerShell、路徑反斜槓、假報錯、WSL 怎麼選

    Windows 上用 Claude Code,裝好之後最容易踩的是:用哪個 shell、路徑寫法不一致、grep 沒匹配就報錯、鉤子沒生效、WSL 和原生怎麼選。本文逐條按官方文檔整理原因和處理辦法,附三段提示詞和一張對照表。

    Claude0
  2. 02

    Claude Code Hooks 實戰「提交前自動跑測試」:PreToolUse 攔住 git commit,測試不過就退出碼 2,附 Windows 注意點

    只寫一個完整例子:讓 Claude Code 每次要執行 git commit 之前,先自動跑項目測試,沒通過就攔下並把輸出交給它修。本文按官方 Hooks 文檔給出腳本、settings.json 配置、測試方法、排錯和 Windows 的兩處坑。

    Claude0
  3. 03

    Claude Code 自定義斜槓命令與 Skill 實戰:從零寫一個「生成更新日誌」的 /release-notes,含傳參、預執行命令和調試

    概念看過了,還是不知道從哪下手?本文按 Claude Code 官方「Extend Claude with skills」寫一個完整可用的例子:用 /release-notes 根據 git 記錄生成更新日誌,覆蓋目錄、frontmatter、傳參、預執行命令、預授權和調試。

    Claude0
  4. 04

    Claude Code 部署網站:先寫 Dockerfile 和 compose 在本機跑通,再按清單上雲伺服器,別讓它直接改線上

    想讓 Claude Code 幫你把網站部署到雲伺服器。本文只寫通用做法,按 Docker 官方文檔講:讓它寫 Dockerfile、.dockerignore 和 compose,在本機跑通,端口和數據卷怎麼設,再給出上線清單,並說明為什麼不要讓它直接動線上機器。

    Claude0
  5. 05

    Claude Code 寫爬蟲與數據清洗:先查 robots.txt 和網站條款,控制頻率,原始數據留一份再清洗

    想讓 Claude Code 寫爬蟲抓數據再清洗。本文先講合規:robots.txt 不是授權也不是安全措施、網站條款要自己讀;再講怎麼用 Python 標準庫檢查規則、小樣本先試、儲存原始數據,以及用 pandas 清洗,附四段提示詞。

    Claude0
  6. 06

    Claude Code 寫 Chrome 擴展:按 Manifest V3 起步,加載未打包的擴展,改了哪些文件要重新加載

    想讓 Claude Code 幫你寫一個 Chrome 擴展。本文按 Chrome 官方擴展文檔講:manifest.json 的最小寫法、在 chrome://extensions 加載未打包的擴展、哪些改動要刷新、怎麼看控制檯和報錯,再給四段提示詞,以及權限要盡量少。

    Claude0

同產品的其他教學

  1. 01

    Claude Code 寫安卓 App:Android Studio 建項目、讓它用 gradlew 編譯安裝,報錯和日誌怎麼餵給它

    想讓 Claude Code 幫你寫安卓 App。官方文檔沒有專門的安卓教學,本文把 Claude Code 官方工作流和安卓官方命令行文檔拼在一起:Android Studio 建項目、gradlew 編譯安裝、模擬器和真機、測試與日誌,附四段提示詞。

    Claude0
  2. 02

    Claude Code 用數據庫 MCP 查數據、出報表:只讀帳號、先看口徑再看數字,結果別一次拉太多行

    想用自然語言讓 Claude Code 查數據庫、出統計報表,而不是寫後端接口。本文按官方 MCP 頁面和 DBHub 說明講:怎麼連 PostgreSQL、MySQL、SQLite、輸出太大怎麼辦、怎麼讓它先說明口徑、怎麼核對數字,附三段提示詞。

    Claude0
  3. 03

    Claude Code 配 Figma MCP 還原設計稿:插件或一條命令安裝,複製圖層連結,小塊小塊地讓它出代碼

    想讓 Claude Code 照 Figma 設計稿寫前端代碼。本文按 Figma 官方開發者文檔講:遠程伺服器地址、插件和手動兩種安裝、怎麼複製圖層連結、為什麼要選小塊、座位類型與調用次數限制,並給三段還原設計稿的提示詞。

    Claude0
  4. 04

    Claude Code 管理 GitHub issue:用 gh 命令還是 GitHub MCP,怎麼裝、怎麼限權、怎麼讓它分揀和回覆 issue

    讓 Claude Code 讀 issue、分揀標籤、起草回覆、關聯 PR,有兩條路:裝好 gh 命令行直接用,或連 GitHub 官方 MCP 伺服器。本文按兩邊官方文檔講安裝命令、令牌權限、只讀模式,並給出三段分揀提示詞和限權設定。

    Claude0
  5. 05

    Claude Code 配 Playwright MCP 做瀏覽器測試:一條命令安裝,讓它打開頁面、點按鈕、讀控制檯,再把流程寫成測試

    想讓 Claude Code 自己打開瀏覽器測試你的網頁。本文按微軟 Playwright MCP 官方倉庫和 Claude Code 官方 MCP 文檔講:安裝命令、怎麼確認連上、有頭無頭與隔離參數、一次測試的提示詞,以及它不是安全邊界這件事。

    Claude0
  6. 06

    Claude Code 寫文檔、README 和代碼註釋:先讓它讀代碼再動筆,指定風格,寫完逐條核對命令能不能跑

    想讓 Claude Code 給項目補 README、接口文檔和註釋,又怕它編造不存在的命令和參數。本文按官方「Handle documentation」工作流講:先找沒有文檔的代碼、指定風格、寫完核對,附四段可複製提示詞和驗證辦法。

    Claude0

0 條評論

登入 後參與評論

還沒有評論,來搶沙發~