跳至主要内容

沙箱與審批

兩個設定,幹的是不同的事。 沙箱決定 agent 做什麼;審批決定它做之前必須先問什麼。

沙箱

sandbox_mode = "workspace-write"
agent 可以
read-only看文件,不能改
workspace-write在它的工作目錄裡寫
danger-full-access你的帳號能做的一切

讀取在任何模式下都不受限制。 只有寫入和網路訪問受限,所以 read-only 意味著 agent 能看你整塊硬碟,但一個字都改不了

可寫根就是工作目錄

workspace-write 下,「工作區」指的是對話或執行所在的那個目錄。不是專案,不是 儲存庫 —— 就是那個目錄

這是這一頁最重要的一句話。 一次在你家目錄裡打開的執行,可以寫 .sshDocumentsLibrary

這不是假設。 一個在部門出現之前建的定時任務帶著家目錄,已經那樣跑了四十二次, 每一次都能夠到這些地方,沒人被問過,也沒人說過什麼。給新對話改預設值動不了它, 因為預設值不是追溯性的

所以有了第二道檢查,在執行開始的那一刻。

一次後臺執行可以從哪裡開始

一次執行只有在目錄是產品已知的那幾種時,才允許開始:

  • 在工作區裡
  • 在某個部門的目錄裡
  • 在你按名字授權過的地方

其他一律扣住,出現在派發面板的等你授權下,帶一個「允許這個目錄」按鈕。授權一個 地方會放行所有在等它的執行。

問這一下就是重點:跑在一個不尋常的地方往往正是本意,而正確的回應是,不是拒絕。

審批

approval_policy = "on-failure"
untrusted所有不是已知安全的命令都先給你看
on-failure命令自己跑,需要更大權限時才問你
never執行前什麼都不顯示

never 同時意味著什麼都不會被扣住。把審批關掉的人已經把話說明白了 —— 認定他們的意思其實更窄一點,是產品在推翻自己提供的設定

用在你願意讓指令碼撒野的目錄上。

會坑到人的那個組合

sandbox_mode = "danger-full-access"approval_policy = "never",是一個 在你機器上任意執行命令、什麼都不顯示、什麼都不問的 agent

有些目錄裡這是對的答案。你的家目錄不是其中之一。

沙箱不做的兩件事

  • 它不阻止模型讀你的文件。 任何模式下讀取都不受限。
  • 它不管它啟動的命令之後幹了什麼。 agent 啟動的指令碼繼承沙箱;它啟動的、活得比這次 執行還久的服務,不繼承。