跳至主要內容

    Claude Code 權限設定懶人包:該自動的自動、該問的一定問

    allow、ask、deny 三種規則,一次設好:改 index.html 不用問、rm 刪檔一定先問、.env 絕對不准讀。5 個步驟,附 Claude Code 2.1.304 實測:auto 模式下 ask 規則照樣會問。

    sunny 桑尼· · 8 MIN READ · 153 次瀏覽

    Claude Code 權限設定懶人包:該自動的自動、該問的一定問
    本文目錄

    上一篇做了一個會自己幹活的 /new-skin。Claude Code 越能幹,你越需要決定哪些事讓它直接做、哪些事一定要先問你。manual 模式每一步都問,很煩;auto 模式幾乎都不問,又怕它刪錯檔。這篇用三種權限規則,把界線一次劃好,再分別在 manual 和 auto 模式實測。

    快速回答 權限規則寫在專案的 .claude/settings.json,分三種:allow 直接做不用問、ask 一定先問你、deny 絕對不准。三種同時符合時,順序是 deny 先、ask 再來、allow 最後。最省事的設法是用一句話請 Claude Code 幫你寫,再用 /permissions 檢查。實測 auto 模式下,ask 規則照樣會跳出來問你。

    做完這篇,你會有

    • 一份 .claude/settings.json,裡面有三種規則
    • 改 index.html 不再問你,就算在 manual 模式
    • 用 rm 刪檔一定先問你,就算在 auto 模式
    • .env 這種放密碼的檔案,它完全讀不到

    開始之前要準備:前幾篇的 snake-game 資料夾。想跟著測 deny 規則,先在資料夾裡建一個 .env 檔,內容隨便寫一行,例如 LEADERBOARD_API_KEY=demo。

    三種規則一張表

    規則意思這篇的例子

    allow
    意思
    直接做,不用問
    這篇的例子
    改 index.html
    ask
    意思
    一定先問你
    這篇的例子
    用 rm 刪檔
    deny
    意思
    絕對不准
    這篇的例子
    讀 .env

    步驟 1:用一句話請它寫規則

    在遊戲資料夾啟動 Claude Code,輸入:

    幫我設定這個專案的權限,寫在 .claude/settings.json:改 index.html 不用問我;用 rm 刪檔案一定要先問我;完全不准讀 .env
    
    實際畫面(Claude Code 2.1.304,2026-10-21):19 秒寫好,還順手擋了用指令偷看 .env 的路。

    寫出來的檔案整理後長這樣(實測它多寫了一條 Write(/index.html),Claude Code 不認這種寫法,已刪掉):

    {
      "permissions": {
        "allow": ["Edit(/index.html)"],
        "ask": ["Bash(rm *)"],
        "deny": ["Read(**/.env)", "Edit(**/.env)", "Bash(*.env*)"]
      }
    }
    

    /index.html 開頭的斜線代表專案資料夾,**/.env 代表任何一層資料夾裡的 .env。

    步驟 2:用 /permissions 檢查

    輸入 /permissions,用左右鍵切換 Allow、Ask、Deny 分頁,確認規則都在。

    實際畫面(2026-10-21):Deny 分頁寫著「永遠拒絕」,三條規則都在。

    想加減規則,也可以在這裡選 Add a new rule,不用自己改檔案。按 Esc 關掉。

    步驟 3:測 allow,改檔不再問

    按 Shift+Tab 切到 manual 模式,這個模式本來每次改檔都會問你。輸入:

    把底部提示文字最前面加上「🐍 」
    
    實際畫面(2026-10-21):狀態列是 manual,改 index.html 卻直接改好了。

    allow 規則讓這個檔案不用再問。其他檔案還是會照 manual 模式問你。

    步驟 4:測 ask,auto 模式也會問

    再按 Shift+Tab 切回 auto 模式,這個模式大多數動作直接做。在資料夾放一個沒用的檔案,例如 notes.txt,然後輸入:

    用 rm 刪掉 notes.txt
    
    實際畫面(2026-10-21):ask 規則蓋過 auto 模式,刪檔前一定問你。

    確定要刪才選 Yes,不想刪就選 No。

    步驟 5:測 deny,它碰不到 .env

    輸入:

    把 .env 的內容唸給我聽
    
    實際畫面(2026-10-21):deny 規則直接擋下,Claude 看不到內容。

    密碼、金鑰、帳號這類檔案,都可以用 deny 規則擋起來。

    常見卡關

    • 規則寫了沒效果:檔案要放在你啟動 Claude Code 的專案資料夾裡的 .claude/settings.json。打 /permissions 看規則有沒有出現。
    • allow 了還是一直問:先用 /permissions 看有沒有同時符合的 ask 規則,ask 比 allow 優先。再檢查路徑:專案設定裡的 / 代表專案資料夾,例如 Edit(/index.html)。
    • 在指令的核准畫面選了「Yes, and don't ask again」,規則跑去哪了:存在 .claude/settings.local.json,只對你自己有效,打 /permissions 看得到、也刪得掉。
    • 啟動時提醒 Write(/index.html) 不會被比對:改檔的規則只認 Edit(...),它已經涵蓋所有改檔工具。實測 Claude 多寫了一條 Write,刪掉那條、留 Edit 就好。
    • 規則和 CLAUDE.md 寫的不一樣,聽誰的:聽規則的。CLAUDE.md 是給它參考,權限規則是 Claude Code 強制執行,它想做也做不了。

    你做到了

    • 用一句話寫好 allow、ask、deny 三種規則
    • 用 /permissions 檢查規則
    • 實測:manual 模式改檔不問、auto 模式刪檔照問、.env 完全讀不到

    規矩、指令、權限都設好了。下一篇替 Claude Code 換個性:讓它變成嚴格的程式審查員。

    常見問題

    三種規則衝突時,誰說了算?

    順序是 deny、ask、allow,先符合的那條決定結果。就算 allow 寫得更細,只要 deny 也符合,就是不准。

    規則可以套用到所有專案嗎?

    可以,寫在 ~/.claude/settings.json。專案的 .claude/settings.json 適合跟團隊共用,.claude/settings.local.json 放你自己的規則。

    只想擋一個指令,不想全部擋?

    用指令開頭當規則,再放進 allow、ask 或 deny。例如 "deny": ["Bash(git push *)"] 擋掉所有 push、"allow": ["Bash(npm run test *)"] 跑測試不用問。* 代表後面接什麼都算。

    用 cat .env 能繞過 Read 規則嗎?

    官方說明 Read 的 deny 規則也會套到 Claude Code 認得的檔案指令,例如 cat、head、tail。實測時 Claude 另外加了一條 Bash(*.env*),指令裡出現 .env 也一起擋。

    下一步

    參考資料

    留言0

    登入後就能留言。

    登入