settings.json — ปรับ behavior
settings.json ให้คุณปรับพฤติกรรมของ Claude Code ได้ เช่น สิทธิ์การใช้ tool, hooks, และ environment ต่างๆ
เมื่อเรียนจบบทนี้ คุณจะ…
- เข้าใจว่า settings.json ใช้ทำอะไร
- บอกได้ว่าไฟล์ settings.json มีกี่แบบและอยู่ตรงไหน
- ตั้งค่าอนุญาตให้ใช้ tool พื้นฐานได้

settings.json คืออะไร ทำไมต้องรู้จัก?
ลองนึกภาพว่า Claude Code คือหุ่นยนต์ผู้ช่วยอัจฉริยะของเรา settings.json ก็เปรียบเสมือนแผงควบคุม หรือรีโมตคอนโทรลที่เราใช้ปรับแต่งพฤติกรรมของหุ่นยนต์ตัวนี้แหละครับ
ไฟล์นี้ช่วยให้เรากำหนดได้ว่า Claude Code ควรจะทำอะไรได้บ้าง ทำอะไรไม่ได้บ้าง หรือทำงานอย่างไรในสถานการณ์ต่างๆ เช่น จะให้มันใช้คำสั่ง npm หรือ git ได้เลยโดยไม่ต้องถามซ้ำๆ ไหม? หรือจะให้มันรู้จักตัวแปรสภาพแวดล้อม (environment variables) บางอย่างที่เราตั้งไว้ไหม? การตั้งค่าเหล่านี้ช่วยให้ Claude Code ทำงานได้ตรงใจเรา ปลอดภัยขึ้น และมีประสิทธิภาพมากขึ้นครับ
settings.json จะช่วยให้ Claude Code ทำงานได้ฉลาดและปลอดภัยขึ้นตามความต้องการของเรา3 ระดับของ settings.json: ตั้งค่าที่ไหน มีผลยังไง?
เหมือนกับการมีกฎบ้าน กฎห้อง และกฎส่วนตัว settings.json ก็มี 3 ระดับที่ต่างกัน มีผลบังคับใช้ต่างกันครับ
~/.claude/settings.json: อันนี้คือ 'กฎบ้าน' ครับ อยู่ในโฟลเดอร์หลักของผู้ใช้ (home directory) มีผลกับการทำงานของ Claude Code ทุกโปรเจกต์ที่คุณเปิดบนเครื่องนี้ ลองนึกถึงกฎที่คุณอยากให้มีผลกับทุกๆ งานของคุณ.claude/settings.json: นี่คือ 'กฎห้อง' ครับ ไฟล์นี้จะอยู่ในโฟลเดอร์ของโปรเจกต์นั้นๆ เท่านั้น มีผลเฉพาะกับโปรเจกต์นั้นๆ และที่สำคัญคือ เราสามารถ 'commit' (บันทึกการเปลี่ยนแปลง) ไฟล์นี้ขึ้น Git ได้ เพื่อให้เพื่อนร่วมทีมทุกคนใช้การตั้งค่าเดียวกันกับโปรเจกต์นี้.claude/settings.local.json: ส่วนนี่คือ 'กฎส่วนตัว' ครับ ไฟล์นี้ก็อยู่ในโฟลเดอร์โปรเจกต์เหมือนกัน แต่มีไว้สำหรับการตั้งค่าเฉพาะเครื่องของคุณเท่านั้น และที่สำคัญคือ 'ห้าม commit ขึ้น Git เด็ดขาด' นะครับ! เอาไว้ใช้สำหรับปรับแต่งอะไรเล็กๆ น้อยๆ ที่คุณอยากให้มีผลแค่กับเครื่องของคุณเท่านั้น เช่น การตั้งค่า API Key ส่วนตัว
ตัวอย่างการตั้งค่า: ควบคุมสิทธิ์การใช้เครื่องมือ (Permissions)
หนึ่งในการตั้งค่าที่สำคัญที่สุดคือการควบคุม 'สิทธิ์' (permissions) ว่า Claude Code สามารถใช้เครื่องมืออะไรได้บ้าง โดยไม่ต้องถามเราทุกครั้ง ซึ่งช่วยให้การทำงานลื่นไหลขึ้น แต่ก็ต้องระมัดระวังด้วย
ยกตัวอย่างเช่น ถ้าเราต้องการให้ Claude Code สามารถใช้คำสั่ง npm (สำหรับจัดการแพ็กเกจ Node.js) และ git (สำหรับจัดการเวอร์ชันโค้ด) ผ่าน Bash ได้เลยโดยไม่ต้องขออนุญาตทุกครั้ง เราจะเพิ่มการตั้งค่าแบบนี้ลงไปในไฟล์ .claude/settings.json ครับ
{ "permissions": { "allow": ["Bash(npm:*)", "Bash(git:*)"] } }
ความหมายคือ: 'อนุญาตให้ Bash รันคำสั่ง npm และ git ได้ทุกคำสั่งเลยนะ' (เครื่องหมาย * คือ wildcard แปลว่าอะไรก็ได้)
- 1. เปิดไฟล์
.claude/settings.jsonในโฟลเดอร์โปรเจกต์ของคุณ (ถ้าไม่มีก็สร้างขึ้นมาใหม่) - 2. คัดลอกโค้ดตัวอย่างด้านบนไปวางในไฟล์
- 3. บันทึกไฟล์ และลองให้ Claude Code รันคำสั่ง
npm installหรือgit statusดูสิ มันจะทำได้เลยโดยไม่ถามอีก
"*" เพราะอาจทำให้ Claude Code รันคำสั่งอะไรก็ได้โดยไม่ถาม ซึ่งอาจไม่ปลอดภัยในบางสถานการณ์ทำงานเป็นทีม: ใช้ settings.json ให้เป็นประโยชน์
เมื่อทำงานเป็นทีม การตั้งค่า .claude/settings.json ระดับโปรเจกต์แล้ว commit ขึ้น Git เป็นสิ่งสำคัญมากครับ ลองนึกภาพว่าทุกคนในทีมใช้เครื่องมือเดียวกัน มีกฎการทำงานแบบเดียวกัน ทำให้มั่นใจได้ว่าทุกคนทำงานบนสภาพแวดล้อมที่สอดคล้องกัน ลดปัญหา 'ทำไมโค้ดของฉันรันได้ แต่ของเพื่อนรันไม่ได้?'
ส่วนไฟล์ .claude/settings.local.json มีไว้สำหรับคุณคนเดียวเท่านั้น เช่น คุณอาจจะอยากตั้งค่าให้ Claude Code ใช้ API Key ส่วนตัวของคุณ หรือตั้งค่าบางอย่างที่แตกต่างจากเพื่อนร่วมทีม แต่ไม่ต้องการให้คนอื่นเห็น หรือไม่ต้องการให้มีผลกับคนอื่น
ดังนั้น ใช้ .claude/settings.json สำหรับการตั้งค่าที่ทีมใช้ร่วมกัน และใช้ .claude/settings.local.json สำหรับการตั้งค่าส่วนตัวที่ไม่ควรเปิดเผย หรือไม่ควรแชร์กับใครนะครับ
- 1. สร้างหรือแก้ไขไฟล์
.claude/settings.jsonในโฟลเดอร์โปรเจกต์ของคุณ - 2. เพิ่มการตั้งค่าที่ทีมควรใช้ร่วมกัน เช่น สิทธิ์การใช้เครื่องมือ หรือตัวแปรสภาพแวดล้อม
- 3. เพิ่มไฟล์
.claude/settings.jsonเข้าไปใน Git และcommitขึ้นไปบน repository เพื่อให้เพื่อนร่วมทีมสามารถดึงไปใช้ได้ - 4. (ถ้าจำเป็น) สร้างไฟล์
.claude/settings.local.jsonสำหรับการตั้งค่าส่วนตัวของคุณ และตรวจสอบให้แน่ใจว่าไฟล์นี้ถูกเพิ่มใน.gitignoreเพื่อป้องกันการcommitขึ้น Git
commit ไฟล์ .claude/settings.local.json ขึ้น Git เด็ดขาด เพราะเป็นไฟล์ส่วนตัวของคุณ!- settings มี 3 ระดับ: user, project, local
- ใช้กำหนด permission, hooks, env
- commit project settings ให้ทีมใช้ร่วม