跳到主要內容

透過沙箱技術讓 Claude Code 更安全自主

Claude Code 的新沙箱功能——一個 bash 工具和網頁版 Claude Code——透過啟用檔案系統和網路隔離這兩大邊界,減少了權限提示並提升了使用者安全。

在 Claude Code 中,Claude 會與您一起編寫、測試和偵錯程式碼,瀏覽您的程式碼庫、編輯多個檔案,並執行指令來驗證其工作。給予 Claude 如此多對您的程式碼庫和檔案的存取權限可能會帶來風險,尤其是在提示注入(prompt injection)的情況下。

為了解決這個問題,我們在 Claude Code 中引入了兩項基於沙箱技術的新功能,兩者都旨在為開發者提供一個更安全的工作環境,同時也讓 Claude 能夠更自主地運行,並減少權限提示。在我們的內部使用中,我們發現沙箱技術安全地減少了 84% 的權限提示。透過定義 Claude 可以自由工作的既定邊界,它們提升了安全性與自主性。

確保 Claude Code 使用者的安全

Claude Code 在一個基於權限的模型上運行:預設情況下,它是唯讀的,這意味著它在進行修改或執行任何指令之前都會請求許可。但也有一些例外:我們會自動允許像 echocat 這樣的安全指令,但大多數操作仍需要明確批准。

不斷點擊「批准」會減慢開發週期,並可能導致「批准疲勞」(approval fatigue),使得使用者可能不會密切注意他們批准的內容,進而降低了開發的安全性。

為了解決這個問題,我們為 Claude Code 推出了沙箱技術。

沙箱技術:一個更安全、更自主的方法

沙箱技術創造了預先定義的邊界,Claude 可以在其中更自由地工作,而不需要為每個動作都請求許可。啟用沙箱後,您會收到大幅減少的權限提示,並獲得更高的安全性。

我們的沙箱方法建立在作業系統層級的功能之上,以啟用兩個邊界:

  1. 檔案系統隔離:確保 Claude 只能存取或修改特定的目錄。這在防止被提示注入的 Claude 修改敏感的系統檔案方面尤為重要。

  2. 網路隔離:確保 Claude 只能連接到經批准的伺服器。這可以防止被提示注入的 Claude 洩露敏感資訊或下載惡意軟體。

值得注意的是,有效的沙箱技術需要同時具備檔案系統和網路隔離。如果沒有網路隔離,一個被入侵的代理(agent)可能會竊取像 SSH 金鑰這樣的敏感檔案;如果沒有檔案系統隔離,被入侵的代理可能輕易逃離沙箱並取得網路存取權限。正是透過同時使用這兩種技術,我們才能為 Claude Code 使用者提供更安全、更快速的代理體驗。

Claude Code 中的兩項新沙箱功能

沙箱化的 Bash 工具:無需權限提示的安全 bash 執行

我們正在引入一個新的沙箱執行環境(runtime),目前作為研究預覽版(beta)提供,它讓您可以精確定義您的代理可以存取哪些目錄和網路主機,而無需啟動和管理容器的開銷。這可以用於沙箱化任意進程、代理和 MCP 伺服器。它也作為一個開源研究預覽版提供。

在 Claude Code 中,我們使用這個執行環境來沙箱化 bash 工具,這允許 Claude 在您設定的定義限制內執行指令。在安全的沙箱內部,Claude 可以更自主地運行,並安全地執行指令,而無需權限提示。如果 Claude 試圖存取沙箱之外的內容,您會立即收到通知,並可以選擇是否允許。

