Claude Code 看不到專案檔案:原因與處理方式(2026)
MarkdownClaude Code 找不到專案檔案的原因:啟動時所在的資料夾不對、檔案位於子資料夾,或檔案列在 .gitignore 中。本文說明如何使用 add-dir、cd 和設定授予存取權。
閱讀全文
這種情況很常見:你請 Claude Code 修正某個檔案,它卻回答說沒有這個檔案。或者,它悄悄修改了完全不是你要的內容。你打開資料夾一看,檔案明明就在該在的位置。但 Claude 似乎沒有注意到它。
幾乎總是只有一個原因,而且沒有任何東西壞掉。Claude 看不到整台電腦上的檔案,只能存取你啟動它時所在的資料夾。從同層其他資料夾或專案根目錄下層啟動,可能讓必要檔案位於工作樹外;從家目錄等上層啟動則範圍更廣,不會讓子專案因此無法存取。我會逐步說明為什麼會這樣,以及如何讓 Claude 存取需要的檔案。文中的命令和設定直接引用 Claude Code 官方文件;我在 2026 年 9 月上旬查閱過這些文件。
如需設定工具的補充資料,請參閱 Ailoot 文件。
為什麼 Claude Code 看不到某些專案檔案?
重點摘要
Claude Code 讀取檔案的範圍不是整個磁碟,而是你啟動它時所在的資料夾。這個資料夾稱為工作目錄。Claude 可以查看並讀取其中及其子資料夾內的所有內容,不必先詢問。工作目錄以外的內容——例如相鄰資料夾、上一層資料夾或另一個磁碟上的內容——都無法存取,除非你自行授予存取權。因此,檔案「看不到」最常見的原因很簡單:你從不同的資料夾啟動了 Claude。先確認你究竟是從哪裡開啟它的。
Claude Code 預設只會使用一個資料夾:你輸入 claude 命令並啟動工作階段的那個資料夾。官方文件對此有明確說明。
Claude 預設可以存取你啟動它時所在資料夾中的檔案。
這個資料夾就是它的工作目錄。在這個資料夾內,Claude 不必額外詢問就能讀取任何檔案:編輯提示、搜尋程式碼、讀取特定檔案,都可以立即進行。但預設情況下,這個資料夾以外的所有內容都無法存取。Claude 不會查看相鄰資料夾、上一層資料夾或另一個磁碟,除非你允許它這麼做。
工作目錄不符確實可能有影響。例如專案在 /Users/you/my-shop,卻從同層 /Users/you/other-project 啟動,my-shop 的 index.html 位於該工作樹外。若從 /Users/you 啟動,my-shop 則是子目錄,不會只因起點是家目錄就無法存取,但範圍比預期大。可存取也不代表每個檔案都已讀取。
接下來,我會說明如何檢查並解決這個問題:先確認 Claude 是從哪個資料夾啟動,再透過不同方式授予它存取所需檔案的權限,從一次性的指示到永久設定都有。
如何確認 Claude Code 是從哪個資料夾啟動的?
重點摘要
你可以問 Claude 目前在哪個資料夾,或請它使用 pwd 命令顯示目前目錄;這只會進行檢查,不會變更任何內容。將顯示的路徑與專案實際位置比較。如果路徑不同,原因就在這裡:Claude 是從錯誤的資料夾啟動的。更可靠的解決方式是關閉工作階段,直接從專案資料夾重新啟動 Claude:在終端機中切換到該資料夾,然後在那裡輸入 claude。
在修正任何設定之前,先確認問題確實出在資料夾。這很容易檢查。在聊天中請 Claude 顯示目前所在的目錄,它會執行 pwd。這個命令很安全,只會顯示路徑,不會改動任何內容。
pwd
回覆會顯示實際工作目錄。請與完整專案路徑比較:/Users/you/other-project 與 /Users/you/my-shop 同層,/Users/you 則是上層。同層情況讓 my-shop 位於工作樹外,上層包含它,但沒有以該專案為根目錄。
最直接的解決方式是從專案資料夾直接啟動 Claude。關閉目前的工作階段,在終端機中切換到正確的資料夾,再從該處啟動 Claude:
# 將示意路徑換成實際專案根目錄。
cd /Users/you/my-shop
claude
現在 my-shop 就是工作資料夾,所有專案檔案都會進入視野。在 VS Code 之類的編輯器中也遵循相同原則:開啟包含專案的資料夾。不要開啟上一層資料夾,也不要開啟整個磁碟。你開啟的資料夾,決定了 Claude 認定的工作目錄。
如果重新啟動不方便——例如你已經在這個工作階段中提供 Claude 背景資訊,不想失去它——也可以在執行期間新增或切換資料夾。接下來兩個章節會說明這些方式。
如何讓 Claude Code 查看相鄰資料夾中的檔案?
重點摘要
不必重新啟動工作階段,就能在聊天中直接使用 /add-dir 命令加入所需資料夾:輸入 /add-dir 和資料夾路徑,Claude 就能像存取主要資料夾中的檔案一樣存取其中的檔案。若要在 Claude 啟動時就開放存取,請在 claude 命令中加入帶有路徑的 --add-dir 旗標。如果你希望每次都自動開啟某個資料夾,請在設定的 additionalDirectories 鍵中加入該資料夾。這三種方式都能讓 Claude 讀取新增資料夾中的檔案,而不必逐一確認。
有時候,專案不只放在一個資料夾裡。程式碼放在一處,圖片或文字放在相鄰資料夾,共用元件則放在附近的另一處。每次都在不同資料夾重新啟動 Claude 很不方便。比較好的做法是在保留主要資料夾為工作目錄的同時,授予 Claude 存取所需資料夾的權限。
最簡單的方法是在目前的工作階段中直接輸入以下命令:
/add-dir ../assets
輸入 /add-dir 和資料夾路徑後,Claude 就能立即存取其中的檔案,權限與主要資料夾中的檔案相同。它不會再次詢問許可,因為新增的資料夾遵循與工作目錄相同的規則。
額外目錄中的檔案遵循與主要工作目錄相同的存取規則:讀取時不會詢問。
如果你事先就知道會使用多個資料夾,可以在 Claude 啟動時就開放存取。使用相同路徑,但加上旗標:
claude --add-dir ../assets
如果你在同一個專案中總是需要使用相鄰資料夾,就不必每次手動加入。settings.json 設定檔中有一個 additionalDirectories 鍵。將路徑列在其中,Claude 每次啟動時就會自動開啟這些資料夾:
{
"permissions": {
"additionalDirectories": ["../assets", "../shared"]
}
}
Windows 使用者要注意一點:不能使用 \\server\shared 這類路徑加入網路資料夾,Claude 不接受這種路徑。請將網路資料夾掛載為使用磁碟機代號的獨立磁碟,再透過 --add-dir 傳入該磁碟機代號。一般的本機資料夾沒有這個問題。
如果只加入相鄰資料夾還不夠,而你需要完全切換到另一個資料夾,則有另一個專用命令,以下會介紹。
如何在工作階段中將 Claude Code 切換到另一個資料夾?
重點摘要
/cd 命令可以在不關閉工作階段的情況下變更主要工作資料夾:輸入 /cd 和路徑,Claude 就會在保留對話記錄的情況下移到該處。移動時,它會載入新資料夾中的 CLAUDE.md 指示檔;如果你以前沒有在那裡工作過,還會請你確認是否信任該資料夾。/add-dir 是在主要資料夾旁新增一個資料夾,/cd 則是將整個工作目錄移到新位置。此命令從版本 2.1.169 起提供。
有時候,加入相鄰資料夾還不夠,你需要切換到另一個專案,但不想失去已建立的對話脈絡。這時請使用 /cd 命令:
/cd ../another-project
之後,Claude 會將新資料夾視為工作目錄。你會保留完整的對話記錄,但 Claude 查找檔案的參照位置會改為新位置。如果新資料夾中有 CLAUDE.md 指示檔,Claude 也會載入它,也就是會遵循新專案的規則。
有一點關於信任的事項要留意:如果你以前沒有在這個資料夾中工作過,移動到該處時 Claude 會詢問你是否信任它。這是一項安全防護:陌生資料夾中的指示檔可能包含任何內容,因此 Claude 會先確認這是你的專案。確認後就可以繼續。
這兩個命令的差異很簡單。/add-dir 保留主要資料夾作為工作目錄,並在旁邊額外開啟一個資料夾,適合專案各部分散落在不同位置的情況。/cd 則將整個工作目錄移到新位置,適合切換到另一個專案。/cd 命令是在版本 2.1.169 中加入的。如果找不到這個命令,請更新 Claude Code。我另有一篇指南介紹如何更新 Claude Code。
Claude Code 能看到檔案只是基礎。穩定的結果不會只靠檔案存取權而來,還取決於檔案的內容,以及你如何為專案建立脈絡。
為什麼 Claude Code 看不到子資料夾中的檔案?
重點摘要
子資料夾和相鄰資料夾的運作方式不同:Claude 可以存取子資料夾,但其中的內容不會立刻進入它的脈絡。Claude 會在需要時查看子資料夾,並載入指示檔和其中內容,不會在啟動時就全部載入。因此,深層子資料夾中的檔案可能會「看不見」,直到你直接提供它的路徑。解決方法很簡單:提供檔案的完整路徑,或先請 Claude 讀取檔案,它就會出現在脈絡中。
要注意不要混淆兩種不同情況。相鄰資料夾(專案之外的資料夾)在你加入之前完全無法存取。專案內的子資料夾則不同:Claude 可以存取,但一開始不會將其中內容放在脈絡裡。
運作方式如下:Claude 啟動時會載入專案較上層的內容。它會在需要讀取子資料夾檔案並查看該處時,才按需載入那些檔案。官方文件描述了指示檔的這種行為,而一般脈絡也遵循相同邏輯。
Claude 會探索工作目錄的子資料夾中的檔案。它不會在啟動時載入這些檔案,而是在讀取子資料夾中的檔案時才將它們載入。
簡單來說,深層子資料夾中的檔案並沒有消失,而且完全可以存取。Claude 只是還沒去查看,所以尚未記住它。這就解釋了為什麼即使檔案明明存在且可以存取,Claude 還是會讓人覺得「看不到」它。
一行指示就能解決。直接提供檔案路徑,例如 src/components/header.jsx,或直接請 Claude 先讀取檔案。它一查看,檔案就會進入脈絡,你便能照常處理。不需要變更任何設定。
檔案為什麼會從 @ 選單消失?這和 .gitignore 有什麼關係?
重點摘要
輸入 @ 符號時,Claude Code 會顯示可供選擇的檔案清單。預設情況下,這個清單會隱藏 .gitignore 中列出的內容,例如服務資料夾、環境檔案和建置輸出。因此,檔案可能就在正確的位置,卻沒有出現在 @ 選單中。respectGitignore 設定會控制這項行為:預設為開啟,會隱藏這些檔案。將它設為 false,選單就會一併顯示 .gitignore 中列出的檔案。你也可以隨時手動輸入這類檔案的路徑。
另一個常讓人以為 Claude「弄丟」檔案的原因,是檔案選擇器。輸入 @ 後會出現清單,方便你選取檔案,不必輸入完整路徑。但清單不會顯示所有內容。
預設情況下,@ 選單會隱藏 .gitignore 中列出的檔案。這個檔案用來指定哪些內容不應加入共用儲存庫,例如服務資料夾、含有密碼和環境設定的檔案,以及已完成的建置輸出。這樣設計有其道理:通常你不需要手動處理這些檔案,因此將它們列出只會讓清單更雜亂。但有時你確實需要其中某個檔案,它卻沒有出現在選單裡。
這項行為由 respectGitignore 設定控制。它預設為開啟,因此 .gitignore 中的檔案不會出現在選單中。如果想查看這些檔案,請將它切換為 false:
{
"respectGitignore": false
}
你也可以不編輯檔案,直接在 Claude Code 中使用 /config 命令完成相同設定。切換選項名為「Respect .gitignore in file picker」。取消勾選後,隱藏的檔案就會重新出現在選單中。
有一點要特別注意:respectGitignore 只影響 @ 選單,與檔案存取權無關。即使檔案在清單中被隱藏,你仍然可以手動輸入它的路徑,Claude 也會讀取它。選單只是便利功能,不會設定存取範圍。
Claude Code 無法讀取特定檔案時該怎麼辦?
重點摘要
有時資料夾正確,但 Claude 仍拒絕讀取某個特定檔案。通常是設定中的限制所造成。settings.json 檔案可能包含禁止讀取特定檔案的 deny 規則,最常見的是含有金鑰和密碼的 .env 檔案。另外也有一項設定,可全面禁止讀取工作資料夾之外的內容。請檢查 settings.json 中這兩處設定。也請記得,限制讀取 .env 是預設的安全防護;除非有充分理由,否則不應移除。
如果資料夾確定正確、存取權也已開放,但 Claude 仍不讀取某個特定檔案,最可能是該檔案受到限制。限制位於 settings.json 設定檔中,分為兩種。
第一種是針對特定檔案的限制。在設定中,這類限制稱為 deny 規則,最常套用在 .env 檔案上,因為金鑰和密碼通常存放在其中:
{
"permissions": {
"deny": [
"Read(./.env)",
"Read(./.env.*)"
]
}
}
這類規則會禁止 Claude 讀取指定的檔案,而且這是刻意設計的。金鑰和密碼不應出現在與模型的對話中,所以 .env 預設會受到保護。如果你發現 Claude 不會讀取 .env 或其他含有祕密資訊的類似檔案,這是預期行為;除非有充分理由,否則不應移除此限制。
第二種是對工作資料夾以外所有內容的全面限制。這項限制由 blockReadsOutsideWorkingDirectories 設定控制。啟用後,即使你直接嘗試開啟,Claude 也會拒絕讀取工作目錄之外的任何檔案。如果它設為 true,而你需要使用外部檔案,可以透過 /add-dir 加入該檔案所在的資料夾,或關閉這項限制:
{
"permissions": {
"blockReadsOutsideWorkingDirectories": false
}
}
這項設定是在版本 2.1.257 中加入的。如果你已嘗試其他方法,但檔案仍然無法存取,請一併檢查 deny 和 blockReadsOutsideWorkingDirectories。
Claude Code 看不到檔案時,應該從哪裡開始?
重點摘要
先檢查資料夾:請 Claude 使用 pwd 顯示目前目錄,並與專案位置比較。如果兩者不一致,請從專案資料夾重新啟動 Claude,或使用 /cd 移到該處。需要相鄰資料夾中的檔案?用 /add-dir 開啟它。看不到子資料夾中的檔案?直接提供路徑。檔案沒有出現在 @ 選單中?問題與 .gitignore 有關,請切換 respectGitignore。只有一個檔案被鎖定?檢查 settings.json 中的 deny 限制。
以下是可以按順序執行的簡短步驟。
- 檢查工作資料夾:請 Claude 使用
pwd顯示目前目錄,並與專案位置比較。 - 如果資料夾不同,請從正確的資料夾重新啟動 Claude(執行
cd project,再執行claude),或使用/cd命令移到該處。 - 需要相鄰資料夾中的檔案?使用
/add-dir,或在啟動 Claude 時使用--add-dir旗標加入該資料夾。 - 子資料夾中的檔案尚未進入脈絡?直接提供路徑,或請 Claude 讀取該檔案。
- 檔案沒有出現在
@選單中?這和.gitignore有關。將respectGitignore設為false,或在/config中取消勾選。 - 某個特定檔案遭到鎖定?檢查
settings.json中的deny和blockReadsOutsideWorkingDirectories規則。
十個案例中有九個,只要執行第一步就能解決:Claude 是從錯誤的資料夾啟動的。檔案存取是基礎,但不會替你建構專案。我已在Claude Code 中的 Second Brain指南中,詳細說明如何為 Claude 建立脈絡,讓它記住整個專案,不致失去思路。
來源
- Claude Code - 設定權限,官方文件 - 預設工作目錄、--add-dir 和 /add-dir、/cd、additionalDirectories、不經提示即可存取、網路路徑
- Claude Code - 管理 Claude 的記憶,官方文件 - 按需載入子資料夾檔案、CLAUDE.md、匯入
- Claude Code - 設定參考,官方文件 - respectGitignore 與 @ 選單、blockReadsOutsideWorkingDirectories 與版本 2.1.257
- Claude Code - 設定,官方文件 - deny 規則與禁止讀取 .env
如需更多工具使用資料,請參閱 Ailoot 文件。
更多詳情
常見問題:Claude Code 看不到專案檔案:原因與處理方式(2026)
從家目錄啟動,與從旁邊另一個專案啟動有何不同?
家目錄下的專案是子目錄,從家目錄啟動不會因此把它排除,只會範圍過大。工作目錄旁的同層專案則在該樹之外;診斷前先比較完整路徑。
能存取子資料夾,就代表檔案已在上下文嗎?
不是。請提供路徑並要求讀取,若拒絕再查適用權限。未出現在選取選單,與實際讀取遭拒,是不同問題。