6 6
7> 使用受管設定控制 Claude Code mods:停止使用者安裝的 mods、僅允許您自己的 mods、檢查 mod 可以執行的操作,以及使用您自己的 mod 強制執行政策。7> 使用受管設定控制 Claude Code mods:停止使用者安裝的 mods、僅允許您自己的 mods、檢查 mod 可以執行的操作,以及使用您自己的 mod 強制執行政策。
8 8
9[mod](/docs/zh-TW/plugins/mods/overview.md) 是在 Claude Code 內執行程式碼的外掛程式,具有安裝它的使用者的權限。Mods 不是沙箱化的。透過[受管設定](/docs/zh-TW/managed-settings.md),您可以決定 mods 是否在使用者的機器上執行、執行哪些 mods,以及執行順序。您也可以安裝自己的 mod,用來監視或拒絕其他 mods 的操作。9[mod](https://code.claude.com/docs/zh-TW/plugins/mods/overview.md) 是在 Claude Code 內執行程式碼的外掛程式,具有安裝它的使用者的權限。Mods 不是沙箱化的。透過[受管設定](https://code.claude.com/docs/zh-TW/managed-settings.md),您可以決定 mods 是否在使用者的機器上執行、執行哪些 mods,以及執行順序。您也可以安裝自己的 mod,用來監視或拒絕其他 mods 的操作。
10 10
11此頁面適用於為 Claude Code 部署受管設定的人員,無論是作為檔案、透過 MDM 或從 claude.ai 管理員主控台部署。在 Claude Code v2.1.286 及更新版本中,mod 預設為開啟。從與您要執行的操作相符的部分開始:11此頁面適用於為 Claude Code 部署受管設定的人員,無論是作為檔案、透過 MDM 或從 claude.ai 管理員主控台部署。在 Claude Code v2.1.286 及更新版本中,mod 預設為開啟。從與您要執行的操作相符的部分開始:
12 12
18>18>
19> 這些情況在其他頁面上涵蓋:19> 這些情況在其他頁面上涵蓋:
20>20>
21> * **您之前未部署過受管設定**:從[部署受管設定](/docs/zh-TW/managed-settings.md)開始21> * **您之前未部署過受管設定**:從[部署受管設定](https://code.claude.com/docs/zh-TW/managed-settings.md)開始
22> * **您想控制使用者可以安裝哪些外掛程式**:請參閱[為您的組織管理外掛程式](/docs/zh-TW/plugins/org.md)22> * **您想控制使用者可以安裝哪些外掛程式**:請參閱[為您的組織管理外掛程式](https://code.claude.com/docs/zh-TW/plugins/org.md)
23 23
24## 停止使用者安裝的 mod 載入24## 停止使用者安裝的 mod 載入
25 25
39 39
40在受管設定中設定此選項後:40在受管設定中設定此選項後:
41 41
42* **使用者帶來的任何 mod 都不會執行其 hook**:這涵蓋使用者安裝的外掛中的 mod、使用 `--plugin-dir` 載入的 mod,以及 [Claude 在工作階段期間編寫的 mod](/docs/zh-TW/plugins/mods/create.md#ask-claude-for-a-mod)42* **使用者帶來的任何 mod 都不會執行其 hook**:這涵蓋使用者安裝的外掛中的 mod、使用 `--plugin-dir` 載入的 mod,以及 [Claude 在工作階段期間編寫的 mod](https://code.claude.com/docs/zh-TW/plugins/mods/create.md#ask-claude-for-a-mod)
43* **您組織的 mod 仍會執行**:[計為您組織的](#install-your-organizations-mods) mod 不會被檢查。所有其他 mod 都計為使用者的 mod,並會遭到拒絕。這包括您從 GitHub 或其他遠端市集啟用的外掛中的 mod,以及您的組織為其成員在 claude.ai 上開啟的 mod。如果沒有任何 mod 計為您的,則不會有任何已安裝的 mod 執行其 hook。43* **您組織的 mod 仍會執行**:[計為您組織的](#install-your-organizations-mods) mod 不會被檢查。所有其他 mod 都計為使用者的 mod,並會遭到拒絕。這包括您從 GitHub 或其他遠端市集啟用的外掛中的 mod,以及您的組織為其成員在 claude.ai 上開啟的 mod。如果沒有任何 mod 計為您的,則不會有任何已安裝的 mod 執行其 hook。
44* **使用者無法撤銷它**:防護只從受管設定讀取選項,因此使用者、專案或本機設定檔中的相同項目,或使用 `--settings` 傳遞的檔案中的項目,不會改變任何內容44* **使用者無法撤銷它**:防護只從受管設定讀取選項,因此使用者、專案或本機設定檔中的相同項目,或使用 `--settings` 傳遞的檔案中的項目,不會改變任何內容
45* **檔案或 MDM 原則涵蓋每個提供者**:當您以檔案或透過 MDM 方式提供選項時,它在 Amazon Bedrock、Google Cloud 的 Agent Platform 和 Microsoft Foundry 上的運作方式相同。如需從 claude.ai 管理員主控台進行交付,請參閱[平台可用性](/docs/zh-TW/server-managed-settings.md#platform-availability)45* **檔案或 MDM 原則涵蓋每個提供者**:當您以檔案或透過 MDM 方式提供選項時,它在 Amazon Bedrock、Google Cloud 的 Agent Platform 和 Microsoft Foundry 上的運作方式相同。如需從 claude.ai 管理員主控台進行交付,請參閱[平台可用性](https://code.claude.com/docs/zh-TW/server-managed-settings.md#platform-availability)
46* **使用者的其他自訂設定保持有效**:他們[設定檔中的 hook](/docs/zh-TW/hooks.md) 以及外掛 `hooks/hooks.json` 中的 hook、狀態列和 `/goal` 不受影響46* **使用者的其他自訂設定保持有效**:他們[設定檔中的 hook](https://code.claude.com/docs/zh-TW/hooks.md) 以及外掛 `hooks/hooks.json` 中的 hook、狀態列和 `/goal` 不受影響
47* **內建 mod 保持執行**:內建於 Claude Code 的 mod(例如 `AGENTS.md` 支援)各有[自己的開關](/docs/zh-TW/plugins/mods/overview.md#mods-built-into-claude-code)47* **內建 mod 保持執行**:內建於 Claude Code 的 mod(例如 `AGENTS.md` 支援)各有[自己的開關](https://code.claude.com/docs/zh-TW/plugins/mods/overview.md#mods-built-into-claude-code)
48 48
49若要確認使用者機器上的選項,請使用 `--plugin-dir` 和包含 mod 的目錄路徑(例如 `claude --plugin-dir ./first-mod`)在該處啟動 Claude Code。mod 的 hook 不會執行,逐字稿和偵錯日誌中會有[防護的訊息](/docs/zh-TW/plugins/mods/troubleshoot.md#messages-from-the-built-in-guard),其中會指出該 mod 和 `allowManagedModsOnly`。如果沒有出現該訊息,請參閱[檢查原則是否有效](/docs/zh-TW/managed-settings.md#check-that-a-policy-is-in-force)和[決定選項是否生效的規則](#set-options-on-the-built-in-guard)。49若要確認使用者機器上的選項,請使用 `--plugin-dir` 和包含 mod 的目錄路徑(例如 `claude --plugin-dir ./first-mod`)在該處啟動 Claude Code。mod 的 hook 不會執行,逐字稿和偵錯日誌中會有[防護的訊息](https://code.claude.com/docs/zh-TW/plugins/mods/troubleshoot.md#messages-from-the-built-in-guard),其中會指出該 mod 和 `allowManagedModsOnly`。如果沒有出現該訊息,請參閱[檢查原則是否有效](https://code.claude.com/docs/zh-TW/managed-settings.md#check-that-a-policy-is-in-force)和[決定選項是否生效的規則](#set-options-on-the-built-in-guard)。
50 50
51如果您在早期存取期間將 `CLAUDE_CODE_ENABLE_FUNCTION_HOOKS` 設定為 `0`,請用此選項替換它。Claude Code v2.1.287 及更新版本在任何值下都會忽略該變數,因此其中的 `0` 會讓 mod 保持開啟。51如果您在早期存取期間將 `CLAUDE_CODE_ENABLE_FUNCTION_HOOKS` 設定為 `0`,請用此選項替換它。Claude Code v2.1.287 及更新版本在任何值下都會忽略該變數,因此其中的 `0` 會讓 mod 保持開啟。
52 52
58* **內建防護首先執行。** Claude Code 在使用者安裝的每個 mod 之前載入名為 `sec-default@builtin` 的內建 mod。使用者無法將其關閉。`/plugin` 和偵錯日誌將其列為 `cc-plugin-sec-default`。防護在以下任一情況為真時載入:58* **內建防護首先執行。** Claude Code 在使用者安裝的每個 mod 之前載入名為 `sec-default@builtin` 的內建 mod。使用者無法將其關閉。`/plugin` 和偵錯日誌將其列為 `cc-plugin-sec-default`。防護在以下任一情況為真時載入:
59 59
60 * 機器有受管設定60 * 機器有受管設定
61 * 工作階段使用 Team 或 Enterprise 計畫的 [`/login` 憑證](/docs/zh-TW/authentication#authentication-precedence)執行61 * 工作階段使用 Team 或 Enterprise 計畫的 [`/login` 憑證](https://code.claude.com/docs/zh-TW/authentication#authentication-precedence)執行
62 62
63 使用 API 金鑰進行身分驗證的使用者,或透過 Amazon Bedrock、Google Cloud 的 Agent Platform 或 Microsoft Foundry 進行身分驗證的使用者,只有在具有受管設定的機器上才能獲得防護。使用長期 [`CLAUDE_CODE_OAUTH_TOKEN`](/docs/zh-TW/authentication#generate-a-long-lived-token) 執行的工作階段也不算是該登入,即使機器上儲存了 Team 或 Enterprise 登入也是如此。63 使用 API 金鑰進行身分驗證的使用者,或透過 Amazon Bedrock、Google Cloud 的 Agent Platform 或 Microsoft Foundry 進行身分驗證的使用者,只有在具有受管設定的機器上才能獲得防護。使用長期 [`CLAUDE_CODE_OAUTH_TOKEN`](https://code.claude.com/docs/zh-TW/authentication#generate-a-long-lived-token) 執行的工作階段也不算是該登入,即使機器上儲存了 Team 或 Enterprise 登入也是如此。
64* **防護保護您管理的內容。** 使用者的 mod 無法更改您的受管 hooks 接收或決定的內容、系統提示、您的受管 `CLAUDE.md` 和其他受管指示、任何 mod 讀取的設定內容,或您的受管 MCP 伺服器的工具和描述。64* **防護保護您管理的內容。** 使用者的 mod 無法更改您的受管 hooks 接收或決定的內容、系統提示、您的受管 `CLAUDE.md` 和其他受管指示、任何 mod 讀取的設定內容,或您的受管 MCP 伺服器的工具和描述。
65* **在您管理的範圍之外,使用者的 mod 以該使用者的身分運作。** mod 保有該使用者的權限:它仍然可以讀取和寫入檔案、啟動程序,以及發出網路請求。它也可以重寫工具呼叫和提示詞、拒絕工具呼叫,以及在介面中繪製。65* **在您管理的範圍之外,使用者的 mod 以該使用者的身分運作。** mod 保有該使用者的權限:它仍然可以讀取和寫入檔案、啟動程序,以及發出網路請求。它也可以重寫工具呼叫和提示詞、拒絕工具呼叫,以及在介面中繪製。
66* **權限規則和 `PreToolUse` hook 優先於使用者的 mod。** 防護載入時,預設情況下,使用者的 mod 無法核准 `deny` 規則拒絕的呼叫或 `ask` 規則會提示確認的呼叫,無論哪個設定檔持有該規則。mod 也無法核准任何 `PreToolUse` hook 所封鎖的呼叫。66* **權限規則和 `PreToolUse` hook 優先於使用者的 mod。** 防護載入時,預設情況下,使用者的 mod 無法核准 `deny` 規則拒絕的呼叫或 `ask` 規則會提示確認的呼叫,無論哪個設定檔持有該規則。mod 也無法核准任何 `PreToolUse` hook 所封鎖的呼叫。
67 67
68 權限規則和 `PreToolUse` hook 適用於 Claude 的工具呼叫,而不適用於 mod 的 [`$.fs` 和 `$.process` 呼叫](/docs/zh-TW/plugins/mods/api#reach-files-processes-and-the-network)。拒絕 `Read(.env)` 後,mod 仍然可以使用 `$.fs.read` 讀取該檔案,或啟動執行該操作的程式。若要限制 mod 自己的 `$.fs` 和 `$.process` 呼叫,請[防止 mod 載入](#stop-user-installed-mods-from-loading),或在[原則 mod](#enforce-a-policy-with-a-mod-of-your-own) 中處理這些呼叫。68 權限規則和 `PreToolUse` hook 適用於 Claude 的工具呼叫,而不適用於 mod 的 [`$.fs` 和 `$.process` 呼叫](https://code.claude.com/docs/zh-TW/plugins/mods/api#reach-files-processes-and-the-network)。拒絕 `Read(.env)` 後,mod 仍然可以使用 `$.fs.read` 讀取該檔案,或啟動執行該操作的程式。若要限制 mod 自己的 `$.fs` 和 `$.process` 呼叫,請[防止 mod 載入](#stop-user-installed-mods-from-loading),或在[原則 mod](#enforce-a-policy-with-a-mod-of-your-own) 中處理這些呼叫。
69* **使用者的 mod 仍然可以略過某些提示。** 在[自動模式](/docs/zh-TW/permission-modes.md#eliminate-prompts-with-auto-mode)下,mod 核准的呼叫執行時不進行分類器檢查,除非防護已載入,且工作階段使用 [`--permission-prompt-tool`](/docs/zh-TW/cli-reference#cli-flags) 或 Agent SDK [`canUseTool` 回呼](/docs/zh-TW/agent-sdk/user-input#handle-tool-approval-requests)執行。在這種情況下,分類器會先檢查該呼叫。如需了解 mod 的核准不會略過的提示,請參閱[使用 hook 擴充權限](/docs/zh-TW/permissions.md#precedence-among-rules-hooks-and-mods)。69* **使用者的 mod 仍然可以略過某些提示。** 在[自動模式](https://code.claude.com/docs/zh-TW/permission-modes.md#eliminate-prompts-with-auto-mode)下,mod 核准的呼叫執行時不進行分類器檢查,除非防護已載入,且工作階段使用 [`--permission-prompt-tool`](https://code.claude.com/docs/zh-TW/cli-reference#cli-flags) 或 Agent SDK [`canUseTool` 回呼](https://code.claude.com/docs/zh-TW/agent-sdk/user-input#handle-tool-approval-requests)執行。在這種情況下,分類器會先檢查該呼叫。如需了解 mod 的核准不會略過的提示,請參閱[使用 hook 擴充權限](https://code.claude.com/docs/zh-TW/permissions.md#precedence-among-rules-hooks-and-mods)。
70 70
71防護的來源在 [Claude Code 儲存庫的 `mods/sec-default` 目錄](https://github.com/anthropics/claude-code/tree/main/mods/sec-default)中是公開的。71防護的來源在 [Claude Code 儲存庫的 `mods/sec-default` 目錄](https://github.com/anthropics/claude-code/tree/main/mods/sec-default)中是公開的。
72 72
76 76
77* **設定 hook 保持有效。** 設定檔和外掛程式 `hooks/hooks.json` 中的命令、HTTP、提示詞和 agent hook 像以前一樣執行,與 mod 並行。77* **設定 hook 保持有效。** 設定檔和外掛程式 `hooks/hooks.json` 中的命令、HTTP、提示詞和 agent hook 像以前一樣執行,與 mod 並行。
78* **拒絕規則在防護載入的地方優先。** 使用者的 mod 無法批准 `deny` 規則拒絕的呼叫,除非您設定 [`allowModsToOverrideDenyRules`](#set-options-on-the-built-in-guard)。78* **拒絕規則在防護載入的地方優先。** 使用者的 mod 無法批准 `deny` 規則拒絕的呼叫,除非您設定 [`allowModsToOverrideDenyRules`](#set-options-on-the-built-in-guard)。
79* **受管 hook 首先執行。** 受管設定中的 `PreToolUse` hook 在任何 mod 的 [`tool.call`](/docs/zh-TW/plugins/mods/reference#tools) hook 之前執行,當該受管 hook 封鎖工具呼叫時,不會有任何 mod 的 `tool.call` hook 針對該呼叫執行。如果呼叫繼續進行且 mod 重寫了它,您的受管 hook 會在重寫的呼叫上再次執行,因此仍然可以封鎖它。79* **受管 hook 首先執行。** 受管設定中的 `PreToolUse` hook 在任何 mod 的 [`tool.call`](https://code.claude.com/docs/zh-TW/plugins/mods/reference#tools) hook 之前執行,當該受管 hook 封鎖工具呼叫時,不會有任何 mod 的 `tool.call` hook 針對該呼叫執行。如果呼叫繼續進行且 mod 重寫了它,您的受管 hook 會在重寫的呼叫上再次執行,因此仍然可以封鎖它。
80 80
81 來自其他設定檔和外掛的 `PreToolUse` hook 在最後一個 mod 之後執行。如果 mod 自行回應工具呼叫,工具就不會執行,這些 hook 也不會執行。請參閱 [mod 執行的順序](/docs/zh-TW/plugins/mods/events.md#the-order-mods-run-in)。81 來自其他設定檔和外掛的 `PreToolUse` hook 在最後一個 mod 之後執行。如果 mod 自行回應工具呼叫,工具就不會執行,這些 hook 也不會執行。請參閱 [mod 執行的順序](https://code.claude.com/docs/zh-TW/plugins/mods/events.md#the-order-mods-run-in)。
82* **網路政策涵蓋 `$.http.fetch`。**82* **網路政策涵蓋 `$.http.fetch`。**
83 83
84 * **您組織的政策不允許 WebFetch**:Claude Code 也會拒絕每個 mod 的 `$.http.fetch` 請求。請參閱 [WebFetch 可用性](/docs/zh-TW/tools-reference.md#webfetch-availability)。84 * **您組織的政策不允許 WebFetch**:Claude Code 也會拒絕每個 mod 的 `$.http.fetch` 請求。請參閱 [WebFetch 可用性](https://code.claude.com/docs/zh-TW/tools-reference.md#webfetch-availability)。
85 * **您在受管設定或任何其他設定檔中,使用 [`CLAUDE_CODE_DISABLE_WEB_FETCH`](/docs/zh-TW/env-vars#variables) 或 `WebFetch` [拒絕規則](/docs/zh-TW/permissions.md#tool-specific-permission-rules)關閉 WebFetch 工具**:mod 仍然可以發出 `$.http.fetch` 請求。85 * **您在受管設定或任何其他設定檔中,使用 [`CLAUDE_CODE_DISABLE_WEB_FETCH`](https://code.claude.com/docs/zh-TW/env-vars#variables) 或 `WebFetch` [拒絕規則](https://code.claude.com/docs/zh-TW/permissions.md#tool-specific-permission-rules)關閉 WebFetch 工具**:mod 仍然可以發出 `$.http.fetch` 請求。
86 86
87 若要對使用者安裝的每個 mod 阻止這些請求,請[防止使用者安裝的 mod 載入](#stop-user-installed-mods-from-loading),或在[原則 mod](#enforce-a-policy-with-a-mod-of-your-own) 中 hook `http.fetch` 並拒絕來自使用者 mod 的請求。請為該 hook 提供同樣會拒絕的 [`.catch` 處理常式](/docs/zh-TW/plugins/mods/events#handle-a-hook-that-fails),因為 Claude Code 會略過失敗的 hook,請求便會繼續進行。如果您只[限制使用者可以安裝哪些外掛程式](/docs/zh-TW/plugins/org.md#restrict-what-users-can-install),載入的 mod 會變少,但您允許的 mod 仍然可以發出這些請求。87 若要對使用者安裝的每個 mod 阻止這些請求,請[防止使用者安裝的 mod 載入](#stop-user-installed-mods-from-loading),或在[原則 mod](#enforce-a-policy-with-a-mod-of-your-own) 中 hook `http.fetch` 並拒絕來自使用者 mod 的請求。請為該 hook 提供同樣會拒絕的 [`.catch` 處理常式](https://code.claude.com/docs/zh-TW/plugins/mods/events#handle-a-hook-that-fails),因為 Claude Code 會略過失敗的 hook,請求便會繼續進行。如果您只[限制使用者可以安裝哪些外掛程式](https://code.claude.com/docs/zh-TW/plugins/org.md#restrict-what-users-can-install),載入的 mod 會變少,但您允許的 mod 仍然可以發出這些請求。
88 * **您設定了 [`CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`](/docs/zh-TW/env-vars)**:您或您的使用者安裝的 mod 仍然可以發出這些請求。此變數只會阻止 [Claude Code 內建的 mod](/docs/zh-TW/plugins/mods/overview.md#mods-built-into-claude-code),以及任何攜帶工作階段 Anthropic 憑證的 `$.http.fetch` 請求。在 v2.1.288 之前,此變數會阻止每個 mod 的 `$.http.fetch` 請求。88 * **您設定了 [`CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`](https://code.claude.com/docs/zh-TW/env-vars)**:您或您的使用者安裝的 mod 仍然可以發出這些請求。此變數只會阻止 [Claude Code 內建的 mod](https://code.claude.com/docs/zh-TW/plugins/mods/overview.md#mods-built-into-claude-code),以及任何攜帶工作階段 Anthropic 憑證的 `$.http.fetch` 請求。在 v2.1.288 之前,此變數會阻止每個 mod 的 `$.http.fetch` 請求。
89 89
90 這些都不涵蓋 mod 使用 `$.process.run` 啟動的程式,該程式會以使用者自己的存取權限連上網路。90 這些都不涵蓋 mod 使用 `$.process.run` 啟動的程式,該程式會以使用者自己的存取權限連上網路。
91* **外掛程式控制涵蓋 mods。** Mod 是外掛程式,因此[限制使用者可以安裝的設定](/docs/zh-TW/plugins/org.md#restrict-what-users-can-install)(例如 `strictKnownMarketplaces`)決定是否可以安裝它。91* **外掛程式控制涵蓋 mods。** Mod 是外掛程式,因此[限制使用者可以安裝的設定](https://code.claude.com/docs/zh-TW/plugins/org.md#restrict-what-users-can-install)(例如 `strictKnownMarketplaces`)決定是否可以安裝它。
92* **Mods 無法更改權限提示。** Mod 可以重新設定 Claude Code 介面的大部分,但不能重新設定權限提示,因此無法更改提示顯示的內容。Mod 仍然可以在提示出現之前批准或拒絕工具呼叫,如[了解預設情況下會發生什麼](#know-what-happens-by-default)所述。92* **Mods 無法更改權限提示。** Mod 可以重新設定 Claude Code 介面的大部分,但不能重新設定權限提示,因此無法更改提示顯示的內容。Mod 仍然可以在提示出現之前批准或拒絕工具呼叫,如[了解預設情況下會發生什麼](#know-what-happens-by-default)所述。
93* **信任提示優先。** 在使用者尚未信任的目錄中的互動工作階段中,在他們回答信任提示之前,沒有 mod 載入。93* **信任提示優先。** 在使用者尚未信任的目錄中的互動工作階段中,在他們回答信任提示之前,沒有 mod 載入。
94* **`--safe-mode` 關閉已安裝的 mods,包括您的。** 使用 `claude --safe-mode` 啟動工作階段以檢查 mod 是否導致問題。94* **`--safe-mode` 關閉已安裝的 mods,包括您的。** 使用 `claude --safe-mode` 啟動工作階段以檢查 mod 是否導致問題。
104| 您今天的外掛程式控制 | 使用者可以載入為 mod 的內容 |104| 您今天的外掛程式控制 | 使用者可以載入為 mod 的內容 |
105| :- | :- |105| :- | :- |
106| 無 | 來自任何市場、任何目錄(使用 `--plugin-dir`)或 Claude 在工作階段期間編寫的 mod |106| 無 | 來自任何市場、任何目錄(使用 `--plugin-dir`)或 Claude 在工作階段期間編寫的 mod |
107| 市場允許清單 | 來自您允許的市場的 mod,或來自任何目錄(使用 `--plugin-dir`)的 mod。Claude 在工作階段期間編寫的 mod 只有在允許清單[包含 `skills-dir`](/docs/zh-TW/plugins/org#keep-skills-directory-plugins-loading) 時才會載入。 |107| 市場允許清單 | 來自您允許的市場的 mod,或來自任何目錄(使用 `--plugin-dir`)的 mod。Claude 在工作階段期間編寫的 mod 只有在允許清單[包含 `skills-dir`](https://code.claude.com/docs/zh-TW/plugins/org#keep-skills-directory-plugins-loading) 時才會載入。 |
108| 市場允許清單和 `disableSideloadFlags` | 來自您允許的市場的 mod |108| 市場允許清單和 `disableSideloadFlags` | 來自您允許的市場的 mod |
109 109
110[為您的組織管理外掛程式](/docs/zh-TW/plugins/org.md)列出外掛程式載入的每種方式和控制每種方式的設定。110[為您的組織管理外掛程式](https://code.claude.com/docs/zh-TW/plugins/org.md)列出外掛程式載入的每種方式和控制每種方式的設定。
111 111
112若要在使用者安裝市場中的 mods 之前檢查它們,請參閱[檢查 mod 可以執行的操作](#review-what-a-mod-can-do)。若要在您完成此操作之前排除使用者的 mods,請參閱[停止使用者安裝的 mods 載入](#stop-user-installed-mods-from-loading)。112若要在使用者安裝市場中的 mods 之前檢查它們,請參閱[檢查 mod 可以執行的操作](#review-what-a-mod-can-do)。若要在您完成此操作之前排除使用者的 mods,請參閱[停止使用者安裝的 mods 載入](#stop-user-installed-mods-from-loading)。
113 113
126 ❯ ./register.js calls: $.fs.read, $.http.fetch, $.store.set, $.ui.open126 ❯ ./register.js calls: $.fs.read, $.http.fetch, $.store.set, $.ui.open
127```127```
128 128
129`hooks:` 行列出 mod 接收的事件。`calls:` 行列出其程式碼呼叫的 mods API 方法。[mods API](/docs/zh-TW/plugins/mods/api.md)(在 mod 的程式碼中寫為 `$`)是 mod 到達檔案、程序和網路的方式。Claude Code 拒絕載入以此命令無法讀取的方式使用 mods API 的 mod。129`hooks:` 行列出 mod 接收的事件。`calls:` 行列出其程式碼呼叫的 mods API 方法。[mods API](https://code.claude.com/docs/zh-TW/plugins/mods/api.md)(在 mod 的程式碼中寫為 `$`)是 mod 到達檔案、程序和網路的方式。Claude Code 拒絕載入以此命令無法讀取的方式使用 mods API 的 mod。
130 130
131查看 `calls:` 行以了解這些:131查看 `calls:` 行以了解這些:
132 132
140| `$.mcp.call` | 在連接的 MCP 伺服器上呼叫工具,受工作階段的權限規則約束 |140| `$.mcp.call` | 在連接的 MCP 伺服器上呼叫工具,受工作階段的權限規則約束 |
141| `$.model.complete` | 使用使用者的計畫或 API 金鑰進行模型呼叫 |141| `$.model.complete` | 使用使用者的計畫或 API 金鑰進行模型呼叫 |
142| `$.prompt.submit` | 提交提示,可以將其作為使用者自己的話語發送 |142| `$.prompt.submit` | 提交提示,可以將其作為使用者自己的話語發送 |
143| `$.session.send` | 發送另一個工作階段、subagent 或[隊員](/docs/zh-TW/agent-teams.md)的 Claude 讀取的訊息 |143| `$.session.send` | 發送另一個工作階段、subagent 或[隊員](https://code.claude.com/docs/zh-TW/agent-teams.md)的 Claude 讀取的訊息 |
144 144
145在 `hooks:` 行中,[`tool.call`](/docs/zh-TW/plugins/mods/reference#tools) 和 [`prompt.submit`](/docs/zh-TW/plugins/mods/reference#prompts-and-what-claude-reads) 表示 mod 看到每個工具呼叫和每個提示,並可以更改它們。[`session.append`](/docs/zh-TW/plugins/mods/reference#session) 表示 mod 可以在儲存前重寫對話的每一行。[`ui.render{component=AskUserQuestion}`](/docs/zh-TW/plugins/mods/interface#change-what-claude-code-already-draws) 表示 mod 可以重繪 Claude 用來詢問使用者問題的對話框。`tool.check` 表示 mod 可以在權限提示出現之前批准或拒絕工具呼叫。[了解預設情況下會發生什麼](#know-what-happens-by-default)列出您的哪些規則和 hooks 優先於其答案。145在 `hooks:` 行中,[`tool.call`](https://code.claude.com/docs/zh-TW/plugins/mods/reference#tools) 和 [`prompt.submit`](https://code.claude.com/docs/zh-TW/plugins/mods/reference#prompts-and-what-claude-reads) 表示 mod 看到每個工具呼叫和每個提示,並可以更改它們。[`session.append`](https://code.claude.com/docs/zh-TW/plugins/mods/reference#session) 表示 mod 可以在儲存前重寫對話的每一行。[`ui.render{component=AskUserQuestion}`](https://code.claude.com/docs/zh-TW/plugins/mods/interface#change-what-claude-code-already-draws) 表示 mod 可以重繪 Claude 用來詢問使用者問題的對話框。`tool.check` 表示 mod 可以在權限提示出現之前批准或拒絕工具呼叫。[了解預設情況下會發生什麼](#know-what-happens-by-default)列出您的哪些規則和 hooks 優先於其答案。
146 146
147## 選擇允許的程度147## 選擇允許的程度
148 148
149Mod 政策的範圍從根本沒有已安裝的 mod 到使用者選擇的任何 mod,以及您自己的 mod 檢查其他 mod,每一個都是幾個受管設定。在第一列中找到您想要的政策,並設定第二列命名的內容。[部署受管設定](/docs/zh-TW/managed-settings.md)涵蓋受管設定的位置。149Mod 政策的範圍從根本沒有已安裝的 mod 到使用者選擇的任何 mod,以及您自己的 mod 檢查其他 mod,每一個都是幾個受管設定。在第一列中找到您想要的政策,並設定第二列命名的內容。[部署受管設定](https://code.claude.com/docs/zh-TW/managed-settings.md)涵蓋受管設定的位置。
150 150
151| 您想要的 | 設定 |151| 您想要的 | 設定 |
152| :- | :- |152| :- | :- |
153| 不執行任何已安裝的 mod,設定 hook 不受影響 | 設定 [`allowManagedModsOnly`](#set-options-on-the-built-in-guard) 並且不部署您自己的 mod |153| 不執行任何已安裝的 mod,設定 hook 不受影響 | 設定 [`allowManagedModsOnly`](#set-options-on-the-built-in-guard) 並且不部署您自己的 mod |
154| 沒有已安裝的 mod 和根本沒有 hook,包括您的受管 hook | 將 `disableAllHooks` 設定為 `true` |154| 沒有已安裝的 mod 和根本沒有 hook,包括您的受管 hook | 將 `disableAllHooks` 設定為 `true` |
155| 僅您組織的 mod | 設定防護的 [`allowManagedModsOnly` 選項](#stop-user-installed-mods-from-loading),並[安裝您的 mod](#install-your-organizations-mods) 使其計為您的 |155| 僅您組織的 mod | 設定防護的 [`allowManagedModsOnly` 選項](#stop-user-installed-mods-from-loading),並[安裝您的 mod](#install-your-organizations-mods) 使其計為您的 |
156| 來自您批准的市集的任何 mod | 保持您的[市集限制](/docs/zh-TW/plugins/org.md#restrict-what-users-can-install),並將 `disableSideloadFlags` 設定為 `true` |156| 來自您批准的市集的任何 mod | 保持您的[市集限制](https://code.claude.com/docs/zh-TW/plugins/org.md#restrict-what-users-can-install),並將 `disableSideloadFlags` 設定為 `true` |
157| 任何 mod,您自己的 mod 檢查其他 mod | [安裝您的 mod](#install-your-organizations-mods),並在 `prependPlugins` 中與 `sec-default@builtin` 一起列出它 |157| 任何 mod,您自己的 mod 檢查其他 mod | [安裝您的 mod](#install-your-organizations-mods),並在 `prependPlugins` 中與 `sec-default@builtin` 一起列出它 |
158 158
159每個設定的作用:159每個設定的作用:
160 160
161* **`allowManagedModsOnly`**:內建防護上的選項。Claude Code 會拒絕使用者自己的 mod,因此他們的 hook 都不會執行。使用者的設定 hook、狀態列和 `/goal` 保持有效。[停止使用者安裝的 mod 載入](#stop-user-installed-mods-from-loading)列出它涵蓋的內容。161* **`allowManagedModsOnly`**:內建防護上的選項。Claude Code 會拒絕使用者自己的 mod,因此他們的 hook 都不會執行。使用者的設定 hook、狀態列和 `/goal` 保持有效。[停止使用者安裝的 mod 載入](#stop-user-installed-mods-from-loading)列出它涵蓋的內容。
162* **`allowManagedHooksOnly`**:更廣泛的設定。只有[您組織的 mod](#install-your-organizations-mods) 和內建於 Claude Code 的 mod 載入。使用者自己安裝的 mod 不會。該設定也會阻止使用者自己設定檔中的 hook。在設定之前,請閱讀[在 `allowManagedHooksOnly` 下執行的內容](/docs/zh-TW/settings-reference#what-runs-under-allowmanagedhooksonly)。162* **`allowManagedHooksOnly`**:更廣泛的設定。只有[您組織的 mod](#install-your-organizations-mods) 和內建於 Claude Code 的 mod 載入。使用者自己安裝的 mod 不會。該設定也會阻止使用者自己設定檔中的 hook。在設定之前,請閱讀[在 `allowManagedHooksOnly` 下執行的內容](https://code.claude.com/docs/zh-TW/settings-reference#what-runs-under-allowmanagedhooksonly)。
163* **`disableAllHooks`**:最廣泛的設定。在受管設定中,它停止每個已安裝外掛中的 mod,包括您的,並關閉設定檔中的每個 hook,因此您受管設定中的 `PreToolUse` hook 不再阻止任何內容。自訂狀態列和 `/goal` 也停止工作。在設定之前,請閱讀 [`disableAllHooks`](/docs/zh-TW/settings-reference#disableallhooks)。163* **`disableAllHooks`**:最廣泛的設定。在受管設定中,它停止每個已安裝外掛中的 mod,包括您的,並關閉設定檔中的每個 hook,因此您受管設定中的 `PreToolUse` hook 不再阻止任何內容。自訂狀態列和 `/goal` 也停止工作。在設定之前,請閱讀 [`disableAllHooks`](https://code.claude.com/docs/zh-TW/settings-reference#disableallhooks)。
164* **`disableSideloadFlags`**:在啟動時拒絕 `--plugin-dir` 和 `--plugin-url`,並防止 Claude 在工作階段期間編寫的 mod 載入。該設定也拒絕 `--agents` 和 `--mcp-config`。在設定之前,請閱讀 [`disableSideloadFlags`](/docs/zh-TW/settings-reference#disablesideloadflags)。164* **`disableSideloadFlags`**:在啟動時拒絕 `--plugin-dir` 和 `--plugin-url`,並防止 Claude 在工作階段期間編寫的 mod 載入。該設定也拒絕 `--agents` 和 `--mcp-config`。在設定之前,請閱讀 [`disableSideloadFlags`](https://code.claude.com/docs/zh-TW/settings-reference#disablesideloadflags)。
165 165
166內建於 Claude Code 的 mod(例如 `AGENTS.md` 支援)不受這些設定影響。每個都有[自己的開關](/docs/zh-TW/plugins/mods/overview.md#mods-built-into-claude-code)。166內建於 Claude Code 的 mod(例如 `AGENTS.md` 支援)不受這些設定影響。每個都有[自己的開關](https://code.claude.com/docs/zh-TW/plugins/mods/overview.md#mods-built-into-claude-code)。
167 167
168mod 遭到拒絕或未載入的使用者,可在其偵錯日誌中找到原因。[拒絕訊息](/docs/zh-TW/plugins/mods/troubleshoot.md#refusal-messages)列出 `allowManagedHooksOnly` 和 `disableAllHooks` 的行,[來自內建防護的訊息](/docs/zh-TW/plugins/mods/troubleshoot.md#messages-from-the-built-in-guard)有 `allowManagedModsOnly` 的行。168mod 遭到拒絕或未載入的使用者,可在其偵錯日誌中找到原因。[拒絕訊息](https://code.claude.com/docs/zh-TW/plugins/mods/troubleshoot.md#refusal-messages)列出 `allowManagedHooksOnly` 和 `disableAllHooks` 的行,[來自內建防護的訊息](https://code.claude.com/docs/zh-TW/plugins/mods/troubleshoot.md#messages-from-the-built-in-guard)有 `allowManagedModsOnly` 的行。
169 169
170### 僅允許您組織的 mod170### 僅允許您組織的 mod
171 171
193 193
194* **`extraKnownMarketplaces`、`enabledPlugins` 和 `prependPlugins`**:安裝您的 mod 使其計為您的,並讓它最先執行,防護在其後執行。[安裝您組織的 mod 並設定順序](#install-your-organizations-mods)涵蓋這些鍵所指向的目錄。194* **`extraKnownMarketplaces`、`enabledPlugins` 和 `prependPlugins`**:安裝您的 mod 使其計為您的,並讓它最先執行,防護在其後執行。[安裝您組織的 mod 並設定順序](#install-your-organizations-mods)涵蓋這些鍵所指向的目錄。
195* **`pluginConfigs`**:設定防護的 `allowManagedModsOnly` 選項,使 Claude Code 拒絕使用者自己的 mod。他們的設定 hook、狀態列和 `/goal` 保持有效。195* **`pluginConfigs`**:設定防護的 `allowManagedModsOnly` 選項,使 Claude Code 拒絕使用者自己的 mod。他們的設定 hook、狀態列和 `/goal` 保持有效。
196* **`disableSideloadFlags`**:請參閱 [`disableSideloadFlags`](/docs/zh-TW/settings-reference#disablesideloadflags) 了解它在啟動時拒絕的旗標196* **`disableSideloadFlags`**:請參閱 [`disableSideloadFlags`](https://code.claude.com/docs/zh-TW/settings-reference#disablesideloadflags) 了解它在啟動時拒絕的旗標
197 197
198若要在測試機器上確認政策,請在您的 shell 中以 `claude --debug` 啟動工作階段並閱讀偵錯日誌:198若要在測試機器上確認政策,請在您的 shell 中以 `claude --debug` 啟動工作階段並閱讀偵錯日誌:
199 199
201* **使用者安裝的 mod**:有一行顯示 `refused by cc-plugin-sec-default: mods are limited to your organization's by policy (allowManagedModsOnly)`。較早的一行會顯示該 mod 的 hook 模組為 `loaded`,因此請尋找拒絕訊息。201* **使用者安裝的 mod**:有一行顯示 `refused by cc-plugin-sec-default: mods are limited to your organization's by policy (allowManagedModsOnly)`。較早的一行會顯示該 mod 的 hook 模組為 `loaded`,因此請尋找拒絕訊息。
202* **外掛目錄**:`claude --plugin-dir ./any-mod` 會結束並顯示以 `--plugin-dir is disabled by your organization's managed settings (disableSideloadFlags)` 開頭的訊息202* **外掛目錄**:`claude --plugin-dir ./any-mod` 會結束並顯示以 `--plugin-dir is disabled by your organization's managed settings (disableSideloadFlags)` 開頭的訊息
203 203
204若也要限制使用者可以新增哪些市集,請將此檔案與您的[市集限制](/docs/zh-TW/plugins/org.md#restrict-what-users-can-install)結合使用。204若也要限制使用者可以新增哪些市集,請將此檔案與您的[市集限制](https://code.claude.com/docs/zh-TW/plugins/org.md#restrict-what-users-can-install)結合使用。
205 205
206### 將您的外掛控制套用至 mod206### 將您的外掛控制套用至 mod
207 207
208Mod 是一種外掛,因此您[為組織管理外掛](/docs/zh-TW/plugins/org.md)的方式也適用於包含 mod 的外掛:208Mod 是一種外掛,因此您[為組織管理外掛](https://code.claude.com/docs/zh-TW/plugins/org.md)的方式也適用於包含 mod 的外掛:
209 209
210* **查看您整個機群中載入了哪些外掛**:[稽核與審查](/docs/zh-TW/plugins/org.md#audit-and-review)210* **查看您整個機群中載入了哪些外掛**:[稽核與審查](https://code.claude.com/docs/zh-TW/plugins/org.md#audit-and-review)
211* **決定您審查過的外掛何時可以更新**:[設定更新政策](/docs/zh-TW/plugins/org.md#set-update-policy)211* **決定您審查過的外掛何時可以更新**:[設定更新政策](https://code.claude.com/docs/zh-TW/plugins/org.md#set-update-policy)
212* **為某個群組(例如試行群組)提供不同的政策**:[為受管設定無法強制執行的部分做規劃](/docs/zh-TW/plugins/org.md#plan-for-what-managed-settings-can’t-enforce)212* **為某個群組(例如試行群組)提供不同的政策**:[為受管設定無法強制執行的部分做規劃](https://code.claude.com/docs/zh-TW/plugins/org.md#plan-for-what-managed-settings-can’t-enforce)
213* **檢查哪些應用程式和工作階段類型會套用外掛鍵**:[各使用介面何時套用外掛鍵](/docs/zh-TW/plugins/org.md#when-each-surface-applies-the-plugin-keys)213* **檢查哪些應用程式和工作階段類型會套用外掛鍵**:[各使用介面何時套用外掛鍵](https://code.claude.com/docs/zh-TW/plugins/org.md#when-each-surface-applies-the-plugin-keys)
214* **設定 CI 和容器**:[預先配置容器和 CI](/docs/zh-TW/plugins/org.md#seed-containers-and-ci)214* **設定 CI 和容器**:[預先配置容器和 CI](https://code.claude.com/docs/zh-TW/plugins/org.md#seed-containers-and-ci)
215* **提供使用者可以安裝的 mod**:[託管市集](/docs/zh-TW/plugins/host-marketplace.md)。Claude Code 從 GitHub、git、URL 或 npm 來源複製的 mod 會計為使用者的,而不是[您組織的](#install-your-organizations-mods)。215* **提供使用者可以安裝的 mod**:[託管市集](https://code.claude.com/docs/zh-TW/plugins/host-marketplace.md)。Claude Code 從 GitHub、git、URL 或 npm 來源複製的 mod 會計為使用者的,而不是[您組織的](#install-your-organizations-mods)。
216 216
217### 在內建防護上設定選項217### 在內建防護上設定選項
218 218
232* **防護必須載入**:如果您設定 `prependPlugins`,請[在清單中列出防護](#install-your-organizations-mods)。防護未載入之處,兩個選項都不適用。232* **防護必須載入**:如果您設定 `prependPlugins`,請[在清單中列出防護](#install-your-organizations-mods)。防護未載入之處,兩個選項都不適用。
233* **防護採失敗即關閉**:如果防護無法讀取受管設定,它會在載入時拒絕每個使用者的 mod。如果它無法針對使用者的 mod 所批准的呼叫檢查拒絕規則,它會拒絕該呼叫。233* **防護採失敗即關閉**:如果防護無法讀取受管設定,它會在載入時拒絕每個使用者的 mod。如果它無法針對使用者的 mod 所批准的呼叫檢查拒絕規則,它會拒絕該呼叫。
234 234
235[來自內建防護的訊息](/docs/zh-TW/plugins/mods/troubleshoot.md#messages-from-the-built-in-guard)是您的使用者在任一選項適用時看到的內容。235[來自內建防護的訊息](https://code.claude.com/docs/zh-TW/plugins/mods/troubleshoot.md#messages-from-the-built-in-guard)是您的使用者在任一選項適用時看到的內容。
236 236
237## 執行您組織自己的 mod237## 執行您組織自己的 mod
238 238
243您組織的 mod 在使用者 mod 不載入的地方載入,並可以在它們之前執行,因此 Claude Code 必須能夠判斷 mod 來自您。它只在以下所有條件都成立時才將 mod 視為您組織的:243您組織的 mod 在使用者 mod 不載入的地方載入,並可以在它們之前執行,因此 Claude Code 必須能夠判斷 mod 來自您。它只在以下所有條件都成立時才將 mod 視為您組織的:
244 244
245* 受管 `enabledPlugins` 將 mod 的外掛設定為 `true`245* 受管 `enabledPlugins` 將 mod 的外掛設定為 `true`
246* 受管設定以絕對路徑將外掛的[市集](/docs/zh-TW/plugins/create-marketplace.md)指定為使用者機器上的目錄。`extraKnownMarketplaces` 項目可做到這一點,並同時為使用者註冊該市集。246* 受管設定以絕對路徑將外掛的[市集](https://code.claude.com/docs/zh-TW/plugins/create-marketplace.md)指定為使用者機器上的目錄。`extraKnownMarketplaces` 項目可做到這一點,並同時為使用者註冊該市集。
247* 市集以相對路徑列出外掛,因此 Claude Code [從該目錄就地載入它](/docs/zh-TW/plugins/loading.md#in-place-and-copied-plugins)247* 市集以相對路徑列出外掛,因此 Claude Code [從該目錄就地載入它](https://code.claude.com/docs/zh-TW/plugins/loading.md#in-place-and-copied-plugins)
248 248
249為了滿足這些條件,請讓您的裝置管理將市集目錄複製到每台機器上的相同路徑。使該目錄及其上方的每個目錄只能由管理員寫入,如同受管設定檔一樣。任何可以在那裡寫入的人都可以重寫您的 mod。您從 claude.ai 管理員主控台交付的受管設定可以攜帶這些設定鍵,但無法將目錄放到機器上。249為了滿足這些條件,請讓您的裝置管理將市集目錄複製到每台機器上的相同路徑。使該目錄及其上方的每個目錄只能由管理員寫入,如同受管設定檔一樣。任何可以在那裡寫入的人都可以重寫您的 mod。您從 claude.ai 管理員主控台交付的受管設定可以攜帶這些設定鍵,但無法將目錄放到機器上。
250 250
277 277
278Claude Code 複製到其快取中的外掛會被視為使用者的,即使受管 `enabledPlugins` 啟用了它。這涵蓋來自 GitHub、git、URL 或 npm 來源的每個外掛。其 mod 在使用者的 mod 之間執行,`prependPlugins` 和 `appendPlugins` 會跳過它,`allowManagedModsOnly` 會拒絕它,而 `allowManagedHooksOnly` 會使它無法載入。使用者的偵錯日誌中會有一行以外掛的 id 和 `is enabled by managed settings, but` 開頭。278Claude Code 複製到其快取中的外掛會被視為使用者的,即使受管 `enabledPlugins` 啟用了它。這涵蓋來自 GitHub、git、URL 或 npm 來源的每個外掛。其 mod 在使用者的 mod 之間執行,`prependPlugins` 和 `appendPlugins` 會跳過它,`allowManagedModsOnly` 會拒絕它,而 `allowManagedHooksOnly` 會使它無法載入。使用者的偵錯日誌中會有一行以外掛的 id 和 `is enabled by managed settings, but` 開頭。
279 279
280Claude Code 每次即將採取行動(例如執行工具)時都會引發事件,並依次將其傳遞給每個 mod。被視為您的 mod [會在使用者的 mod 之前執行](/docs/zh-TW/plugins/mods/events.md#the-order-mods-run-in),即使您在任何地方都沒有列出它。若要設定其位置,請在兩個設定之一中列出其 id。id 是外掛的名稱、`@` 和市集的名稱,例如 `acme-guard@acme-tools`。280Claude Code 每次即將採取行動(例如執行工具)時都會引發事件,並依次將其傳遞給每個 mod。被視為您的 mod [會在使用者的 mod 之前執行](https://code.claude.com/docs/zh-TW/plugins/mods/events.md#the-order-mods-run-in),即使您在任何地方都沒有列出它。若要設定其位置,請在兩個設定之一中列出其 id。id 是外掛的名稱、`@` 和市集的名稱,例如 `acme-guard@acme-tools`。
281 281
282* **`prependPlugins`**:您的 mod 在任何使用者的 mod 之前看到每個事件,並在之後看到每個結果。它可以更改事件、拒絕它或跳過使用者的 mod。282* **`prependPlugins`**:您的 mod 在任何使用者的 mod 之前看到每個事件,並在之後看到每個結果。它可以更改事件、拒絕它或跳過使用者的 mod。
283* **`appendPlugins`**:您的 mod 在每個使用者的 mod 之後執行,因此它只看到這些 mod 傳遞的事件,以及它們傳遞的形式283* **`appendPlugins`**:您的 mod 在每個使用者的 mod 之後執行,因此它只看到這些 mod 傳遞的事件,以及它們傳遞的形式
302* **`enabledPlugins`**:為接收這些受管設定的每個使用者開啟 `acme-guard`302* **`enabledPlugins`**:為接收這些受管設定的每個使用者開啟 `acme-guard`
303* **`prependPlugins`**:將 `acme-guard` 放在首位,內建防護放在第二位,兩者都在使用者安裝的任何 mod 之前。Claude Code 遵循您列出的順序。303* **`prependPlugins`**:將 `acme-guard` 放在首位,內建防護放在第二位,兩者都在使用者安裝的任何 mod 之前。Claude Code 遵循您列出的順序。
304 304
305若要確認使用者的機器收到了設定,請參閱[檢查原則是否有效](/docs/zh-TW/managed-settings.md#check-that-a-policy-is-in-force)。305若要確認使用者的機器收到了設定,請參閱[檢查原則是否有效](https://code.claude.com/docs/zh-TW/managed-settings.md#check-that-a-policy-is-in-force)。
306 306
307若要確認 mod 執行的位置,請在該機器上使用 `claude --debug` 啟動工作階段,並在[偵錯日誌](/docs/zh-TW/plugins/mods/troubleshoot.md#read-the-debug-log)中搜尋 mod 的 id:307若要確認 mod 執行的位置,請在該機器上使用 `claude --debug` 啟動工作階段,並在[偵錯日誌](https://code.claude.com/docs/zh-TW/plugins/mods/troubleshoot.md#read-the-debug-log)中搜尋 mod 的 id:
308 308
309* **`hooks module acme-guard@acme-tools loaded`,帶有 `tier prepend`**:mod 被視為您組織的並首先執行309* **`hooks module acme-guard@acme-tools loaded`,帶有 `tier prepend`**:mod 被視為您組織的並首先執行
310* **相同的行帶有 `tier user`**:Claude Code 將其視為使用者的 mod。第二行 `prependPlugins names acme-guard@acme-tools, which is not an enabled managed plugin with a hooks module; skipped` 表示清單跳過了它。310* **相同的行帶有 `tier user`**:Claude Code 將其視為使用者的 mod。第二行 `prependPlugins names acme-guard@acme-tools, which is not an enabled managed plugin with a hooks module; skipped` 表示清單跳過了它。
319 319
320若要排除每個使用者的 mod,您不需要自己的 mod。請設定 [`allowManagedModsOnly`](#stop-user-installed-mods-from-loading)。當您想要允許某些使用者的 mod 並拒絕其他的,或記錄 mod 執行的操作時,請編寫原則 mod。320若要排除每個使用者的 mod,您不需要自己的 mod。請設定 [`allowManagedModsOnly`](#stop-user-installed-mods-from-loading)。當您想要允許某些使用者的 mod 並拒絕其他的,或記錄 mod 執行的操作時,請編寫原則 mod。
321 321
322每次另一個 mod 即將載入時,您的 mod 會在名為 [`plugin.register`](/docs/zh-TW/plugins/mods/reference#other-mods) 的事件中接收 `claude plugin validate` 列印的清單。`prependPlugins` 中的 mod 可以讀取該清單並拒絕該 mod。它也可以[按名稱處理任何 mods API 呼叫](/docs/zh-TW/plugins/mods/api.md#reach-files-processes-and-the-network),以記錄或拒絕所有其他 mod 的該呼叫。名稱是不含 `$.` 的方法,因此 `fs.write` 上的 hook 會看到每個 `$.fs.write` 呼叫。322每次另一個 mod 即將載入時,您的 mod 會在名為 [`plugin.register`](https://code.claude.com/docs/zh-TW/plugins/mods/reference#other-mods) 的事件中接收 `claude plugin validate` 列印的清單。`prependPlugins` 中的 mod 可以讀取該清單並拒絕該 mod。它也可以[按名稱處理任何 mods API 呼叫](https://code.claude.com/docs/zh-TW/plugins/mods/api.md#reach-files-processes-and-the-network),以記錄或拒絕所有其他 mod 的該呼叫。名稱是不含 `$.` 的方法,因此 `fs.write` 上的 hook 會看到每個 `$.fs.write` 呼叫。
323 323
324此原則 mod 會拒絕任何自身程式碼呼叫 `$.process.run` 或 `$.process.spawn` 的使用者 mod。它也會保留稽核日誌,將每個工具呼叫和每個 mod 寫入的檔案寫入偵錯日誌。因為它首先執行,日誌會在任何使用者的 mod 更改之前記錄所請求的內容。將其儲存為 `acme-guard/hooks/register.js`:324此原則 mod 會拒絕任何自身程式碼呼叫 `$.process.run` 或 `$.process.spawn` 的使用者 mod。它也會保留稽核日誌,將每個工具呼叫和每個 mod 寫入的檔案寫入偵錯日誌。因為它首先執行,日誌會在任何使用者的 mod 更改之前記錄所請求的內容。將其儲存為 `acme-guard/hooks/register.js`:
325 325
365* **`e.tier`**:mod 將執行的位置,為 `prepend`、`user`、`append` 或 `builtin` 之一。使用者安裝的每個 mod 都是 `user`。365* **`e.tier`**:mod 將執行的位置,為 `prepend`、`user`、`append` 或 `builtin` 之一。使用者安裝的每個 mod 都是 `user`。
366* **`e.uses.calls`**:mod 呼叫的 mods API 方法,每個寫成 `namespace.method`(例如 `process.run`),不帶 `claude plugin validate` 列印的 `$.`366* **`e.uses.calls`**:mod 呼叫的 mods API 方法,每個寫成 `namespace.method`(例如 `process.run`),不帶 `claude plugin validate` 列印的 `$.`
367 367
368當使用者安裝呼叫 `$.process.run` 的 mod 時,該 mod 不會載入,其偵錯日誌中會有一行以 `refused by acme-guard:` 和您的原因結尾。在[熱重新載入外掛目錄的工作階段](/docs/zh-TW/plugins/mods/troubleshoot.md#find-out-why-a-mod-does-nothing)中,拒絕訊息也會出現在逐字稿中。若要封鎖某個呼叫而不拒絕整個 mod,請從該呼叫名稱上的 hook 傳回 `{ deny: 'your reason' }`。368當使用者安裝呼叫 `$.process.run` 的 mod 時,該 mod 不會載入,其偵錯日誌中會有一行以 `refused by acme-guard:` 和您的原因結尾。在[熱重新載入外掛目錄的工作階段](https://code.claude.com/docs/zh-TW/plugins/mods/troubleshoot.md#find-out-why-a-mod-does-nothing)中,拒絕訊息也會出現在逐字稿中。若要封鎖某個呼叫而不拒絕整個 mod,請從該呼叫名稱上的 hook 傳回 `{ deny: 'your reason' }`。
369 369
370若要將稽核行傳送到偵錯日誌以外的地方,請從相同的 hook 呼叫 `$.http.fetch`。370若要將稽核行傳送到偵錯日誌以外的地方,請從相同的 hook 呼叫 `$.http.fetch`。
371 371
372工作階段可能在沒有您的 mod 的情況下執行。如果執行已安裝 mod 的工作執行緒[當機三次](/docs/zh-TW/plugins/mods/troubleshoot.md#mods-that-run-in-the-hooks-worker-are-off-for-this-session),Claude Code 會卸載所有非內建的 mod(包括您的),直到使用者執行 `/reload-plugins` 或啟動新工作階段。而使用 `--safe-mode` 啟動 Claude Code 的使用者,會在沒有已安裝 mod 的情況下執行,包括您的。372工作階段可能在沒有您的 mod 的情況下執行。如果執行已安裝 mod 的工作執行緒[當機三次](https://code.claude.com/docs/zh-TW/plugins/mods/troubleshoot.md#mods-that-run-in-the-hooks-worker-are-off-for-this-session),Claude Code 會卸載所有非內建的 mod(包括您的),直到使用者執行 `/reload-plugins` 或啟動新工作階段。而使用 `--safe-mode` 啟動 Claude Code 的使用者,會在沒有已安裝 mod 的情況下執行,包括您的。
373 373
374[建立 mod](/docs/zh-TW/plugins/mods/create.md) 涵蓋 mod 需要的檔案。[測試原則 mod](/docs/zh-TW/plugins/mods/test.md#test-a-mod-that-judges-other-mods) 提供此原則 mod 的測試檔案。374[建立 mod](https://code.claude.com/docs/zh-TW/plugins/mods/create.md) 涵蓋 mod 需要的檔案。[測試原則 mod](https://code.claude.com/docs/zh-TW/plugins/mods/test.md#test-a-mod-that-judges-other-mods) 提供此原則 mod 的測試檔案。
375 375
376#### 當您的檢查失敗時拒絕 mod376#### 當您的檢查失敗時拒絕 mod
377 377
400}400}
401```401```
402 402
403處理程式就位後,在檢查拋出例外或逾時時正在被檢查的 mod 不會載入,拒絕行會帶有第二個原因,如 `refused by acme-guard: Acme policy check failed, so this mod was not loaded`。處理程式將 `user` 層以外的每個 mod 傳遞給 `next(e)`,因此失敗的檢查不會阻止您組織列出的 mod。[處理失敗的 hook](/docs/zh-TW/plugins/mods/events.md#handle-a-hook-that-fails) 涵蓋其他事件的 `.catch`。403處理程式就位後,在檢查拋出例外或逾時時正在被檢查的 mod 不會載入,拒絕行會帶有第二個原因,如 `refused by acme-guard: Acme policy check failed, so this mod was not loaded`。處理程式將 `user` 層以外的每個 mod 傳遞給 `next(e)`,因此失敗的檢查不會阻止您組織列出的 mod。[處理失敗的 hook](https://code.claude.com/docs/zh-TW/plugins/mods/events.md#handle-a-hook-that-fails) 涵蓋其他事件的 `.catch`。
404 404
405## 後續步驟405## 後續步驟
406 406
407* [外掛程式安全性](/docs/zh-TW/plugins/security.md):任何外掛程式在使用者機器上可以執行的操作,以及如何在安裝前檢查一個407* [外掛程式安全性](https://code.claude.com/docs/zh-TW/plugins/security.md):任何外掛程式在使用者機器上可以執行的操作,以及如何在安裝前檢查一個
408* [Mods 概述](/docs/zh-TW/plugins/mods/overview.md):什麼是 mod 以及它與 hooks、skills 和 MCP 伺服器的比較408* [Mods 概述](https://code.claude.com/docs/zh-TW/plugins/mods/overview.md):什麼是 mod 以及它與 hooks、skills 和 MCP 伺服器的比較
409* [mods 執行的順序](/docs/zh-TW/plugins/mods/events.md#the-order-mods-run-in):`prependPlugins` 和 `appendPlugins` 如何與使用者 mods 配合409* [mods 執行的順序](https://code.claude.com/docs/zh-TW/plugins/mods/events.md#the-order-mods-run-in):`prependPlugins` 和 `appendPlugins` 如何與使用者 mods 配合
410* [設定和環境變數](/docs/zh-TW/plugins/mods/reference.md#settings-and-environment-variables):此頁面上命名的每個設定在一個表格中410* [設定和環境變數](https://code.claude.com/docs/zh-TW/plugins/mods/reference.md#settings-and-environment-variables):此頁面上命名的每個設定在一個表格中