症狀: Roo Code 不斷要求確認,令連續執行被打斷;但一旦全部放行,檔案、終端與 MCP 權限會一起擴大。
最快解法: 不要一次開啟全部自動審批,先在隔離環境按「讀取 → 受限編輯 → 命令 → 瀏覽器 → MCP」逐級驗收,只放行可回滾且作用域明確的動作。
這篇適合三類讀者:經常被 Roo Code 確認提示打斷的個人開發者;準備把它放到遠端開發環境或雲端 Mac 長時間執行的團隊;以及需要審核 Agent 權限、密鑰與 MCP 工具邊界的安全或平台工程人員。
自動審批的權限邊界
Roo Code 的自動審批不是單一的「安全/不安全」開關。官方工具說明把能力分成讀取、編輯、命令與 MCP 等工具群;不同模式可使用的工具組合也不同,例如只讀取與說明用途的模式,不應與可執行命令及修改程式碼的模式共用同一套放行政策。官方工具群與模式說明 (github.com)
你可以先把動作分成五層:
- 只讀操作: 列出目錄、搜尋檔案、閱讀程式碼,前提是工作區範圍已固定。
- 受限編輯: 只修改指定倉庫、測試分支或明確副檔名,而且能透過 Git 變更差異回復。
- 終端命令: 建置、單元測試等作用域可預測的命令,與安裝依賴、清理、部署分開。
- 瀏覽器及外部網路: 可能接觸未驗證內容、登入狀態或外部服務,不能只因為「讀取」就視為低風險。
- MCP 工具: 可能讀取資料庫、寫入第三方服務、觸發工單或使用外部憑據,應視為獨立的高權限面。
密鑰讀取、系統目錄修改、發布部署、刪除資料、改寫 .roo/ 設定,以及會觸發外部副作用的 MCP 工具,預設保留人工確認。官方安全公告曾記錄一個與專案 MCP 設定及自動批准檔案寫入相關的高嚴重度遠端程式碼執行問題,修補版本為 3.20.3,公告列出的 CVSS 基準分數為 8.1;這不代表所有版本都有同一漏洞,但說明「自動寫入設定檔」不能當作普通編輯處理。官方安全公告 (github.com)
第一階段:讀取與受限編輯
第一輪不要從完整程式庫和正式分支開始,而是準備一個可重新建立的測試分支,並先完成以下操作:
- 固定 Roo Code 的工作區路徑,只把必要倉庫放入範圍。
- 檢查它能否讀取工作區以外的目錄、家目錄或掛載磁碟。
- 在工作區放入測試用符號連結,確認是否可能沿著連結離開預期目錄。
- 只允許修改一至兩類程式檔,避免設定檔、祕密檔案與部署檔同時可寫。
- 讓 Roo Code 完成一個小型編輯,再用
git diff、測試與回復指令驗證結果。 - 故意要求它修改工作區以外的檔案,確認系統會拒絕,而不是只在對話中聲稱拒絕。
這一階段的通過條件是:變更差異可讀、測試分支可完全回復、越界讀寫被攔截,而且拒絕事件可在對話或日誌中追蹤。停止條件則包括:無法確定實際工作區、編輯會改寫未指定檔案、回復後仍殘留設定,或拒絕請求只靠模型自行承諾。
驗收證據至少保存三類:權限設定截圖、成功任務的變更差異,以及一次越界操作的拒絕記錄。不要以「這次沒有出錯」代替證據,因為未觸發越界路徑並不等於越界已被阻止。
第二階段:終端命令與連續執行
終端命令要按代表性場景逐條測試,而不是勾選一個全域授權後觀察幾分鐘。建議依序測試:
- 建置命令:確認只在測試倉庫執行,不會讀取正式環境變數。
- 單元測試:確認測試失敗時不會自動改寫測試資料或重試無限次。
- 依賴安裝:確認套件來源、鎖定檔及安裝目錄均符合團隊政策。
- 清理腳本:確認刪除範圍是暫存檔或建置輸出,而不是整個工作區。
- 失敗命令:故意提供錯誤參數,觀察 Roo Code 是否會自行擴大命令範圍。
每條命令都要回答四個問題:目前目錄是否固定?參數是否可預測?執行多次是否冪等?失敗後能否回復?只有四項均能回答,才有資格進入短期自動放行名單。
官方文件另提供自動批准動作的 Max Requests 限制;例如設定為 5 時,完成五次自動批准的 API 呼叫後,下一次會停下來要求重新確認,而不是無限連續執行。這個數字是保護連續任務的上限,不是命令安全性的證明;長時間任務仍須搭配超時、日誌和工作區隔離。官方用量與請求限制說明 (github.com)
提醒: 建置成功不代表命令沒有副作用。尤其是依賴安裝、清理腳本與自訂工作流程,真正要驗收的是命令內容及參數所能觸及的範圍,而不是終端最後顯示的成功狀態。
MCP 工具的逐項允許列表
接入 MCP 後,應把「伺服器已啟用」和「工具可自動執行」視為兩次不同的授權。官方資料顯示,MCP 工具可透過工具群接入外部伺服器;另外,專案設定與全域設定可能把工具帶入不同工作區,因此不能因為某個 MCP 伺服器由團隊維護,就把旗下所有工具一併放行。官方 MCP 工具說明 (github.com)
每個 MCP 工具都建立一筆紀錄,至少包括:
- 工具名稱與所屬伺服器。
- 可讀取或寫入的資料範圍。
- 輸入參數是否有路徑、網址、查詢條件或批量操作。
- 使用哪一組環境變數、存取權杖或登入工作階段。
- 是否會建立、刪除、發布、發送或修改外部資料。
- 撤銷權限、旋轉密鑰及停用伺服器的方法。
低風險通常是限定資料集的查詢;中風險是會寫入測試資料或建立草稿;高風險則包括正式資料寫入、部署、發送訊息、修改權限及讀取敏感資源。允許列表應精確到工具層級,不能只寫「允許這個 MCP 伺服器」。
遠端試跑與無人值守隔離
只要任務需要長時間執行,就不要直接在存放個人密鑰、瀏覽器登入狀態或正式倉庫的日常工作機上測試。遠端開發環境或雲端 Mac 應先建立獨立帳戶、獨立工作區與最小化網路出口;若任務依賴 Xcode 或其他 macOS 工具鏈,也要單獨驗證遠端 Mac,不能把一般容器的隔離結論直接套用。
試跑時安排兩個任務:
- 可回滾任務: 修改測試分支、執行測試、產生差異,最後完整回復。
- 故意越權任務: 嘗試讀取工作區外檔案、呼叫未列入允許列表的 MCP 工具,或執行被禁止的清理命令。
通過條件包括:工作區權限符合預期、網路出口可追蹤、密鑰沒有直接寫入日誌、命令日誌可保留、超時後能終止程序、回滾後沒有殘留檔案。沙箱或遠端伺服器只能縮小影響範圍,不能消除提示注入、惡意依賴、錯誤腳本或 MCP 服務本身的風險。
中段 FAQ:四個容易混淆的判斷
哪些操作可以先自動批准
先從只讀、限定目錄搜尋與可回復編輯開始;只有當差異檢查、工作區邊界與 Git 回復均通過,才考慮短期放行建置及測試命令。密鑰、部署、刪除、系統目錄與外部寫入仍應維持人工批准。
終端命令為何不能只看命令名稱
同一個命令在不同目前目錄、環境變數或腳本版本下,可能產生完全不同的結果。命令級允許列表應連同參數格式、工作目錄、輸出路徑及失敗處理一起檢查,否則「測試命令」也可能間接觸發安裝或寫入。
MCP 允許列表應以伺服器還是工具為單位
應以工具為最小授權單位,伺服器只代表一個承載邊界。讀取資料、寫入資料、觸發外部動作及接觸敏感資源的工具,風險不同,必須分開記錄和撤銷;未使用的 MCP 功能則直接停用。
無人值守任務何時必須隔離
當 Roo Code 會在你不在螢幕前持續修改檔案、執行命令或使用 MCP,就應轉移到隔離的遠端開發環境。隔離不是批准權限的替代品,而是當錯誤發生時,限制倉庫、網路、密鑰及作業系統影響面的第二道防線。
長期複核與回退條件
首次通過不代表永久安全。以下事件一旦發生,就應重新執行至少一輪越界與回滾測試:
- Roo Code 升級或切換執行方式。
- MCP 伺服器、工具描述或啟動命令變更。
- 倉庫內建置腳本、清理腳本或工作流程修改。
- 新增 API 金鑰、部署憑據或資料庫連線資訊。
- 遠端 Mac 的使用者、網路出口、掛載目錄或工具鏈改變。
保留自動審批的條件是:動作作用域固定、日志完整、回滾可驗證、越權會被攔截,而且最近抽查沒有異常差異。若只是任務變複雜但邊界仍清楚,可以縮小允許列表或降低 Max Requests;若出現未預期的外部寫入、密鑰進入日誌、無法回滾或拒絕記錄缺失,就應立即撤銷自動審批,回到人工確認模式。
你可以把這套流程整理到 SSHMac 使用說明中心,並在每次環境變更時重新核對。若團隊需要把遠端 Mac 納入研發流程,也應先確認工作區權限、密鑰注入和日誌保留政策,而不是只比較 CPU 或記憶體配置;SSHMac 的服務資訊可作為規劃遠端環境時的入口。
方案評分與上線門檻
下表不是替你選擇「全開」或「全關」,而是用風險和可驗收程度判斷下一步。分數越高,代表越適合進入短期自動執行;任何一項涉及正式資料或不可逆副作用,都應直接回到人工確認。
| 動作類型 | 建議初始狀態 | 可自動批准的前提 | 風險評分 |
|---|---|---|---|
| 讀取及搜尋 | 開放 | 目錄固定、無越界讀取 | 1/5 |
| 受限編輯 | 試跑 | 測試分支、差異可審查、Git 可回復 | 2/5 |
| 建置及單元測試 | 小範圍開放 | 命令固定、參數可預測、無敏感環境變數 | 3/5 |
| 依賴安裝及清理 | 人工確認 | 已審核腳本且作用域可證明 | 4/5 |
| MCP 查詢工具 | 逐項試跑 | 資料範圍、輸入與憑據均明確 | 3/5 |
| MCP 寫入、部署及外部動作 | 保留人工確認 | 另有交易審批或專用測試帳戶 | 5/5 |
| 驗收階段 | 必須留下的證據 | 通過後可做甚麼 | 未通過時的處理 |
|---|---|---|---|
| 啟用前 | 權限設定、工作區路徑、禁止項目 | 開始只讀任務 | 關閉編輯、命令及 MCP |
| 低風險試跑 | 變更差異、越界拒絕記錄 | 開放受限編輯 | 回到唯讀並檢查目錄邊界 |
| 命令測試 | 命令、參數、輸出及失敗結果 | 只放行指定建置與測試 | 逐條撤銷,不使用全域授權 |
| MCP 驗收 | 工具清單、輸入範圍、憑據來源 | 開放個別查詢工具 | 停用伺服器或保留人工確認 |
| 遠端試跑 | 回滾、超時、網路與日誌結果 | 進入短期無人值守 | 停止任務並旋轉相關密鑰 |
| 長期複核 | 版本、設定變更、異常差異抽查 | 保留或縮小允許列表 | 撤銷自動審批,重新驗收 |
如果你目前使用的是沒有工作區隔離、缺少回滾、日誌不完整的本機方案,主要缺點不是 Roo Code 本身,而是錯誤命令可能直接碰到個人檔案、正式憑據和長期登入狀態;遠端環境若沒有固定網路出口與權限邊界,也同樣不適合無人值守。對需要臨時算力、測試分支或獨立 macOS 工具鏈的任務,租用 SSHMac 的 Mac 環境通常比在日常工作機上硬開全部批准更容易分隔風險;但長期穩定重負載、必須接入實體裝置,或要求完全掌控硬體的團隊,仍應評估自購 Mac 是否更合適。
最穩妥的做法,是先複製本文的分級驗收流程,在隔離開發環境完成一輪低風險任務;只有當日誌、越權攔截與回滾結果都通過,才逐步擴大 Roo Code 自動審批範圍。