工作區、權限與瀏覽器橋接
CoS 被設計成 ChatGPT 與「登入中的作業系統使用者」之間的權限邊界 (permission boundary)。核准哪些資料夾、開哪些能力、記錄多少歷史,全都由本機決定;本文整理這些設定與它們的實際邊界。
Settings → Workspace
在 Settings → Workspace 完成兩件事:
- 核准專案資料夾:檔案工具 (file tools) 會以你明確核准的 roots 驗證路徑,資料夾外的路徑直接拒絕。
- 檢視工具權限:逐項確認 Core/Desktop/Plugins 各 connector 要開放的能力。
關鍵邊界:核准資料夾不是核心層級或 VM 沙箱 (sandbox),也不限制指令執行或桌面控制。同一使用者權限下的檔案競態 (race) 仍可能存在,不要把核准 roots 當成對抗惡意本機程序的隔離。
Connector 權限邊界
| Connector | 加入什麼 | 適用平台 |
|---|---|---|
| Core | 本機檔案、patch、終端機、產出檔案下載、session 歷史、計畫 (plan) 與 workers | Windows/macOS/Linux |
| Desktop | 螢幕檢視、滑鼠、鍵盤與剪貼簿 | Windows/macOS(macOS 需明確開啟與系統權限) |
| Plugins | 外部 MCP 工具(Blender、Playwright、Memory 等)與自訂本機/遠端伺服器 | 所有支援平台 |
Core 與 Desktop 不會互相轉發或別名化工具;一個 surface 的 connector token 不授權另一個 surface。外部外掛程序以目前使用者的 OS 權限執行,不繼承核准資料夾沙箱。
Read-only mode
Read-only 會移除實際生效的檔案寫入、指令執行、桌面控制與剪貼簿寫入權限,但不會假裝底層設定被改掉:
- 檔案類寫入工具停用。
exec_command等指令執行停用。- 桌面 state-changing 動作停用,但觀察 (observe) 可保留。
- 剪貼簿寫入停用。
- 拒絕所有外部外掛呼叫——上游工具註解無法證明外部程序不會造成變更。
若呼叫被擋下並回 TOOL_DISABLED,先檢查 Read-only 與被點名的本機能力,再對照工具速查的錯誤碼表。
Browser bridge port
companion extension 與 app 之間的 bridge 是獨立的 loopback 服務,不對外暴露檔案、指令或設定變更路由。位址在 Settings → Browser & history → Browser bridge port 選擇:
| 選項 | 行為 |
|---|---|
| Auto(預設) | 依 8765、8766、8767、8768、8769 的順序取第一個可用埠 |
| 8765–8769 任一 | 固定使用該埠,不會靜默退回其他埠 |
companion 會探索同一組支援範圍。兩種被占用的情境與復原方式:
- 儲存時被占用:儲存被拒,先前的選擇與仍可用的 bridge 保持不變。
- 啟動時已儲存的埠被占用:app 仍會開啟,但 bridge 停止,Setup 顯示錯誤——到 Settings 選一個空閒埠或改回 Auto 即可復原。
CLF_BRIDGE_PORTS 環境覆寫若生效,優先於已存選擇:下拉選單會被停用並說明原因(其他無關設定仍可調整)。要重新使用選單,請從啟動環境移除覆寫並重啟 CoS。逗號分隔的覆寫與 port 0 仍保留給隔離開發/測試使用。切換成功後,配對關係會保留。
Session 記錄與憑證
| 項目 | 預設與行為 |
|---|---|
| Session 記錄 | 全新安裝預設開啟,保留 30 天,可停用;內容存在本機、不屬於特定 ChatGPT 分頁 |
| 記錄內容 | 訊息與真實的本機工具結果都會記錄,供 app 與模型讀取先前的進度 |
| 加密 | Session 記錄刻意詳細,且未經 safeStorage 加密——能存取你 OS 帳號的人可能讀得到 |
| 憑證儲存 | Electron safeStorage:Windows 用 DPAPI、macOS 用 Keychain、Linux 用桌面安全 secret store |
Linux 會拒絕 basic_text;一般 Activity log 經遮蔽、有上限且只存在記憶體。若出現「Linux credential storage unavailable」,解鎖 GNOME Keyring 或 KWallet,然後重啟 CoS。
全新安裝的預設值
| 設定 | 預設 |
|---|---|
| Core 權限 | 開啟 |
| Session recording | 開啟 |
| Multi-agent mode | 開啟 |
| Read-only mode | 關閉 |
| Workers | 每個 family 兩個(可調到八個) |
| Desktop 權限 | Windows:開啟;macOS:關閉,需自行開啟;Linux:runtime 遮罩為關閉 |
Linux 的遮罩會保留已儲存的選擇,讓同一份設定日後在 Windows/macOS 開啟時仍可沿用。既有安裝在升級時保留原本明確的選擇,缺失的舊版權限不會被靜默放寬。
還有一個容易誤會的細節:工具曝光在單一 connector 實例內是單調的 (monotonic)。對話中途改權限,先前已曝露的工具名稱可能還留在清單上;實際呼叫時 handler 仍以當下權限為準。