權限與確認
兩種權限模式、各入口使用哪一種,以及確認提示如何路由。
Permission mode
| Mode | 行為 |
|---|---|
single-confirm |
每個非 ReadOnly 工具呼叫都需使用者確認(TUI 預設值) |
always-allow |
工具自動執行;LLM 被指示對七類真正不可逆的操作先呼叫 ask_user |
在 always-allow 下仍需明確 ask_user 的七類不可逆操作:
- 檔案系統 ——
rm -rf/rm -r、刪除目錄或非本次任務產生的既有檔案 - 資料庫 ——
DROP DATABASE/DROP TABLE/TRUNCATE、無WHERE的DELETE/UPDATE、任何正式環境 DSN - Git ——
reset --hard、對 main/master 的push --force、刪除共用分支、clean -fdx - 系統 ——
chmod 777/chown -R、/etc//usr//System底下的修改、launchctl / systemd 變更、sudo 提權 - 覆寫 —— 未讀取過的非空既有檔案、
.env/ 憑證 / lock 檔 /.git/index - 雲端與基礎設施 ——
gcloud/aws/kubectl delete、terraform destroy - 行程 ——
shutdown/reboot、對系統服務 PID 執行kill -9
一般寫入(edit_file、build 與測試指令、git status / add / commit、唯讀 shell)直接執行。此閘門由 system prompt(configs/prompts/system_prompt/permission/always_allow.md)強制,而非硬編碼的 Go 端 filter。
各入口的模式
生效的權限模式(single-confirm 或 always-allow)由進入點決定:
| 進入點 | 模式 |
|---|---|
| TUI | single-confirm,可用 Shift+Tab 逐 session 切換 |
POST /v1/send |
single-confirm;確認由 web 儀表板回應。請求欄位 allow_all 已移除 |
POST /v1/chat/completions |
always-allow |
| Telegram | single-confirm(confirm gate 使用 Telegram inline-keyboard 選單) |
| Discord | single-confirm(confirm gate 使用 Discord select menu) |
| 續跑的待處理任務 | 沿用該任務儲存的模式 |
| Subagent | 繼承母 ctx |
模式會渲染進 system prompt 的 ## Permission Mode。位於唯讀指令清單的指令在任何模式下都跳過 gate。
工具 mode 的閘門
帶 mode 的工具由 mode 決定閘門:list / read / search 視為唯讀並跳過確認,而 remove / restore 即使在已自動核准的工具上仍一律確認。
依來源路由的確認
每個互動請求都帶有來源前綴——cli-、chat-、tg- 或 dc-。CLI 的確認只由 TUI 消費,web 請求由 web 確認串流消費,Telegram 或 Discord 請求由對應的通道 listener 消費。TUI 以外通道的確認 5 分鐘未回覆即視為 skipped,任務保留為待決(v1.1.1 起 TUI 的確認不設時限),因此一個通道既無法攔截、也無法無限期占住另一個通道的提示。