SSD Nodes Learn 🎉 VPS เริ่ม $5.50/เดือน
คู่มือ Matt Connorโดย Matt Connor · อัปเดตเมื่อ 2026-08-13

วิธีตั้งค่า 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 แบบอ่านอย่างเดียวที่มาพร้อมกับระบบ และการเรียกใช้ hook PreToolUse ที่ได้รับอนุมัติเท่านั้น เซสชันจะไม่รอการป้อนข้อมูลใดๆ
  • 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 ไม่ได้รับการรองรับในผู้ให้บริการรายใดก็ตาม