本文根據 Claude Code 官方文檔《Configure the sandboxed Bash tool》整理,資料核對於 2026-11-05。配圖為本站整理的示意圖,不是介面截圖。本站(bigolab.com)不是 Anthropic 官方網站。
適用於誰
- 搜「claude code 電腦安全」「claude code 智能體安全」,擔心它亂改文件、亂聯網的人;
- 不想一直點確認,又希望命令有邊界的人;
- 在 Windows 上用 Claude Code,想知道能不能開沙箱的人。
結論先說
- 沙箱是操作系統層面的邊界,限制的是 Claude 運行的 shell 命令(Bash、PowerShell、Monitor)以及它們啟動的進程,能讀寫哪些文件、連哪些網絡域名。
- 預設關閉。在會話裏運行
/sandbox開啟,或在設定文件裏把sandbox.enabled設為true。 - 只管 shell 命令:Claude 自帶的 Read、Edit、Write、WebFetch、WebSearch 工具,以及鉤子、本地 MCP 伺服器、狀態欄命令等,都不在沙箱裏,它們受權限規則管理。
- 平台:macOS、Linux、WSL2 支持;原生 Windows 上命令不受沙箱限制,官方建議在 WSL2 發行版裏運行 Claude Code。
- 不是絕對安全:官方明確說它降低風險但不是完整的隔離邊界。

圖:本站根據 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 整理的示意圖
- Linux 和 WSL2 先裝依賴:沙箱依賴
bubblewrap和socat。Ubuntu / Debian 用sudo apt-get install bubblewrap socat,Fedora 用sudo dnf install bubblewrap socat。macOS 用系統自帶的 Seatbelt,不用裝。沒裝也可以先運行/sandbox,面板會告訴你缺什麼; - 運行
/sandbox:面板有 Mode、Overrides、Config 三個標籤,缺依賴時會有 Dependencies 標籤;如果只有 Dependencies 一個標籤,說明沙箱還不能啟動; - 選模式(見下節);
- 讓 Claude 跑一條命令,比如構建或測試。第一次需要新的網絡域名時,Claude Code 會提示你批准;
- 驗證:官方建議讓 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 命令。
相關教學
- /guides/claude-code-permission-modes:權限模式
- /guides/claude-code-stop-asking-permission:少彈確認
- /guides/ai-coding-security-secrets-permissions:AI 編程的密鑰與權限
參考資料
- Claude Code 官方文檔:Configure the sandboxed Bash tool — https://code.claude.com/docs/en/sandboxing
0 條評論
還沒有評論,來搶沙發~