此沙箱僅管控 CTOR 自身的內建代理。由 CLI 代理(Claude Code、Codex、Pi、Cursor Agent)提供支援的聊天在其之外執行,擁有與您在終端機中相同的檔案與 shell 存取權限。
模式
輸入列中的沙箱模式選擇器讓您可以按專案切換兩種模式:
所選模式按專案持久保留。無論專案設定為何,
explore 子代理始終在沙箱模式下執行。
沙箱模式支援 macOS、Linux 與 Windows。Windows 支援為實驗性——請參閱 Windows。
在 Linux 上,沙箱模式需要安裝 Bubblewrap(
bwrap)和 socat(sudo 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.json中denyRead/denyWrite的項目若位於已授權目錄之內,仍然有效。
檔案系統限制
在沙箱模式下,指令的檔案系統存取受到限制: 可讀取的路徑:- 專案目錄(完整讀寫)
- 暫存目錄(
/tmp、/private/tmp) - 家目錄下
PATH中的工具二進位檔 - 全域技能目錄(
~/.bricks-project-desktop/skills/) sandbox.json中filesystem.allowRead列出的路徑
- 專案目錄
- 暫存目錄
- 全域技能目錄(
~/.bricks-project-desktop/skills/) sandbox.json中filesystem.allowWrite列出的路徑
@~/(家目錄瀏覽)的檔案提及也會被封鎖。請改用專案相對路徑。
網路限制
在沙箱模式下,對外網路存取預設被封鎖。當沙箱化指令請求網路存取時,會出現包含三個選項的核准對話方塊:- 僅允許一次 —僅在本工作階段中允許此請求
- 允許並儲存 —允許此請求並將網域加入
sandbox.json供未來工作階段使用 - 拒絕 —封鎖此請求
沙箱設定
開啟設定 > 代理 > 沙箱設定 > 開啟以編輯sandbox.json。此檔案讓您可以全域自訂沙箱許可權。
網路選項
檔案系統選項
自動核准 bash 指令
設定 > 代理中的自動核准 bash 指令開關控制完整存取 bash 指令和受信任的程式指令是否無需確認即可執行。此設定與沙箱模式無關——無論是否啟用自動核准,沙箱化指令始終在沙箱內執行。受信任的程式
少數程式需要沙箱無法授予的直接存取權,因此 CTOR 允許它們逃出沙箱:bricks devtools——需要直接存取 LAN 才能連線裝置。agent-browser——需要本機瀏覽器分頁的 CDP 橋接,才能操作您開啟的瀏覽器分頁。bunx agent-browser與bun x agent-browser形式同樣受信任。
agent-browser snapshot | jq . 這類唯讀鏈——會以其所需的存取權執行,且在自動核准開啟時靜默執行。將受信任的程式與其他指令組合的 shell 鏈(例如 cd /path && bricks devtools scan)也會逃出沙箱,但它們始終會顯示核准提示——即使啟用了自動核准——讓您每次都能確認完整的組合指令。
危險指令偵測
CTOR 會掃描每個bash 呼叫是否符合高影響力模式。一旦偵測到,核准卡片會以紅色邊框、⚠ 圖示和危險指令標籤強調顯示,並一律出現提示——自動核准會被略過,沙箱模式也會回退為確認閘門。沙箱本身無法封鎖這些模式,因為專案目錄樹依設計可寫入(因此 rm -rf <project>/... 在沙箱內仍會成功)。
偵測器會標記下列類別的指令:
- 權限提升:
sudo、doas、su - 系統電源狀態:
shutdown、reboot、halt、poweroff、init - 磁碟格式化或分割:
mkfs.*、fdisk、sfdisk、parted、diskutil - 原始磁碟寫入:帶有
of=目標的dd - 安全刪除:
shred、srm、wipe - 遞迴移除:
rm -r、rm -R、rm --recursive - 遞迴權限或擁有者變更:
chmod -R、chown -R - 終止 PID 1:
kill 1、pkill 1、killall 1 - 改寫歷史的 git:
git push --force/-f、git reset --hard、git clean -f、git branch -D、git checkout .、git restore . - 遠端執行管道:
curl ... | sh、wget ... | bash,包含| sudo sh - 任意 shell 字串:
bash -c、sh -c、zsh -c,以及其他帶有-c的 shell 直譯器
cd /tmp && rm -rf x 或 curl ... | sudo bash 仍會被攔截。較安全的變體不會被標記:git push --force-with-lease、git branch -d(僅移除已合併的分支),以及對非 init PID 的 kill 都會正常執行。