Documentation Index
Fetch the complete documentation index at: https://docs.claude.com/llms.txt
Use this file to discover all available pages before exploring further.
SDK 權限
Claude Agent SDK 提供強大的權限控制,讓您可以管理 Claude 在您的應用程式中如何使用工具。 本指南涵蓋如何使用canUseTool 回調、鉤子和 settings.json 權限規則來實現權限系統。如需完整的 API 文件,請參閱 TypeScript SDK 參考。
概述
Claude Agent SDK 提供四種互補的方式來控制工具使用:- 權限模式 - 影響所有工具的全域權限行為設定
- canUseTool 回調 - 針對其他規則未涵蓋的情況的執行時權限處理器
- 鉤子 - 使用自訂邏輯對每個工具執行進行細粒度控制
- 權限規則 (settings.json) - 具有整合 bash 命令解析的宣告式允許/拒絕規則
- 權限模式 - 設定整體權限行為(規劃、自動接受編輯、繞過檢查)
canUseTool- 針對未涵蓋情況的動態批准,提示使用者權限- 鉤子 - 對所有工具執行的程式化控制
- 權限規則 - 具有智慧 bash 命令解析的靜態政策
權限流程圖
處理順序: PreToolUse Hook → 拒絕規則 → 允許規則 → 詢問規則 → 權限模式檢查 → canUseTool 回調 → PostToolUse Hook權限模式
權限模式提供對 Claude 如何使用工具的全域控制。您可以在呼叫query() 時設定權限模式,或在串流會話期間動態更改它。
可用模式
SDK 支援四種權限模式,每種都有不同的行為:| 模式 | 描述 | 工具行為 |
|---|---|---|
default | 標準權限行為 | 適用正常權限檢查 |
plan | 規劃模式 - 不執行 | Claude 只能使用唯讀工具;在執行前呈現計劃 (SDK 目前不支援) |
acceptEdits | 自動接受檔案編輯 | 檔案編輯和檔案系統操作會自動批准 |
bypassPermissions | 繞過所有權限檢查 | 所有工具都不需權限提示即可執行(請謹慎使用) |
設定權限模式
您可以透過兩種方式設定權限模式:1. 初始配置
在建立查詢時設定模式:2. 動態模式變更(僅限串流)
在串流會話期間變更模式:模式特定行為
接受編輯模式 (acceptEdits)
在接受編輯模式中:
- 所有檔案編輯都會自動批准
- 檔案系統操作(mkdir、touch、rm 等)會自動批准
- 其他工具仍需要正常權限
- 當您信任 Claude 的編輯時可加速開發
- 適用於快速原型製作和迭代
- 檔案編輯(Edit、Write 工具)
- Bash 檔案系統命令(mkdir、touch、rm、mv、cp)
- 檔案建立和刪除
繞過權限模式 (bypassPermissions)
在繞過權限模式中:
- 所有工具使用都會自動批准
- 不會出現權限提示
- 鉤子仍會執行(仍可阻止操作)
- 請極度謹慎使用 - Claude 擁有完整系統存取權限
- 建議僅在受控環境中使用
權限流程中的模式優先順序
權限模式在權限流程中的特定點進行評估:- 鉤子首先執行 - 可以允許、拒絕、詢問或繼續
- 檢查拒絕規則 - 無論模式如何都會阻止工具
- 檢查允許規則 - 如果符合則允許工具
- 檢查詢問規則 - 如果符合則提示權限
- 評估權限模式:
bypassPermissions模式 - 如果啟用,允許所有剩餘工具- 其他模式 - 延遲到
canUseTool回調
canUseTool回調 - 處理剩餘情況
- 鉤子始終可以控制工具使用,即使在
bypassPermissions模式中 - 明確的拒絕規則會覆蓋所有權限模式
- 詢問規則在權限模式之前評估
bypassPermissions模式會覆蓋未符合工具的canUseTool回調
最佳實踐
- 使用預設模式 進行受控執行與正常權限檢查
- 使用 acceptEdits 模式 處理隔離的檔案或目錄
- 避免在生產環境或敏感資料系統中使用 bypassPermissions
- 結合模式與鉤子 進行細粒度控制
- 根據任務進度和信心動態切換模式
canUseTool
canUseTool 回調在呼叫 query 函數時作為選項傳遞。它接收工具名稱和輸入參數,並必須回傳決定 - 允許或拒絕。
當 Claude Code 會向使用者顯示權限提示時,canUseTool 會觸發,例如鉤子和權限規則未涵蓋且不在 acceptEdits 模式中。
以下是顯示如何實現互動式工具批准的完整範例: