第十四節 工具權限政策
[!ref] 詳解見使用者手冊「工具權限與簽核」節。
14.1 三態語義
| 狀態 | 圖示 | 行為 |
|---|---|---|
| 啟用 | 直接放行,不彈窗 | |
| 詢問 | 每次呼叫前彈窗簽核(接入實際確認流程,批准前呼叫暫停) | |
| 停用 | 直接拒絕,記錄到錯誤抽屜 |
三態對子代理同樣生效:「停用」在主代理與子代理兩側一並生效(子代理側 fail-closed,工具直接不可見);解除安裝外掛 / 移除 MCP 後端時自動清理殘留的工具配置鍵,盤上配置與實際可用工具保持一致。
14.2 決策聚合與多端應答
Hook 決策聚合:同一次評估中多個 Hook 傳回的權限決策按下列優先級合併(前者勝):
deny > defer > ask > allow
多端應答:簽核彈窗與遠端通道(微信等)同時收到同一請求時,首個應答生效;其餘端的後續回覆會被提示已應答。
14.3 白名單匹配粒度
| 粒度 | 覆蓋範圍 | 適用場景 |
|---|---|---|
| 僅本次 | 單次呼叫 | 謹慎評估 |
| 同工具同參數 | 一組完全相同的入參 | 推薦預設 |
| 同工具任何參數 | 該工具任意呼叫 | 內部指令碼 |
| 整工作區放行 | 該工作區所有工具 | 僅限隔離環境 |
14.4 遠端簽核回寫
| 命令 | 等價桌面操作 |
|---|---|
/approve <簽核號> |
允許(僅本次) |
/always <簽核號> |
始終允許 |
/deny <簽核號> |
拒絕 |
| 不回復 | 30 秒倒數結束即超時拒絕 |
14.4.1 無限制模式(進階)
輸入區模式滑塊右側盾牌開關;按工作階段獨立、純記憶體、重新啟動即清。啟用前有 5 秒冷靜期。
| 解除 | 啟用後行為 |
|---|---|
| 工具批准 | 跳過批准彈窗,直接執行 |
| 命令白名單 | fs.exec 不限命令 |
| 網路過濾 | web.fetch / web.bing 不過濾內網 / 環回 / 鏈路本機 |
始終保留的硬底線(不受開關影響):
| 硬底線 | 說明 |
|---|---|
samples/ 沙箱 |
不可解除 |
rm -rf 參數校驗 |
仍校驗 |
| 危險注入黑名單 | fork 炸彈 / 寫 /etc / curl|sh / eval |
| 協議白名單 | 僅 http(s) 放行 |
訊息標記:模式期間產生的連續訊息以淺色邊框整體圈出(起止界標),關閉後當場收口;模式未結束不打「結束」界標。子代理可按需遞歸繼承該模式,繼承產生的訊息同樣帶標記。
14.5 簽核請求欄位與留痕
簽核彈窗(hook:ask 事件)攜帶的欄位:
| 欄位 | 說明 |
|---|---|
request_id |
簽核號 |
event |
觸發的 Hook 事件名 |
fingerprint |
授權指紋,「始終允許」按它匹配 |
handler_type / handler_label |
處理器類型與顯示名 |
matcher / match_target |
命中的匹配器與匹配目標 |
source_scope / source_id |
來源作用域(plugin / user / workspace)及其 ID |
session_id |
工作階段 ID |
timeout_sec |
倒數秒數(30) |
決策取值:deny(拒絕)/ allow_once(僅本次允許)/ always_allow(始終允許)。
留痕:僅「始終允許」會持久化 — 寫入工作區級授權檔案 hook-approvals.yaml(記錄授權指紋與決策時間),可在 設置 → Hooks 檢視與撤銷;「僅本次允許」「拒絕」與超時只作用於當次呼叫,不落盤。
