Bash 工具在多次呼叫間悄悄重置工作目錄,導致破壞性 git 指令跑錯 repo
Status Open
Maintainer reply None cached
Activity 0 comments · opened Sep 8, 2026
發生了什麼:
- 另一個 Claude Code session(同一台機器、同一使用者,不同 session)的 Bash 工具工作目錄在呼叫之間被悄悄重置到別的
repo。
- 該 session 誤以為還在原本目錄,執行了 git checkout master -- .,結果把 D:\work\webArcade-vue 這個實際目標 repo 裡約
4 天份的未 commit 工作全部清空。
- 過程中沒有任何 cwd 確認或警告跳出來擋下這個破壞性指令。
你當時的反應:發現工作被清空後,請這個 session 去調查並復原,沒有針對「工具本身的 bug」直接表態,重點在關切資料遺失。
重現方式:在同一個長對話裡連續下多次 Bash 呼叫、沒有每次都明確 cd,且環境本身 cwd
會漂移/重置(確切觸發條件尚未精準定位);接著跑一個依賴假設 cwd 的破壞性 git 指令(checkout/restore/reset
--hard)就會踩到。
佐證:
- 09/07 在 D:\work\webArcade-vue 用 git fsck --dangling 做 blob 級鑑識復原。
- 專案記憶檔 project_multi_session_git_incident.md、feedback_git_destructive_safety.md
都記錄了這次事故與後續規則(破壞性 git 指令前一定要先 pwd/明確 cd 確認目錄)。
根因線索:.claude/settings.local.json 裡對 Bash(git restore ) / PowerShell(git )
設了過於寬鬆的自動允許規則,讓這個破壞性指令沒有跳出權限提示——那個提示本來有機會讓人注意到目錄不對。