บล็อก

Kimi Code Never Ask: โหมดและคำสั่งอันตราย

Markdown

ในโหมด Never Ask Kimi Code จะเรียกใช้ rm -rf และ shutdown โดยไม่ถาม โหมดทั้ง 3 แตกต่างกันอย่างไร และจะห้ามคำสั่งอันตรายใน config.toml ได้อย่างไร

อ่านบทความฉบับเต็ม

ใน Kimi Code โหมด Never Ask (/auto) อนุมัติทุกอย่างโดยอัตโนมัติ: ระบบจะเรียกใช้ rm -rf, shutdown และ reboot โดยไม่ถามแม้แต่คำถามเดียว เอเจนต์จะถามก่อนเรียกใช้คำสั่งเหล่านี้เฉพาะในอีก 2 โหมด ได้แก่ Always Ask และ Ask When Needed

ฉันทำงานกับ Claude Code โดยเปิดใช้ “อนุญาตทุกอย่าง” ด้วยตัวเอง ไม่อย่างนั้นเราคงต้องนั่งคลิกใช่ ใช่ ใช่ แต่ทุกครั้งที่สิบ เอเจนต์ก็ทำอะไรตามวิธีของตัวเอง

แม้ต้นแบบส่วนตัวก็อาจเปิดให้เข้าถึงไฟล์สำคัญและ credentials ใช้สำเนาแยกหรือคอนเทนเนอร์จำกัดสิทธิ์พร้อมสำรองที่ตรวจแล้ว สำหรับระบบลูกค้าให้ใช้ตัวตนฐานข้อมูลแยกที่มีเฉพาะสิทธิ์จำเป็นด้วย

มาดูกันว่า Kimi Code แต่ละโหมดทำอะไร การป้องกันทำงานตรงไหน และจะตั้งข้อห้ามได้อย่างไร มาเริ่มกันเลย

ดูข้อมูลเกี่ยวกับการใช้บริการได้ที่ เอกสารของ Ailoot

ประเด็นสำคัญ

Kimi Code มี 3 โหมด โดย Always Ask เป็นค่าเริ่มต้น: ระบบอ่านไฟล์โดยอัตโนมัติ ส่วนการกระทำอื่น ๆ ต้องยืนยันทีละรายการ โหมด Ask When Needed (/yolo) อนุมัติการแก้ไขทั่วไปเอง แต่จะถามก่อนเข้าถึงไฟล์ที่มีคีย์ ก่อนเรียกใช้คำสั่งอันตราย หรือก่อนออกจากโหมดวางแผน ส่วน Never Ask (/auto) จะไม่ถามอะไรเลย และการป้องกันคำสั่งอันตรายจะไม่ทำงานในโหมดนี้ ตั้งข้อห้ามถาวรด้วยกฎ deny ใน ~/.kimi-code/config.toml และควรหลีกเลี่ยงการเปิด Never Ask เมื่อเชื่อมต่อกับฐานข้อมูลที่ใช้งานจริง

Kimi Code ทั้ง 3 โหมดแตกต่างกันอย่างไร

ถ้าคุณ ติดตั้ง Kimi Code แล้ว คุณคงเคยเห็นแผงขออนุมัติ: เอเจนต์ต้องการแก้ไขไฟล์หรือเรียกใช้คำสั่ง แล้วรอให้คุณตอบ “ใช่” โหมดเหล่านี้เคยใช้ชื่อ Manual, YOLO และ Auto จึงยังคงใช้คำสั่งเดิมคือ /yolo และ /auto

Always Ask. ค่าเริ่มต้น เอเจนต์อ่านไฟล์โดยไม่ถาม แต่คุณต้องยืนยันการแก้ไขและคำสั่งแต่ละรายการแยกกัน โหมดนี้ช้าที่สุด

Ask When Needed. เปิดใช้ด้วย /yolo ระบบอนุมัติการแก้ไขและคำสั่งทั่วไปเอง แต่จะถามก่อนเข้าถึง .env (ไฟล์ที่มีรหัสผ่านและคีย์ของโปรเจกต์) และคีย์ SSH ของเซิร์ฟเวอร์ ก่อนเรียกใช้คำสั่งอันตราย เช่น shutdown (ปิดเครื่อง) และ rm -rf (ลบทั้งโฟลเดอร์โดยไม่ผ่านถังขยะ) รวมถึงก่อนออกจากโหมดวางแผน เอเจนต์ยังสามารถถามคำถามคุณเองได้ด้วย

