Claude Code 的 auto mode 學會踩煞車:為什麼它現在會擋住你的 git reset --hard
Claude Code 剛開始紅起來的時候,大家最上頭的玩法,就是把它丟進 auto mode,讓它自己往前衝。不用每三秒跳出來問你「要不要執行這個指令」,它讀完任務、自己規劃、自己動手,你去倒杯咖啡回來,活就幹完了。那種「終於不用一直按 yes」的爽感,是很多人愛上它的起點。
但這條路上其實踩過幾個坑。今天 Claude Code 在 v2.1.183 補上的東西,剛好把這段演進的最後一塊拼圖放上去了。要看懂它為什麼重要,得從頭順一遍這條時間線。
第一階段:全自動,然後有人被清空了
把方向盤完全交給 AI,最爽,也最危險。
問題不在 AI 會亂寫程式——那個你 review 還救得回來。真正要命的是那些一秒就無法挽回的指令。最經典的就是 git reset --hard。你辛苦改了一整個早上、還沒 commit 的東西,AI 為了「清乾淨重來」一句 git reset --hard 下去,全沒了。沒有 commit,連 git reflog 都救不回來。
這就像你請了一個動作飛快的實習生,能力沒問題,但你給了他整台機器的 root 權限。九成九的時候他幫你省下大把時間,可是只要有一次他「為了整理環境」跑了 rm -rf 或 git clean -fd,你一個早上的東西就交代了。速度的代價,是你把「犯一次大錯就回不去」的風險也一起外包出去了。
第二階段:大家自己動手裝煞車
社群不是省油的燈。意識到這個風險之後,進階玩家開始自己寫 PreToolUse hook——在每個指令真正執行前攔一道,比對危險清單,看到 git reset --hard、terraform destroy 這類就擋下來、跳出來問人。
這招有效,但有兩個問題。第一,你得自己維護那份清單,AI 會用到的破壞性指令五花八門,今天補 git、明天發現還有 terraform、後天又冒出 pulumi,永遠補不完。第二,這是事後補救——煞車是你自己後裝的,原廠出廠時根本沒這東西。等於每個人都要自己焊一套安全帶,焊得好不好全看你的手藝。
這裡有個很樸素的判斷:如果一件事每個用的人都得自己重新發明一次,那通常代表它本來就該被做進底層。安全護欄就是這種東西。
轉捩點:v2.1.183 把煞車焊進了原廠
這就是 6 月 19 日這版更新真正做的事——它不再要你自己寫 hook,而是把一份破壞性指令的防護清單,直接內建進 auto mode。
具體擋哪些?官方 release notes 列得很清楚:
- 破壞性 git 指令:
git reset --hard、git checkout -- .、git clean -fd、git stash drop,當你「沒有要求它丟掉本機改動」時,這些一律擋。 - **
git commit --amend**:如果那個 commit 不是 AI 在這次 session 裡自己做的,就擋——避免它去改寫你之前的歷史。 - 基礎設施的 destroy:
terraform destroy、pulumi destroy、cdk destroy,除非你明確指名「就是要拆這個 stack」,否則不准。
關鍵在那句「當你沒有要求它丟掉本機改動時」。它擋的不是指令本身,而是意圖不明的破壞。你真的想 reset,明講,它照做;它自作主張要 reset,擋下。這個分界畫得很漂亮——不是把功能砍掉,是把「沒人授權的破壞」跟「你授權的操作」分開。
同一版還順手補了另一個方向的防護:寫檔案也要先問。就算你開了 acceptEdits 模式(讓它自由改檔不用問),只要它要寫的是那種「會自動執行程式碼」的檔案——像 shell 啟動檔 .zshenv、.bash_login,git 設定,或 .npmrc、.bazelrc、.pre-commit-config.yaml 這類建置工具設定檔——它還是會停下來問你一聲。
道理一樣:一個普通的 .js 檔寫錯了,頂多跑出 bug;但 .zshenv 被偷塞一行,下次你開終端機就自動執行了。同樣是寫檔,後者的下行大得多,值得為它多按一次確認。
收尾:真正的安全,是設計成「犯錯也傷不到你」
把這條線拉直來看:全自動 → 出事 → 大家自己裝煞車 → 原廠把煞車做進去。它其實不是 Claude Code 一個產品的故事,是所有自動化工具都會走的同一條路。一個工具夠強、夠自動,下一步必然是學會在對的地方停下來。
這裡面有個觀念值得你帶走:你對 AI agent 的信任,不該建立在「相信它不會犯錯」上面。它一定會犯錯,再強的模型都會。真正可靠的系統,是設計成它犯錯的時候,傷害被框在一個你承受得起的範圍裡。內建破壞性指令防護,做的就是這件事——它不讓 AI 變聰明,它讓 AI 犯蠢的成本變低。
所以如果你之前因為怕被 reset、一直不敢開 auto mode,現在可以升級到 v2.1.183 再試一次。先用 claude --version 確認版本,跑 /release-notes 翻一下這版到底改了哪些。等你習慣了「它會自己踩煞車」這件事,下一步再去研究怎麼用 PreToolUse hook 把那份清單客製成你自己專案的規則——原廠煞車是底線,你還可以為自己的地雷再加幾道。










