Skip to main content
沙箱化的 bash 模式限制了 AI 代理執行 shell 指令的能力。啟用後,指令只能存取專案目錄和已核准的網路網域。所有專案預設為沙箱模式。
此沙箱僅管控 CTOR 自身的內建代理。由 CLI 代理(Claude Code、Codex、Pi、Cursor Agent)提供支援的聊天在其之外執行,擁有與您在終端機中相同的檔案與 shell 存取權限。

模式

輸入列中的沙箱模式選擇器讓您可以按專案切換兩種模式: 所選模式按專案持久保留。無論專案設定為何,explore 子代理始終在沙箱模式下執行。
沙箱模式支援 macOS、Linux 與 Windows。Windows 支援為實驗性——請參閱 Windows
在 Linux 上,沙箱模式需要安裝 Bubblewrapbwrap)和 socatsudo apt install bubblewrap socat)。Bubblewrap 提供沙箱容器,socat 處理網路代理橋接。

Windows

Windows 支援為實驗性。沙箱模式可以運作,但有幾項平台差異:
  • 代理的指令在 PowerShell 中執行,而非 POSIX shell。 使用哪一種取決於您的終端機 shell 設定檔WSL 設定檔會以 bash 在該發行版內執行完整存取指令,PowerShell 7 使用 pwsh.exe,其餘則使用 Windows PowerShell 5.1。CTOR 會告知代理目前作用中的 shell,讓它寫出該 shell 接受的語法。
  • 沙箱指令一律使用 Windows PowerShell 5.1,即使在 WSL 設定檔下也是如此——沙箱無法隔離 WSL 發行版。若指令必須在 WSL 內執行,請將專案切換為完整存取。
  • 檔案系統授權以工作階段為單位,而非以指令為單位。 授權會在沙箱啟動時以 NTFS 權限標記;當授權範圍變更時,CTOR 會重新啟動沙箱工作階段。
  • 主目錄是結構性拒絕,而非透過明確的拒絕規則。sandbox.jsondenyRead / denyWrite 的項目若位於已授權目錄之內,仍然有效。
若沙箱無法啟動,設定 > 代理 > 沙箱設定會回報缺少了什麼。

檔案系統限制

在沙箱模式下,指令的檔案系統存取受到限制: 可讀取的路徑:
  • 專案目錄(完整讀寫)
  • 暫存目錄(/tmp/private/tmp
  • 家目錄下 PATH 中的工具二進位檔
  • 全域技能目錄(~/.bricks-project-desktop/skills/
  • sandbox.jsonfilesystem.allowRead 列出的路徑
可寫入的路徑:
  • 專案目錄
  • 暫存目錄
  • 全域技能目錄(~/.bricks-project-desktop/skills/
  • sandbox.jsonfilesystem.allowWrite 列出的路徑
家目錄根目錄預設被拒絕。嘗試存取允許清單以外路徑的指令將收到許可權錯誤。 在沙箱模式下,聊天輸入中使用 @~/(家目錄瀏覽)的檔案提及也會被封鎖。請改用專案相對路徑。

網路限制

在沙箱模式下,對外網路存取預設被封鎖。當沙箱化指令請求網路存取時,會出現包含三個選項的核准對話方塊:
  • 僅允許一次 —僅在本工作階段中允許此請求
  • 允許並儲存 —允許此請求並將網域加入 sandbox.json 供未來工作階段使用
  • 拒絕 —封鎖此請求

沙箱設定

開啟設定 > 代理 > 沙箱設定 > 開啟以編輯 sandbox.json。此檔案讓您可以全域自訂沙箱許可權。

網路選項

檔案系統選項

自動核准 bash 指令

設定 > 代理中的自動核准 bash 指令開關控制完整存取 bash 指令和受信任的程式指令是否無需確認即可執行。此設定與沙箱模式無關——無論是否啟用自動核准,沙箱化指令始終在沙箱內執行。

受信任的程式

少數程式需要沙箱無法授予的直接存取權,因此 CTOR 允許它們逃出沙箱:
  • bricks devtools——需要直接存取 LAN 才能連線裝置。
  • agent-browser——需要本機瀏覽器分頁的 CDP 橋接,才能操作您開啟的瀏覽器分頁。bunx agent-browserbun x agent-browser 形式同樣受信任。
單純呼叫受信任的程式——或像 agent-browser snapshot | jq . 這類唯讀鏈——會以其所需的存取權執行,且在自動核准開啟時靜默執行。將受信任的程式與其他指令組合的 shell 鏈(例如 cd /path && bricks devtools scan)也會逃出沙箱,但它們始終會顯示核准提示——即使啟用了自動核准——讓您每次都能確認完整的組合指令。

危險指令偵測

CTOR 會掃描每個 bash 呼叫是否符合高影響力模式。一旦偵測到,核准卡片會以紅色邊框、⚠ 圖示和危險指令標籤強調顯示,並一律出現提示——自動核准會被略過,沙箱模式也會回退為確認閘門。沙箱本身無法封鎖這些模式,因為專案目錄樹依設計可寫入(因此 rm -rf <project>/... 在沙箱內仍會成功)。 偵測器會標記下列類別的指令:
  • 權限提升:sudodoassu
  • 系統電源狀態:shutdownreboothaltpoweroffinit
  • 磁碟格式化或分割:mkfs.*fdisksfdiskparteddiskutil
  • 原始磁碟寫入:帶有 of= 目標的 dd
  • 安全刪除:shredsrmwipe
  • 遞迴移除:rm -rrm -Rrm --recursive
  • 遞迴權限或擁有者變更:chmod -Rchown -R
  • 終止 PID 1:kill 1pkill 1killall 1
  • 改寫歷史的 git:git push --force / -fgit reset --hardgit clean -fgit branch -Dgit checkout .git restore .
  • 遠端執行管道:curl ... | shwget ... | bash,包含 | sudo sh
  • 任意 shell 字串:bash -csh -czsh -c,以及其他帶有 -c 的 shell 直譯器
偵測會逐段巡查 shell 鏈,因此即使危險片段不是開頭指令,cd /tmp && rm -rf xcurl ... | sudo bash 仍會被攔截。較安全的變體不會被標記:git push --force-with-leasegit branch -d(僅移除已合併的分支),以及對非 init PID 的 kill 都會正常執行。

資料儲存