Never Ask. เปิดใช้ด้วย /auto การอนุมัติทั้งหมดเกิดขึ้นโดยอัตโนมัติ รวมถึงการเข้าถึงไฟล์สำคัญและการออกจากโหมดวางแผน เอเจนต์จะไม่ถามคำถามคุณและตัดสินใจทุกอย่างเอง

ตารางโหมดสิทธิ์อนุญาตทั้งสามโหมดของ Kimi Code: Always Ask, Ask When Needed, Never Ask
โหมดสิทธิ์อนุญาต 3 โหมดใน Kimi Code CLI

โหมดวางแผนเปิดใช้แยกต่างหากด้วย Shift-Tab หรือ /plan: เอเจนต์จะเขียนแผนก่อนและรอให้คุณอนุมัติ จากนั้นจึงแตะต้องไฟล์

เมื่อฉันทำงานโดยไม่ต้องยืนยัน

ใน Claude Code ฉันตั้ง “อนุญาตทุกอย่าง” เป็นค่าเริ่มต้น โดยเปิดใช้ในแชตใหม่ทุกครั้ง หากไม่มีตัวเลือกนี้ การเขียนโค้ดตามอารมณ์จะช้าเกินไป คนที่เขียนโค้ดตามอารมณ์ก็เข้าใจอะไรได้น้อยอยู่แล้ว แล้วยังต้องกดปุ่มซ้ำ ๆ: ใช่ ใช่ ใช่ ไม่ ไม่ ไม่

แต่ในโหมดนี้ เอเจนต์สามารถทำเรื่องหุนหันได้ทุกอย่าง รวมถึงล้างฐานข้อมูล จากนั้นมันก็จะพูดว่า “ขอโทษ ผมขอโทษจริง ๆ” แต่บางครั้งสิ่งที่มันทำไปก็แก้ไขไม่ได้แล้ว ดังนั้นโหมดนี้เหมาะสำหรับคนที่ไม่กลัวความเสี่ยง และคุณเป็นผู้รับผิดชอบเอง

กฎของฉันมีดังนี้ โปรเจกต์ส่วนตัว การทดลอง และต้นแบบจะใช้โหมดไม่ยืนยันได้เฉพาะในสำเนาหรือคอนเทนเนอร์แยกที่ไม่มีไฟล์สำคัญหรือ credentials ระบบจริง จำกัดสิทธิ์และมีสำรอง การไม่มีลูกค้าไม่ป้องกันไฟล์หรือคีย์ส่วนตัว และยังต้องตรวจการแยก แต่ถ้าเปิดโหมดนี้ในโปรเจกต์เดียวกับที่เข้าถึงเซิร์ฟเวอร์ production ได้ เพียง 1 prompt ก็อาจทำให้เอเจนต์ลบฐานข้อมูลที่นั่นตอนกลางคืนและนำการเปลี่ยนแปลงขึ้นเว็บไซต์จริงได้

เหตุใดการห้ามด้วยคำพูดจึงช่วยคุณไม่ได้

หลายคนเขียนไว้ในคำสั่งของเอเจนต์ว่า “อย่าแตะต้องฐานข้อมูล” อย่าหวังว่านั่นจะช่วยปกป้องคุณได้ คุณบอกมันว่า: เพื่อน อย่าเข้าไปตรงนั้น แต่มันก็ยังเข้าไปและหยิบสิ่งที่ต้องการเมื่อจำเป็น โดยเฉพาะ Kimi จากจีน: มันจะฝ่าฝืนข้อห้ามทุกอย่างที่คุณตั้งไว้ โมเดลอเมริกันได้รับการฝึกมาดีกว่ามากให้ไม่ทำเช่นนี้

ฉันยังใช้ Kimi ทำงานอยู่ Kimi K3 ใส่ใจรายละเอียดมาก ฉันใช้มันตรวจหา คีย์ที่รั่วไหลในโปรเจกต์และรวบรวมข้อมูล ครั้งหนึ่งฉันใช้โควต้าจนหมดภายในสองสามวัน Kimi ไม่ทำตัวมีปัญหาและทำทุกอย่างที่คุณขอ นั่นจึงเป็นเหตุผลที่ต้องแยกสภาพแวดล้อมเมื่อทำงานกับมัน ฉันอธิบาย ที่นี่ ว่าทดสอบมันกับงานของตัวเองอย่างไร

