Claude Code 突然全壞?EEXIST 錯誤完整排查(Windows 專屬地雷)

看到 CLAUDE 這個錯誤的時候,我整個慌了 :

API Error: EEXIST: file already exists, mkdir '%USERPROFILE%\.claude'

直覺反應是「.claude 資料夾已經存在,所以建不起來」——但這個判斷其實跟「已存在」沒什麼關係,真正的問題是 Windows 的資料夾屬性在搗鬼。 以下是我跟 AI 對話整理以及爬了 github issue 後整理出來的完整排查流程,照著做幾行 PowerShell 就能解決,不需要重灌,也不需要刪掉 .claude


快速修法(先試這個)

如果你想直接解決,照這組 PowerShell 做:

💡 指令裡的 $env:USERPROFILE 就是你的使用者資料夾,也就是 C:\Users\你的帳號名稱。複製貼上直接跑,不需要手動換掉。

Get-Item "$env:USERPROFILE\.claude" -Force
attrib -R "$env:USERPROFILE\.claude" /S /D

然後重啟 Claude Code。九成的案例到這裡就好了。

如果 Claude Code 還是噴錯,再進去執行:

/login

不需要重灌,也不需要刪掉 .claude


為什麼錯誤訊息這麼誤導

EEXIST 的意思是「目標已存在」,聽起來很直覺,但 Windows 上的 Node.js 程式呼叫檔案系統 API 時,有時候會因為資料夾屬性或 Windows Shell 行為,收到完全不直覺的錯誤碼。

所以你看到的 EEXIST,可能根本不是「.claude 已存在」這個原因造成的。


根本原因:.claude 是資料夾,但 Mode 顯示 d-r--

這個才是最常見、也最容易誤判的情況。

Get-Item "$env:USERPROFILE\.claude" -Force

如果看到:

Mode              LastWriteTime         Length Name
----              -------------         ------ ----
d-r--      2026/05/29 PM 10:24                .claude

d 代表資料夾,r 代表 ReadOnly。

💡 Windows 資料夾上的 ReadOnly flag 很特別——它不一定等於「真的不能寫入」。很多時候這是 Windows Shell 用來標記「這個資料夾有自訂圖示或特殊檢視設定」的訊號。

但 Claude Code 在某些流程中碰到這個狀態沒處理好,最後就包成 EEXIST 丟出來。

修法:移除 ReadOnly

attrib -R "$env:USERPROFILE\.claude" /S /D

參數意思:

-R  移除 ReadOnly
/S  套用到所有子資料夾與檔案
/D  包含資料夾本身

修完再確認一次:

Get-Item "$env:USERPROFILE\.claude" -Force

理想狀態是從 d-r-- 變成 d----


為什麼只有 Claude Code 壞,其他工具沒事

你可能也有 .codex.gemini 這類資料夾,Mode 也是 d-r--,但它們都正常。

原因很簡單:每個 CLI 的初始化邏輯不一樣。

工具處理方式
Gemini CLI先確認資料夾存在,直接使用
Codex CLI先確認資料夾存在,直接使用
Claude Code某些流程直接呼叫 mkdir,遇到 ReadOnly 狀態沒處理好

所以這比較像 Claude Code 的 Windows 相容性問題,不是你的整個環境壞了。


desktop.ini 的狀況

如果你曾經替 .claude 資料夾設定自訂圖示,Windows 會在裡面產生 desktop.ini,並把資料夾標記成 ReadOnly。這是 Windows 的正常行為,但就是這個動作觸發了問題。

檢查是否有 desktop.ini

Get-ChildItem "$env:USERPROFILE\.claude" -Force

如果看到 desktop.ini 且不需要自訂圖示,可以刪除:

Remove-Item "$env:USERPROFILE\.claude\desktop.ini" -Force
attrib -R "$env:USERPROFILE\.claude" /S /D

為什麼「白天正常,晚上突然壞」

這是最讓人崩潰的情境,明明中午還在用,晚上就全炸。

通常的觸發點是 OAuth token 過期,Claude Code 需要 refresh token,這個流程剛好踩到 .claude 的 ReadOnly 狀態,然後爆炸。

所以不是「晚上剛剛壞掉」,而是 token refresh 這個動作踩到了一直都在的地雷。

修法還是一樣:修完資料夾屬性後,進 Claude Code 執行 /login 重新登入。


完整排查流程

照順序做,不要一開始就刪資料夾:

Step 1. 確認 .claude 是否存在

Test-Path "$env:USERPROFILE\.claude"
  • 回傳 False:重啟 Claude Code,讓它自己建立。
  • 回傳 True:繼續下一步。

Step 2. 確認 ReadOnly 狀態

Get-Item "$env:USERPROFILE\.claude" -Force
  • 看到 d-r--:移除 ReadOnly。
attrib -R "$env:USERPROFILE\.claude" /S /D

Step 3. 檢查 desktop.ini

Get-ChildItem "$env:USERPROFILE\.claude" -Force

desktop.ini 且不需要自訂圖示就刪掉,再移除 ReadOnly。


Step 4. 重新登入 Claude Code

/login

Step 5. 重啟 Claude Code

關掉目前 session 再開,測 /config 確認不再噴錯。


attrib -R 沒效怎麼辦

少數情況是 OneDrive、防毒軟體、公司 Group Policy 又把屬性改回去。

先看一下目前屬性:

Get-Item "$env:USERPROFILE\.claude" -Force | Select-Object FullName, Attributes

懷疑 OneDrive 介入,可以在 OneDrive 設定裡把 .claude 排除同步範圍。

也可以試著同時移除 ReadOnly、System、Hidden:

attrib -R -S -H "$env:USERPROFILE\.claude" /S /D

判斷速查表

現象可能原因處理方式
Moded-r--ReadOnly 屬性attrib -R ... /S /D
desktop.ini曾設定自訂資料夾圖示desktop.ini,移除 ReadOnly
白天正常,晚上突然壞OAuth token refresh 踩到 bug修屬性後 /login
修完又復發OneDrive 或同步工具介入排除同步範圍

不建議的處理方式

不要直接刪 .claude 裡面可能有你精心整理的設定、自訂 commands、session 狀態。先備份改名,確認沒事再刪。

不要一開始就重灌 Claude Code: 這個錯誤多半是 .claude 的狀態問題,重灌完 .claude 還在,一樣會炸。

不要對整個使用者資料夾(C:\Users\你的帳號名稱)改權限: 影響太大,SSH、Git、OneDrive、其他 CLI 的設定都可能跑掉。


預防方式

  1. 不要替 .claude 資料夾設定自訂圖示,這是最常見的觸發點。
  2. 把工具設定資料夾排除 OneDrive 同步,尤其是 .claude.codex.gemini
  3. 備份重要設定到 Git 或 Obsidian.claude 就算需要重建也不會掉東西。

這個問題的核心不是「你沒有權限」,也不是「.claude 已存在所以不能用」。更準確的說法是:Claude Code 在 Windows 上碰到帶 ReadOnly 或 Shell 自訂屬性的 .claude 資料夾時,某些初始化或 token refresh 流程沒有妥善處理,就把底層的 Windows 錯誤包成 EEXIST 丟出來。

幾行 PowerShell 通常就解決了,不需要重灌,也不需要大動作。

有踩到其他坑?或是修完又復發了?底下留言告訴我。

留言區

載入中...

發表留言