6 6
7> 使用權限模式、hooks 和宣告式允許/拒絕規則來控制您的代理程式如何使用工具。7> 使用權限模式、hooks 和宣告式允許/拒絕規則來控制您的代理程式如何使用工具。
8 8
9Claude Agent SDK 提供權限控制來管理 Claude 如何使用工具。使用權限模式和規則來定義自動允許的內容,以及使用 [`canUseTool` callback](/docs/zh-TW/agent-sdk/user-input) 來在執行時處理其他所有情況。9Claude Agent SDK 提供權限控制來管理 Claude 如何使用工具。使用權限模式和規則來定義自動允許的內容,以及使用 [`canUseTool` callback](https://code.claude.com/docs/zh-TW/agent-sdk/user-input) 來在執行時處理其他所有情況。
10 10
11## 權限如何被評估11## 權限如何被評估
12 12
14 14
15**1. Hooks**15**1. Hooks**
16 16
17首先執行 [hooks](/docs/zh-TW/agent-sdk/hooks.md)。Hook 可以直接拒絕呼叫或將其傳遞下去。返回 `allow` 的 hook 不會跳過下面的拒絕和詢問規則;無論 hook 結果如何,這些規則都會被評估。17首先執行 [hooks](https://code.claude.com/docs/zh-TW/agent-sdk/hooks.md)。Hook 可以直接拒絕呼叫或將其傳遞下去。返回 `allow` 的 hook 不會跳過下面的拒絕和詢問規則;無論 hook 結果如何,這些規則都會被評估。
18 18
19返回 `allow` 的 `PreToolUse` hook 也無法核准目標被 Claude Code 識別為[關鍵路徑](/docs/zh-TW/permission-modes.md#critical-paths)的 `rm` 或 `rmdir` 命令,例如 `rm -rf ~`。關於該 `allow` 在 plan mode 中的作用,請參閱 [plan mode 中的 hook 核准](/docs/zh-TW/permissions.md#hook-approvals-in-plan-mode)。19返回 `allow` 的 `PreToolUse` hook 也無法核准目標被 Claude Code 識別為[關鍵路徑](https://code.claude.com/docs/zh-TW/permission-modes.md#critical-paths)的 `rm` 或 `rmdir` 命令,例如 `rm -rf ~`。關於該 `allow` 在 plan mode 中的作用,請參閱 [plan mode 中的 hook 核准](https://code.claude.com/docs/zh-TW/permissions.md#hook-approvals-in-plan-mode)。
20 20
21**2. 拒絕規則**21**2. 拒絕規則**
22 22
23檢查 `deny` 規則(來自 `disallowed_tools` 和 [settings.json](/docs/zh-TW/settings-reference.md#permission-settings))。如果拒絕規則匹配,工具會被阻止,即使在 `bypassPermissions` 模式下也是如此。裸名稱拒絕規則(如 `Bash`)會在此評估開始前將工具從 Claude 的上下文中移除,因此只有作用域規則(如 `Bash(rm *)`)會在此步驟中被檢查。23檢查 `deny` 規則(來自 `disallowed_tools` 和 [settings.json](https://code.claude.com/docs/zh-TW/settings-reference.md#permission-settings))。如果拒絕規則匹配,工具會被阻止,即使在 `bypassPermissions` 模式下也是如此。裸名稱拒絕規則(如 `Bash`)會在此評估開始前將工具從 Claude 的上下文中移除,因此只有作用域規則(如 `Bash(rm *)`)會在此步驟中被檢查。
24 24
25**3. 詢問規則**25**3. 詢問規則**
26 26
27檢查來自 [settings.json](/docs/zh-TW/settings-reference.md#permission-settings) 的 `ask` 規則。如果詢問規則匹配,呼叫會傳遞到您的 [`canUseTool` 回呼](/docs/zh-TW/agent-sdk/user-input) 以進行確認,即使在 `bypassPermissions` 模式下也是如此。27檢查來自 [settings.json](https://code.claude.com/docs/zh-TW/settings-reference.md#permission-settings) 的 `ask` 規則。如果詢問規則匹配,呼叫會傳遞到您的 [`canUseTool` 回呼](https://code.claude.com/docs/zh-TW/agent-sdk/user-input) 以進行確認,即使在 `bypassPermissions` 模式下也是如此。
28 28
29需要使用者互動的工具行為相同:`AskUserQuestion` 和 MCP 工具(其伺服器設定了 [`_meta["anthropic/requiresUserInteraction"]`](/docs/zh-TW/mcp#require-approval-for-a-specific-tool))總是傳遞到回呼,即使當 allow 規則匹配時也是如此。在 `dontAsk` 模式下,兩種情況都會被拒絕,因為該模式永遠不會提示。MCP 註解需要 Claude Code v2.1.199 或更新版本。29需要使用者互動的工具行為相同:`AskUserQuestion` 和 MCP 工具(其伺服器設定了 [`_meta["anthropic/requiresUserInteraction"]`](https://code.claude.com/docs/zh-TW/mcp#require-approval-for-a-specific-tool))總是傳遞到回呼,即使當 allow 規則匹配時也是如此。在 `dontAsk` 模式下,兩種情況都會被拒絕,因為該模式永遠不會提示。MCP 註解需要 Claude Code v2.1.199 或更新版本。
30 30
31您的組織設定為 `ask` 的 [claude.ai connector](/docs/zh-TW/mcp.md#organization-controls-on-connector-tools) 工具也會在此步驟離開流程。每個呼叫都會傳遞到回呼,即使在 `bypassPermissions` 模式下,即使當 allow 規則匹配時也是如此。回呼會收到原因 `Your organization requires approval for this tool`。在 `dontAsk` 模式下,呼叫會被拒絕,因為該模式永遠不會提示。31您的組織設定為 `ask` 的 [claude.ai connector](https://code.claude.com/docs/zh-TW/mcp.md#organization-controls-on-connector-tools) 工具也會在此步驟離開流程。每個呼叫都會傳遞到回呼,即使在 `bypassPermissions` 模式下,即使當 allow 規則匹配時也是如此。回呼會收到原因 `Your organization requires approval for this tool`。在 `dontAsk` 模式下,呼叫會被拒絕,因為該模式永遠不會提示。
32 32
33**4. 權限模式**33**4. 權限模式**
34 34
35應用活躍的 [權限模式](#permission-modes):35應用活躍的 [權限模式](#permission-modes):
36 36
37* 在 `bypassPermissions` 模式下,Claude Code 核准到達此步驟的所有內容,但經識別的[關鍵路徑移除](/docs/zh-TW/permission-modes.md#critical-paths)除外,這些會改為傳遞下去。37* 在 `bypassPermissions` 模式下,Claude Code 核准到達此步驟的所有內容,但經識別的[關鍵路徑移除](https://code.claude.com/docs/zh-TW/permission-modes.md#critical-paths)除外,這些會改為傳遞下去。
38* 在 `acceptEdits` 模式下,Claude Code 核准 [接受編輯模式](#accept-edits-mode-acceptedits) 下列出的檔案操作。38* 在 `acceptEdits` 模式下,Claude Code 核准 [接受編輯模式](#accept-edits-mode-acceptedits) 下列出的檔案操作。
39* 在 `plan` 模式下,Claude Code 將檔案編輯和 shell 寫入工具發送到您的 `canUseTool` 回呼,無論 allow 規則如何,因此在規劃時寫入操作無法自動核准。39* 在 `plan` 模式下,Claude Code 將檔案編輯和 shell 寫入工具發送到您的 `canUseTool` 回呼,無論 allow 規則如何,因此在規劃時寫入操作無法自動核准。
40* 在其他模式下,請求會傳遞下去。40* 在其他模式下,請求會傳遞下去。
41 41
42**5. 允許規則**42**5. 允許規則**
43 43
44檢查 `allow` 規則(來自 `allowed_tools` 和 settings.json)。如果規則匹配,工具會被核准。工具自行核准的呼叫也會在此步驟解決,無需規則:例如在您的工作目錄內的檔案讀取或 [唯讀 Bash 命令](/docs/zh-TW/permissions.md#read-only-commands)。44檢查 `allow` 規則(來自 `allowed_tools` 和 settings.json)。如果規則匹配,工具會被核准。工具自行核准的呼叫也會在此步驟解決,無需規則:例如在您的工作目錄內的檔案讀取或 [唯讀 Bash 命令](https://code.claude.com/docs/zh-TW/permissions.md#read-only-commands)。
45 45
46經識別的[關鍵路徑移除](/docs/zh-TW/permission-modes.md#critical-paths)不會被 allow 規則核准。它們是否隨後到達您的回呼取決於權限模式:例如在 `auto` 模式的 Agent SDK 工作階段中,Claude Code 預設會拒絕它們而不呼叫它。[關鍵路徑模式表](/docs/zh-TW/permission-modes.md#critical-path-removals-in-each-permission-mode)列出了每個模式對它們的處理方式。46經識別的[關鍵路徑移除](https://code.claude.com/docs/zh-TW/permission-modes.md#critical-paths)不會被 allow 規則核准。它們是否隨後到達您的回呼取決於權限模式:例如在 `auto` 模式的 Agent SDK 工作階段中,Claude Code 預設會拒絕它們而不呼叫它。[關鍵路徑模式表](https://code.claude.com/docs/zh-TW/permission-modes.md#critical-path-removals-in-each-permission-mode)列出了每個模式對它們的處理方式。
47 47
48Allow 規則不會核准從 [網路路徑](/docs/zh-TW/permissions.md#network-paths) 進行的讀取。48Allow 規則不會核准從 [網路路徑](https://code.claude.com/docs/zh-TW/permissions.md#network-paths) 進行的讀取。
49 49
50**6. canUseTool 回呼**50**6. canUseTool 回呼**
51 51
52如果上述任何步驟都未解決,請呼叫您的 [`canUseTool` 回呼](/docs/zh-TW/agent-sdk/user-input) 以獲得決定。在 `dontAsk` 模式下,此步驟會被跳過,工具會被拒絕,不過您安裝的 [mod](/docs/zh-TW/plugins/mods/overview.md) 仍可核准[部分此類呼叫](/docs/zh-TW/permissions.md#precedence-among-rules-hooks-and-mods)。52如果上述任何步驟都未解決,請呼叫您的 [`canUseTool` 回呼](https://code.claude.com/docs/zh-TW/agent-sdk/user-input) 以獲得決定。在 `dontAsk` 模式下,此步驟會被跳過,工具會被拒絕,不過您安裝的 [mod](https://code.claude.com/docs/zh-TW/plugins/mods/overview.md) 仍可核准[部分此類呼叫](https://code.claude.com/docs/zh-TW/permissions.md#precedence-among-rules-hooks-and-mods)。
53 53
54在 TypeScript SDK 中,如果您設定了 [`permissionPrompts: 'none'`](/docs/zh-TW/agent-sdk/typescript#options),您的回呼在此步驟不會被呼叫。[`PermissionRequest` hook](/docs/zh-TW/hooks#permissionrequest) 仍然有機會決定,如果它不決定,Claude Code 會拒絕呼叫。此選項需要 Claude Code v2.1.259 或更新版本。54在 TypeScript SDK 中,如果您設定了 [`permissionPrompts: 'none'`](https://code.claude.com/docs/zh-TW/agent-sdk/typescript#options),您的回呼在此步驟不會被呼叫。[`PermissionRequest` hook](https://code.claude.com/docs/zh-TW/hooks#permissionrequest) 仍然有機會決定,如果它不決定,Claude Code 會拒絕呼叫。此選項需要 Claude Code v2.1.259 或更新版本。
55 55
5656
57 57
58如果您在 TypeScript SDK 期望評估順序在諮詢回呼之前自動批准呼叫的設定中傳遞 `canUseTool` 回呼,SDK 會在構造查詢時發出一次 Node.js 程序警告。警告的代碼是 `CLAUDE_SDK_CAN_USE_TOOL_SHADOWED`。兩個設定會觸發它:58如果您在 TypeScript SDK 期望評估順序在諮詢回呼之前自動批准呼叫的設定中傳遞 `canUseTool` 回呼,SDK 會在構造查詢時發出一次 Node.js 程序警告。警告的代碼是 `CLAUDE_SDK_CAN_USE_TOOL_SHADOWED`。兩個設定會觸發它:
59 59
60* `permissionMode: 'bypassPermissions'`,它自動批准到達權限模式步驟的每個呼叫,除了 [任何模式都不自動批准的操作](/docs/zh-TW/permission-modes.md#actions-no-mode-auto-approves)60* `permissionMode: 'bypassPermissions'`,它自動批准到達權限模式步驟的每個呼叫,除了 [任何模式都不自動批准的操作](https://code.claude.com/docs/zh-TW/permission-modes.md#actions-no-mode-auto-approves)
61* 每個裸 `allowedTools` 條目,例如 `"Read"`,它在諮詢回呼之前自動核准整個工具,除了 [任何模式都不自動核准的操作](/docs/zh-TW/permission-modes.md#actions-no-mode-auto-approves) 和 [從網路路徑進行的讀取](/docs/zh-TW/permissions.md#network-paths)61* 每個裸 `allowedTools` 條目,例如 `"Read"`,它在諮詢回呼之前自動核准整個工具,除了 [任何模式都不自動核准的操作](https://code.claude.com/docs/zh-TW/permission-modes.md#actions-no-mode-auto-approves) 和 [從網路路徑進行的讀取](https://code.claude.com/docs/zh-TW/permissions.md#network-paths)
62 62
63具有指定符的條目(如 `Bash(ls *)`)和 `acceptEdits` 模式不會觸發它,來自設定檔的 allow 規則對檢查不可見。63具有指定符的條目(如 `Bash(ls *)`)和 `acceptEdits` 模式不會觸發它,來自設定檔的 allow 規則對檢查不可見。
64 64
65使用 `process.on('warning', ...)` 進行監聽並匹配代碼以記錄或抑制它。要無論模式和規則如何都控制每個工具呼叫,請改用 [`PreToolUse` hook](/docs/zh-TW/agent-sdk/hooks)。65使用 `process.on('warning', ...)` 進行監聽並匹配代碼以記錄或抑制它。要無論模式和規則如何都控制每個工具呼叫,請改用 [`PreToolUse` hook](https://code.claude.com/docs/zh-TW/agent-sdk/hooks)。
66 66
67此頁面重點關注 **allow 和 deny 規則** 以及 **權限模式**。對於其他步驟:67此頁面重點關注 **allow 和 deny 規則** 以及 **權限模式**。對於其他步驟:
68 68
69* **Hooks:** 執行自訂程式碼以允許、拒絕或修改工具請求。請參閱 [使用 hooks 控制執行](/docs/zh-TW/agent-sdk/hooks.md)。69* **Hooks:** 執行自訂程式碼以允許、拒絕或修改工具請求。請參閱 [使用 hooks 控制執行](https://code.claude.com/docs/zh-TW/agent-sdk/hooks.md)。
70* **canUseTool 回呼:** 在執行時提示使用者批准,當沒有較早的步驟解決呼叫時。請參閱 [處理批准和使用者輸入](/docs/zh-TW/agent-sdk/user-input.md)。70* **canUseTool 回呼:** 在執行時提示使用者批准,當沒有較早的步驟解決呼叫時。請參閱 [處理批准和使用者輸入](https://code.claude.com/docs/zh-TW/agent-sdk/user-input.md)。
71 71
72## 允許和拒絕規則72## 允許和拒絕規則
73 73
74`allowed_tools` 和 `disallowed_tools`(TypeScript:`allowedTools` / `disallowedTools`)在上述評估流程中新增允許和拒絕規則清單的項目。如果您在 `allowed_tools` 中命名其中一個[任務追蹤工具](/docs/zh-TW/agent-sdk/todo-tracking.md#model-availability),Claude Code 也會為該工作階段啟用這些工具。任何未列在 `allowed_tools` 中的其他工具仍可供 Claude 使用,對其進行的需要批准的呼叫會進入權限模式。拒絕規則的行為取決於它們是命名工具還是在工具內限定模式。74`allowed_tools` 和 `disallowed_tools`(TypeScript:`allowedTools` / `disallowedTools`)在上述評估流程中新增允許和拒絕規則清單的項目。如果您在 `allowed_tools` 中命名其中一個[任務追蹤工具](https://code.claude.com/docs/zh-TW/agent-sdk/todo-tracking.md#model-availability),Claude Code 也會為該工作階段啟用這些工具。任何未列在 `allowed_tools` 中的其他工具仍可供 Claude 使用,對其進行的需要批准的呼叫會進入權限模式。拒絕規則的行為取決於它們是命名工具還是在工具內限定模式。
75 75
76| 選項 | 效果 |76| 選項 | 效果 |
77| :- | :- |77| :- | :- |
78| `allowed_tools=["Read", "Grep"]` | `Read` 和 `Grep` 會自動核准,但[從網路路徑讀取](/docs/zh-TW/permissions.md#network-paths)除外。此處未列出的其他工具仍然存在,對它們進行的需要核准的呼叫會進入權限模式和 `canUseTool`。 |78| `allowed_tools=["Read", "Grep"]` | `Read` 和 `Grep` 會自動核准,但[從網路路徑讀取](https://code.claude.com/docs/zh-TW/permissions.md#network-paths)除外。此處未列出的其他工具仍然存在,對它們進行的需要核准的呼叫會進入權限模式和 `canUseTool`。 |
79| `disallowed_tools=["Bash"]` | `Bash` 工具定義會從請求中移除。Claude 看不到該工具,無法嘗試使用它。 |79| `disallowed_tools=["Bash"]` | `Bash` 工具定義會從請求中移除。Claude 看不到該工具,無法嘗試使用它。 |
80| `disallowed_tools=["Bash(rm *)"]` | `Bash` 保持可用。符合 `rm *` [如所寫](/docs/zh-TW/permissions.md#bash-rule-limits)的呼叫在每個權限模式中都會被拒絕,包括 `bypassPermissions`。其他 `Bash` 呼叫(包括 `/bin/rm`)會進入權限模式。 |80| `disallowed_tools=["Bash(rm *)"]` | `Bash` 保持可用。符合 `rm *` [如所寫](https://code.claude.com/docs/zh-TW/permissions.md#bash-rule-limits)的呼叫在每個權限模式中都會被拒絕,包括 `bypassPermissions`。其他 `Bash` 呼叫(包括 `/bin/rm`)會進入權限模式。 |
81| `disallowed_tools=["*"]` | 每個工具定義都會從請求中移除。拒絕規則支援工具名稱萬用字元:`"*"` 符合每個工具,`"mcp__*"` 符合所有伺服器上的每個 MCP 工具。 |81| `disallowed_tools=["*"]` | 每個工具定義都會從請求中移除。拒絕規則支援工具名稱萬用字元:`"*"` 符合每個工具,`"mcp__*"` 符合所有伺服器上的每個 MCP 工具。 |
82 82
83允許規則僅在字面 `mcp__<server>__` 前綴之後接受工具名稱萬用字元。伺服器段必須無萬用字元,以便規則命名您設定的特定伺服器:`mcp__puppeteer__*` 符合來自 `puppeteer` 伺服器的每個工具,`mcp__github__get_*` 符合其 `get_` 工具。未錨定的項目(如 `allowed_tools=["*"]` 或 `allowed_tools=["mcp__*"]`)會被忽略,不會自動核准任何內容。83允許規則僅在字面 `mcp__<server>__` 前綴之後接受工具名稱萬用字元。伺服器段必須無萬用字元,以便規則命名您設定的特定伺服器:`mcp__puppeteer__*` 符合來自 `puppeteer` 伺服器的每個工具,`mcp__github__get_*` 符合其 `get_` 工具。未錨定的項目(如 `allowed_tools=["*"]` 或 `allowed_tools=["mcp__*"]`)會被忽略,不會自動核准任何內容。
84 84
85`Read` 和 `Edit` 的限定規則採用路徑模式。`Edit(path)` 規則管理所有寫入檔案的內建工具,包括 `Write` 和 `NotebookEdit`;`Write(path)` 規則永遠不會被檔案權限檢查符合。85`Read` 和 `Edit` 的限定規則採用路徑模式。`Edit(path)` 規則管理所有寫入檔案的內建工具,包括 `Write` 和 `NotebookEdit`;`Write(path)` 規則永遠不會被檔案權限檢查符合。
86 86
87使用 `//path` 表示絕對檔案系統路徑:`Edit(//secrets/**)` 的拒絕規則會阻止在磁碟上 `/secrets` 下任何位置的寫入。使用單個前導斜線時,`Edit(/secrets/**)` 會在規則的來源處錨定。對於透過 `allowed_tools` 或 `disallowed_tools` 傳遞的規則,這表示工作階段的工作目錄,因此規則不會阻止磁碟上的 `/secrets`。請參閱[讀取和編輯規則](/docs/zh-TW/permissions.md#read-and-edit)以了解四種錨定形式以及來自設定檔的規則如何解析。87使用 `//path` 表示絕對檔案系統路徑:`Edit(//secrets/**)` 的拒絕規則會阻止在磁碟上 `/secrets` 下任何位置的寫入。使用單個前導斜線時,`Edit(/secrets/**)` 會在規則的來源處錨定。對於透過 `allowed_tools` 或 `disallowed_tools` 傳遞的規則,這表示工作階段的工作目錄,因此規則不會阻止磁碟上的 `/secrets`。請參閱[讀取和編輯規則](https://code.claude.com/docs/zh-TW/permissions.md#read-and-edit)以了解四種錨定形式以及來自設定檔的規則如何解析。
88 88
89> [!WARNING]89> [!WARNING]
90>90>
91> **自動批准的工具永遠不會到達 `canUseTool`。** 在任何較早步驟中批准的工具呼叫,透過 `acceptEdits` 或 `bypassPermissions`,或透過允許規則,會跳過您的 `canUseTool` 回呼,因此您在那裡放置的權限檢查會被該工具無聲地繞過。91> **自動批准的工具永遠不會到達 `canUseTool`。** 在任何較早步驟中批准的工具呼叫,透過 `acceptEdits` 或 `bypassPermissions`,或透過允許規則,會跳過您的 `canUseTool` 回呼,因此您在那裡放置的權限檢查會被該工具無聲地繞過。
92>92>
93> 允許規則永遠不會自動核准 `AskUserQuestion`、標記為 [`_meta["anthropic/requiresUserInteraction"]`](/docs/zh-TW/mcp#require-approval-for-a-specific-tool) 的 MCP 工具、[您的組織設定為 `ask`](/docs/zh-TW/mcp#organization-controls-on-connector-tools) 的連接器工具,或經辨識的 `rm` 和 `rmdir` [關鍵路徑移除](/docs/zh-TW/permission-modes.md#critical-paths)。在 `dontAsk` 模式中,Claude Code 會拒絕這些呼叫而不呼叫回呼。在其他模式中,前三個會到達回呼。[關鍵路徑模式表](/docs/zh-TW/permission-modes.md#critical-path-removals-in-each-permission-mode)列出每個模式對關鍵路徑移除的處理方式。辨識這些移除的檢查[可能會遺漏某些命令](/docs/zh-TW/permission-modes.md#critical-paths)。93> 允許規則永遠不會自動核准 `AskUserQuestion`、標記為 [`_meta["anthropic/requiresUserInteraction"]`](https://code.claude.com/docs/zh-TW/mcp#require-approval-for-a-specific-tool) 的 MCP 工具、[您的組織設定為 `ask`](https://code.claude.com/docs/zh-TW/mcp#organization-controls-on-connector-tools) 的連接器工具,或經辨識的 `rm` 和 `rmdir` [關鍵路徑移除](https://code.claude.com/docs/zh-TW/permission-modes.md#critical-paths)。在 `dontAsk` 模式中,Claude Code 會拒絕這些呼叫而不呼叫回呼。在其他模式中,前三個會到達回呼。[關鍵路徑模式表](https://code.claude.com/docs/zh-TW/permission-modes.md#critical-path-removals-in-each-permission-mode)列出每個模式對關鍵路徑移除的處理方式。辨識這些移除的檢查[可能會遺漏某些命令](https://code.claude.com/docs/zh-TW/permission-modes.md#critical-paths)。
94>94>
95> 涵蓋範圍取決於項目的形式:像 `Read` 或 `mcp__github__get_issue` 這樣的裸名稱會自動核准對該工具的每個呼叫,除了上述例外情況和[從網路路徑讀取](/docs/zh-TW/permissions.md#network-paths),而像 `Bash(npm test *)` 這樣的限定規則只會自動核准符合的呼叫,其他需要核准的 `Bash` 呼叫仍會進入回呼。對於必須在每個工具呼叫上執行的檢查,請使用 [`PreToolUse` hook](/docs/zh-TW/agent-sdk/hooks):hook 在每個其他步驟之前執行,hook 拒絕即使在 `bypassPermissions` 模式中也適用。95> 涵蓋範圍取決於項目的形式:像 `Read` 或 `mcp__github__get_issue` 這樣的裸名稱會自動核准對該工具的每個呼叫,除了上述例外情況和[從網路路徑讀取](https://code.claude.com/docs/zh-TW/permissions.md#network-paths),而像 `Bash(npm test *)` 這樣的限定規則只會自動核准符合的呼叫,其他需要核准的 `Bash` 呼叫仍會進入回呼。對於必須在每個工具呼叫上執行的檢查,請使用 [`PreToolUse` hook](https://code.claude.com/docs/zh-TW/agent-sdk/hooks):hook 在每個其他步驟之前執行,hook 拒絕即使在 `bypassPermissions` 模式中也適用。
96 96
97對於鎖定的代理,將 `allowedTools` 與 `permissionMode: "dontAsk"` 配對:97對於鎖定的代理,將 `allowedTools` 與 `permissionMode: "dontAsk"` 配對:
98 98
103};103};
104```104```
105 105
106列出的工具會被核准,但[任何模式都不自動核准的動作](/docs/zh-TW/permission-modes.md#actions-no-mode-auto-approves)和[從網路路徑讀取](/docs/zh-TW/permissions.md#network-paths)除外。其他每個原本會提示的呼叫則會被拒絕,不過您安裝的 [mod](/docs/zh-TW/plugins/mods/overview.md) 仍可核准[其中部分呼叫](/docs/zh-TW/permissions.md#precedence-among-rules-hooks-and-mods)。106列出的工具會被核准,但[任何模式都不自動核准的動作](https://code.claude.com/docs/zh-TW/permission-modes.md#actions-no-mode-auto-approves)和[從網路路徑讀取](https://code.claude.com/docs/zh-TW/permissions.md#network-paths)除外。其他每個原本會提示的呼叫則會被拒絕,不過您安裝的 [mod](https://code.claude.com/docs/zh-TW/plugins/mods/overview.md) 仍可核准[其中部分呼叫](https://code.claude.com/docs/zh-TW/permissions.md#precedence-among-rules-hooks-and-mods)。
107 107
108在 `default` 模式中不需要核准的呼叫無論您是否列出都會執行。這些呼叫包括[唯讀 Bash 命令](/docs/zh-TW/permissions.md#read-only-commands)、不在執行前詢問的工具(如 `Agent`),以及工作目錄內的檔案讀取。要將工具從請求中完全移除,請將其裸名稱新增到 `disallowedTools`。108在 `default` 模式中不需要核准的呼叫無論您是否列出都會執行。這些呼叫包括[唯讀 Bash 命令](https://code.claude.com/docs/zh-TW/permissions.md#read-only-commands)、不在執行前詢問的工具(如 `Agent`),以及工作目錄內的檔案讀取。要將工具從請求中完全移除,請將其裸名稱新增到 `disallowedTools`。
109 109
110> [!WARNING]110> [!WARNING]
111>111>
112> **`allowed_tools` 不限制 `bypassPermissions`。** `allowed_tools` 預先批准您列出的工具。其他未列出的工具不符合任何允許規則,會進入權限模式,其中 `bypassPermissions` 會批准它們。將 `allowed_tools=["Read"]` 與 `permission_mode="bypassPermissions"` 一起設定仍會批准每個工具,包括 `Bash`、`Write` 和 `Edit`。如果您需要 `bypassPermissions` 但想要阻止特定工具,請使用 `disallowed_tools`。112> **`allowed_tools` 不限制 `bypassPermissions`。** `allowed_tools` 預先批准您列出的工具。其他未列出的工具不符合任何允許規則,會進入權限模式,其中 `bypassPermissions` 會批准它們。將 `allowed_tools=["Read"]` 與 `permission_mode="bypassPermissions"` 一起設定仍會批准每個工具,包括 `Bash`、`Write` 和 `Edit`。如果您需要 `bypassPermissions` 但想要阻止特定工具,請使用 `disallowed_tools`。
113 113
114您也可以在 `.claude/settings.json` 中以宣告方式設定允許、拒絕和詢問規則。當啟用 `project` 設定來源時會讀取這些規則,預設 `query()` 選項就是這樣。如果您明確設定 `setting_sources`(TypeScript:`settingSources`),請包含 `"project"` 以便它們適用。請參閱[權限設定](/docs/zh-TW/settings-reference.md#permission-settings)以了解規則語法。114您也可以在 `.claude/settings.json` 中以宣告方式設定允許、拒絕和詢問規則。當啟用 `project` 設定來源時會讀取這些規則,預設 `query()` 選項就是這樣。如果您明確設定 `setting_sources`(TypeScript:`settingSources`),請包含 `"project"` 以便它們適用。請參閱[權限設定](https://code.claude.com/docs/zh-TW/settings-reference.md#permission-settings)以了解規則語法。
115 115
116## 權限模式116## 權限模式
117 117
118權限模式提供對 Claude 如何使用工具的全域控制。您可以在呼叫 `query()` 時設定權限模式,或在串流工作階段期間動態變更它。118權限模式提供對 Claude 如何使用工具的全域控制。您可以在呼叫 `query()` 時設定權限模式,或在串流工作階段期間動態變更它。
119 119
120在 Claude Code v2.1.302 或更新版本中,除非您設定了權限模式,或應用程式從其設定檔中的 [`permissions.defaultMode`](/docs/zh-TW/settings-reference#permissions-defaultmode) 取得權限模式,否則您的應用程式會以 `default` 模式啟動。在 `default` 模式中,除非您透過允許規則、hook、`canUseTool` 回呼或權限提示工具核准,否則 Claude Code 會拒絕任何需要核准的工具呼叫。如果工具呼叫遭到拒絕,請參閱[在 `claude -p` 和 Agent SDK 執行中工具呼叫遭拒](/docs/zh-TW/permission-modes#which-mode-a-non-interactive-run-starts-in)。120在 Claude Code v2.1.302 或更新版本中,除非您設定了權限模式,或應用程式從其設定檔中的 [`permissions.defaultMode`](https://code.claude.com/docs/zh-TW/settings-reference#permissions-defaultmode) 取得權限模式,否則您的應用程式會以 `default` 模式啟動。在 `default` 模式中,除非您透過允許規則、hook、`canUseTool` 回呼或權限提示工具核准,否則 Claude Code 會拒絕任何需要核准的工具呼叫。如果工具呼叫遭到拒絕,請參閱[在 `claude -p` 和 Agent SDK 執行中工具呼叫遭拒](https://code.claude.com/docs/zh-TW/permission-modes#which-mode-a-non-interactive-run-starts-in)。
121 121
122### 可用模式122### 可用模式
123 123
126| 模式 | 說明 | 工具行為 |126| 模式 | 說明 | 工具行為 |
127| :- | :- | :- |127| :- | :- | :- |
128| `default` | 標準權限行為 | 無模式型自動核准;需要核准且不符合任何允許規則的呼叫會觸發您的 `canUseTool` 回呼 |128| `default` | 標準權限行為 | 無模式型自動核准;需要核准且不符合任何允許規則的呼叫會觸發您的 `canUseTool` 回呼 |
129| `dontAsk` | 拒絕而非提示 | 任何原本會提示的呼叫都會被拒絕,且不會呼叫 `canUseTool`,不過您安裝的 [mod](/docs/zh-TW/plugins/mods/overview.md) 仍可核准[其中部分呼叫](/docs/zh-TW/permissions.md#precedence-among-rules-hooks-and-mods)。由 `allowed_tools` 或 `settings.json` 允許規則核准的呼叫會執行,在 `default` 模式中不需要核准的呼叫也會執行。某些呼叫,例如[從網路路徑讀取](/docs/zh-TW/permissions.md#network-paths),即使符合 `allowed_tools` 或允許規則也會被拒絕。如需完整清單,請參閱[不要詢問模式](#don’t-ask-mode-dontask) |129| `dontAsk` | 拒絕而非提示 | 任何原本會提示的呼叫都會被拒絕,且不會呼叫 `canUseTool`,不過您安裝的 [mod](https://code.claude.com/docs/zh-TW/plugins/mods/overview.md) 仍可核准[其中部分呼叫](https://code.claude.com/docs/zh-TW/permissions.md#precedence-among-rules-hooks-and-mods)。由 `allowed_tools` 或 `settings.json` 允許規則核准的呼叫會執行,在 `default` 模式中不需要核准的呼叫也會執行。某些呼叫,例如[從網路路徑讀取](https://code.claude.com/docs/zh-TW/permissions.md#network-paths),即使符合 `allowed_tools` 或允許規則也會被拒絕。如需完整清單,請參閱[不要詢問模式](#don’t-ask-mode-dontask) |
130| `acceptEdits` | 自動接受檔案編輯 | 檔案編輯和[檔案系統操作](#accept-edits-mode-acceptedits)(`mkdir`、`rm`、`mv` 等)會自動被核准 |130| `acceptEdits` | 自動接受檔案編輯 | 檔案編輯和[檔案系統操作](#accept-edits-mode-acceptedits)(`mkdir`、`rm`、`mv` 等)會自動被核准 |
131| `bypassPermissions` | 略過權限檢查 | 工具執行時不會出現權限提示,除了[沒有任何模式自動核准的動作](/docs/zh-TW/permission-modes.md#actions-no-mode-auto-approves)。請謹慎使用 |131| `bypassPermissions` | 略過權限檢查 | 工具執行時不會出現權限提示,除了[沒有任何模式自動核准的動作](https://code.claude.com/docs/zh-TW/permission-modes.md#actions-no-mode-auto-approves)。請謹慎使用 |
132| `plan` | 規劃模式 | Claude 在不編輯您的原始檔案的情況下探索和規劃;檔案編輯永遠不會自動被核准,並透過您的 `canUseTool` 回呼提示 |132| `plan` | 規劃模式 | Claude 在不編輯您的原始檔案的情況下探索和規劃;檔案編輯永遠不會自動被核准,並透過您的 `canUseTool` 回呼提示 |
133| `auto` | 模型分類核准 | 模型分類器檢閱殼層命令和網路請求等動作,允許或阻止它檢閱的每一個。請參閱 [Auto 模式](/docs/zh-TW/permission-modes.md#eliminate-prompts-with-auto-mode)以了解可用性和決策順序 |133| `auto` | 模型分類核准 | 模型分類器檢閱殼層命令和網路請求等動作,允許或阻止它檢閱的每一個。請參閱 [Auto 模式](https://code.claude.com/docs/zh-TW/permission-modes.md#eliminate-prompts-with-auto-mode)以了解可用性和決策順序 |
134 134
135> [!WARNING]135> [!WARNING]
136>136>
137> **Subagent 繼承:** subagent 在父工作階段的權限模式中執行,除非您在其 [`AgentDefinition`](/docs/zh-TW/agent-sdk/typescript#agentdefinition) 上設定 `permissionMode`,且父工作階段處於 `default`、`dontAsk` 或 `plan` 模式。即使如此,Claude Code 也永遠不會套用 `"bypassPermissions"` 值,且只有在該 subagent [可使用自動模式](/docs/zh-TW/permission-modes.md#eliminate-prompts-with-auto-mode)時才會套用 `"auto"` 值。subagent 只有在父工作階段本身處於 `bypassPermissions` 模式時,才會在該模式中執行。`bypassPermissions` 例外需要 Claude Code v2.1.267 或更新版本。137> **Subagent 繼承:** 如果您的主工作階段處於 [plan mode](https://code.claude.com/docs/zh-TW/permission-modes.md#analyze-before-you-edit-with-plan-mode),其 [`AgentDefinition`](https://code.claude.com/docs/zh-TW/agent-sdk/typescript#agentdefinition) 設定 `permissionMode: "acceptEdits"` 的 subagent 仍會在 plan mode 中執行。該 subagent 對您原始檔案的 `Edit` 和 `Write` 呼叫仍會送往您的 `canUseTool` 回呼。plan mode 對您定義的 subagent 同樣有效,因此將工作交給 subagent 並不能繞過先檢閱計畫的步驟。
138>138>
139> 子代理可能具有不同的系統提示和比您的主代理更少受限的行為,因此繼承 `bypassPermissions` 會授予它們完整的自主系統存取權。[沒有任何模式自動核准的動作](/docs/zh-TW/permission-modes.md#actions-no-mode-auto-approves)仍然適用。139> subagent 會從主工作階段繼承 `plan`、`acceptEdits`、`auto` 或 `bypassPermissions`,而在 `default` 或 `dontAsk` 模式的主工作階段下,它會以您設定的模式執行。即使如此,Claude Code 也永遠不會套用 `"bypassPermissions"` 值,且只有在該 subagent [可使用自動模式](https://code.claude.com/docs/zh-TW/permission-modes.md#eliminate-prompts-with-auto-mode)時才會套用 `"auto"` 值。`bypassPermissions` 例外需要 Claude Code v2.1.267 或更新版本。
140>
141> 子代理可能具有不同的系統提示和比您的主代理更少受限的行為,因此繼承 `bypassPermissions` 會授予它們完整的自主系統存取權。[沒有任何模式自動核准的動作](https://code.claude.com/docs/zh-TW/permission-modes.md#actions-no-mode-auto-approves)仍然適用。
140 142
141### 設定權限模式143### 設定權限模式
142 144
253 255
254* 在該範圍外的路徑上工作256* 在該範圍外的路徑上工作
255* 寫入受保護的路徑257* 寫入受保護的路徑
256* 使用 `rm` 或 `rmdir` 移除 Claude Code 識別為[關鍵路徑](/docs/zh-TW/permission-modes.md#critical-paths)的路徑258* 使用 `rm` 或 `rmdir` 移除 Claude Code 識別為[關鍵路徑](https://code.claude.com/docs/zh-TW/permission-modes.md#critical-paths)的路徑
257 259
258**使用時機:** 您信任 Claude 的編輯並想要更快的迭代,例如在原型設計期間或在隔離目錄中工作時。260**使用時機:** 您信任 Claude 的編輯並想要更快的迭代,例如在原型設計期間或在隔離目錄中工作時。
259 261
260#### 不要詢問模式(`dontAsk`)262#### 不要詢問模式(`dontAsk`)
261 263
262將任何權限提示轉換為拒絕,而不呼叫 `canUseTool`,不過您安裝的 [mod](/docs/zh-TW/plugins/mods/overview.md) 仍可核准[其中部分呼叫](/docs/zh-TW/permissions.md#precedence-among-rules-hooks-and-mods)。由 `allowed_tools`、`settings.json` 允許規則或 hook 預先核准的工具會正常執行。在 `default` 模式中不需要核准的呼叫也會執行,例如在您的工作目錄內的檔案讀取和對 `Agent` 的呼叫。264將任何權限提示轉換為拒絕,而不呼叫 `canUseTool`,不過您安裝的 [mod](https://code.claude.com/docs/zh-TW/plugins/mods/overview.md) 仍可核准[其中部分呼叫](https://code.claude.com/docs/zh-TW/permissions.md#precedence-among-rules-hooks-and-mods)。由 `allowed_tools`、`settings.json` 允許規則或 hook 預先核准的工具會正常執行。在 `default` 模式中不需要核准的呼叫也會執行,例如在您的工作目錄內的檔案讀取和對 `Agent` 的呼叫。
263 265
264您的組織[設定為 `ask`](/docs/zh-TW/mcp#organization-controls-on-connector-tools) 的連接器工具、需要使用者互動的工具、[從網路路徑讀取](/docs/zh-TW/permissions.md#network-paths),以及已識別的[關鍵路徑移除](/docs/zh-TW/permission-modes.md#critical-paths)即使符合允許規則也會被拒絕。`PreToolUse` hook 允許也不會清除已識別的關鍵路徑移除或從網路路徑讀取。識別這些移除的檢查[可能會遺漏某些命令](/docs/zh-TW/permission-modes.md#critical-paths)。266您的組織[設定為 `ask`](https://code.claude.com/docs/zh-TW/mcp#organization-controls-on-connector-tools) 的連接器工具、需要使用者互動的工具、[從網路路徑讀取](https://code.claude.com/docs/zh-TW/permissions.md#network-paths),以及已識別的[關鍵路徑移除](https://code.claude.com/docs/zh-TW/permission-modes.md#critical-paths)即使符合允許規則也會被拒絕。`PreToolUse` hook 允許也不會清除已識別的關鍵路徑移除或從網路路徑讀取。識別這些移除的檢查[可能會遺漏某些命令](https://code.claude.com/docs/zh-TW/permission-modes.md#critical-paths)。
265 267
266**使用時機:** 您想要為無頭代理提供固定、明確的工具表面,並偏好硬拒絕而非無聲依賴 `canUseTool` 不存在。268**使用時機:** 您想要為無頭代理提供固定、明確的工具表面,並偏好硬拒絕而非無聲依賴 `canUseTool` 不存在。
267 269
268#### 略過權限模式(`bypassPermissions`)270#### 略過權限模式(`bypassPermissions`)
269 271
270自動核准工具使用而不提示,除了下面警告中列出的情況。鉤子仍然執行,如果需要可以阻止操作。在 Linux 和 macOS 上,Claude Code 拒絕在此模式下以 root 身份或在[已識別的沙箱](/docs/zh-TW/permission-modes.md#skip-all-checks-with-bypasspermissions-mode)外的 `sudo` 下啟動,查詢在第一個回合之前失敗。272自動核准工具使用而不提示,除了下面警告中列出的情況。鉤子仍然執行,如果需要可以阻止操作。在 Linux 和 macOS 上,Claude Code 拒絕在此模式下以 root 身份或在[已識別的沙箱](https://code.claude.com/docs/zh-TW/permission-modes.md#skip-all-checks-with-bypasspermissions-mode)外的 `sudo` 下啟動,查詢在第一個回合之前失敗。
271 273
272> [!WARNING]274> [!WARNING]
273>275>
276> `allowed_tools` 不會限制此模式。每個工具都會被核准,而不僅僅是您列出的工具。這些控制仍然適用:278> `allowed_tools` 不會限制此模式。每個工具都會被核准,而不僅僅是您列出的工具。這些控制仍然適用:
277>279>
278> * 拒絕規則、明確的 `ask` 規則和鉤子在模式檢查之前被評估,仍然可以阻止工具。280> * 拒絕規則、明確的 `ask` 規則和鉤子在模式檢查之前被評估,仍然可以阻止工具。
279> * 您的組織[設定為 `ask`](/docs/zh-TW/mcp#organization-controls-on-connector-tools) 的連接器工具、需要使用者互動的工具,以及已識別的[關鍵路徑移除](/docs/zh-TW/permission-modes.md#critical-paths)仍然會進入您的 `canUseTool` 回呼。識別這些移除的檢查[可能會遺漏某些命令](/docs/zh-TW/permission-modes.md#critical-paths)。281> * 您的組織[設定為 `ask`](https://code.claude.com/docs/zh-TW/mcp#organization-controls-on-connector-tools) 的連接器工具、需要使用者互動的工具,以及已識別的[關鍵路徑移除](https://code.claude.com/docs/zh-TW/permission-modes.md#critical-paths)仍然會進入您的 `canUseTool` 回呼。識別這些移除的檢查[可能會遺漏某些命令](https://code.claude.com/docs/zh-TW/permission-modes.md#critical-paths)。
280> * [跨工作階段訊息保護措施](/docs/zh-TW/permission-modes.md#skip-all-checks-with-bypasspermissions-mode)仍然適用。282> * [跨工作階段訊息保護措施](https://code.claude.com/docs/zh-TW/permission-modes.md#skip-all-checks-with-bypasspermissions-mode)仍然適用。
281 283
282#### 規劃模式(`plan`)284#### 規劃模式(`plan`)
283 285
287 289
288在 TypeScript SDK 中,如果您在 `permissionMode: 'plan'` 旁邊設定 `allowDangerouslySkipPermissions: true`,檔案編輯和修改檔案的 shell 命令仍然會到達您的 `canUseTool` 回呼。此選項讓您稍後可以使用 `setPermissionMode()` 切換到 `bypassPermissions`。290在 TypeScript SDK 中,如果您在 `permissionMode: 'plan'` 旁邊設定 `allowDangerouslySkipPermissions: true`,檔案編輯和修改檔案的 shell 命令仍然會到達您的 `canUseTool` 回呼。此選項讓您稍後可以使用 `setPermissionMode()` 切換到 `bypassPermissions`。
289 291
290Claude 可能會使用 `AskUserQuestion` 在最終確定計畫之前澄清需求。請參閱[處理核准和使用者輸入](/docs/zh-TW/agent-sdk/user-input.md#handle-clarifying-questions)以處理這些提示。292Claude 可能會使用 `AskUserQuestion` 在最終確定計畫之前澄清需求。請參閱[處理核准和使用者輸入](https://code.claude.com/docs/zh-TW/agent-sdk/user-input.md#handle-clarifying-questions)以處理這些提示。
291 293
292**使用時機:** 您想要 Claude 提議變更而不執行它們,例如在程式碼審查期間或當您需要在進行變更之前核准變更時。294**使用時機:** 您想要 Claude 提議變更而不執行它們,例如在程式碼審查期間或當您需要在進行變更之前核准變更時。
293 295
294#### 自動模式(`auto`)296#### 自動模式(`auto`)
295 297
296分類器模型會在 shell 命令和網路請求等動作執行之前檢閱它們,並允許或阻止它檢閱的每一個動作。如需了解自動模式所需的模型和提供者,以及它評估動作的順序,請參閱[使用自動模式消除權限提示](/docs/zh-TW/permission-modes.md#eliminate-prompts-with-auto-mode)。298分類器模型會在 shell 命令和網路請求等動作執行之前檢閱它們,並允許或阻止它檢閱的每一個動作。如需了解自動模式所需的模型和提供者,以及它評估動作的順序,請參閱[使用自動模式消除權限提示](https://code.claude.com/docs/zh-TW/permission-modes.md#eliminate-prompts-with-auto-mode)。
297 299
298如果您使用 [`set_model()`](/docs/zh-TW/agent-sdk/python#claudesdkclient)、[`setModel()`](/docs/zh-TW/agent-sdk/typescript#query-object) 或 [`applyFlagSettings()`](/docs/zh-TW/agent-sdk/typescript#applyflagsettings),將處於自動模式的工作階段切換到自動模式不支援的模型,工作階段會變更為 `default` 模式:300如果您使用 [`set_model()`](https://code.claude.com/docs/zh-TW/agent-sdk/python#claudesdkclient)、[`setModel()`](https://code.claude.com/docs/zh-TW/agent-sdk/typescript#query-object) 或 [`applyFlagSettings()`](https://code.claude.com/docs/zh-TW/agent-sdk/typescript#applyflagsettings),將處於自動模式的工作階段切換到自動模式不支援的模型,工作階段會變更為 `default` 模式:
299 301
300* **您會看到的內容**:一則子類型為 `status` 且 `permissionMode` 設定為 `"default"` 的 `system` 訊息,TypeScript SDK 將其型別定義為 [`SDKStatusMessage`](/docs/zh-TW/agent-sdk/typescript#sdkstatusmessage)。從那時起,需要核准且不符合任何允許規則的呼叫會到達您的 `canUseTool` 回呼。302* **您會看到的內容**:一則子類型為 `status` 且 `permissionMode` 設定為 `"default"` 的 `system` 訊息,TypeScript SDK 將其型別定義為 [`SDKStatusMessage`](https://code.claude.com/docs/zh-TW/agent-sdk/typescript#sdkstatusmessage)。從那時起,需要核准且不符合任何允許規則的呼叫會到達您的 `canUseTool` 回呼。
301* **返回自動模式**:切換到支援的模型,然後呼叫 `set_permission_mode("auto")` 或 `setPermissionMode("auto")`。如果您將模型切換回來而未進行該呼叫,工作階段會保持在 `default` 模式。當不支援的模型處於作用中時,該呼叫會失敗並顯示 `Cannot set permission mode to auto: auto mode unavailable for this model`。303* **返回自動模式**:切換到支援的模型,然後呼叫 `set_permission_mode("auto")` 或 `setPermissionMode("auto")`。如果您將模型切換回來而未進行該呼叫,工作階段會保持在 `default` 模式。當不支援的模型處於作用中時,該呼叫會失敗並顯示 `Cannot set permission mode to auto: auto mode unavailable for this model`。
302 304
303在 `set_model()`、`setModel()` 或 `applyFlagSettings()` 呼叫後變更為 `default` 模式,需要 Claude Code v2.1.299 或更新版本。305在 `set_model()`、`setModel()` 或 `applyFlagSettings()` 呼叫後變更為 `default` 模式,需要 Claude Code v2.1.299 或更新版本。
306 308
307如需了解權限評估流程中的其他步驟:309如需了解權限評估流程中的其他步驟:
308 310
309* [處理核准和使用者輸入](/docs/zh-TW/agent-sdk/user-input.md):互動式核准提示和澄清問題311* [處理核准和使用者輸入](https://code.claude.com/docs/zh-TW/agent-sdk/user-input.md):互動式核准提示和澄清問題
310* [Hooks 指南](/docs/zh-TW/agent-sdk/hooks.md):在代理程式生命週期中的關鍵點執行自訂程式碼312* [Hooks 指南](https://code.claude.com/docs/zh-TW/agent-sdk/hooks.md):在代理程式生命週期中的關鍵點執行自訂程式碼
311* [權限規則](/docs/zh-TW/settings-reference.md#permission-settings):`settings.json` 中的宣告式允許/拒絕規則313* [權限規則](https://code.claude.com/docs/zh-TW/settings-reference.md#permission-settings):`settings.json` 中的宣告式允許/拒絕規則