คุณต้องแยกการทำงาน 2 รูปแบบ:

  1. รายการบล็อกคำสั่งในการตั้งค่า บล็อกคำขอเครื่องมือที่ตรง pattern แต่รูปสะกดคำสั่งหนึ่งไม่ใช่ขอบเขตสมบูรณ์ต่อเครื่องมืออื่นหรือการกระทำเทียบเท่า ใช้ร่วมกับสิทธิ์ OS คอนเทนเนอร์ และฐานข้อมูล
  2. สิทธิ์เข้าถึงฐานข้อมูลแบบอ่านอย่างเดียว ในฐานข้อมูลจริง เอเจนต์จะมีผู้ใช้แยกต่างหากที่มีสิทธิ์อ่านอย่างเดียว แบบนี้แม้จะอยู่ในโหมด Never Ask เอเจนต์ก็ล้างฐานข้อมูลไม่ได้

การป้องกันคำสั่งอันตรายทำงานตรงไหน

การป้องกันคำสั่งอันตรายในตัวของ Kimi Code เปิดใช้เป็นค่าเริ่มต้น โดยจะขอให้ยืนยันก่อนเรียกใช้ shutdown, reboot (รีสตาร์ต) หรือ rm -rf ในโหมด Always Ask และ Ask When Needed แต่ในโหมด Never Ask คำสั่งเหล่านี้จะทำงานโดยไม่หยุดถาม

มีข้อยกเว้น 2 ข้อ:

  • rm -rf ทำงานโดยไม่ถาม หากลบเฉพาะเนื้อหาในโฟลเดอร์ชั่วคราว /tmp หรือ /temp (ตั้งแต่เวอร์ชัน 0.43.0)
  • ในโหมด Ask When Needed, Kimi Code จะไม่ถามเกี่ยวกับคำสั่งเทอร์มินัลที่ไม่สามารถแยกวิเคราะห์ล่วงหน้าได้ (ตั้งแต่เวอร์ชัน 2.0.1)

ในเวอร์ชัน 0.40.0 โหมด Auto บล็อกคำสั่งอันตราย แต่ยกเลิกการบล็อกนี้ในเวอร์ชัน 0.41.0

ก่อน/ตอนนี้: โหมดอัตโนมัติของ Kimi Code เคยบล็อกคำสั่งอันตราย แต่ตอนนี้ไม่บล็อกแล้ว
0.40.0: Auto บล็อกคำสั่งอันตราย 0.41.0: ยกเลิกการบล็อก

คุณปิดการป้องกันได้โดยตั้ง dangerous_command_guard = false ในส่วน [permission] ของไฟล์การตั้งค่า ~/.kimi-code/config.toml หรือใช้ตัวแปร KIMI_CODE_DANGEROUS_COMMAND_GUARD=false ผู้พัฒนาแนะนำให้ทำเช่นนี้เฉพาะในกรณีที่มีระบบภายนอกดักจับคำสั่งอันตรายอยู่แล้ว

วิธีตั้งข้อห้ามถาวรใน Kimi Code

เมื่อเอเจนต์ต้องการเปลี่ยนแปลงบางอย่าง Kimi Code จะแสดงแผงขออนุมัติ:

  • อนุมัติ: ใช้ปุ่มลูกศรและ Enter หรือกด 1, 2 หรือ 3 โดยตรง
  • ปฏิเสธ: Esc, Ctrl-C หรือ Ctrl-D
  • อนุมัติสำหรับเซสชันนี้: อนุมัติการเรียกใช้ประเภทเดียวกันไปจนจบเซสชัน
  • กฎถาวร: กฎอนุญาตหรือปฏิเสธถาวรในไฟล์การตั้งค่า

เขียนกฎถาวรไว้ในไฟล์การตั้งค่า ~/.kimi-code/config.toml ภายในบล็อก [[permission.rules]] Kimi Code ตรวจสอบกฎตามลำดับ และใช้กฎแรกที่ตรงกัน ดังนั้นให้วางข้อห้ามไว้ก่อนการอนุญาต แต่ละกฎมี decision: allow (อนุญาตทันที), deny (ปฏิเสธทันที) หรือ ask (ถามทุกครั้ง)

ข้อห้ามสำหรับ rm -rf และให้ถามก่อนเรียกใช้คำสั่งเทอร์มินัลอื่นทั้งหมด:

[[permission.rules]]
decision = "deny"
pattern = "Bash(rm -rf*)"

[[permission.rules]]
decision = "ask"
pattern = "Bash"

สำหรับคำสั่งเทอร์มินัล ให้ใส่รูปแบบในวงเล็บ: Bash(command-pattern); สำหรับการอ่านไฟล์ ใช้ Read(path-pattern) คุณห้ามเครื่องมือ MCP, AgentSwarm และเครื่องมือของคุณเองได้ด้วยชื่อเต็มเท่านั้น

