|

Claude Code Sandbox:4 個月無人值守容器運行教會了我什麼(內建、Docker 還是兩者兼備?)

claude code sandbox featured

每個人都在尋找 Claude Code 沙盒 目標相同:無需每小時點擊四十次“批准”,也無需將整台機器的控制權交給人工智慧代理。這很合理。但大多數指南只停留在第一天:運行 /沙盒, 選擇一種模式,完成。這個模式從第130天開始。.

我在 Claude Code 上運行著一支自主營運的企業團隊。編寫這句話的容器自 2026 年 6 月 12 日起一直在無人值守的情況下運行計劃任務: 1729 條帶日期的運行日誌,涉及 20 個不同的作業, 從部落格文章到收件匣分類再到對外聯絡,大部分流程都由系統自動完成,無需人工幹預。因此,對我來說,問題從來不是“如何啟動沙盒環境?”,而是“沙盒究竟能阻止什麼,又有哪些事情能直接穿過它?”

以下是實話實說,附帶盒子裡的收據。你會了解到「Claude Code 沙箱」可能代表的三種情況,每種情況分別能阻止哪種威脅,一份沒人會打印出來的洩露清單,以及一個只需 5 條命令即可在你自己的沙箱中兩分鐘內運行的審計腳本。.

「Claude Code Sandbox」的真正意義(它包含三個不同的概念)

克勞德代碼沙盒

搜尋結果頁一半的混亂都源自於人們用同一個詞組指稱三個不同的邊界。在進行任何配置之前,務必先確定你指的是哪個邊界。.

1. 內建的沙盒 Bash 工具

這就是 /沙盒 開啟。 人種學派的沙盒實驗紀錄片, 它是圍繞著作業系統的一個邊界 shell 指令 Claude 運行:Bash、PowerShell、Monitor 以及它們啟動的子進程。在 Linux 和 WSL2 上,它使用 bubblewrap;在 macOS 上,它使用 Seatbelt。 預設關閉.

大多數人忽略的細節是:它只涵蓋 shell 命令。 Claude 自己的 Read、Edit、Write、WebFetch 和 WebSearch 工具、您的 MCP 伺服器以及您的鉤子程式都會運作。 外部 它由權限規則管理。.

2. 在容器或虛擬機器中執行 Claude 程式碼

Docker、開發容器、虛擬機器。整個 Claude Code 流程都運行在這個邊界內,因此檔案工具、MCP 伺服器和鉤子也都被封裝在其中。這是 Anthropic 自己的配置。 沙盒環境指南 推薦用於無人值守工作。此外,還有開源版本。 沙盒運轉時, 它無需 Docker 即可完成整個過程。.

3. 雲沙箱

Claude,程式碼要麼在網路上運行,要麼託管在第三方沙箱中。這是別人的機器,設計上就是一次性的。非常適合用於不受信任的程式碼倉庫。但不適合用來維持企業日常運作。.

說實話: 如果一個攻略說“用沙盒方式測試你的克勞德代碼”,卻沒有說明指的是這三種方式中的哪一種,那它實際上什麼都沒告訴你。.

人們為什麼會開啟它:許可提示問題

無盡的權限審批提示

沒人會因為熱愛安全配置而啟用沙盒。他們啟用沙盒是因為 Claude Code 對所有事情都要徵求許可,而到了第三十個提示,你往往連看都不看就批准了。這根本不是安全,這只是多了幾個步驟的橡皮圖章。.

所以,擺脫即時寫作困境有兩種方法,但它們並不相同:

  • 沙盒自動允許模式。. 沙盒命令無需提示即可運行。 因為 作業系統邊界包含它們。拒絕規則,關鍵路徑 rm 檢查和內容範圍的詢問規則,例如 Bash(git push *) 仍然適用。.
  • --dangerously-skip-permissions. 提示符號不會被替換。 Claude 會直接執行操作。文件對此明確指出:始終在容器、虛擬機器或沙盒執行時間環境中執行這些會話,並且 Claude Code 拒絕在 Linux 和 macOS 上以 root 使用者身分使用該標誌啟動。.

