權限與沙盒
代理能讀寫檔案、執行指令,這是它有用的原因,也是風險所在。權限系統決定每個動作是自動執行、先問你,還是禁止;沙盒則在作業系統層級限制指令能碰到的範圍。建議先用預設值,理解之後再放寬。
三層規則:Deny > Ask > Allow
每個動作依這個順序判斷,先命中的規則生效:
| 規則 | 效果 |
|---|---|
| Deny | 直接封鎖,沒有例外 |
| Ask | 暫停,等你明確核准 |
| Allow | 自動執行 |
預設會自動放行工作區內的檔案操作,但 shell 指令、工具呼叫與瀏覽器操作需要核准。
在 CLI 用 /permissions 設定,或在 ~/.gemini/antigravity-cli/settings.json 用 permissions 陣列寫細部規則:
權限預設組合
官方沙盒文件把常見組合歸納為三種:
| 預設 | 沙盒 | 行為 |
|---|---|---|
| Default | 開 | 沙盒內的指令直接執行;要離開沙盒的請求會觸發核准 |
| Request Review | 關 | 所有指令都要核准 |
| Turbo | 關 | 指令不經詢問直接執行 |
CLI 的 toolPermission 設定則有四個層級:request-review(預設)、proceed-in-sandbox、always-proceed、strict。Turbo/always-proceed 風險最高,只適合拋棄式環境。
終端機沙盒
沙盒用作業系統原生機制隔離代理執行的指令,不需要虛擬機:
- Linux:使用核心命名空間隔離檔案系統並隱藏行程。
- macOS:使用
sandbox-exec與 Seatbelt 設定檔。 - Windows:維持舊行為,之後版本才會更新。
沙盒內的指令可以寫入專案資料夾、暫存目錄與常見的建置快取,也能讀取 /usr、/etc 等系統目錄,所以工具照常運作。~/.ssh 與 .env 這類敏感位置仍然被擋住。
| 面向 | 沙盒規則 |
|---|---|
| 檔案系統 | 專案資料夾可讀寫;read_file 涵蓋的路徑唯讀掛載 |
| 網路 | 預設關閉;read_url 允許的網域形成白名單 |
| 例外 | 用 unsandboxed() 規則讓特定指令在沙盒外執行 |
macOS 與 Linux 的新權限系統預設啟用沙盒;CLI 的 enableTerminalSandbox 設定預設為 false,需要時自行開啟。
瀏覽器代理的隔離
- 使用獨立的 Chrome 設定檔,不會接觸你儲存的密碼與 cookie。
- 網址允許/拒絕清單獨立於一般權限。
- 可完全關閉瀏覽器功能。
實務建議
- 剛開始用預設值,熟悉代理的行為後再放寬。
- 用
allow只放行你確定安全的具體指令(例如command(git)),不要整個放行 shell。 - 對不可逆的動作(刪檔、推送、部署)維持 Ask,或直接 Deny。
- 自動化與 CI 要用最小必要權限,見 無頭模式;不要為了省事使用
--dangerously-skip-permissions。 - 不要把機密放進代理讀得到的地方;用 Deny 與沙盒擋住
.env這類檔案。
文件之間的差異
官方對沙盒預設狀態的描述在不同頁面略有出入(沙盒文件指出 macOS/Linux 預設啟用,CLI 設定參考的 enableTerminalSandbox 預設為 false)。實際狀態請在 CLI 的 /config 或 /permissions 確認。
更多設定見官方文件:終端機沙盒。