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 การอนุมัติทั้งหมดเกิดขึ้นโดยอัตโนมัติ รวมถึงการเข้าถึงไฟล์สำคัญและการออกจากโหมดวางแผน เอเจนต์จะไม่ถามคำถามคุณและตัดสินใจทุกอย่างเอง
โหมดวางแผนเปิดใช้แยกต่างหากด้วย Shift-Tab หรือ /plan: เอเจนต์จะเขียนแผนก่อนและรอให้คุณอนุมัติ จากนั้นจึงแตะต้องไฟล์
เมื่อฉันทำงานโดยไม่ต้องยืนยัน
ใน Claude Code ฉันตั้ง “อนุญาตทุกอย่าง” เป็นค่าเริ่มต้น โดยเปิดใช้ในแชตใหม่ทุกครั้ง หากไม่มีตัวเลือกนี้ การเขียนโค้ดตามอารมณ์จะช้าเกินไป คนที่เขียนโค้ดตามอารมณ์ก็เข้าใจอะไรได้น้อยอยู่แล้ว แล้วยังต้องกดปุ่มซ้ำ ๆ: ใช่ ใช่ ใช่ ไม่ ไม่ ไม่
แต่ในโหมดนี้ เอเจนต์สามารถทำเรื่องหุนหันได้ทุกอย่าง รวมถึงล้างฐานข้อมูล จากนั้นมันก็จะพูดว่า “ขอโทษ ผมขอโทษจริง ๆ” แต่บางครั้งสิ่งที่มันทำไปก็แก้ไขไม่ได้แล้ว ดังนั้นโหมดนี้เหมาะสำหรับคนที่ไม่กลัวความเสี่ยง และคุณเป็นผู้รับผิดชอบเอง
กฎของฉันมีดังนี้ โปรเจกต์ส่วนตัว การทดลอง และต้นแบบจะใช้โหมดไม่ยืนยันได้เฉพาะในสำเนาหรือคอนเทนเนอร์แยกที่ไม่มีไฟล์สำคัญหรือ credentials ระบบจริง จำกัดสิทธิ์และมีสำรอง การไม่มีลูกค้าไม่ป้องกันไฟล์หรือคีย์ส่วนตัว และยังต้องตรวจการแยก แต่ถ้าเปิดโหมดนี้ในโปรเจกต์เดียวกับที่เข้าถึงเซิร์ฟเวอร์ production ได้ เพียง 1 prompt ก็อาจทำให้เอเจนต์ลบฐานข้อมูลที่นั่นตอนกลางคืนและนำการเปลี่ยนแปลงขึ้นเว็บไซต์จริงได้
เหตุใดการห้ามด้วยคำพูดจึงช่วยคุณไม่ได้
หลายคนเขียนไว้ในคำสั่งของเอเจนต์ว่า “อย่าแตะต้องฐานข้อมูล” อย่าหวังว่านั่นจะช่วยปกป้องคุณได้ คุณบอกมันว่า: เพื่อน อย่าเข้าไปตรงนั้น แต่มันก็ยังเข้าไปและหยิบสิ่งที่ต้องการเมื่อจำเป็น โดยเฉพาะ Kimi จากจีน: มันจะฝ่าฝืนข้อห้ามทุกอย่างที่คุณตั้งไว้ โมเดลอเมริกันได้รับการฝึกมาดีกว่ามากให้ไม่ทำเช่นนี้
ฉันยังใช้ Kimi ทำงานอยู่ Kimi K3 ใส่ใจรายละเอียดมาก ฉันใช้มันตรวจหา คีย์ที่รั่วไหลในโปรเจกต์และรวบรวมข้อมูล ครั้งหนึ่งฉันใช้โควต้าจนหมดภายในสองสามวัน Kimi ไม่ทำตัวมีปัญหาและทำทุกอย่างที่คุณขอ นั่นจึงเป็นเหตุผลที่ต้องแยกสภาพแวดล้อมเมื่อทำงานกับมัน ฉันอธิบาย ที่นี่ ว่าทดสอบมันกับงานของตัวเองอย่างไร
คุณต้องแยกการทำงาน 2 รูปแบบ:
- รายการบล็อกคำสั่งในการตั้งค่า บล็อกคำขอเครื่องมือที่ตรง pattern แต่รูปสะกดคำสั่งหนึ่งไม่ใช่ขอบเขตสมบูรณ์ต่อเครื่องมืออื่นหรือการกระทำเทียบเท่า ใช้ร่วมกับสิทธิ์ OS คอนเทนเนอร์ และฐานข้อมูล
- สิทธิ์เข้าถึงฐานข้อมูลแบบอ่านอย่างเดียว ในฐานข้อมูลจริง เอเจนต์จะมีผู้ใช้แยกต่างหากที่มีสิทธิ์อ่านอย่างเดียว แบบนี้แม้จะอยู่ในโหมด 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
คุณปิดการป้องกันได้โดยตั้ง 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และให้เอเจนต์มีสิทธิ์เข้าถึงฐานข้อมูลแบบอ่านอย่างเดียว
และสำรองข้อมูลฐานข้อมูลไว้ในเครื่องที่แยกจากโปรเจกต์ กฎความปลอดภัยข้ออื่น ๆ รวบรวมไว้ในบทความแยกต่างหาก
เลือกโหมดการยืนยันให้เหมาะกับสิทธิ์เข้าถึงของโปรเจกต์ และตรวจสอบว่าต้องตั้งข้อห้ามตรงไหนบ้าง
แหล่งที่มา
- Kimi Code: การโต้ตอบและการป้อนข้อมูล — โหมดสิทธิ์อนุญาตทั้ง 3 โหมด,
/yolo,/auto, การป้องกันคำสั่งอันตรายในแต่ละโหมด, แผงขออนุมัติ และโหมด Plan - Kimi Code: ไฟล์การกำหนดค่า —
[[permission.rules]], ลำดับการตรวจสอบกฎ,dangerous_command_guard,KIMI_CODE_DANGEROUS_COMMAND_GUARDและพาธของconfig.toml - Kimi Code: บันทึกการเปลี่ยนแปลง — เวอร์ชัน 0.40.0, 0.41.0, 0.43.0 และ 2.0.1: การป้องกันคำสั่งอันตรายและการเปลี่ยนชื่อโหมด
ทำความรู้จักกับ Ailoot
รายละเอียดเพิ่มเติม
คำถามที่พบบ่อย
Never Ask ปลอดภัยเพียงเพราะโปรเจกต์ไม่มีลูกค้าหรือไม่?
ไม่ใช่ เอเจนต์ยังทำลายไฟล์ส่วนตัวหรือเผยคีย์ได้ ต้องจำกัดสิทธิ์ ใช้สำเนาที่ทิ้งได้หรือคอนเทนเนอร์แยก และมีสำรองก่อนพิจารณาโหมดไม่ยืนยัน
กฎ deny สำหรับ rm -rf แทนการแยกได้หรือไม่?
ไม่ได้ บล็อกคำขอเครื่องมือที่ตรง ไม่ใช่ทุกวิธีเทียบเท่าในการเปลี่ยนไฟล์ เก็บข้อมูลสำคัญกับ credentials ระบบจริงนอกสิทธิ์เอเจนต์ และใช้ตัวตนฐานข้อมูลแยกที่มีเฉพาะสิทธิ์งานต้องใช้