Claude Code sandbox 實用指南:少撳批准之前,先封好 Bash 邊界
3C 產品

Claude Code sandbox 實用指南:少撳批准之前,先封好 Bash 邊界

圖片:via XDA Developers — https://www.xda-developers.com/stopped-approving-claude-code-commands-discovering-built-in-sandbox/
TechLab 編輯部(譯)·

開 auto-allow 夠方便,但預設設定仲有幾個安全位要執

XDA 作者 Anurag Singh 分享,開咗 Claude Code 內置 sandbox 之後,測試、安裝依賴同反覆修 build 都可以一路跑,唔使每條 Bash 指令逐次批准。呢個用法確實解決咗 approval fatigue,不過「開咗就由得 agent 做」講過龍。Sandbox 主要係限制指令可以掂邊啲檔案同網域,工作目錄本身仍然係可寫範圍,設定得鬆一樣可以出事。

點開 sandbox,同 auto-allow 實際做咩

喺 Claude Code session 輸入 /sandbox,揀 auto-allow mode,之後能夠留喺 sandbox 入面執行嘅 Bash 指令就會自動獲准。Regular permissions mode 同樣有隔離,只係每條指令照舊要問。經介面揀好模式後,設定會寫入該 project 嘅 .claude/settings.local.json;想所有 project 都預設開啟,就要喺使用者設定加入 sandbox.enabled: true

Auto-allow 唔代表所有操作都靜靜雞放行。明確 deny rules 仍然有效,涉及刪除根目錄、home directory 等重要位置嘅 rmrmdir 亦會再問。新網域預設要先獲准,入到 allowlist 後先可以畀 Bash subprocess 連線。換句話講,批准提示會少好多,但出界、敏感刪除同未獲准網域仍有閘口。

Filesystem 隔離冇想像中咁密封

預設之下,sandboxed Bash 可以寫入而家工作目錄同該 session 嘅暫存目錄,其他位置就唔准寫。問題係讀取範圍預設闊好多:除咗已封鎖位置,指令仍可讀電腦大部分檔案。假如 shell 環境帶住 token,或者 home directory 放咗雲端憑證,淨係守住寫入權限未夠;要用 sandbox.credentialsfilesystem.denyRead,再配合 Read deny rules 封住 .env、SSH key、雲端憑證同其他敏感路徑。

Project directory 可寫亦代表 agent 可以改壞甚至刪走成個 repo 內容。Git 對已追蹤檔案有一定保護,但未 commit 嘅改動、untracked 檔案同本機資料未必救得返。開 session 前最好揀準 repo root,先 commit 或備份重要改動,完成後再睇 git diff。由 home directory 或一個塞滿多個客戶 project 嘅上層資料夾開 Claude Code,個可寫邊界自然闊得多。

Unsandboxed escape hatch 要自己決定留唔留

有啲工具要接觸未獲准網域或系統資源,喺 sandbox 入面會失敗。Claude Code 預設容許佢改用 dangerouslyDisableSandbox 再試,操作會返去正常 permission gate,而 excludedCommands 入面嘅指令亦會直接喺 sandbox 外跑。個名已經講得幾白。每次見到呢類批准提示,都代表指令想離開 sandbox,要重新睇清楚先批准。

想收緊可以設 allowUnsandboxedCommands: false,完全關閉呢條 escape hatch。另一個值得開嘅係 failIfUnavailable: true;官方預設做法係 sandbox 啟動失敗時顯示警告,跟住照樣用 unsandboxed 方式跑。團隊如果真係靠 sandbox 做安全閘,淨係顯示警告明顯唔夠,啟動失敗就停低會穩陣得多。

最大限制:只包住 Bash subprocess

Claude Code 內置 Read、Edit、Write 工具唔會經 Bash sandbox,佢哋直接跟 permission rules;MCP server、hooks 同電腦操作亦可能喺實機環境運行。呢點最易令人誤判:畫面顯示 sandbox 已開,唔代表成個 Claude Code process 都困喺同一個 OS 邊界。敏感檔案要同時加 Read、Edit deny rules,唔用嘅 MCP 或 hooks 就關掉,permission 設定唔可以一開 auto-allow 就擺埋一邊。

如果要處理來源未明嘅 repo,或者打算長時間無人睇住咁跑,Anthropic 官方建議考慮 sandbox runtime、dev container、獨立 container、VM 或 Claude Code 網頁版。呢幾種方案可以包埋 file tools、MCP 同 hooks;內置 Bash sandbox 較適合日常開發時減少打斷,唔適合單獨承擔全自動 session 嘅隔離工作。

macOS 最直接,Windows 要經 WSL2

macOS 用系統內置 Seatbelt,基本上開 /sandbox 就用得。Linux 同 WSL2 就靠 bubblewrapsocat,Ubuntu 24.04 或更新版本仲可能要處理 AppArmor 對 unprivileged user namespace 嘅限制。WSL1 冇所需 kernel 功能,原生 Windows 暫時亦唔支援;WSL2 雖然可用,但 sandboxed command 冇法直接開 cmd.exepowershell.exe/mnt/c/ 底下嘅 Windows 程式,硬要用就要列入 sandbox 外嘅例外。

Sandbox 最大價值係普通指令唔使逐條批,淨係出界或者遇到高風險操作先再問,等人可以集中睇清楚呢啲重要提示。用之前封好敏感讀取路徑、關閉唔要嘅 escape hatch,再保留 Git 同備份,先可以放心畀 Claude Code 多行幾步。


參考來源

本文根據原文及公開資料整理;資料有出入時,以原文及官方資料為準。

分享:WhatsAppThreadsTelegramFacebook