100% Permission Mode คืออะไร ควบคุมอะไรบ้าง
ใช้เวลาประมาณ 15 นาที
Permission mode คืออะไร
Permission mode คือโหมดที่กำหนดว่า Claude Code จะต้องหยุดถามอนุญาตเราก่อนลงมือทำ action หนึ่งๆ หรือทำได้เลยโดยอัตโนมัติ เป็นกลไกควบคุมความเสี่ยงพื้นฐานที่สุดของ Claude Code เพราะทุก tool call ที่มีผลข้างเคียง เช่น แก้ไฟล์หรือรันคำสั่ง shell จะถูกเช็คผ่านระบบ permission นี้ก่อนเสมอ
โหมดที่มีให้เลือก
- default — โหมดมาตรฐาน ถามอนุญาตทุกครั้งที่ใช้ tool แต่ละชนิดเป็นครั้งแรก
- acceptEdits — อนุมัติการแก้ไข/สร้างไฟล์และคำสั่งจัดการไฟล์พื้นฐาน (เช่น
mkdir, mv, cp) ให้อัตโนมัติในโฟลเดอร์ที่ทำงานอยู่ เหมาะกับงานพัฒนาทั่วไปที่ไม่อยากถูกขัดจังหวะบ่อย
- plan — โหมด read-only ล้วนๆ Claude อ่านไฟล์และรันคำสั่งที่ไม่มีผลข้างเคียงได้ แต่ห้ามแก้ไฟล์เด็ดขาด จนกว่าจะออกจากโหมดนี้
- auto — อนุมัติ tool call ให้อัตโนมัติ พร้อมมีการเช็คความปลอดภัยเบื้องหลังคอยตรวจว่า action ที่ทำตรงกับสิ่งที่เราขอจริงหรือไม่
- dontAsk — ปฏิเสธ tool โดยอัตโนมัติ เว้นแต่จะถูกอนุมัติไว้ล่วงหน้าผ่าน
/permissions หรือ allow rule
- bypassPermissions — ข้ามการถามอนุญาตแทบทั้งหมด ใช้ได้เฉพาะใน environment ที่แยกตัวปลอดภัย เช่น container หรือ VM เท่านั้น เพราะความเสี่ยงสูงมากถ้าใช้กับเครื่องจริง
.env และการเก็บ API key อย่างปลอดภัย
15 นาที
Hook คืออะไร ใช้ทำอะไรได้บ้าง
16 นาที
bypassPermissions ควรใช้เฉพาะใน environment ที่ถูก isolate ไว้แล้วเท่านั้น เช่น container หรือ VM ที่ปิดกั้นไม่ให้กระทบระบบจริงได้ ไม่ควรใช้บนเครื่องทำงานหลักที่มีไฟล์สำคัญอยู่
ระบบ allow / ask / deny rule
นอกจาก mode แล้ว Claude Code ยังมีระบบ rule แบบละเอียดกว่า ควบคุมผ่านคำสั่ง /permissions:
- Allow — อนุญาตให้ใช้ tool นั้นได้เลยโดยไม่ต้องถาม
- Ask — ถามอนุญาตทุกครั้งที่ tool นั้นถูกเรียก
- Deny — ห้ามใช้ tool นั้นเด็ดขาด
Rule ทั้งสามแบบถูกประเมินตามลำดับ deny ก่อน แล้วค่อย ask แล้วค่อย allow — rule แรกที่ match จะเป็นตัวตัดสิน ไม่ว่า rule อื่นจะเจาะจงกว่าแค่ไหนก็ตาม
{
"permissions": {
"allow": ["Bash(npm run *)", "Bash(git commit *)"],
"deny": ["Bash(git push *)"]
}
}
ตั้ง allow rule ให้รัน Bash(npm run *) ได้ แต่ตั้ง deny rule ห้าม Bash(npm run *) ที่มี --force — deny rule ที่กว้างกว่าจะชนะเสมอแม้ allow rule จะเจาะจงกว่า เพราะลำดับ deny มาก่อน ask และ allow เสมอ
เลือกใช้โหมดไหนดี
โดยทั่วไป เริ่มด้วย default เมื่อยังไม่คุ้นเคยกับ codebase หรือ Claude Code เอง เมื่อคุ้นเคยแล้วและอยากทำงานไวขึ้นในโปรเจกต์ที่เชื่อใจได้ ค่อยสลับไปใช้ acceptEdits สำหรับงานสำรวจโค้ดที่ยังไม่อยากให้แตะไฟล์อะไรเลย ให้ใช้ plan ส่วน bypassPermissions ควรเก็บไว้ใช้เฉพาะใน sandbox หรือ CI environment ที่ควบคุมความเสี่ยงไว้แล้วเท่านั้น