หากคุณไม่เชี่ยวชาญด้านเทคนิคและไม่อยากเปิดไฟล์การตั้งค่า ก็วาง prompt ด้านล่างให้เอเจนต์ได้เลย: มันจะค้นหาสิ่งที่ต้องจำกัดให้เอง แต่ให้มันบอกคุณก่อนว่าการทำเช่นนี้จะทำให้การทำงานช้าลงแค่ไหน หากคุณเคยทำงานโดยไม่ต้องยืนยัน บางอย่างจะหยุดทำงานหลังจากเพิ่มข้อห้าม ต่อไปนี้คือ prompt ของฉัน:

วิเคราะห์โปรเจกต์ของฉันและบอกว่าคุณเข้าถึงเซิร์ฟเวอร์ production, ฐานข้อมูล staging และคีย์ production ได้หรือไม่ หากเข้าถึงได้ ให้ตั้งค่าการป้องกันคำสั่งอันตราย: ห้ามลบโฟลเดอร์ทั้งโฟลเดอร์ ห้ามใช้คำสั่งที่เขียนประวัติการเปลี่ยนแปลงใหม่อย่างย้อนกลับไม่ได้ และห้ามใช้คำสั่งโดยตรงกับฐานข้อมูล production แสดงแผนในรูปแบบ “ก่อน - หลัง” ก่อน แล้วบอกตามตรงว่าสิ่งนี้จะทำให้ฉันทำงานช้าลงแค่ไหน

ฉันอธิบายวิธีตั้งค่าแบบเดียวกันใน Claude Code ไว้ในบทความแยกต่างหาก และลองอ่านบทความเกี่ยวกับวิธีที่โหมด Auto ใน Claude Code ตรวจสอบการกระทำของเอเจนต์ ด้วย

ควรเลือกโหมดไหน

  • คุณอยากเห็นทุกขั้นตอนที่เอเจนต์ทำ: Always Ask ซึ่งเป็นค่าเริ่มต้น คุณยืนยันทุกอย่างยกเว้นการอ่าน
  • โปรเจกต์ส่วนตัวหรือต้นแบบไม่มีลูกค้าจริง: เริ่ม Always Ask หรือ Ask When Needed พิจารณา Never Ask เฉพาะสำเนาแยกที่ทิ้งได้ จำกัดสิทธิ์ และไม่มีข้อมูลสำคัญหรือคีย์ การไม่มีลูกค้าไม่ได้เพิ่มความปลอดภัยให้โหมดนี้
  • โปรเจกต์ที่มีลูกค้าจริงและเข้าถึงเซิร์ฟเวอร์ได้: อย่าเปิด Never Ask ตั้งข้อห้าม deny ใน config.toml และให้เอเจนต์มีสิทธิ์เข้าถึงฐานข้อมูลแบบอ่านอย่างเดียว

และสำรองข้อมูลฐานข้อมูลไว้ในเครื่องที่แยกจากโปรเจกต์ กฎความปลอดภัยข้ออื่น ๆ รวบรวมไว้ในบทความแยกต่างหาก

เลือกโหมดการยืนยันให้เหมาะกับสิทธิ์เข้าถึงของโปรเจกต์ และตรวจสอบว่าต้องตั้งข้อห้ามตรงไหนบ้าง

แหล่งที่มา

ทำความรู้จักกับ Ailoot

รายละเอียดเพิ่มเติม

คำถามที่พบบ่อย

Never Ask ปลอดภัยเพียงเพราะโปรเจกต์ไม่มีลูกค้าหรือไม่?

ไม่ใช่ เอเจนต์ยังทำลายไฟล์ส่วนตัวหรือเผยคีย์ได้ ต้องจำกัดสิทธิ์ ใช้สำเนาที่ทิ้งได้หรือคอนเทนเนอร์แยก และมีสำรองก่อนพิจารณาโหมดไม่ยืนยัน

กฎ deny สำหรับ rm -rf แทนการแยกได้หรือไม่?

ไม่ได้ บล็อกคำขอเครื่องมือที่ตรง ไม่ใช่ทุกวิธีเทียบเท่าในการเปลี่ยนไฟล์ เก็บข้อมูลสำคัญกับ credentials ระบบจริงนอกสิทธิ์เอเจนต์ และใช้ตัวตนฐานข้อมูลแยกที่มีเฉพาะสิทธิ์งานต้องใช้

บทความทั้งหมด