2. Setup & Configuration
หน้าหลัก › โมดูล 2: Setup & Configuration
บทเรียน 2.4

settings.json — ปรับ behavior

settings.json ให้คุณปรับพฤติกรรมของ Claude Code ได้ เช่น สิทธิ์การใช้ tool, hooks, และ environment ต่างๆ

เมื่อเรียนจบบทนี้ คุณจะ…

  • เข้าใจว่า settings.json ใช้ทำอะไร
  • บอกได้ว่าไฟล์ settings.json มีกี่แบบและอยู่ตรงไหน
  • ตั้งค่าอนุญาตให้ใช้ tool พื้นฐานได้
settings.json ปรับพฤติกรรมและค่าเริ่มต้นของ Claude Code
settings.json ปรับพฤติกรรมและค่าเริ่มต้นของ Claude Code

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. 1. เปิดไฟล์ .claude/settings.json ในโฟลเดอร์โปรเจกต์ของคุณ (ถ้าไม่มีก็สร้างขึ้นมาใหม่)
  2. 2. คัดลอกโค้ดตัวอย่างด้านบนไปวางในไฟล์
  3. 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. 1. สร้างหรือแก้ไขไฟล์ .claude/settings.json ในโฟลเดอร์โปรเจกต์ของคุณ
  2. 2. เพิ่มการตั้งค่าที่ทีมควรใช้ร่วมกัน เช่น สิทธิ์การใช้เครื่องมือ หรือตัวแปรสภาพแวดล้อม
  3. 3. เพิ่มไฟล์ .claude/settings.json เข้าไปใน Git และ commit ขึ้นไปบน repository เพื่อให้เพื่อนร่วมทีมสามารถดึงไปใช้ได้
  4. 4. (ถ้าจำเป็น) สร้างไฟล์ .claude/settings.local.json สำหรับการตั้งค่าส่วนตัวของคุณ และตรวจสอบให้แน่ใจว่าไฟล์นี้ถูกเพิ่มใน .gitignore เพื่อป้องกันการ commit ขึ้น Git
อย่าเผลอ commit ไฟล์ .claude/settings.local.json ขึ้น Git เด็ดขาด เพราะเป็นไฟล์ส่วนตัวของคุณ!
เคล็ดลับ: ตั้งค่าเฉพาะโปรเจกต์ใน .claude/settings.json แล้ว commit ขึ้น git ทีมจะได้ใช้ค่าเดียวกัน
สรุปบทนี้
  • settings มี 3 ระดับ: user, project, local
  • ใช้กำหนด permission, hooks, env
  • commit project settings ให้ทีมใช้ร่วม
แบบทดสอบท้ายบท
ลองตอบดู แล้วระบบจะเฉลยให้ทันที
ข้อ 1.ไฟล์ settings.json ที่ใช้ตั้งค่า 'เฉพาะโปรเจกต์' และสามารถ 'commit ขึ้น git' ได้ คือไฟล์ไหน?
เฉลย: ไฟล์ .claude/settings.json ใช้ตั้งค่าเฉพาะโปรเจกต์และสามารถแชร์กับทีมได้โดยการ commit ขึ้น git.
ข้อ 2.เราใช้ settings.json เพื่อทำอะไรเป็นหลัก?
เฉลย: settings.json ช่วยให้เรากำหนดพฤติกรรมของ Claude Code ได้ เช่น การอนุญาตให้ใช้ tool ต่างๆ.