這就是陷阱所在。人們往往把「跳過權限」理解為風險所在,把「沙盒」理解為安全所在。但真正的風險在於… 跳過權限(無邊框). 在你的筆記型電腦上,有一個代理程序,裡面儲存著你的 SSH 金鑰、瀏覽器設定檔和雲端憑證。 貓 離開。.

還有一點值得注意,在你完全依賴內建沙盒之前:預設情況下,Claude 可以請求 重試失敗的命令(非沙盒模式). 那是一個逃生艙口,除非你設置,否則它預設是開啟的。 ""allowUnsandboxedCommands": false. 觀看時感覺很好,睡著時就毫無意義了。.

我的 Claude Code 沙盒:每個品牌一個容器,自六月起無人值守

一排容器運行著無人值守的 Claude Code 代理

這就是我的實際裝置的樣子。以下所有數據均於2026年10月20日晚間(即撰寫本文當晚)在容器內測量得出。.

形狀: 每個品牌對應一個 Docker 容器。每個容器內都有一個調度器,透過 cron 定時任務觸發 Claude Code 作業。每個作業運行一次。 claude --print --dangerously-skip-permissions 只需一條指令,即可完成工作,記錄結果並退出。容器就是邊界。我沒有運行內建的 /沙盒 裡面(稍後會詳細介紹)。.

這個盒子做對了什麼:

  • 非root用戶。. ID 返回 uid=1001(代理). 代理無法寫入 /ETC; 我嘗試了,結果顯示「權限被拒絕」。.
  • 完全不具備Linux操作能力。. CapEff:0000000000000000 在 /proc/self/status. seccomp 過濾器已啟用。.
  • 沒有 SSH 金鑰,也沒有雲端 CLI 憑證。. ~/.ssh 和 ~/.aws 容器裡沒有這些東西。那裡沒什麼好偷的。.
  • 沒有 Docker 套接字。. /var/run/docker.sock 未掛載。這一點比清單中幾乎其他任何因素都重要,因為掛載套接字需要以 root 使用者身分在主機上執行額外的步驟。.
  • 一份簡短且已知的坐騎清單。. 32 行 /proc/self/mountinfo; 除了映像本身和 Docker 的標準主機檔案之外,還有八個綁定掛載點,我可以逐一列舉。.

這就是宣傳冊。接下來的部分才是我真正想讓你閱讀的內容。如果你想先了解整體架構,我已經做了細分。 整個艦隊如何在單一伺服器上運行 和 我的 Claude Code 特工在製作中做什麼.

潛在客戶開發人工智慧策略手冊,營運商的人工智慧自動化策略手冊

取得人工智慧策略手冊

我的車隊後面有操作記錄:貨櫃的擺放方式、價格以及本週的故障情況。免費,您可以隨時離開。.

引流工具 - AI 策略手冊

洩漏清單:沙盒環境仍然能看到什麼

憑證、檔案和網路透過沙箱邊界

我會把這句話紋在每份沙盒遊戲指南上: 沙盒機制並不能保護你免受代理人的侵害,它只能保護你免受所有你沒有交給代理人的資訊的侵害。. 根據定義,你安裝、注入或允許的任何東西都屬於這個範疇。因此,真正的審計就是列出你移交的所有東西。.

對於我的容器,該列表如下:

1. 環境變數:29 個密鑰,依名稱排列

該容器有 114 個環境變數。. 其中 29 個名稱包含 KEY、TOKEN、SECRET 或 PASS。. WordPress、Airtable、Asana、圖片產生、電子郵件行銷、社群媒體行程。這就是經紀人的工作方式,它涵蓋了所有可以運行的工具。 環境 可以閱讀全部 29 行。.