我們將此功能建立在作業系統層級的原生功能之上,例如 Linux 的 bubblewrap 和 MacOS 的 seatbelt,以在作業系統層級強制執行這些限制。它們不僅涵蓋了 Claude Code 的直接互動,還包括由該指令產生的任何腳本、程式或子進程。如上所述,這個沙箱同時強制執行:

  • 檔案系統隔離:允許對當前工作目錄的讀取和寫入存取,但阻止修改其之外的任何檔案。

  • 網路隔離:僅允許透過連接到沙箱外部運行的代理伺服器的 unix 網域通訊端(socket)進行網路存取。此代理伺服器會強制執行對進程可以連接的網域的限制,並處理使用者對新請求網域的確認。如果您希望進一步提高安全性,我們還支援自訂此代理以對傳出的流量強制執行任意規則。

這兩個組件都是可配置的:您可以輕鬆選擇允許或不允許特定的檔案路徑或網域。

[圖片說明] 這張圖示說明了 Claude Code 中的沙箱如何運作。Claude Code 的沙箱架構透過檔案系統和網路控制來隔離程式碼執行,自動允許安全操作,阻止惡意操作,並僅在需要時才請求權限。

沙箱技術確保了即使是成功的提示注入也會被完全隔離,無法影響使用者的整體安全。這樣一來,一個被入侵的 Claude Code 也無法竊取您的 SSH 金鑰,或「打電話回家」給攻擊者的伺服器。

要開始使用此功能,請在 Claude Code 中運行 /sandbox,並查看有關我們安全模型的更多技術細節。

為了讓其他團隊更容易地建立更安全的代理,我們已經將此功能開源。我們相信其他人也應該考慮為他們自己的代理採用這項技術,以增強其代理的安全態勢。

在雲端安全運行 Claude Code

今天,我們也發布了網頁版 Claude Code(Claude Code on the web),讓使用者可以在雲端的隔離沙箱中運行 Claude Code。網頁版 Claude Code 會在一個隔離的沙箱中執行每個 Claude Code 會話(session),使其能夠以安全可靠的方式完全存取其伺服器。我們設計這個沙箱是為了確保敏感的憑證(例如 git 憑證或簽署金鑰)永遠不會與 Claude Code 一起出現在沙箱內部。這樣,即使在沙箱中運行的程式碼遭到入侵,使用者也能免受進一步的傷害。

網頁版 Claude Code 使用一個自訂的代理服務,該服務透明地處理所有 git 互動。在沙箱內部,git 客戶端使用一個特製的、範圍受限的憑證向該服務進行身份驗證。代理會驗證此憑證和 git 互動的內容(例如,確保它只推送到配置的分支),然後在將請求發送到 GitHub 之前附加正確的身份驗證權杖。

[圖片說明] 這張圖示描繪了網頁版 Claude Code 如何使用自訂代理來處理所有 Claude Code 的 Git 整合,透過一個安全代理來路由指令,該代理會驗證身份驗證權杖、分支名稱和儲存庫目的地——在允許安全的版本控制工作流程的同時,防止未經授權的推送。

開始使用

我們新的沙箱化 bash 工具和網頁版 Claude Code,為使用 Claude 進行工程工作的開發者在安全性和生產力方面提供了實質性的改進。

要開始使用这些工具:

  1. 在 Claude 中運行 /sandbox 並查看我們的文件,了解如何配置此沙箱。

  2. 前往 claude.com/code 試用網頁版 Claude Code。

  3. 或者,如果您正在建立自己的代理,請查看我們開源的沙箱程式碼,並考慮將其整合到您的工作中。我們期待看到您的成果。

Source: 

https://www.anthropic.com/engineering/claude-code-sandboxing

留言

這個網誌中的熱門文章

Vibe Coding:到底?氛圍驅動程式開發必殺技?

