# Claude Code มองไม่เห็นไฟล์โปรเจกต์: สาเหตุและวิธีแก้ในปี 2026

> เหตุใด Claude Code จึงหาไฟล์โปรเจกต์ไม่พบ: อาจเปิดใช้งานจากโฟลเดอร์ผิด ไฟล์อยู่ในโฟลเดอร์ย่อย หรืออยู่ใน .gitignore วิธีให้สิทธิ์เข้าถึงด้วย add-dir, cd และการตั้งค่า

Source: https://ailoot.ai/blog/th/claude-code-cant-see-project-files/
Canonical: https://ailoot.ai/blog/th/claude-code-cant-see-project-files/
Language: th
Publisher: Ailoot (https://ailoot.ai/)
Translation: guide-199
Revision: sha256-150ef9b737ca5541e7589ac1a6ba6aa15d50dfb373c95c9cc8b6f5f2f6244809


ภาพที่คุ้นเคย: คุณขอให้ Claude Code แก้ไฟล์ แต่ Claude ตอบกลับว่าไม่มีไฟล์ดังกล่าว หรือไม่ก็แก้บางอย่างที่ต่างไปจากที่คุณตั้งใจอย่างสิ้นเชิงโดยไม่บอกกล่าว คุณเปิดโฟลเดอร์ดูแล้ว — ไฟล์อยู่ตรงนั้น ในตำแหน่งที่ควรอยู่ทุกประการ แต่ดูเหมือน Claude จะไม่เห็นมัน

เกือบทุกครั้งมีสาเหตุเดียว และไม่มีอะไรเสียหาย Claude ไม่ได้เห็นไฟล์ทั้งหมดในคอมพิวเตอร์ แต่เข้าถึงได้เฉพาะโฟลเดอร์ที่คุณเปิดใช้งาน Claude เท่านั้น การเริ่มในโฟลเดอร์ข้างเคียงหรือต่ำกว่ารูทโปรเจกต์อาจทำให้ไฟล์ที่ต้องใช้อยู่นอก working tree แต่เริ่มจากโฟลเดอร์แม่ เช่น home จะให้ขอบเขตกว้างขึ้น ไม่ได้ทำให้โปรเจกต์ลูกเข้าถึงไม่ได้ ฉันจะอธิบายทีละขั้นว่าทำไมจึงเป็นเช่นนี้ และจะให้ Claude เข้าถึงไฟล์ที่ต้องใช้ได้อย่างไร ฉันยกคำสั่งและการตั้งค่าจากเอกสารทางการของ Claude Code โดยตรง ซึ่งฉันตรวจสอบเมื่อต้นเดือนกันยายน 2026

มีเนื้อหาเพิ่มเติมเกี่ยวกับการกำหนดค่าเครื่องมือใน[เอกสารของ Ailoot](https://ailoot.ai/docs/)

<div class="aside" data-semantic="ailoot-cta" role="note" aria-label="คู่มือ Ailoot">

[คู่มือ Ailoot](https://ailoot.ai/docs/)

</div>

## เหตุใด Claude Code จึงมองไม่เห็นไฟล์โปรเจกต์บางไฟล์?

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="ประเด็นสำคัญ">

ประเด็นสำคัญ

Claude Code อ่านไฟล์ได้ไม่ใช่จากทั้งไดรฟ์ แต่เฉพาะจากโฟลเดอร์ที่คุณเปิดใช้งาน Claude โฟลเดอร์นี้เรียกว่าไดเรกทอรีทำงาน Claude มองเห็นและอ่านทุกอย่างภายในโฟลเดอร์นี้และโฟลเดอร์ย่อยได้โดยไม่ต้องถาม ส่วนทุกอย่างที่อยู่นอกโฟลเดอร์นี้ — ในโฟลเดอร์ข้างเคียง สูงขึ้นไปหนึ่งระดับ หรืออยู่ในไดรฟ์อื่น — จะเข้าไม่ถึงจนกว่าคุณจะให้สิทธิ์เอง ดังนั้นสาเหตุที่พบบ่อยที่สุดที่ไฟล์ “มองไม่เห็น” จึงเรียบง่ายมาก: คุณเปิด Claude จากโฟลเดอร์อื่น ก่อนอื่นให้ตรวจสอบว่าคุณเปิด Claude จากที่ใดกันแน่

</div>

ตามค่าเริ่มต้น Claude Code จะทำงานกับโฟลเดอร์เดียว นั่นคือโฟลเดอร์ที่คุณพิมพ์คำสั่ง `claude` และเริ่มเซสชัน เอกสารระบุเรื่องนี้ไว้โดยตรง

<figure>
<blockquote>
<p>ตามค่าเริ่มต้น Claude จะเข้าถึงไฟล์ในโฟลเดอร์ที่คุณเปิดใช้งาน Claude</p>
</blockquote>
<figcaption>— Claude Code Docs, กำหนดสิทธิ์, เอกสารทางการ</figcaption>
</figure>

โฟลเดอร์นี้คือไดเรกทอรีทำงานของ Claude ภายในโฟลเดอร์นี้ Claude อ่านไฟล์ใดก็ได้โดยไม่ต้องถามเพิ่มเติม ไม่ว่าจะเป็นการแก้ไขพรอมป์ต์ ค้นหาโค้ด หรืออ่านไฟล์ที่ระบุ ทุกอย่างทำได้ทันที แต่ทุกอย่างนอกโฟลเดอร์นี้จะเข้าไม่ถึงตามค่าเริ่มต้น ไม่ว่าจะเป็นโฟลเดอร์ข้างเคียง โฟลเดอร์ที่อยู่เหนือขึ้นไปหนึ่งระดับ หรือไดรฟ์อื่น Claude จะไม่ค้นหาที่นั่นจนกว่าคุณจะอนุญาต

โฟลเดอร์ทำงานไม่ตรงกันมีผลได้ เช่น โปรเจกต์อยู่ `/Users/you/my-shop` แต่เริ่ม Claude ที่ `/Users/you/other-project` ซึ่งเป็นโฟลเดอร์ข้างเคียง `index.html` ใน `my-shop` จึงอยู่นอก working tree ส่วนเริ่มจาก `/Users/you` ต่างออกไป เพราะ `my-shop` เป็นลูก ไม่ได้เข้าถึงไม่ได้เพียงเพราะเริ่มจาก home แต่ขอบเขตกว้างเกินที่ตั้งใจ การเข้าถึงโฟลเดอร์ก็ไม่ได้แปลว่าอ่านทุกไฟล์แล้ว

ต่อไปฉันจะแสดงวิธีตรวจสอบและแก้ไข เริ่มจากยืนยันว่า Claude เปิดจากโฟลเดอร์ใด จากนั้นให้สิทธิ์เข้าถึงไฟล์ที่จำเป็นด้วยวิธีต่าง ๆ ตั้งแต่การบอกเพียงครั้งเดียวไปจนถึงการตั้งค่าถาวร

## จะตรวจสอบได้อย่างไรว่า Claude Code เปิดจากโฟลเดอร์ใด?

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="ประเด็นสำคัญ">

ประเด็นสำคัญ

ถาม Claude ว่าอยู่ในโฟลเดอร์ใด หรือขอให้แสดงไดเรกทอรีปัจจุบันด้วยคำสั่ง `pwd` ก็ได้ คำสั่งนี้ใช้ตรวจสอบเท่านั้นและไม่เปลี่ยนแปลงอะไร เปรียบเทียบตำแหน่งที่ Claude แสดงกับตำแหน่งจริงของโปรเจกต์ หากพาธไม่ตรงกัน นั่นคือสาเหตุ: Claude เปิดจากโฟลเดอร์ผิด วิธีแก้ที่เชื่อถือได้ยิ่งกว่าคือปิดเซสชันแล้วเปิด Claude ใหม่จากโฟลเดอร์โปรเจกต์โดยตรง โดยไปที่โฟลเดอร์นั้นในเทอร์มินัลแล้วพิมพ์ `claude`

</div>

ก่อนแก้ไขอะไร ให้แน่ใจก่อนว่าปัญหาอยู่ที่โฟลเดอร์จริง ๆ ตรวจสอบได้ง่าย ๆ ขอให้ Claude ในแชตแสดงไดเรกทอรีที่กำลังใช้อยู่ Claude จะเรียกใช้ `pwd` ซึ่งปลอดภัย เพราะคำสั่งนี้แสดงพาธเท่านั้นและไม่แตะต้องสิ่งใด

```bash
pwd
```

คำตอบแสดงไดเรกทอรีทำงานจริง เทียบกับ path โปรเจกต์เต็ม: `/Users/you/other-project` เป็นโฟลเดอร์ข้างเคียง `/Users/you/my-shop` ส่วน `/Users/you` เป็นแม่ กรณีข้างเคียงทำให้ `my-shop` อยู่นอก working tree กรณีแม่รวมโปรเจกต์แต่ไม่ได้เลือกรูทเฉพาะนั้น

วิธีที่ตรงไปตรงมาที่สุดในการแก้ความไม่ตรงกันนี้ คือเปิด Claude จากโฟลเดอร์โปรเจกต์โดยตรง ปิดเซสชันปัจจุบัน ไปยังโฟลเดอร์ที่ถูกต้องในเทอร์มินัล แล้วเปิด Claude จากที่นั่น:

```bash
# Replace this illustrative path with your actual project root.
cd /Users/you/my-shop
claude
```

ตอนนี้ `my-shop` จะเป็นโฟลเดอร์ทำงาน และไฟล์โปรเจกต์ทั้งหมดจะอยู่ในขอบเขตที่ Claude มองเห็น กฎเดียวกันนี้ใช้กับโปรแกรมแก้ไขโค้ดอย่าง VS Code ด้วย: ให้เปิดโฟลเดอร์ที่มีโปรเจกต์อยู่ ไม่ใช่โฟลเดอร์ที่อยู่เหนือขึ้นไปหนึ่งระดับ และไม่ใช่ทั้งไดรฟ์ โฟลเดอร์ที่คุณเปิดเป็นตัวกำหนดว่า Claude จะถือโฟลเดอร์ใดเป็นไดเรกทอรีทำงาน

หากการเปิดใหม่ไม่สะดวก — เช่น คุณให้บริบทแก่ Claude ไปแล้วในเซสชันนี้และไม่อยากเสียข้อมูลนั้น — คุณเพิ่มหรือสลับโฟลเดอร์ระหว่างเซสชันได้ สองส่วนถัดไปจะอธิบายเรื่องนี้

## จะแสดงไฟล์ในโฟลเดอร์ข้างเคียงให้ Claude Code เห็นได้อย่างไร?

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="ประเด็นสำคัญ">

ประเด็นสำคัญ

เพิ่มโฟลเดอร์ที่ต้องการได้โดยไม่ต้องเริ่มเซสชันใหม่ ด้วยคำสั่ง `/add-dir` ในแชตโดยตรง: พิมพ์ `/add-dir` ตามด้วยพาธของโฟลเดอร์ แล้วไฟล์ในนั้นจะพร้อมใช้งานเช่นเดียวกับไฟล์ในโฟลเดอร์หลัก หากต้องการเปิดสิทธิ์เข้าถึงตั้งแต่เริ่มใช้งาน Claude ให้เพิ่มแฟล็ก `--add-dir` พร้อมพาธในคำสั่ง `claude` และหากต้องการให้เปิดโฟลเดอร์ทุกครั้งโดยอัตโนมัติ ให้เพิ่มโฟลเดอร์นั้นไว้ใต้คีย์ `additionalDirectories` ในการตั้งค่า ทั้งสามวิธีทำให้สามารถอ่านไฟล์ในโฟลเดอร์ที่เพิ่มได้โดยไม่ต้องขอการยืนยันแยกต่างหาก

</div>

บางครั้งโปรเจกต์ไม่ได้อยู่ในโฟลเดอร์เดียว โค้ดอยู่ที่หนึ่ง ส่วนรูปภาพหรือข้อความอยู่ในโฟลเดอร์ข้างเคียง และคอมโพเนนต์ที่ใช้ร่วมกันก็อยู่ใกล้ ๆ อีกที่หนึ่ง การเปิด Claude ใหม่ในแต่ละโฟลเดอร์สลับไปมาเป็นเรื่องไม่สะดวก ควรให้ Claude เข้าถึงโฟลเดอร์ที่ต้องการ โดยยังคงใช้โฟลเดอร์หลักเป็นไดเรกทอรีทำงาน

วิธีที่ง่ายที่สุดคือทำในเซสชันที่กำลังใช้งานโดยตรงด้วยคำสั่ง:

```
/add-dir ../assets
```

พิมพ์ `/add-dir` ตามด้วยพาธของโฟลเดอร์ แล้ว Claude จะเข้าถึงไฟล์ในนั้นได้ทันทีเช่นเดียวกับไฟล์ในโฟลเดอร์หลัก Claude จะไม่ถามขออนุญาตอีก เพราะโฟลเดอร์ที่เพิ่มใช้กฎเดียวกับไดเรกทอรีทำงาน

<figure>
<blockquote>
<p>ไฟล์ในไดเรกทอรีเพิ่มเติมใช้กฎการเข้าถึงเดียวกับไดเรกทอรีทำงานหลัก: อ่านได้โดยไม่ต้องถามยืนยัน</p>
</blockquote>
<figcaption>— Claude Code Docs, กำหนดสิทธิ์, เอกสารทางการ</figcaption>
</figure>

หากทราบล่วงหน้าว่าจะทำงานกับหลายโฟลเดอร์ ให้เปิดสิทธิ์เข้าถึงตั้งแต่ Claude เริ่มทำงาน โดยใช้พาธเดิมแต่เพิ่มแฟล็ก:

```bash
claude --add-dir ../assets
```

และหากต้องใช้โฟลเดอร์ข้างเคียงเดิมในโปรเจกต์เป็นประจำ ก็ไม่จำเป็นต้องเพิ่มด้วยตนเองทุกครั้ง ไฟล์การตั้งค่า `settings.json` มีคีย์ `additionalDirectories` ระบุพาธไว้ แล้ว Claude จะเปิดโฟลเดอร์เหล่านั้นโดยอัตโนมัติทุกครั้งที่เริ่มทำงาน:

```json
{
  "permissions": {
    "additionalDirectories": ["../assets", "../shared"]
  }
}
```

ข้อควรทราบสำหรับ Windows: คุณไม่สามารถเพิ่มโฟลเดอร์เครือข่ายด้วยพาธลักษณะ `\\server\shared` ได้ เพราะ Claude ไม่ยอมรับพาธดังกล่าว ให้เชื่อมต่อโฟลเดอร์นั้นเป็นไดรฟ์แยกที่มีอักษรกำกับ แล้วส่งอักษรไดรฟ์นั้นด้วย `--add-dir` โฟลเดอร์ในเครื่องทั่วไปไม่มีปัญหานี้

หากการเพิ่มโฟลเดอร์ข้างเคียงยังไม่พอ และคุณต้องย้ายไปยังโฟลเดอร์อื่นทั้งหมดล่ะ? มีคำสั่งแยกสำหรับเรื่องนี้ ซึ่งจะอธิบายด้านล่าง

## จะเปลี่ยน Claude Code ไปยังโฟลเดอร์อื่นระหว่างเซสชันได้อย่างไร?

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="ประเด็นสำคัญ">

ประเด็นสำคัญ

คำสั่ง `/cd` เปลี่ยนโฟลเดอร์ทำงานหลักโดยไม่ปิดเซสชัน: พิมพ์ `/cd` ตามด้วยพาธ แล้ว Claude จะย้ายไปที่นั่นโดยเก็บประวัติการสนทนาไว้ ระหว่างการย้าย Claude จะโหลดไฟล์คำสั่ง `CLAUDE.md` จากโฟลเดอร์ใหม่ และหากคุณยังไม่เคยทำงานในโฟลเดอร์นั้น Claude จะขอให้ยืนยันว่าคุณเชื่อถือโฟลเดอร์นั้น ความแตกต่างจาก `/add-dir` คือ `/add-dir` เปิดโฟลเดอร์ข้างเคียงเพิ่มจากโฟลเดอร์หลัก ส่วน `/cd` ย้ายไดเรกทอรีทำงานทั้งหมดไปยังตำแหน่งใหม่ คำสั่งนี้ใช้งานได้ตั้งแต่เวอร์ชัน 2.1.169

</div>

บางครั้งการเพิ่มโฟลเดอร์ข้างเคียงยังไม่พอ คุณจำเป็นต้องเปลี่ยนโฟลเดอร์หลักและย้ายไปยังโปรเจกต์อื่นโดยไม่สูญเสียบริบทที่สะสมไว้ ใช้คำสั่ง `/cd`:

```
/cd ../another-project
```

หลังจากนั้น Claude จะถือว่าโฟลเดอร์ใหม่เป็นไดเรกทอรีทำงานของตน คุณยังคงมีประวัติการสนทนาทั้งหมด แต่ตำแหน่งอ้างอิงที่ Claude ใช้กับไฟล์จะเปลี่ยนไปยังตำแหน่งใหม่ Claude ยังโหลดไฟล์คำสั่ง `CLAUDE.md` จากโฟลเดอร์ใหม่ด้วย หากมีไฟล์ดังกล่าวอยู่ กล่าวคือ Claude จะปรับตามกฎของโปรเจกต์ใหม่

มีเรื่องหนึ่งที่ควรรู้เกี่ยวกับความน่าเชื่อถือ: หากคุณยังไม่เคยทำงานในโฟลเดอร์นี้ Claude จะถามว่าคุณเชื่อถือโฟลเดอร์นี้หรือไม่เมื่อย้ายไป นี่เป็นมาตรการป้องกัน เพราะไฟล์คำสั่งในโฟลเดอร์ที่ไม่คุ้นเคยอาจมีเนื้อหาอะไรก็ได้ Claude จึงตรวจสอบก่อนว่านี่เป็นโปรเจกต์ของคุณ ยืนยันแล้วก็ทำงานต่อได้

ความแตกต่างระหว่างสองคำสั่งนี้เข้าใจง่าย `/add-dir` คงโฟลเดอร์หลักไว้เป็นไดเรกทอรีทำงาน แล้วเปิดโฟลเดอร์ข้างเคียงเพิ่ม เหมาะเมื่อส่วนต่าง ๆ ของโปรเจกต์กระจายอยู่หลายที่ ส่วน `/cd` ย้ายไดเรกทอรีทำงานทั้งหมดไปยังตำแหน่งใหม่ เหมาะเมื่อเปลี่ยนไปทำงานอีกโปรเจกต์หนึ่ง คำสั่ง `/cd` เริ่มใช้ในเวอร์ชัน 2.1.169 ดังนั้นหากไม่มีคำสั่งนี้ ให้ปรับปรุง Claude Code ฉันมีคู่มือแยกเกี่ยวกับ[วิธีอัปเดต Claude Code](https://ailoot.ai/blog/th/update-claude-code/)

การที่ Claude Code มองเห็นไฟล์เป็นเพียงพื้นฐาน ผลลัพธ์ที่สม่ำเสมอไม่ได้มาจากการเข้าถึงไฟล์เพียงอย่างเดียว แต่ขึ้นอยู่กับสิ่งที่อยู่ในไฟล์และวิธีสร้างบริบทให้โปรเจกต์

<div class="aside" data-semantic="ailoot-cta" role="note" aria-label="คู่มือ Ailoot">

[คู่มือ Ailoot](https://ailoot.ai/docs/)

</div>

## เหตุใด Claude Code จึงมองไม่เห็นไฟล์ในโฟลเดอร์ย่อย?

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="ประเด็นสำคัญ">

ประเด็นสำคัญ

โฟลเดอร์ย่อยทำงานต่างจากโฟลเดอร์ข้างเคียง: Claude เข้าถึงโฟลเดอร์ย่อยได้ แต่เนื้อหาในนั้นจะไม่เข้าสู่บริบทของ Claude ทันที Claude โหลดไฟล์คำสั่งและเนื้อหาในโฟลเดอร์ย่อยตามต้องการ เมื่อเข้าไปค้นหา ไม่ได้โหลดทั้งหมดตอนเริ่มต้น ดังนั้นไฟล์ที่อยู่ลึกลงไปในโฟลเดอร์ย่อยอาจดูเหมือน “มองไม่เห็น” จนกว่าคุณจะระบุพาธให้ Claude โดยตรง วิธีแก้เรียบง่ายมาก: ระบุพาธที่แน่นอนของไฟล์ให้ Claude หรือขอให้อ่านไฟล์ก่อน แล้ว Claude ก็จะเห็นไฟล์นั้น

</div>

สิ่งสำคัญคืออย่าสับสนระหว่างสองกรณี โฟลเดอร์ข้างเคียง (ที่อยู่นอกโปรเจกต์) จะเข้าไม่ถึงโดยสิ้นเชิงจนกว่าคุณจะเพิ่ม ส่วนโฟลเดอร์ย่อยภายในโปรเจกต์แตกต่างออกไป: Claude เข้าถึงได้ แต่ไม่ได้จดจำเนื้อหาในโฟลเดอร์ไว้ตั้งแต่เริ่มต้น

การทำงานเป็นดังนี้ เมื่อ Claude เริ่มทำงาน จะโหลดสิ่งที่อยู่ในระดับบนสุดของโปรเจกต์ ส่วนไฟล์จากโฟลเดอร์ย่อยจะโหลดตามต้องการ เมื่อ Claude เข้าไปอ่านบางอย่างในนั้น เอกสารอธิบายพฤติกรรมนี้สำหรับไฟล์คำสั่ง และหลักการเดียวกันนี้ใช้กับบริบทโดยทั่วไปด้วย

<figure>
<blockquote>
<p>Claude ค้นพบไฟล์ในโฟลเดอร์ย่อยของไดเรกทอรีทำงาน แทนที่จะโหลดไฟล์เหล่านั้นตอนเริ่มทำงาน Claude จะดึงเข้ามาเมื่ออ่านไฟล์ในโฟลเดอร์ย่อยเหล่านั้น</p>
</blockquote>
<figcaption>— Claude Code Docs, จัดการหน่วยความจำของ Claude, เอกสารทางการ</figcaption>
</figure>

พูดง่าย ๆ คือ ไฟล์ในโฟลเดอร์ย่อยที่อยู่ลึกไม่ได้หายไปไหน และยังเข้าถึงได้เต็มที่ Claude แค่ยังจำไม่ได้เพราะยังไม่ได้เข้าไปดู นี่จึงเป็นเหตุผลที่ทำให้รู้สึกเหมือน Claude “มองไม่เห็น” ไฟล์ ทั้งที่ไฟล์อยู่ตรงนั้นและเข้าถึงได้

แก้ได้ในบรรทัดเดียว ระบุพาธของไฟล์ให้ Claude โดยตรง เช่น `src/components/header.jsx` หรือขอให้ Claude อ่านไฟล์ก่อน ทันทีที่ Claude เข้าไปดู ไฟล์จะเข้าสู่บริบท และคุณก็ทำงานกับไฟล์ได้ตามปกติ ไม่จำเป็นต้องเปลี่ยนการตั้งค่าใด ๆ

## ไฟล์หายไปจากเมนู @ ตรงไหน และ .gitignore เกี่ยวข้องอย่างไร?

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="ประเด็นสำคัญ">

ประเด็นสำคัญ

เมื่อพิมพ์เครื่องหมาย `@` Claude Code จะแสดงรายการไฟล์ให้เลือก ตามค่าเริ่มต้น รายการนี้ซ่อนไฟล์ทุกอย่างที่ระบุไว้ใน `.gitignore` เช่น โฟลเดอร์สำหรับระบบ ไฟล์สภาพแวดล้อม และผลลัพธ์จากการ build ดังนั้นไฟล์อาจอยู่ในตำแหน่งที่ควรอยู่ แต่ไม่ปรากฏในเมนู `@` การตั้งค่า `respectGitignore` เป็นตัวควบคุมเรื่องนี้ โดยเปิดใช้งานตามค่าเริ่มต้นและซ่อนไฟล์เหล่านั้น ตั้งค่าเป็น `false` แล้วเมนูจะแสดงไฟล์ที่อยู่ใน `.gitignore` ด้วย คุณสามารถพิมพ์พาธของไฟล์เหล่านี้เองได้ทุกเมื่อ

</div>

อีกสาเหตุที่พบบ่อยซึ่งทำให้คิดว่า Claude “ทำไฟล์หาย” คือเครื่องมือเลือกไฟล์ เมื่อพิมพ์ `@` รายการจะปรากฏขึ้น ช่วยให้เลือกไฟล์ได้สะดวกโดยไม่ต้องพิมพ์พาธเต็ม แต่รายการนี้ไม่ได้แสดงทุกอย่าง

ตามค่าเริ่มต้น เมนู `@` ซ่อนไฟล์ที่ระบุไว้ใน `.gitignore` ไฟล์นี้กำหนดสิ่งที่ไม่ควรเพิ่มลงใน repository ที่ใช้ร่วมกัน เช่น โฟลเดอร์สำหรับระบบ ไฟล์ที่มีรหัสผ่านและการตั้งค่าสภาพแวดล้อม รวมถึงผลลัพธ์จากการ build ที่เสร็จแล้ว เหตุผลชัดเจน: โดยทั่วไปไม่จำเป็นต้องทำงานกับไฟล์เหล่านี้ด้วยตนเอง การแสดงไฟล์เหล่านี้จึงมีแต่ทำให้รายการรก แต่บางครั้งคุณจำเป็นต้องใช้ไฟล์เหล่านั้นและกลับไม่พบในเมนู

การตั้งค่า `respectGitignore` เป็นตัวควบคุมเรื่องนี้ โดยเปิดใช้งานตามค่าเริ่มต้น ไฟล์จาก `.gitignore` จึงไม่ปรากฏในเมนู หากต้องการให้แสดง ให้เปลี่ยนเป็น `false`:

```json
{
  "respectGitignore": false
}
```

คุณทำแบบเดียวกันได้โดยไม่ต้องแก้ไฟล์ ด้วยคำสั่ง `/config` ใน Claude Code สวิตช์นั้นมีชื่อว่า “Respect .gitignore in file picker.” ยกเลิกการเลือก แล้วไฟล์ที่ซ่อนอยู่ก็จะกลับมาแสดงในเมนู

ข้อควรทราบสำคัญ: `respectGitignore` มีผลเฉพาะกับเมนู `@` และไม่เกี่ยวข้องกับการเข้าถึงไฟล์ แม้ไฟล์จะถูกซ่อนจากรายการ คุณก็พิมพ์พาธของไฟล์เองได้ทุกเมื่อ แล้ว Claude จะอ่านไฟล์นั้น เมนูนี้เป็นเพียงเครื่องมืออำนวยความสะดวก ไม่ได้กำหนดขอบเขตการเข้าถึง

## ควรทำอย่างไรหาก Claude Code อ่านไฟล์บางไฟล์ไม่ได้?

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="ประเด็นสำคัญ">

ประเด็นสำคัญ

บางครั้งโฟลเดอร์ถูกต้องแล้ว แต่ Claude ยังปฏิเสธที่จะอ่านไฟล์ใดไฟล์หนึ่ง โดยทั่วไปสาเหตุมาจากข้อจำกัดในการตั้งค่า ไฟล์ `settings.json` อาจมีกฎ `deny` ที่บล็อกการอ่านไฟล์บางรายการ ซึ่งมักเป็นไฟล์ `.env` ที่มีคีย์และรหัสผ่าน นอกจากนี้ยังมีการตั้งค่าที่บล็อกการอ่านทุกอย่างนอกโฟลเดอร์ทำงาน ตรวจสอบทั้งสองจุดใน `settings.json` และจำไว้ว่า ข้อจำกัดสำหรับ `.env` เป็นมาตรการป้องกันที่ตั้งไว้เป็นค่าเริ่มต้น จึงไม่ควรนำออกโดยไม่มีเหตุผลที่ดี

</div>

หากแน่ใจว่าโฟลเดอร์ถูกต้องและเปิดสิทธิ์เข้าถึงแล้ว แต่ Claude ยังไม่ยอมอ่านไฟล์ใดไฟล์หนึ่ง ก็มีแนวโน้มสูงว่าไฟล์นั้นถูกจำกัดสิทธิ์ ข้อจำกัดมีอยู่สองชนิดในไฟล์การตั้งค่า `settings.json`

ชนิดแรกคือข้อจำกัดเฉพาะเจาะจงสำหรับไฟล์บางรายการ ในการตั้งค่า ข้อจำกัดเหล่านี้คือกฎ `deny` และมักใช้กับไฟล์ `.env` ซึ่งเก็บคีย์และรหัสผ่านไว้:

```json
{
  "permissions": {
    "deny": [
      "Read(./.env)",
      "Read(./.env.*)"
    ]
  }
}
```

กฎลักษณะนี้บล็อกไม่ให้ Claude อ่านไฟล์ที่ระบุไว้ ซึ่งเป็นไปโดยตั้งใจ คีย์และรหัสผ่านไม่ควรไปอยู่ในการสนทนากับโมเดล ดังนั้น `.env` จึงถูกจำกัดไว้ตามค่าเริ่มต้น หากพบว่า Claude ไม่อ่าน `.env` หรือไฟล์คล้ายกันที่มีข้อมูลลับ นั่นเป็นการทำงานตามที่ออกแบบไว้ และไม่ควรนำข้อจำกัดนี้ออกโดยไม่มีเหตุผลอันสมควร

ชนิดที่สองคือข้อจำกัดทั่วไปสำหรับทุกสิ่งที่อยู่นอกโฟลเดอร์ทำงาน การตั้งค่า `blockReadsOutsideWorkingDirectories` เป็นตัวควบคุมเรื่องนี้ เมื่อเปิดใช้งาน Claude จะปฏิเสธการอ่านไฟล์ใด ๆ นอกไดเรกทอรีทำงาน แม้คุณจะพยายามเปิดไฟล์นั้นโดยตรง หากตั้งค่าเป็น `true` และต้องการไฟล์ภายนอก ให้เพิ่มโฟลเดอร์ของไฟล์นั้นด้วย `/add-dir` หรือปิดข้อจำกัด:

```json
{
  "permissions": {
    "blockReadsOutsideWorkingDirectories": false
  }
}
```

การตั้งค่านี้เริ่มใช้ในเวอร์ชัน 2.1.257 หากลองทุกวิธีแล้วแต่ไฟล์ยังเข้าไม่ถึง ก็ควรตรวจสอบทั้ง `deny` และ `blockReadsOutsideWorkingDirectories`

## ควรเริ่มจากตรงไหนหาก Claude Code มองไม่เห็นไฟล์?

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="ประเด็นสำคัญ">

ประเด็นสำคัญ

เริ่มจากตรวจสอบโฟลเดอร์: ขอให้ Claude แสดงไดเรกทอรีปัจจุบันด้วย `pwd` แล้วเปรียบเทียบกับตำแหน่งของโปรเจกต์ หากไม่ตรงกัน ให้เปิด Claude ใหม่จากโฟลเดอร์โปรเจกต์หรือย้ายไปที่นั่นด้วย `/cd` ต้องการไฟล์จากโฟลเดอร์ข้างเคียงใช่ไหม? เปิดสิทธิ์ด้วย `/add-dir` มองไม่เห็นไฟล์ในโฟลเดอร์ย่อยใช่ไหม? ระบุพาธให้ Claude โดยตรง ไฟล์ไม่ปรากฏในเมนู `@` ใช่ไหม? เกี่ยวข้องกับ `.gitignore` — เปลี่ยน `respectGitignore` ไฟล์เดียวถูกล็อกใช่ไหม? ตรวจหาข้อจำกัด `deny` ใน `settings.json`

</div>

นี่คือแผนสั้น ๆ ที่ทำตามได้จากข้อแรกไปจนถึงข้อสุดท้าย

1.  ตรวจสอบโฟลเดอร์ทำงาน: ขอให้ Claude แสดงไดเรกทอรีปัจจุบันด้วย `pwd` แล้วเปรียบเทียบกับตำแหน่งของโปรเจกต์
2.  หากโฟลเดอร์ไม่ตรงกัน ให้เปิด Claude ใหม่จากโฟลเดอร์ที่ถูกต้อง (`cd project` แล้วตามด้วย `claude`) หรือย้ายไปที่นั่นด้วยคำสั่ง `/cd`
3.  ต้องการไฟล์จากโฟลเดอร์ข้างเคียงใช่ไหม? เพิ่มโฟลเดอร์นั้นด้วย `/add-dir` หรือแฟล็ก `--add-dir` ตอนเปิด Claude
4.  ไฟล์ในโฟลเดอร์ย่อยไม่อยู่ในบริบทใช่ไหม? ระบุพาธให้ Claude โดยตรงหรือขอให้อ่านไฟล์
5.  ไฟล์ไม่ปรากฏในเมนู `@` ใช่ไหม? เป็นเพราะ `.gitignore` ตั้งค่า `respectGitignore` เป็น `false` หรือยกเลิกการเลือกช่องใน `/config`
6.  ไฟล์หนึ่งไฟล์ถูกล็อกใช่ไหม? ตรวจสอบกฎ `deny` และ `blockReadsOutsideWorkingDirectories` ใน `settings.json`

เก้าในสิบกรณี ขั้นตอนแรกก็แก้ปัญหาได้ทั้งหมด: Claude เปิดจากโฟลเดอร์ผิด การเข้าถึงไฟล์เป็นพื้นฐาน แต่ไม่ได้สร้างโปรเจกต์ให้คุณ ฉันอธิบายโดยละเอียดแล้วว่าจะสร้างบริบทรอบ Claude อย่างไร เพื่อให้ Claude จดจำโปรเจกต์ทั้งหมดและไม่หลุดประเด็น ในคู่มือของฉันเรื่อง [Second Brain ใน Claude Code](https://ailoot.ai/blog/th/claude-code-second-brain/)

<div class="section" role="doc-bibliography" aria-label="แหล่งที่มา">

### แหล่งที่มา

- [Claude Code - Configure permissions, เอกสารทางการ](https://docs.claude.com/en/docs/claude-code/permissions) - ไดเรกทอรีทำงานเริ่มต้น, --add-dir และ /add-dir, /cd, additionalDirectories, การเข้าถึงโดยไม่ต้องถาม, พาธเครือข่าย
- [Claude Code - Manage Claude's memory, เอกสารทางการ](https://docs.claude.com/en/docs/claude-code/memory) - การโหลดไฟล์ในโฟลเดอร์ย่อยตามต้องการ, CLAUDE.md, การนำเข้า
- [Claude Code - Settings reference, เอกสารทางการ](https://docs.claude.com/en/docs/claude-code/settings-reference) - respectGitignore และเมนู @,‏ blockReadsOutsideWorkingDirectories และเวอร์ชัน 2.1.257
- [Claude Code - Settings, เอกสารทางการ](https://docs.claude.com/en/docs/claude-code/settings) - กฎ deny และการบล็อกการอ่าน .env

</div>

ดูเนื้อหาเพิ่มเติมเกี่ยวกับการทำงานกับเครื่องมือได้ใน[เอกสารของ Ailoot](https://ailoot.ai/docs/)



<div class="aside" data-semantic="ailoot-cta" role="note" aria-label="คู่มือ Ailoot">

[คู่มือ Ailoot](https://ailoot.ai/docs/)

</div>

<div class="aside" data-semantic="ailoot-cta" role="note" aria-label="ไปที่ Ailoot">

[ไปที่ Ailoot](https://ailoot.ai/)

</div>

## คำถามที่พบบ่อย

### เริ่มจาก home ต่างจากเริ่มในโปรเจกต์ข้างเคียงอย่างไร?

โปรเจกต์ใต้ home เป็นลูก การเริ่มจาก home จึงไม่ทำให้อยู่นอก working tree แต่ให้บริบทกว้างเกินตั้งใจ ส่วนโฟลเดอร์ข้างเคียงของที่ทำงานอยู่นอกขอบเขต เทียบ path เต็มก่อนวินิจฉัยสิทธิ์หาย

### เข้าถึงโฟลเดอร์ลูกได้แปลว่าไฟล์อยู่ในบริบทแล้วหรือไม่?

ไม่ใช่ ให้ path ไฟล์และขอให้อ่าน หากถูกปฏิเสธให้ตรวจสิทธิ์ที่ใช้ ไฟล์ไม่อยู่ในเมนูเลือกกับการอ่านถูกปฏิเสธเป็นคนละปัญหา


## Ailoot · บริษัทและพอร์ตโฟลิโอโครงการของบริษัท

Ailoot อาศัยประสบการณ์การดำเนินงานที่สั่งสม ฐานลูกค้าขนาดใหญ่ บริการที่เสถียร และการติดตาม KPI อย่างต่อเนื่อง

บริษัทและพอร์ตโฟลิโอโครงการของบริษัท: ลูกค้าหลายล้านราย; ยอดขายระดับหลายพันล้านต่อเดือน.

Ailoot นำประสบการณ์การดำเนินงานนี้มาใช้เพื่อให้เข้าถึงฟังก์ชัน AI ผ่าน API ในผลิตภัณฑ์ของลูกค้า เอเจนต์ แอปพลิเคชัน และระบบอัตโนมัติ