內建沙箱預設也無法解決這個問題。 Anthropic 自己的表格顯示,沙箱指令會繼承 Claude Code 的環境,「包含其環境中的所有金鑰」。您必須為每個變數命名。 sandbox.credentials 需要將其剝離或屏蔽,因為沒有內建的拒絕清單。.

喬恩瓊斯

⚡ 取得人工智慧優勢

每週提供真正省時省錢的AI小技巧。沒有廢話,沒有誇大其詞——只有切實有效的方法。.

訂閱電子報 - 部落格行動號召

2. 綁定掛載:其中之一是憑證文件

在我的八個綁定掛載點中,有一個是 Google 服務帳戶金鑰檔案。它可以從沙盒內部讀取,因為代理需要它來產生 Gmail 和 Search Console 的令牌。雖然它是刻意掛載的,但它仍然是一個位於沙盒內的憑證,許多配置中都有類似的憑證,但沒人記得是什麼時候添加的。.

3. 代理自身的配置是可寫的

這件事讓我很驚訝。. ~/.claude 是綁定掛載的讀寫文件,因此代理可以編輯自己的文件。 settings.json. 專案資料夾及其指令集也存在同樣的問題。內建沙盒有一個「受保護路徑」列表,專門阻止此類寫入操作。 .克勞德 設定、技能、鉤子和 .mcp.json, 因此,命令不能給自己新的權限。. 普通的 Docker 容器沒有這樣的列表。. 容器阻止代理程式逃逸到主機。但它不會阻止代理程式在內部重寫自身的規則。.

4. 網路已開放

從內部來看,, curl https://example.com 返回 200。代理程式每晚要與十幾個 API 通信,所以我從未鎖定過出口流量。把第 1 點和第 4 點結合起來,你就會得到一個令人不安的事實: 如果某個特工閱讀的頁面中出現了提示注入,那麼這 29 個秘密就可以發送到任何地方。. 坦白說,這就是我方案中的不足之處。.

即使是完美的允許清單也並非萬無一失。 Anthropic 的文檔警告說,允許存取像 這樣的大範圍網域可能會帶來安全隱患。 github.com 這會開啟資料外洩路徑,並且代理伺服器會根據主機名稱進行判斷,而不會檢查 TLS,因此可以進行網域偽裝。.

這些都不是什麼稀奇古怪的東西。文件裡也警告過:任何允許網路出口的方法都可能洩漏數據,而代理程式可以讀取這些數據。差別在於,現在你看到了一個實際的例子,而且是逐條列出的。關於我在伺服器上遵循的更廣泛的安全規則,請參閱我的… 克勞德代碼安全指南. 我不會在這裡重複那些內容。.

內建沙箱 vs Docker vs 兩者兼具:它們各自能阻止哪些威脅?

容器內的嵌套沙箱層

別再問「哪個 Claude Code 沙箱最好?」而應該問「我要阻止哪種威脅?」 以下是根據文件和我上面測量的結果,各個選項的對應關係。.

威脅內建 /沙盒Docker容器兩者(分層)
Shell 指令會破壞專案以外的檔案。停止寫入(寫入僅限於工作目錄 + 暫存目錄)止步於容器邊緣;任何安裝在容器上的東西都可攻擊。阻止它
閱讀 ~/.ssh, ~/.aws做 不是 預設停止(讀取已開啟)如果不安裝它們,就會停止。阻止它
讀取/編輯工具、MCP 伺服器、鉤子程式運作異常未覆蓋(它們在室外運行)包含包含
代理程式可以編輯自身的設定或鉤子。已封鎖 shell 指令(受保護路徑)如果未阻止 .克勞德 已掛載且可寫阻止執行 shell 命令
環境變數中的秘密除非另有說明,否則均已公開。 證書暴露(無論你注射什麼)每個變數的條帶或遮罩
傳送到未知主機的數據已封鎖:代理程式允許清單初始為空除非新增出口規則,否則保持開放狀態強制執行允許列表
設定成本macOS 上耗時幾分鐘,Linux 上耗時較短。中等的更高:圖片中需要氣泡膜, 啟用弱嵌套沙箱

