跳至主要內容

    Claude Code 權限要怎麼設?一直按「允許」真的安全嗎?(2026 完整懶人包)

    出錯後多快還原,決定它能自己跑多久

    sunny 桑尼· · 17 MIN READ · 168 次瀏覽

    Claude Code 權限要怎麼設?一直按「允許」真的安全嗎?(2026 完整懶人包)
    本文目錄

    Claude Code 一直跳出「要執行這個指令嗎?」,你是不是也已經習慣直接按允許?這篇帶你搞懂每一層防護各擋什麼、擋不住什麼,讓它安心自己跑!

    Claude Code 跳出一個視窗:「要執行這個指令嗎?」你按了允許。今天第幾次了?

    Anthropic 在 2026 年 8 月公布了一組數字:使用者對權限提示按「允許」的比例是 97%。他們也做了一個對照,拿同一批 1,053 個危險指令,看人逐一審核能擋下多少,結果是 143 個。

    面對同一批 1,053 個危險指令,人工逐一審核僅擋下 13.6%(143 件),auto mode 分類器則攔截了 89%(資料來源:Anthropic 官方測試數據,2026 年 8 月,n=1,053)。

    人的攔截率還會隨時間往下掉:一個工作階段剛開始時約 17%,按過 50 次提示之後只剩約 5%。這跟認不認真無關,重複按同一個按鈕的人本來就會這樣。這些都是 Anthropic 自己公布的數字,沒有第三方驗證,但方向和多數人的經驗一致。

    先說一件對我不太有利的事。我自己用 Claude Code 是開 auto mode,權限也開得很寬。所以比起「它會不會問我」,我更在意另一個問題:出事的時候,我收不收得回來。這篇就是把這個問題拆開。

    快速回答 讓 Claude Code 自己跑多久,看的是出事時你多快收得回來。Claude 用編輯功能改的檔案有自動存檔點(checkpoint),/rewind 幾秒就退得回來,可以放手;Bash 指令的改動追不到,要靠 Git,跑完至少看一次 diff;正式資料庫、部署、push 收不回來,在設定檔寫成每次先問(ask)或直接禁止(deny)。權限規則、auto 分類器、hooks 只決定要不要先問你,而且都會漏。

    三起真實 Agent 事故的共同教訓:做下去的事收不回來,在對話裡交代「不要做」不等於設了鎖

    這兩年公開的 coding agent 事故,挑幾個有紀錄的:

    • 2025 年 7 月,SaaStr 創辦人 Jason Lemkin 用 Replit 的 agent 開發,agent 在程式碼凍結期間刪掉了正式資料庫。他說自己「用全大寫講了十一次不要這樣做」。
    • 2025 年 10 月和 11 月,Claude Code 的 GitHub 上有使用者回報,agent 執行 rm -rf 把家目錄的檔案刪掉;其中一起是 agent 先誤建了一個叫 ~ 的資料夾,再刪它的時候刪到了真正的家目錄。
    • 2025 年 11 月,Google Antigravity 在不需要使用者確認的 Turbo 模式下清快取,目標指到 D 槽根目錄,整個磁碟被刪,而且不進資源回收筒。

    這幾件事用的工具不同、模式不同,共同點只有一個:做下去的事收不回來。刪除跳過了回收筒,開發和正式資料庫沒有分開,指令改的是 agent 碰得到、但不該碰的地方。

    Lemkin 那句話也值得多想一下。在對話裡講「不要做」,不等於設了一道鎖。Anthropic 的文件寫得很直白:你在對話中說「不要 push」,auto mode 的分類器會參考;但對話太長被壓縮之後,這句話可能就不見了。要真的擋住,得寫成設定檔裡的規則。

    六道安全防護的真相:執行前三道只決定要不要問,執行後三道才決定出錯能不能收回

    把 Claude Code 的安全機制攤開,其實在回答兩個不同的問題。執行之前:這個動作要不要先問你?執行之後:如果做錯了,影響範圍多大、收不收得回來?

    執行前三道防護只決定要不要先問,執行後三道才決定出錯能不能收回,且每道機制皆有死角(Sunny DataScience 整理)。

    執行前有三道關卡:第一道是權限規則,你在設定檔裡寫 deny、ask、allow,Claude Code 依序比對,deny 最優先,任何模式都有效。第二道是 auto 分類器:從 2026 年 8 月起,Pro、Max、Team 方案的新工作階段預設就是 auto mode,由另一個模型在每個動作執行前判斷要不要攔下來,例如 curl | bash、force push、git reset --hard、正式環境部署,都在預設的攔截清單裡。第三道是 hooks:在工具執行前跑一支你自己寫的程式,回傳「拒絕」就擋下,連最寬鬆的模式也擋得住。

    這三道都會漏。規則只擋得住你寫到的指令。分類器方面,Anthropic 在 2026 年 3 月自己公布,它對真實的越權動作有 17% 會漏掉,文件也寫明 auto mode「減少權限提示,但不保證安全」。Hooks 有一個容易忽略的坑:hook 執行逾時,預設不會擋下動作。

    執行後同樣有三道關卡:沙箱限制指令能碰到的範圍,開啟後寫入只限工作目錄,網路要經過代理和允許清單。Anthropic 內部實測,沙箱讓權限提示減少 84%:在沙箱裡,很多事就算做錯影響也有限,不必每次都問。Checkpoint 是 Claude Code 內建的還原點,用 /rewind 可以把檔案退回某一輪對話之前;Git 則是你本來就該有的那一層。最外層是隔離環境:git worktree 讓任務在另一個資料夾裡做,dev container 或 Anthropic 的雲端工作階段讓它跑在另一台機器上。

    這三道一樣會漏,而且漏的地方更要命。沙箱預設仍讀得到整台電腦,包括 ~/.ssh,原生 Windows 也還不支援。Checkpoint 追不到 Bash 指令造成的改動,rm、mv、cp 刪掉或搬走的檔案,/rewind 救不回來。Worktree 只隔離檔案,.git 和權限設定仍和主目錄共用。至於正式資料庫、部署、push、寄出去的信,沒有任何一層本機機制收得回來。

    METR 實測任務長度:可靠度要求從五成拉到八成,能交給 AI 的時間只剩五分之一至十分之一

    講到「讓 AI 自己跑」,常聽到的數字是模型能連續工作幾小時。這個數字要看清楚是怎麼算的。

    研究機構 METR 用一套軟體任務量測模型的能力,單位是「人類專家做這件事要花多久」。同一個模型,他們會報兩個數字:有一半機率做完的任務長度,和有八成機率做完的任務長度。

    同一個模型在可靠度要求從 50% 提高到 80% 時,能交付的任務長度大幅縮減至五分之一到十分之一(資料來源:METR Time Horizons 研究,2026 年 9 月更新)。

    這張圖改變了我對「能跑多久」的理解。常聽到的十幾小時,是一半機率會做完的長度;你要它八成會成功,任務就得縮到一兩個小時。換句話說,讓它跑得越久,中途某一步出錯的機會越大。長任務還是可以跑,前提是錯了的那一步收得回來。

    所以我會這樣算:放手的時間,不要超過你收回來需要的時間能承受的範圍。錯了用 /rewind 幾秒就回來的事,可以放心交出去;要靠 Git 翻幾個 commit 的事,你至少要在它跑完時看一次 diff;收不回來的事,不管模型多強,都要你自己按。

    實務權限分級配置:依任務風險分四級,專案必設 deny 規則與擋 prod 的 hook

    依任務的風險分四種,每種配一組設定:

    任務權限模式一定要有的那一層

    讀程式、問問題、先規劃
    權限模式
    plan(只讀不改)
    一定要有的那一層
    不需要
    改本機程式,你在旁邊
    權限模式
    auto
    一定要有的那一層
    乾淨的 Git 工作目錄、checkpoint
    長時間沒人看
    權限模式
    auto 加沙箱;或在 dev container/雲端工作階段裡全開
    一定要有的那一層
    worktree 或隔離環境、deny 規則
    碰正式資料庫、部署、push
    權限模式
    一律寫成 ask 或 deny
    一定要有的那一層
    開發和正式環境分開、備份

    兩個設定值得每個專案都放。第一個是 deny 規則,寫在專案的 .claude/settings.json,跟著 repo 一起版本控制,團隊每個人都套用:

    {
      "permissions": {
        "deny": ["Bash(git push *)", "Read(./.env)", "Read(./.env.*)"],
        "ask": ["Bash(npm publish *)"]
      }
    }
    

    第二個是一支擋正式環境的 hook。它在每個 Bash 指令執行前讀進指令內容,碰到 prod 或 production 就擋下,並把原因回傳給 Claude:

    #!/usr/bin/env bash
    # .claude/hooks/block-prod.sh: commands that touch production need a human
    cmd=$(jq -r '.tool_input.command // ""')
    if grep -qiE 'prod|production' <<<"$cmd"; then
      echo "Blocked: production targets need a human." >&2
      exit 2
    fi
    

    在設定檔的 hooks 底下,把它掛在 PreToolUse、matcher 設成 Bash,指令路徑寫 "$CLAUDE_PROJECT_DIR/.claude/hooks/block-prod.sh",記得先 chmod +x,電腦上也要有 jq。用字串比對很粗糙,但它的價值在於:這道檢查不會因為對話太長而被忘記。

    最後,花五分鐘自己驗一次 checkpoint 收得回什麼。開一個拿來丟的 Git repo,放兩個檔案 a.txt、b.txt。請 Claude 用編輯功能改 a.txt,再用 Bash 執行 rm b.txt,然後輸入 /rewind 退回這一輪之前。照官方文件,a.txt 會回來,b.txt 不會;git checkout b.txt 才救得回它。親手看過一次,你對「哪些事收得回來」的直覺會準很多。

    破除三個常見誤解:auto mode 會漏 17%、/rewind 追不到 Bash 改動、worktree 不防讀取

    「auto mode 會擋,所以我不用看」。它擋得比逐一按允許多,但 Anthropic 自己公布會漏掉約 17% 的越權動作。它的用途是減少打擾,官方文件也明說不能當作隔離邊界。

    Anthropic 在介紹 auto mode 的文章裡,一開頭就用一張圖畫出這個取捨:它把 auto mode 定位成「自主度高、維護成本低」的選項,安全度仍排在沙箱下面。

    Anthropic 自己畫的取捨圖:auto mode 換到的是高自主、低維護,安全度仍排在沙箱下面,虛線箭頭代表的是「之後會更好」,不是現在。(圖片來源:Anthropic〈How we built Claude Code auto mode〉,經 Sunny DataScience 中文重點標註)

    「出事就 /rewind」。Checkpoint 只追得到 Claude 用編輯功能修改的檔案。Bash 指令造成的改動、資料庫、遠端資源都不在裡面,官方文件也寫明它不能取代版本控制。

    「開了 worktree 就安全了」。Worktree 讓任務在另一個資料夾執行,主目錄檔案不會被直接改動,但它不擋網路、不防讀取,用 cp 寫回主目錄也擋不住。若要無人值守全開權限,Anthropic 建議放進 dev container 或雲端工作階段。

    本機防護的絕對邊界:外部服務做錯收不回,開發與正式環境必須從架構拆開

    本機的每一層都有一個共同的邊界:它們只管這台電腦。Agent 呼叫的外部服務,例如資料庫、雲端主機、付款、寄信,做下去就是做下去了。Replit 事故後,他們的修正是把開發和正式資料庫自動分開,這比任何權限提示都有效。如果你的專案還讓同一組帳密同時碰得到開發和正式環境,先處理這件事,再談要開哪個模式。接上外部工具時要交出哪些權限,可以接著讀〈MCP server 該不該裝?安裝前一定要做的權限檢查(2026 資安懶人包)〉。

    團隊導入時還有一個管理問題:每個人的設定不同,有人開全開模式,有人按到麻木。Claude Code 有一份由管理員控制的設定檔,優先序最高,可以直接停用全開模式。比起寫一份要大家自律的規範,這更可靠。

    結論:敢放手讓 Claude Code 跑多久,取決於出錯時你多快能收得回來

    下一次要決定讓 Claude Code 自己跑多久之前,先問一個問題:如果這一步錯了,我要花多久把它收回來?

    幾秒就回來的,放手。要翻 Git 的,跑完看 diff。收不回來的,自己按。模型會越來越強,時間會越拉越長,但這個問題的答案,取決於你的環境怎麼搭,跟模型無關。

    你敢放手多久,看的是你收得回來多快。

    常見問題

    Claude Code 的 auto mode 是什麼?

    從 2026 年 8 月起,Pro、Max、Team 方案的新工作階段預設 auto mode:由另一個模型在每個動作執行前判斷要不要攔下,例如 force push、正式環境部署。它減少權限提示,Anthropic 也公布它會漏掉約 17% 的越權動作。

    在對話裡叫 Claude「不要 push」有用嗎?

    不可靠。auto 分類器會參考這句話,但對話太長被壓縮之後,它可能就不見了。要真的擋住,寫成專案 .claude/settings.json 的 deny(禁止)規則,例如 Bash(git push *),任何模式都有效。

    Claude Code 的權限規則要寫在哪裡?

    寫在專案的 .claude/settings.json,跟著 repo 一起版本控制,團隊每個人都套用;deny 最優先。團隊要統一的話,還有一份由管理員控制、優先序最高的設定檔,可以直接停用全開模式(所有動作都不經詢問)。

    聽說模型能做十幾小時的任務,代表可以放手那麼久嗎?

    不能直接這樣換算。研究機構 METR 用「人類專家做這件事要花多久」衡量任務長度。常聽到的十幾小時,是一半機率會做完的長度;要它八成會成功,任務得縮到一兩個小時。跑得越久,中途出錯的機會越大,所以放手多久要看錯了的那一步收不收得回來。

    延伸閱讀

    參考資料

    官方文件與公告

    研究與數據

    事故與報導

    留言0

    登入後就能留言。

    登入