Vibe Coding(氛圍編程) 是由 OpenAI 共同創辦人 Andrej Karpathy 在 2025 年提出的革命性程式開發方式,它讓開發者透過自然語言與 AI 對話來生成程式碼,徹底改變了傳統的編程模式。 這種開發方式的核心理念是 「順著感覺走」 ,讓 AI 處理技術細節,開發者專注於創意和需求描述。 Vibe Coding 需要基本上的規劃和執行,但並沒有強制規範,從日常經驗來說可分為三個階段, 前期準備、開發過程、和後期維護 三個關鍵階段。每個階段都有其特定的任務和注意事項,正確執行這些步驟將大幅提升開發效率和程式品質。 將靈感與需求透過 AI 快速轉化成產品功能或原型。以下幫你分成 「前、中、後」 三階段要做的事情,適合你自己做、或帶團隊做 前期:設定 vibe & 準備素材 這個階段的重點是 「建立開發語境」 ,因為 AI 的生成表現高度依賴前期提供的上下文與資料。 明確目標 :釐清要解決的問題、預期要做的功能與核心價值。例如在筆記軟體的情境中,可能是:「我要做一款讓使用者能用 Markdown 記錄筆記,並提供標籤與全文搜尋功能的簡單 App。」 收集靈感 :觀察同類產品(如 Obsidian、Notion)、蒐集市場痛點(例如太多筆記軟體無法脫機使用,或同步效能差)。 建立語境 :準備初步 prompt、背景知識、產品定位、品牌調性、目標使用者輪廓等。 確認資源 :決定用哪些工具(Gemini、ChatGPT、設計軟體、流程管理工具等)。 確認完上述內容之後,就可以先開始進行準備規格,進行第一次的 Vibe Coding 方向驗證 提示詞模板準備 很多人會跳過這步驟,但一份 「好的 AI 提示詞模板」 將決定接下來每一次 AI 對話的品質。有效的提示詞模板需具備: 描述具體且無歧義 包含技術要求和約束條件 提供範例資料和測試案例 指定程式碼風格和慣例 例如針對筆記軟體的案例:   「建立一個支援 AI 功能純文字筆記,輸入內容可即時渲染;需支援儲存到本地檔案,提供標籤欄位做分類;以 React 架構,程式風格採用 Tailwind style components 並使用 hooks。」 開發工具選擇 開發工具的選擇 同樣重要,目前市場上主要的 ...

Claude Code Hooks:自動化與安全的最佳實踐

寫在最前頭,這份文章主要寫起來是給自己看, 同時內容是比較適合開發者,工程師們可以做些自動化處理的簡單筆記。 Claude Code hooks Claude Code hooks 是一種強大的自動化機制,允許用戶在 Claude Code 的不同生命週期階段,自定義執行 shell 指令。這種設計讓開發者能夠將規則和自動化行為嵌入到應用層級,確保每次都能可靠執行,而不必依賴 LLM(大型語言模型)是否會選擇執行某項操作。 Hooks 的核心用途 通知 :自訂收到 Claude Code 等待用戶輸入或執行權限時的提醒方式。 自動格式化 :如在每次檔案編輯後自動執行 prettier (針對 .ts 檔)、 gofmt (針對 .go 檔)等。 日誌記錄 :追蹤所有執行過的命令,便於合規或除錯。 自動反饋 :當 Claude Code 產生不符合團隊規範的程式碼時,自動給出反饋。 自訂權限 :阻擋對生產環境檔案或敏感目錄的修改[^1]。 配置與結構 Hooks 透過設定檔進行配置,分為全域( ~/.claude/settings.json )、專案( .claude/settings.json )、本地專案( .claude/settings.local.json )以及企業級策略設定。每個 hook 由「事件名稱」和「匹配器」組成: "hooks": { "PreToolUse": [ { "matcher": "Bash", "hooks": [ { "type": "command", "command": "jq -r '...'" } ] } ] } matcher :用於匹配工具名稱(支援正則表達式),如 Write 、 Edit|Write 、 Notebook.* 。 hooks :當匹配時要執行的命令陣列。 type :目前僅支援 "command" 。 ...

[CSS] z-index 在不同瀏覽器繼承問題

今天會討論到這個課題,是因為要實做一個Popup dialog,所以我們希望的結果如下圖。 可是在IE7 卻發生了這樣的情況。 Popup不論怎麼設定z-index都無法浮在最上層,我們看一下html架構發生什麼事情。