Bible Network Crypto DeFi Onchain RWA AI Agent Stablecoin Chain SAFU CryptoTax DeFAI AGI Claude Me Claude Skill Claude Design Claude Cowork
獨立知識媒體
與任何項目無關聯
學會用 Claude,每件事都做得更好
claudeskill-me.com
最新
用 OpenTelemetry 看 Claude Code 的壓縮與 hook:compaction、hook_execution_complete 與 precompute_reuse 欄位怎麼讀  ·  Bash 權限規則的盲區:deny 擋不住 /bin/rm、bash -c 與 git -C,devbox run * 還會放行內層任何命令  ·  CLAUDE.md 太長了怎麼辦:用 .claude/rules/ 與 paths 讓規則只在碰到特定檔案時才載入  ·  沙盒裡跑 Chromium 出現 No usable sandbox!:--no-sandbox、excludedCommands、allowNestedUserNamespaces 三種解法各放棄什麼  ·  Claude Code v2.1.309:沙盒啟動檔不再在沙盒外執行、denyWrite 經 symlink 失效等一批沙盒與權限缺口修正  ·  auto mode 的 $defaults 陷阱:autoMode.soft_deny 少放一個字串,內建的 force push 攔截規則就整批消失
名詞解析 · tools-integration

Permission Rules

權限規則(Permission Rules)
tools-integration intermediate

30 秒版 · 給沒耐心的人
Claude Code 用 Tool 或 Tool(specifier) 格式寫成的 allow、ask、deny 規則,在工具執行前決定放行、詢問或拒絕;比對的是呼叫的文字,不是程式本身,所以不是安全邊界。
完整解說 +
01 · 這是什麼?

權限規則是什麼?

權限規則的格式是 Tool 或 Tool(specifier),分成 allow、ask、deny 三種。只寫工具名(如 Bash)匹配該工具的所有使用;加上括號指定更細的範圍,例如 Bash(npm run build) 匹配該完整命令、Read(./.env) 匹配讀取該檔案、WebFetch(domain:example.com) 匹配對該網域的擷取。deny 與 ask 規則還可以用 Tool(param:value) 比對最上層的輸入參數。

02 · 為什麼存在?

為什麼存在?

它讓你在「每次都問」與「全部放行」之間畫出中間地帶:常用的安全命令不再詢問,危險的永遠拒絕。規則可以簽入版本控制與團隊共享,每個開發者也能再自訂。範圍上有明確的優先順序:任何範圍的 deny 都先於 allow,managed 設定的規則最高,連命令列參數都不能覆蓋。

03 · 如何影響你的決策?

怎麼運作,有哪些限制?

Bash 規則比對 Claude 寫出的命令文字:* 代表任意文字,結尾「空格加 *」也匹配無參數的命令;複合命令(&&、||、;、管線等)每個子命令要各自匹配 allow,deny 與 ask 則任何子命令匹配即生效;比對前會剝掉 timeout、time、nice、nohup 等固定外殼。官方文件明說:deny 或 ask 規則涵蓋的是 Claude 通常產生的寫法,不是圍繞該程式的安全邊界,例如 Bash(rm *) 擋不住 /bin/rm 與 bash -c;要不依賴文字的強制,用沙盒,要自訂檢查,用 PreToolUse hook。

04 · 你該怎麼辦?

對我有什麼影響?

把規則當成「減少詢問的便利層」,不要當成「禁止某件事的保證」。allow 要寫得具體到包含內層命令(用 Bash(devbox run npm test),不要用 Bash(devbox run *),後者會放行 devbox run 後面的任何東西);真的不能發生的事,交給沙盒或 hook。這段「怎麼用」是我對官方文件的整理。

資料來源:Configure permissions - Claude Code Docs
實際例子 +

官方文件的例子:allow Bash(npm run *) 與 Bash(git commit *)、deny Bash(git push *),這樣 npm script 與 commit 不再詢問,git push 被拒;但 git -C . push 不會被 deny 匹配到。

常見誤解 +
✕ 誤解1
× 誤解:deny 了 Bash(curl *) 就不會連網,實際是:它擋不住 /usr/bin/curl 與 sh -c,連 WebFetch 受限也不能阻止 Bash 的 curl
✕ 誤解2
× 誤解:PreToolUse hook 回 allow 就能放行被 deny 的動作,實際是:匹配的 deny 與 ask 規則仍然生效,只有 exit code 2 的 hook 會在規則評估之前先擋下
這件事跟你有什麼關係 +
直接影響

優點是細緻、可共享、有明確優先順序;缺點是只比對文字,繞路寫法與環境執行器容易讓規則比你以為的寬或窄。

提問
請至少輸入 10 個字
更多相關主題