繁體中文

沙箱

沙箱

ChatGPT 和 Codex 客戶端中的沙箱工作原理

沙箱是一道邊界,讓智能體能夠自主執行操作,同時又不會獲得對你計算機不受限制的存取權限。當本機聊天在 ChatGPT 桌面應用Codex CLIIDE 擴充套件中執行命令時,這些命令會在 受限環境中執行,而不是預設以完整存取權限執行。

該環境規定了智能體可以自行執行哪些操作,例如可以修改哪些檔案,以及命令能否存取網路。當任務始終處於 這些邊界內時,智能體可以持續推進,無需停下來請求確認。當它需要越過邊界時, 審批流程便會接管。

沙箱的作用

沙箱適用於派生的命令,而不僅僅是內建檔案 操作。如果智能體執行 git、包管理器或測試執行器等工具, 這些命令會繼承相同的沙箱邊界。

Codex 在各作業系統上使用平台原生的強制執行機制。具體實現因 macOS、Linux、WSL2 和原生 Windows 而異,但各個介面中的理念 相同:為智能體提供一個有邊界的工作空間,使常規任務能在明確的限制內 自主執行。

為何重要

沙箱可以減少審批疲勞。智能體不必要求你確認每個 低風險命令,而是可以在你已核准的邊界內讀取檔案、進行編輯並執行常規專案 命令。

它還為智能體工作提供了更清晰的信任模型。你信任的不只是 智能體的意圖,還包括智能體確實在強制限制內執行。 這樣一來,你可以更放心地讓智能體獨立工作,同時仍能明確知道它何時會 停下來尋求幫助。

開始使用

預設權限模式會自動應用沙箱。

前提條件

macOS 上,沙箱通過內建 Seatbelt 框架開箱即用。

Windows 上,如果你在 PowerShell 中執行,Codex 會使用原生 Windows 沙箱;如果在 WSL2 中執行,則會使用 Linux 沙箱實現。

Linux 和 WSL2 上,請先使用包管理器安裝 bubblewrap

sudo apt install bubblewrap
sudo dnf install bubblewrap

Codex 會使用它在 PATH 上找到的第一個 bwrap 執行檔。如果沒有可用的 bwrap 執行檔,Codex 會回退到隨附的輔助程式,但該輔助程式 要求系統支援建立非特權使用者名稱空間。安裝提供 bwrap 的 發行版軟體包,可以讓此設定保持可靠。

當缺少 bwrap,或者輔助程式無法建立所需的使用者名稱空間時,Codex 會在啟動時顯示警告。 對於限制此 AppArmor 設定的發行版,建議載入 bwrap AppArmor 設定檔,使 bwrap 能夠 繼續工作,而無需在系統範圍內停用該限制。

權限的工作原理

使用當前介面的權限控制項,更改 Codex 處理本機 操作的方式。

審批決定 Codex 在執行操作前何時暫停,而沙箱 決定命令可以存取哪些檔案和網路資源。如果審批提供不同的授權範圍,例如僅核准一次或在當前會話中核准, 請選擇能讓任務繼續執行的最小範圍。預設保持專案 邊界;對於不相關的儲存庫,應使用不同的專案或工作樹,而不要 擴大存取範圍。

ChatGPT Work 在託管的隔離環境中執行程式碼和 shell 命令。 工作區策略和工具專屬控制項決定可用的功能。 如果該設定可用,請使用 Settings > Data controls > Work network access 管理程式碼和 shell 命令的網路存取權限。開啟 Allow public internet access 後,這些命令即可存取公共 網際網路。關閉時,命令只能存取託管允許列表中的必要主機名。

網頁搜尋、外掛和遠端瀏覽器有各自獨立的控制項。 更改會在當前程式碼或 shell 執行結束、Work 重新整理其執行環境後生效。ChatGPT 網頁版不提供本機 Codex 沙箱或審批模式選擇器。

在 ChatGPT 桌面應用中,使用輸入框下方的權限控制項。 根據你的設定,選單可能包含 Ask for approval、 適用於符合條件的審批請求的 Approve for meFull access,以及命名或 自定義權限設定檔。

在 CLI 中,輸入 /permissions 開啟權限選擇器並更改當前權限設定檔。

在 IDE 擴充套件中,使用輸入框下方的權限控制項。 根據你的設定,選單可能包含 Ask for approval、 適用於符合條件的審批請求的 Approve for meFull access,以及命名或 自定義權限設定檔。

設定預設設定

若要每次都以相同的行為啟動,請在 config.toml 中設定預設值。 設定基礎介紹其工作方式,設定參考則記錄了 sandbox_modeapproval_policyapprovals_reviewersandbox_workspace_write.writable_roots 的確切鍵。使用這些設定可以決定智能體預設獲得多大的 自主權、可以寫入哪些目錄、何時應暫停以等待審批,以及由誰稽核符合條件的審批請求。

概括而言,常見的沙箱模式有:

  • read-only:智能體可以檢查檔案,但未經審批不能編輯檔案或執行 命令。
  • workspace-write:智能體可以讀取檔案、在工作區內編輯,並在該邊界內執行 常規本機命令。這是本機工作的預設低干擾 模式。
  • danger-full-access:智能體不受沙箱限制地執行。這會移除 檔案系統和網路邊界,僅應在你希望 智能體擁有完整存取權限時使用。

常見的審批策略有:

  • untrusted:智能體在執行不屬於其可信集合的命令前會請求 審批。
  • on-request:智能體預設在沙箱內工作,需要越過該邊界時會 詢問。
  • never:智能體不會因審批提示而停下。

當審批採用互動方式時,你還可以通過 approvals_reviewer 選擇由誰稽核:

  • user:向用戶顯示審批提示。這是預設設定。
  • auto_review:符合條件的審批提示會傳送給稽核智能體(請參閱 自動稽核)。

完整存取權限是指同時使用 sandbox_mode = "danger-full-access"approval_policy = "never"。相比之下,風險較低的本機自動化 預設會同時使用 sandbox_mode = "workspace-write"approval_policy = "on-request",或使用對應的 CLI 標誌 --sandbox workspace-write --ask-for-approval on-request。隨後,你可以保留 approvals_reviewer = "user" 以進行手動審批,或設定 approvals_reviewer = "auto_review" 以自動稽核審批請求。

如果需要智能體跨多個目錄工作,可寫根目錄允許你 擴充套件它可以修改的位置,而無需完全移除沙箱。如果 需要更寬或更窄的信任邊界,請調整預設沙箱模式 和審批策略,而不要依賴一次性例外。

當工作流程需要特定例外時,請使用規則。規則 允許你對沙箱外的命令字首設定允許、提示或禁止,通常 比大範圍擴大存取權限更合適。有關 IDE 專屬設定 入口,請參閱 Codex IDE 擴充套件設定

自動稽核(如果可用)不會改變沙箱邊界。它是處理該邊界上審批請求的一種 approvals_reviewer,例如沙箱權限提升、被阻止的網路存取,或仍需審批的 有副作用工具呼叫。沙箱內已允許的操作無需額外稽核即可執行。 有關稽核方生命週期、觸發器類型、拒絕語義和設定詳情,請參閱 自動稽核

平台詳細資訊位於各平台專屬文件中。有關原生 Windows 的設定、 行為和問題排查,請參閱 Windows。有關沙箱與審批的管理員 要求和組織級限制,請參閱 智能體審批與安全