那我為什麼不把兩者都疊穿呢?

說實話:我還沒做,但這顯然是下一步的安全加固措施。這並非五分鐘就能搞定的事,原因有三。首先,我的鏡像裡沒有安裝 BubbleWrap。其次,在非特權容器裡,你需要… 啟用弱嵌套沙箱, 文件中指出,這樣做“會大大降低安全性”,而且僅適用於外部設備已經具備真正隔離功能的情況。第三,允許清單必須列出代理呼叫的每個 API 主機,並且隨著我新增工具而不斷更新。.

我會先選擇成本較低的方案: 容器層級的出口過濾 加 安裝 .克勞德 只讀 只要代理人不需要編寫程式碼,就可以解決洩漏清單中的第 3 項和第 4 項,而無需觸及 Claude Code。.

經驗法則

  • 你坐在鍵盤前,卻對各種提示感到厭倦: 內建 /沙盒 處於自動允許模式。添加 證書 拒絕入境 ~/.ssh 和 ~/.aws 第一天。.
  • 沒人看: 容器或虛擬機,非root用戶,無Docker套接字。僅靠內置沙箱是不夠的,Anthropic也承認這一點。.
  • 沒人監視,特工卻在瀏覽公開網路: 兩者兼備,再加上出口規則。這就是我要去的地方。.

5條指令克勞德代碼沙箱自我審核

克勞德代碼沙箱五步自查

打開貝殼 裡面 在你的 Claude Code 沙箱中,以代理運行的同一用戶身份運行這五個命令。我在發布前已在我的容器中運行了每個命令;我的結果在註釋中。.

# 1. 我是誰?你需要一個非 root 使用者 ID。 id # 我的:uid=1001(agent) gid=1001(agent) # 2. 經典憑證儲存和 Docker 套接字在這裡嗎? ls -la ~/.ssh ~/.aws /var/run/docker.sock 2>&1 # 我的:「沒有這樣的檔案或目錄」 x3 # 3. 我掛載了什麼?逐行讀取。 awk '$5 !~ /^\/(proc|sys|dev)/ {print $5}' /proc/self/mountinfo # 我的:12 行,包括一個憑證檔案 # 4. 代理可以讀取多少個金鑰? (統計名稱,不列印值)env | cut -d= -f1 | grep -cE 'KEY|TOKEN|SECRET|PASS' # mine: 29 # 5. 能否連接到網際網路? curl -s -o /dev/null -m 5 -w '%{http_code}\n' https://example.com # mine: 200 (open)

如何解讀你的結果

  • 命令 1 說 uid=0: 先解決這個問題。容器內的 root 使用者可能會因為配置錯誤而變成容器外的 root 使用者。.
  • 命令 2 列出了一個真實檔案: 該憑證位於您的沙箱內。請卸載它,或拒絕其存取權限。 sandbox.credentials 如果你使用的是內建沙盒環境。如果 docker.sock 出現後,立即停止並移除它。.
  • 命令 3 顯示了一條您意想不到的路徑: 這就是「忘記安裝過了」問題的典型表現。每個安裝點都應該有你能說清楚的理由。.
  • 指令 4 的值大於零: 對於真正做實事的經紀人來說,這很正常。現在問:是否 這 工作需求 全部 他們之中?
  • 指令 5 回傳 200,指令 4 回傳值大於零: 你已經找到了一條外洩途徑。務必認真考慮一下這是否可以接受。.

我的五個結果中有三個是我在客戶審計中會標記出來的,但我還是決定公佈它們。審計的目的就在於此:檢驗你實際擁有的系統與你認為擁有的系統之間的差異。如果你想用同樣的方法檢驗你自己的系統,這正是我在審計中所做的。 戰略會議.

Claude Code Sandbox 常見問題解答

Claude Code 沙盒問題解答

Claude Code 沙盒預設開啟嗎?

