วิธีตั้งค่า Claude Code Auto Mode เป็นค่าเริ่มต้น
ตั้งแต่วันที่ 14 สิงหาคม 2026 Claude Code จะปรับโหมดอัตโนมัติเป็นค่าเริ่มต้นสำหรับผู้ใช้ทั่วไป เรียนรู้ความแตกต่างของโหมดการอนุญาตและวิธีตั้งค่าที่เหมาะสมสำหรับ VPS
การเปลี่ยนแปลงของโหมดอัตโนมัติในวันที่ 14 สิงหาคม 2026
โหมดอัตโนมัติของ Claude Code จะดำเนินการเรียกใช้เครื่องมือโดยไม่หยุดรอการยืนยันจากคุณ และจะส่งการกระทำแต่ละรายการไปยังโมเดลจำแนกประเภทเพื่อตรวจสอบก่อน ตั้งแต่วันที่ 14 สิงหาคม 2026 เป็นต้นไป โหมดนี้จะกลายเป็นโหมดเริ่มต้นสำหรับเซสชันใหม่ในแผน Pro, Max และ Team คุณสามารถสลับโหมดได้ตลอดเวลา และค่าเริ่มต้นที่คุณตั้งค่าไว้เองจะไม่ถูกเขียนทับ
เอกสารประกอบ ระบุการเปลี่ยนแปลงไว้ดังนี้:
ตั้งแต่วันที่ 14 สิงหาคม 2026 โหมดอัตโนมัติจะกลายเป็นโหมดการอนุญาตเริ่มต้นสำหรับเซสชันใหม่ในแผน Pro, Max และ Team คุณสามารถสลับโหมดได้ตลอดเวลา ค่าเริ่มต้นที่คุณตั้งค่าไว้เองจะยังคงอยู่เว้นแต่คุณจะยอมรับข้อความแจ้งเตือนให้สลับโหมดแบบครั้งเดียว และค่าเริ่มต้นที่องค์กรของคุณจัดการจะไม่มีการเปลี่ยนแปลง
มีสองเงื่อนไขที่สำคัญยิ่งกว่าวันที่ดังกล่าว คือ defaultMode ที่คุณตั้งค่าไว้ในไฟล์การตั้งค่าของคุณจะยังคงอยู่หลังจากการเปลี่ยนแปลงนี้ และค่าเริ่มต้นที่องค์กรของคุณปรับใช้ผ่านการตั้งค่าที่มีการจัดการก็จะยังคงอยู่เช่นกัน โพสต์ประกาศ เพิ่มเติมว่าโหมดอัตโนมัติยังคงเป็นทางเลือกสำหรับแผน Enterprise และสำหรับบัญชีที่ใช้ API ในช่วงแรกของการเปิดตัว
หากคุณใช้งาน Claude Code บน VPS (virtual private server) คุณควรทำความเข้าใจการเปลี่ยนแปลงนี้ก่อนที่จะมีผลบังคับใช้ ข้อความแจ้งเตือนการอนุญาตเป็นจุดตรวจสอบที่จำเป็นต้องมีผู้ใช้งานอยู่ที่หน้าจอ ในกรณีของเครื่องระยะไกล คุณมักจะไม่ได้อยู่ที่นั่น ดังนั้นโหมดที่เซสชันเริ่มต้นขึ้นจะเป็นโหมดที่ใช้งานต่อเนื่องไปนานหลายชั่วโมง
โหมดการอนุญาตของ Claude Code เรียงจากระดับการตรวจสอบเข้มงวดที่สุดไปน้อยที่สุด
มีทั้งหมด 6 โหมด ชื่อที่อยู่ต้นบรรทัดคือค่าที่คุณต้องระบุในการตั้งค่าหรือส่งผ่าน --permission-mode
default: Claude จะสอบถามก่อนการใช้เครื่องมือใหม่แต่ละครั้ง การอ่านไฟล์ภายในไดเรกทอรีทำงานของคุณยังคงทำงานได้โดยไม่ต้องรอการยืนยัน CLI (command line interface) จะระบุโหมดนี้ว่า Manual และรองรับmanualเป็นชื่อเรียกแทนตั้งแต่ Claude Code v2.1.200 เป็นต้นไปplan: Claude สามารถอ่านไฟล์และรันคำสั่งเพื่อสำรวจข้อมูลได้ แต่จะไม่แก้ไขซอร์สโค้ดของคุณ การแก้ไขจะถูกระงับไว้จนกว่าคุณจะอนุมัติแผนงานacceptEdits: การแก้ไขไฟล์จะทำงานโดยไม่ต้องรอการยืนยัน รวมถึงคำสั่งจัดการระบบไฟล์mkdir,touch,rm,rmdir,mv,cpและsedทั้งนี้จะมีผลเฉพาะกับ path ภายในไดเรกทอรีทำงานหรือadditionalDirectoriesของคุณเท่านั้น คำสั่ง shell อื่นๆ ทั้งหมดยังคงต้องรอการยืนยันauto: ทุกคำสั่งจะทำงานโดยมีตัวจำแนกประเภท (classifier) คอยตรวจสอบแต่ละการกระทำก่อนเสมอ กฎaskที่กำหนดไว้อย่างชัดเจนจะยังคงบังคับให้ต้องมีการยืนยันdontAsk: Claude Code จะปฏิเสธอัตโนมัติสำหรับทุกสิ่งที่ต้องมีการยืนยันจากคุณ จะทำงานได้เฉพาะกฎallowของคุณ, คำสั่ง Bash แบบอ่านอย่างเดียวที่มาพร้อมกับระบบ และการเรียกใช้ hookPreToolUseที่ได้รับอนุมัติเท่านั้น เซสชันจะไม่รอการป้อนข้อมูลใดๆbypassPermissions: ข้ามการสอบถามและการตรวจสอบความปลอดภัยทั้งหมด รวมถึงการเขียนข้อมูลลงใน path ที่ได้รับการป้องกัน เช่น.gitและ.claude
กด Shift+Tab ระหว่างเซสชันเพื่อสลับโหมดจาก default ไปยัง acceptEdits และ plan แถบสถานะจะแสดงโหมดที่คุณใช้งานอยู่ เช่น ⏵⏵ auto mode on หรือ ⏸ manual mode on สีเทา โหมดอื่นไม่ได้รวมอยู่ในวงรอบการสลับนี้โดยค่าเริ่มต้น auto จะถูกเพิ่มเข้ามาเมื่อบัญชีของคุณผ่านข้อกำหนดที่จำเป็นแล้ว bypassPermissions จะปรากฏขึ้นก็ต่อเมื่อเซสชันถูกเริ่มต้นด้วย --permission-mode bypassPermissions หรือ --dangerously-skip-permissions เท่านั้น ส่วน dontAsk จะไม่ปรากฏในวงรอบนี้ คุณจึงต้องตั้งค่าผ่าน claude --permission-mode dontAsk
โหมดอัตโนมัติ (Auto mode) จำเป็นต้องใช้โมเดลเวอร์ชันล่าสุด ซึ่งเป็นสาเหตุทั่วไปที่ทำให้โหมดนี้ไม่ปรากฏขึ้น ข้อมูล ณ เดือนสิงหาคม 2026 ระบุว่าต้องใช้ Claude Opus 4.6 ขึ้นไป, Sonnet 4.6 ขึ้นไป และ Fable 5 บน Anthropic API โดยโมเดลรุ่นเก่าอย่าง Sonnet 4.5 จะไม่รองรับบนผู้ให้บริการรายใด หาก Claude Code แจ้งว่าโหมดอัตโนมัติไม่พร้อมใช้งาน แสดงว่าข้อกำหนดข้อใดข้อหนึ่งยังไม่ครบถ้วน ซึ่งไม่ใช่ปัญหาชั่วคราว ดังนั้นการรอคอยจะไม่ช่วยแก้ไขปัญหานี้
มีตัวควบคุมสองประการที่บังคับใช้ในทุกโหมดรวมถึง bypassPermissions ได้แก่ กฎ deny และกฎ ask ที่กำหนดไว้อย่างชัดเจน สิ่งเหล่านี้คือกลไกที่คุณยังคงควบคุมได้ไม่ว่าเซสชันจะเริ่มต้นด้วยโหมดใดก็ตาม
สิ่งที่ตัวจำแนกประเภทในโหมดอัตโนมัติบล็อก
ตัวจำแนกประเภท (classifier) คือโมเดลตัวที่สองที่ทำหน้าที่อ่านการดำเนินการที่ค้างอยู่ และตัดสินใจว่าการดำเนินการนั้นสอดคล้องกับสิ่งที่คุณร้องขอหรือไม่ เอกสารประกอบได้อธิบายหน้าที่ของมันไว้ในประโยคเดียวว่า:
โมเดลตัวจำแนกประเภทแยกต่างหากจะตรวจสอบการดำเนินการก่อนที่จะเริ่มทำงาน โดยจะบล็อกทุกสิ่งที่ยกระดับสิทธิ์เกินกว่าที่คุณร้องขอ มุ่งเป้าไปที่โครงสร้างพื้นฐานที่ไม่รู้จัก หรือดูเหมือนว่าจะถูกขับเคลื่อนด้วยเนื้อหาที่เป็นอันตรายที่ Claude ได้อ่าน
สิ่งที่ถูกบล็อกโดยค่าเริ่มต้น ในหมวดหมู่ที่ผู้ดูแลเซิร์ฟเวอร์พบได้บ่อยที่สุด:
- การดาวน์โหลดและเรียกใช้โค้ด เช่น
curl | bash - การปรับใช้ (deploy) และการย้ายข้อมูล (migration) ในสภาพแวดล้อมการทำงานจริง (production)
- การทำ force push
- การแก้ไขโครงสร้างพื้นฐานที่ใช้ร่วมกัน
- การเปิด tunnel หรือ reverse shell ที่ทำให้บริการภายในเครื่องสามารถเข้าถึงได้จากอินเทอร์เน็ตสาธารณะ
- การพิมพ์ credential หรือ token ที่ใช้งานจริงลงในบันทึกการสนทนาหรือไฟล์
สิ่งที่ได้รับอนุญาตโดยค่าเริ่มต้น:
- การดำเนินการกับไฟล์ภายในเครื่องในไดเรกทอรีการทำงานของคุณ
- การติดตั้ง dependency ที่ระบุไว้ในไฟล์ lock หรือไฟล์ manifest ของคุณ
- การร้องขอ HTTP แบบอ่านอย่างเดียว (read-only)
- การ push ไปยัง branch ใดก็ตามของ repository ที่คุณกำลังทำงานอยู่
อย่าทำงานโดยอ้างอิงจากสรุปข้างต้น ให้รัน claude auto-mode defaults เพื่อพิมพ์รายการกฎทั้งหมดออกมาในรูปแบบ JSON และอ่านชุดกฎที่มาพร้อมกับเวอร์ชันที่คุณติดตั้งไว้
มีข้อจำกัดที่บันทึกไว้สองประการที่คุณควรทราบก่อนที่จะพึ่งพาระบบนี้ ประการแรก ตัวจำแนกประเภทจะเห็นข้อความของคุณ, การเรียกใช้เครื่องมือ (tool calls) และเนื้อหา CLAUDE.md ของคุณ แต่ผลลัพธ์จากเครื่องมือจะถูกตัดออก ดังนั้นข้อความภายในไฟล์หรือหน้าเว็บที่ Claude อ่านจะไม่สามารถสื่อสารกับตัวจำแนกประเภทได้โดยตรง ประการที่สอง เมื่อตัวจำแนกประเภทบล็อกการดำเนินการติดต่อกัน 3 ครั้ง หรือครบ 20 ครั้งในเซสชันเดียว โหมดอัตโนมัติจะหยุดชั่วคราวและ Claude Code จะกลับมาถามคุณแทน เกณฑ์เหล่านี้ไม่สามารถกำหนดค่าได้ ในโหมดที่ไม่โต้ตอบ (non-interactive) ที่ใช้แฟล็ก -p จะไม่มีใครให้ถาม ดังนั้นการบล็อกซ้ำๆ จะทำให้เซสชันถูกยกเลิกแทน
พฤติกรรมประการที่สองนี้คือสิ่งที่มักสร้างปัญหาบนเครื่องระยะไกล การรันงานแบบไม่มีผู้ดูแลที่ไปแตะขีดจำกัดจะหยุดทำงานและรอผู้ใช้งานที่ไม่ได้เฝ้าดูหน้าจอเทอร์มินัลอยู่ การจำกัดขอบเขตสิ่งที่เอเจนต์ตั้งใจจะทำคืออีกครึ่งหนึ่งของการแก้ไข และ ทักษะที่ผลักดันให้เอเจนต์เลือกการเปลี่ยนแปลงที่เล็กที่สุดที่ใช้งานได้ จะช่วยป้องกันไม่ให้เซสชันหลุดออกไปสู่การดำเนินการที่กว้างขวางเกินไปจนถูกตัวจำแนกประเภทบล็อกได้
ตำแหน่งของโหมดต่างๆ ใน settings.json
ทุกอย่างที่กล่าวมาข้างต้นเป็นออบเจกต์เดียวในไฟล์การตั้งค่า
{
"permissions": {
"defaultMode": "auto",
"allow": [
"Bash(npm run test *)",
"Bash(git status)"
],
"ask": [
"Bash(git push *)",
"Bash(docker compose up *)"
],
"deny": [
"Read(./.env)",
"Read(./secrets/**)",
"Bash(curl *)"
]
}
}กฎจะถูกประเมินตามลำดับดังนี้: ปฏิเสธ (deny), ถาม (ask), แล้วจึงอนุญาต (allow) การจับคู่แรกที่พบในลำดับนี้จะเป็นตัวตัดสินผลลัพธ์ และกฎที่เฉพาะเจาะจงกว่าจะไม่สามารถเอาชนะกฎที่กว้างกว่าซึ่งปรากฏก่อนหน้าได้ กฎการปฏิเสธสำหรับ Bash(aws *) จะบล็อก aws s3 ls แม้ว่าคุณจะอนุญาตคำสั่งเดียวกันนั้นไว้ก็ตาม ดังนั้นกฎการปฏิเสธจึงไม่สามารถมีข้อยกเว้นได้
ask เป็นประเภทกฎที่จำเป็นในโหมด auto โหมด auto จะตัดการถามยืนยันตามปกติออกไป และกฎประเภท ask จะนำการถามยืนยันกลับมาสำหรับคำสั่งเฉพาะที่คุณต้องการให้มีการตรวจสอบโดยบุคคล คำสั่ง deploy ของคุณควรอยู่ในกลุ่มนี้ รวมถึง Bash(git push *) หากคุณต้องการจุดตรวจสอบก่อนที่โค้ดจะถูกส่งออกจากเครื่อง การเก็บไฟล์ข้อมูลรับรองไว้ใน deny คืออีกส่วนหนึ่งที่สำคัญ ซึ่งทำงานควบคู่ไปกับ การเก็บข้อมูลรับรองให้พ้นจากมือของเอเจนต์ตั้งแต่แรก
ลำดับความสำคัญของไฟล์การตั้งค่า (จากต่ำไปสูง):
~/.claude/settings.json: การตั้งค่าผู้ใช้ของคุณ ซึ่งถูกนำไปใช้ในทุกโปรเจกต์.claude/settings.json: การตั้งค่าโปรเจกต์ ซึ่งถูก commit ลงใน repository.claude/settings.local.json: การตั้งค่าส่วนตัวของคุณสำหรับ repository เดียว ซึ่งถูก git-ignore ไว้- การตั้งค่าแบบจัดการ (Managed settings) ซึ่งถูกติดตั้งโดยผู้ดูแลระบบ บน Linux ไฟล์นี้คือ
/etc/claude-code/managed-settings.jsonไม่มีสิ่งใดสามารถ override กฎการอนุญาตแบบจัดการได้ แม้แต่ flag ในบรรทัดคำสั่ง
ข้อควรระวังประการหนึ่งมีสาเหตุที่ระบุไว้ชัดเจนคือ defaultMode: "auto" จะถูกละเว้นเมื่อมาจาก .claude/settings.json หรือ .claude/settings.local.json ตั้งแต่ Claude Code v2.1.142 เป็นต้นไป เพื่อป้องกันไม่ให้ repository อนุญาตให้ตัวเองเข้าสู่โหมด auto ผ่านการส่งไฟล์การตั้งค่ามาด้วย หากคุณตั้งค่าไว้ในนั้น เซสชันจะเริ่มในโหมด default โดยไม่มีข้อความแสดงข้อผิดพลาดใดๆ ให้ย้ายบรรทัดดังกล่าวไปที่ ~/.claude/settings.json แทน จากนั้นรัน /permissions เพื่อแสดงรายการกฎที่ใช้งานอยู่ทั้งหมดพร้อมกับไฟล์ต้นทางของกฎนั้นๆ
สวิตช์สองตัวสำหรับปิดโหมดการทำงาน
ผู้ดูแลระบบมีสวิตช์สำหรับปิดการทำงาน (kill switch) สองตัว ซึ่งทั้งคู่ต้องใช้สตริง "disable" แทนที่จะเป็นค่าบูลีน
{
"permissions": {
"disableAutoMode": "disable",
"disableBypassPermissionsMode": "disable"
}
}เอกสารระบุไว้อย่างชัดเจนว่าควรวางสวิตช์เหล่านี้ไว้ที่ใด:
เพื่อป้องกันไม่ให้มีการใช้โหมดbypassPermissionsหรือautoให้ตั้งค่าpermissions.disableBypassPermissionsModeหรือpermissions.disableAutoModeเป็น"disable"ในไฟล์การตั้งค่าใดก็ได้ สวิตช์เหล่านี้มีประโยชน์มากที่สุดในการตั้งค่าแบบจัดการ (managed settings) ซึ่งผู้ใช้ไม่สามารถแก้ไขทับได้
disableAutoMode จะนำ auto ออกจากรอบการทำงานของ Shift+Tab และปฏิเสธ --permission-mode auto ในขณะเริ่มต้นระบบ ส่วน disableBypassPermissionsMode จะทำหน้าที่เดียวกันสำหรับโหมด bypass และสามารถใช้งานได้จากทุกขอบเขต (scope) ดังนั้นคุณจึงสามารถตั้งค่าไว้ใน ~/.claude/settings.json ของคุณเองเพื่อล็อกไม่ให้เข้าถึงโหมดที่คุณไม่ต้องการใช้งานในช่วงเวลาตี 2 บนเซิร์ฟเวอร์ที่กำลังให้บริการอยู่ สำหรับเครื่องที่มีผู้ใช้งานหลายคน ให้ใส่ทั้งสองค่าไว้ใน /etc/claude-code/managed-settings.json แทน เนื่องจากไฟล์การตั้งค่าของผู้ใช้เป็นสิทธิ์ส่วนบุคคลของผู้ใช้ แต่ไฟล์แบบจัดการไม่ใช่
เหตุผลที่โหมดอัตโนมัติบน VPS จำเป็นต้องมีขอบเขตการแยกส่วน (isolation boundary)
ตัวจำแนกประเภท (classifier) จะตรวจสอบการกระทำทีละรายการ โดยไม่มีข้อมูลว่าการกระทำที่ได้รับอนุมัติแล้วจะส่งผลอย่างไรต่อไป เอกสารระบุขอบเขตไว้อย่างชัดเจนว่า:
ตัวจำแนกประเภทเป็นการควบคุมแบบรายคำสั่ง ไม่ใช่ขอบเขตการแยกส่วน ดังนั้นขอบเขตการแยกส่วนจึงยังคงช่วยเพิ่มการป้องกันเชิงลึก (defense in depth) สำหรับการรันงานแบบไม่ต้องเฝ้าดู และไม่ได้เป็นสิ่งที่จำเป็นในลักษณะเดียวกับ --dangerously-skip-permissions
ดังนั้น การจับคู่ที่เหมาะสมสำหรับเซิร์ฟเวอร์ระยะไกลคือการใช้โหมดอัตโนมัติร่วมกับสภาพแวดล้อมที่คุณพร้อมจะสูญเสียได้ ไม่ใช่การใช้ bypassPermissions ร่วมกับความหวัง โหมดบายพาส (bypass mode) ถูกระบุไว้สำหรับสภาพแวดล้อมที่แยกส่วนเท่านั้น เช่น คอนเทนเนอร์, เครื่องเสมือน (virtual machine) หรือ dev container ที่ไม่มีการเชื่อมต่ออินเทอร์เน็ต ซึ่งเป็นที่ที่ Claude Code ไม่สามารถสร้างความเสียหายต่อระบบโฮสต์ของคุณได้ ส่วน VPS ที่รันฐานข้อมูลและ reverse proxy ของคุณนั้นไม่เข้าข่ายสภาพแวดล้อมเหล่านี้
มีสามสิ่งที่สำคัญที่สุดในการรักษาความปลอดภัยบนเซิร์ฟเวอร์: ให้รัน Claude Code ในฐานะผู้ใช้ทั่วไป (normal user) ห้ามใช้ root โดยเด็ดขาด กำหนดไดเรกทอรีทำงาน (working directory) ให้ผู้ใช้นั้นและอย่าให้เข้าถึงข้อมูลอื่นที่สำคัญ และให้ใช้วิธีสร้างเซิร์ฟเวอร์ใหม่แทนการซ่อมแซม ซึ่งเป็นเหตุผลสนับสนุนการใช้ เครื่องเสมือนแบบใช้แล้วทิ้งที่คุณลบทิ้งหลังจบงานแต่ละครั้ง รายละเอียดการปรับแต่งความปลอดภัยเบื้องหลังสิ่งเหล่านี้ ตั้งแต่การสร้างผู้ใช้ไปจนถึงกฎไฟร์วอลล์ ได้ครอบคลุมไว้ใน ขั้นตอนความปลอดภัยฉบับสมบูรณ์สำหรับการรัน Claude Code บน VPS แล้ว จึงจะไม่กล่าวซ้ำในที่นี้
Claude Code บังคับใช้กฎเรื่อง root ด้วยตัวเอง บน Linux และ macOS โปรแกรมจะปฏิเสธการเริ่มทำงานในโหมดบายพาสภายใต้ sudo หรือในฐานะ root:
--dangerously-skip-permissions cannot be used with root/sudo privileges for security reasonsการตรวจสอบนี้จะถูกข้ามไปหากอยู่ใน sandbox ที่ระบบรู้จัก ซึ่งเป็นเหตุผลว่าทำไมคำตอบที่แนะนำสำหรับการทำงานอัตโนมัติในคอนเทนเนอร์คือการใช้ dev container ที่รัน Claude Code ในฐานะผู้ใช้ที่ไม่ใช่ root หากคุณสั่งการเอเจนต์จากโทรศัพท์หรือแล็ปท็อปผ่าน SSH ตรรกะเดียวกันนี้ก็ใช้กับ เซสชัน Claude Code ที่รันค้างไว้ใน tmux เช่นกัน เนื่องจากไม่มีใครเฝ้าดูหน้าจอ prompt ในขณะที่เซสชันกำลังทำงานอยู่
การตั้งค่า Bash sandbox บน Ubuntu VPS
sandbox ที่มีมาให้ในตัวจะจำกัดการเข้าถึงระบบไฟล์และเครือข่ายของคำสั่ง Bash ทุกคำสั่งที่ Claude เรียกใช้ โดยระบบปฏิบัติการจะบังคับใช้ข้อจำกัดนี้กับกระบวนการลูก (child processes) ด้วย สำหรับ Linux จำเป็นต้องใช้แพ็กเกจสองตัว
sudo apt-get install bubblewrap socatเริ่มการทำงานของ Claude Code แล้วรัน /sandbox แผงควบคุมจะเปิดขึ้นพร้อมแท็บ Mode และแท็บ Overrides รวมถึงแท็บ Dependencies ที่แสดงรายการสิ่งที่ยังขาดอยู่ การตรวจสอบ dependency จะทำงานตอนเริ่มต้นโปรแกรม ดังนั้นให้รีสตาร์ท Claude Code หลังจากติดตั้งแพ็กเกจแล้ว มิฉะนั้นแผงควบคุมจะยังคงรายงานว่าไม่มีแพ็กเกจเหล่านั้นอยู่
บน Ubuntu 24.04 ขึ้นไป นโยบาย AppArmor เริ่มต้นจะขัดขวางไม่ให้ bubblewrap สร้าง user namespace ที่จำเป็น ส่งผลให้ sandbox เริ่มทำงานไม่ได้ ให้ตรวจสอบว่าปัญหานี้เกิดขึ้นกับเครื่องของคุณหรือไม่:
sysctl kernel.apparmor_restrict_unprivileged_usernsหากได้ผลลัพธ์เป็น 0 หรือข้อความแจ้งเตือนว่าไม่มีคีย์ดังกล่าว แสดงว่าไม่ต้องดำเนินการใดๆ แต่ถ้าได้ผลลัพธ์เป็น 1 แสดงว่า bwrap จำเป็นต้องมีโปรไฟล์ของตัวเอง:
sudo tee /etc/apparmor.d/bwrap > /dev/null <<'EOF'
abi <abi/4.0>,
include <tunables/global>
profile bwrap /usr/bin/bwrap flags=(unconfined) {
userns,
include if exists <local/bwrap>
}
EOF
sudo systemctl reload apparmorโปรไฟล์นี้จะใช้กับตัว bwrap เอง ไม่ใช่กับคำสั่งที่รันอยู่ภายใน sandbox จากนั้นให้จำกัดขอบเขตในส่วนการตั้งค่า:
{
"sandbox": {
"enabled": true,
"filesystem": {
"denyRead": ["~/"],
"allowRead": ["."]
},
"network": {
"allowedDomains": ["github.com", "*.npmjs.org"]
}
}
}บล็อกดังกล่าวควรอยู่ในไฟล์ .claude/settings.json ของโปรเจกต์ เนื่องจาก . จะอ้างอิงถึง root ของโปรเจกต์ได้ก็ต่อเมื่อตั้งค่าจากภายในโปรเจกต์เท่านั้น หากนำบรรทัดเดียวกันไปใส่ใน ~/.claude/settings.json ตัว . จะอ้างอิงไปยัง ~/.claude แทน ส่งผลให้กฎ denyRead บล็อกไฟล์ในโปรเจกต์ของคุณไว้ และทุกคำสั่งจะล้มเหลวในการอ่านโค้ดที่ต้องการแก้ไข
โปรดทราบว่าวิธีนี้ไม่ครอบคลุมถึงทุกส่วน sandbox จะจำกัดเฉพาะ Bash และกระบวนการลูกของมันเท่านั้น ส่วนเครื่องมือจัดการไฟล์ที่มากับตัวโปรแกรมจะรันอยู่ภายในกระบวนการของ Claude Code และเซิร์ฟเวอร์ MCP (model context protocol) รวมถึง hooks ต่างๆ จะเป็นกระบวนการแยกต่างหากที่รันโดยไม่มีข้อจำกัดบนโฮสต์ หากต้องการให้ทั้งหมดอยู่ภายใต้ขอบเขตเดียวกัน ให้รันกระบวนการ Claude Code ทั้งหมดภายในคอนเทนเนอร์, เครื่องเสมือน (virtual machine) หรือแพ็กเกจ @anthropic-ai/sandbox-runtime ซึ่งเป็นรุ่นทดสอบเบต้าในขณะที่เขียนบทความนี้
การตั้งค่าแต่ละแบบควรใช้โหมดใด
คลังเก็บโค้ดส่วนตัวบนแล็ปท็อปของคุณ
ให้ใช้ auto ร่วมกับกฎ ask สำหรับการกระทำที่คุณต้องการตรวจสอบ เนื่องจากคุณใช้งานผ่านคีย์บอร์ดโดยตรง ระบบสำรองการจำแนกประเภทจึงสามารถติดต่อคุณได้ และความเสียหายจะจำกัดอยู่เพียงเครื่องที่คุณควบคุมเองเท่านั้น นี่คือกรณีการใช้งานที่ค่าเริ่มต้นเมื่อวันที่ 14 สิงหาคมถูกออกแบบมาเพื่อรองรับ
เซิร์ฟเวอร์ VPS แบบใช้งานร่วมกัน
ให้ใช้ auto แยกตามผู้ใช้ โดยตั้งค่าไว้ใน ~/.claude/settings.json ของแต่ละคน บนเครื่องที่บัญชีซึ่งรัน Claude Code ไม่ใช่ root และไม่สามารถอ่านงานของผู้ใช้รายอื่นได้ ให้ติดตั้ง disableBypassPermissionsMode ในรูปแบบ "disable" ไว้ใน /etc/claude-code/managed-settings.json พร้อมกับกฎการปฏิเสธ (deny rules) เพื่อป้องกันเส้นทางไฟล์ที่ใช้งานร่วมกัน การใช้เครื่องร่วมกันเป็นกรณีที่ชัดเจนที่สุดว่าโหมด bypassPermissions นั้นไม่เหมาะสม เนื่องจากขอบเขตการแยกส่วนที่โหมดนั้นคาดหวังไม่มีอยู่จริง เพราะผู้ใช้รายอื่นต่างก็อยู่ในขอบเขตเดียวกัน
ระบบ CI และเซสชันที่ไม่มีผู้ดูแล
ให้ใช้ dontAsk พร้อมระบุรายการคำสั่งที่จำเป็นสำหรับงานนั้นๆ ใน allow อย่างชัดเจน การปฏิเสธโดยอัตโนมัติ (auto-deny) เป็นโหมดความล้มเหลวที่ถูกต้องเมื่อไม่มีผู้ใช้งานคอยดูข้อความแจ้งเตือน แม้โหมด auto จะรันแบบไม่โต้ตอบได้เช่นกัน แต่การถูกตัวจำแนกประเภทบล็อกซ้ำๆ จะทำให้เซสชัน -p ยุติลง ส่งผลให้งานที่ติดปัญหาล้มเหลวกลางคันและงานเสร็จเพียงบางส่วน ควรใช้ bypassPermissions เฉพาะกับคอนเทนเนอร์หรือเครื่องเสมือนที่คุณสร้างใหม่จากอิมเมจเท่านั้น และห้ามใช้บนโฮสต์ที่มีการรันบริการอื่นที่คุณต้องการรักษาความปลอดภัยไว้
FAQ
auto mode จะกลายเป็นค่าเริ่มต้นใน Claude Code เมื่อใด
ตั้งแต่วันที่ 14 สิงหาคม 2026 สำหรับเซสชันใหม่ในแผน Pro, Max และ Team เอกสารระบุเพิ่มเติมว่าคุณสามารถสลับโหมดได้ตลอดเวลา ค่าเริ่มต้นที่คุณตั้งค่าเองจะยังคงอยู่เว้นแต่คุณจะยอมรับข้อความแจ้งเตือนให้สลับโหมดแบบครั้งเดียว และค่าเริ่มต้นที่องค์กรของคุณจัดการจะไม่มีการเปลี่ยนแปลง ประกาศดังกล่าวยังระบุด้วยว่า auto mode จะยังคงเป็นทางเลือกสำหรับแผน Enterprise และสำหรับบัญชีที่ใช้ API ในช่วงแรกของการเปิดตัว ให้ตรวจสอบว่าเซสชันปัจจุบันอยู่ในโหมดใดโดยดูที่แถบสถานะ ซึ่งจะแสดง ⏵⏵ auto mode on เมื่ออยู่ใน auto mode
ฉันควรใช้ auto mode หรือ bypassPermissions บน VPS หรือไม่
ควรใช้ auto mode ควบคู่ไปกับขอบเขตการแยกส่วน (isolation boundary) ตัวจำแนกประเภทจะตรวจสอบแต่ละการกระทำก่อนที่จะดำเนินการ แต่เอกสารระบุไว้อย่างชัดเจนว่านี่เป็นการควบคุมแบบรายคำสั่ง ไม่ใช่ขอบเขตการแยกส่วน ดังนั้นการรันงานโดยไม่มีผู้ดูแลยังคงต้องใช้ container, virtual machine หรือสภาพแวดล้อมที่คุณพร้อมจะสร้างใหม่ได้เสมอ bypassPermissions จะข้ามการตรวจสอบทั้งหมดและระบุไว้สำหรับสภาพแวดล้อมที่แยกส่วนเท่านั้น Claude Code จะปฏิเสธการเริ่มทำงานในโหมดนั้นหากรันในฐานะ root บน Linux และจะแสดงข้อความ --dangerously-skip-permissions cannot be used with root/sudo privileges for security reasons
ฉันจะป้องกันไม่ให้ผู้อื่นบนเซิร์ฟเวอร์ของฉันใช้ auto mode หรือ bypass mode ได้อย่างไร
ให้ตั้งค่า permissions.disableAutoMode และ permissions.disableBypassPermissionsMode เป็นค่า "disable" ในไฟล์ /etc/claude-code/managed-settings.json การตั้งค่าที่มีการจัดการ (managed settings) จะมีลำดับความสำคัญเหนือขอบเขตอื่นทั้งหมด ดังนั้นไม่มีไฟล์การตั้งค่าของผู้ใช้หรือ flag ในบรรทัดคำสั่งใดที่สามารถแทนที่ค่าเหล่านี้ได้ disableAutoMode จะลบ auto ออกจากวงจร Shift+Tab และปฏิเสธ --permission-mode auto ในขณะเริ่มทำงาน นอกจากนี้ disableBypassPermissionsMode ยังสามารถทำงานได้จากทุกขอบเขต ดังนั้นผู้ใช้แต่ละคนสามารถตั้งค่านี้ได้ในไฟล์ ~/.claude/settings.json ของตนเอง
เหตุใดการตั้งค่า defaultMode: "auto" ของฉันจึงถูกละเลย
เนื่องจากไฟล์ดังกล่าวอยู่ในตำแหน่งที่ไม่ถูกต้อง ตั้งแต่ Claude Code v2.1.142 เป็นต้นไป ค่า defaultMode: "auto" จะถูกละเลยหากมาจาก .claude/settings.json หรือ .claude/settings.local.json เพื่อป้องกันไม่ให้ repository อนุญาตให้ตนเองใช้ auto mode ผ่านการส่งไฟล์การตั้งค่ามาด้วย เซสชันจะเริ่มทำงานในโหมด default และไม่แสดงข้อความผิดพลาด ให้ย้ายการตั้งค่าไปที่ ~/.claude/settings.json จากนั้นรัน /permissions เพื่อยืนยันว่ากฎที่ใช้งานอยู่แต่ละข้อมาจากไฟล์ใด หากยังไม่สามารถใช้ auto mode ได้ ให้ตรวจสอบข้อกำหนดของโมเดล: โมเดลรุ่นเก่าเช่น Sonnet 4.5 ไม่ได้รับการรองรับในผู้ให้บริการรายใดก็ตาม