不。內建沙盒在您運行之前是關閉的。 /沙盒 或設定 沙箱已啟用 到 真的 在設定檔中。如果您從未進行過這兩項操作,則您的 Bash 命令將在非沙盒環境下運行。.

沙盒模式會拖慢克勞德的速度嗎?

每個指令的開銷都很小。一項使用獨立運行時進行的獨立測試表明,每次沙盒呼叫大約會有 80 到 160 毫秒的固定開銷,而且這個開銷不會隨著工作量的增加而增加。只有在數百個小命令的循環中才會注意到它。所以沒必要跳過這個步驟。.

沙盒環境中的指令還能上網嗎?

只能透過沙盒代理程式訪問,且只能存取您已允許的網域名稱。允許清單初始為空。忽略代理設定的工具,例如純文字代理。 SSH 而且大多數資料庫驅動程式根本無法連接,除了 TCP 協定之外的任何資料都無法傳輸出去。在普通的 Docker 容器中則恰恰相反:網路是開放的,除非你手動關閉它。.

macOS 上需要 Docker 嗎?

它不適用於內建沙箱;它使用 macOS 自帶的 Seatbelt。如果您需要,則需要 Docker(或虛擬機器)。 所有的 克勞德代碼流程框選,這是對…的建議 --dangerously-skip-permissions 以及無人看管的運作。.

沙盒是否阻止了 Claude 使用讀取工具讀取我的檔案?

不。內建沙箱控制 shell 指令。 拒絕閱讀 進入並不會阻止讀取工具;若要阻止讀取工具,請使用權限拒絕規則,或將整個過程放在容器中。.

我可以使用 Docker 內建的沙箱嗎?

是的,但在非特權容器中,氣泡膜無法掛載一個全新的氣泡膜。 /proc, 所以你需要 啟用弱嵌套沙箱. 僅當外部容器已經是你的實際邊界時才使用它。.

更新會改變沙箱的行為嗎?

經常如此。沙盒設定不斷擴展:憑證遮罩和停用檔案系統隔離的選項均已在 v2.1.2xx 版本中推出。在向整個叢集推送更新之前,請務必先鎖定並測試;以下是相關資訊。 如何在不中斷運行代理程式的情況下更新 Claude Code.

最後總結:先篩選代理人,然後審核樣本。

克勞德代碼沙盒值得啟用。只要清楚你購買的是什麼即可。內建的 /沙盒 它就像是鍵盤上 shell 命令的安全帶。容器則是無人操作的邊界。但它們都無法保護你自行交出的金鑰、掛載點和網路存取權限。.

今晚的賽事安排如下:

  1. 在代理程式運行的任何環境中執行這五個稽核命令。.
  2. 清單中每條秘密路線、坐騎和開放路線,請寫一行: 為什麼這位經紀人需要它?
  3. 刪除一個沒有答案的問題。.

只要十分鐘,就能讓你比任何比較表格都更了解你的系統配置。我的系統讓我發現,我的代理程式可以重寫自己的設置,並與互聯網上的任何主機通訊。這些問題是接下來要公開修復的。.

如果你讓代理人在無人監管的情況下工作,請再閱讀以下兩篇文章: 運行它們的 CLAUDE.md 文件, , 和 我如何透過手機監控艦隊. 將代理打包。然後審核該打包後的代理。讓我們開始建造。.

潛在客戶開發人工智慧策略手冊,營運商的人工智慧自動化策略手冊

無人值守的運行代理?

取得《AI操作手冊》:這本手冊包含了貨櫃配置、成本收據和故障記錄,來自一支即使在我睡覺時也能正常運作的艦隊,專為單人操作員編寫。絕無廢話,絕無贅述。.

引流工具 - AI 策略手冊
人工智慧行動指南-免費下載

📥 免費:《人工智慧劇本》

我用來經營一人代理公司的所有工具和工作流程。 25 年的行銷經驗濃縮成一份實用指南。免費贈送。.

引流工具 - AI 策略手冊

相關文章

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *