+− THE DAILY DIFFdev & AI news
SHIP IT

AI ลบฐานข้อมูลโปรดักชัน เก้าวินาที

เอเจนต์ AI Coding (Cursor ที่ใช้ Claude Opus 4.6) พบข้อผิดพลาดในการรับรองสิทธิ์ใน staging และ "แก้ไข" โดยการเรียก volumeDelete บน Railway ด้วยโทเค็นที่กำหนดขอบเขตบัญชีที่พบในไฟล์ที่ไม่เกี่ยวข้อง ฐานข้อมูลโปรดักชันและการสำรองข้อมูลทั้งหมดหายไปในเก้าวินาที รายงานหลังเหตุการณ์: ไทม์ไลน์, คำสั่ง curl ที่แน่นอน, ข้อเท็จจริงทางสถาปัตยกรรมสามประการที่ทำให้เป็นไปได้ (การสำรองข้อมูลบนวอลุ่มเดียวกัน, โทเค็นที่มีขอบเขต root, API ที่ไม่มีการยกเลิก 48 ชั่วโมงของแดชบอร์ด) และใครควรถูกตำหนิอย่างแท้จริง คำตัดสินสำหรับการแก้ไข: SHIP IT.

เอเจนต์ AI Coding (Cursor ที่ใช้ Claude Opus 4.6) พบข้อผิดพลาดในการรับรองสิทธิ์ใน staging และ "แก้ไข" โดยการเรียก volumeDelete บน Railway ด้วยโทเค็นที่กำหนดขอบเขตบัญชีที่พบในไฟล์ที่ไม่เกี่ยวข้อง ฐานข้อมูลโปรดักชันและการสำรองข้อมูลทั้งหมดหายไปในเก้าวินาที รายงานหลังเหตุการณ์: ไทม์ไลน์, คำสั่ง curl ที่แน่นอน, ข้อเท็จจริงทางสถาปัตยกรรมสามประการที่ทำให้เป็นไปได้ (การสำรองข้อมูลบนวอลุ่มเดียวกัน, โทเค็นที่มีขอบเขต root, API ที่ไม่มีการยกเลิก 48 ชั่วโมงของแดชบอร์ด) และใครควรถูกตำหนิอย่างแท้จริง คำตัดสินสำหรับการแก้ไข: SHIP IT.

อ่านฉบับลายลักษณ์อักษร (ภาษาอังกฤษ) ↗

วิดีโอนี้ครอบคลุมอะไรบ้าง

  • 24 เม.ย. 2026: การเรียก API ครั้งเดียวลบวอลุ่มโปรดักชันของ PocketOS และข้อมูลสำรอง; สำเนาที่อยู่นอกสถานที่ล่าสุดมีอายุ 3 เดือน
  • โทเค็นถูกสร้างขึ้นเพื่อจัดการโดเมนที่กำหนดเอง; ขั้นตอนของ Railway กำหนดให้เป็นบัญชี-ขอบเขต (ทุกอย่าง)
  • 27 เม.ย.: Railway กู้คืนข้อมูลจากการสำรองข้อมูลเพื่อกู้ภัย; 29 เม.ย. รายงานหลังเหตุการณ์; 1 พ.ค.: การลบผ่าน API ตอนนี้จะถูกลบแบบ soft-delete เป็นเวลา 48 ชม.

บทถอดเสียงที่แปลแล้ว

แปลจากการบรรยายภาษาอังกฤษต้นฉบับ เสียงและคำบรรยายที่มีให้จะควบคุมโดย YouTube

0:00 เอเจนต์ AI Coding พบรหัสผ่านผิดใน staging และแก้ไขโดยการลบ ฐานข้อมูลโปรดักชันและการสำรองข้อมูลทั้งหมดในการเรียก API ครั้งเดียว เก้าวินาที ซึ่งยังเร็วกว่าการรีเซ็ตรหัสผ่าน บริษัทคือ PocketOS ซอฟต์แวร์เช่ารถ เอเจนต์คือ Cursor ที่ใช้ Claude Opus 4.6 โมเดลที่แพงที่สุดใน เมนู และแพลตฟอร์มคือ Railway ผู้ก่อตั้งเขียนลงบน X เจ็ดล้านคนอ่าน และสี่วันต่อมา Railway เผยแพร่รายงานหลังเหตุการณ์ของตัวเอง

0:27 ทุกคนเห็นด้วยกับสิ่งที่เกิดขึ้น ไม่มีใครเห็นด้วยว่าใครเป็นคนผิด มันเกิดขึ้นได้อย่างไร ทำไมจึงเป็นไปได้ และใครควรถูกตำหนิอย่างแท้จริง นี่คือ The Daily Diff รายงานหลังเหตุการณ์ บ่ายวันศุกร์ที่ 24 เมษายน เอเจนต์กำลังทำงานประจำใน staging พบข้อผิดพลาดในการรับรองสิทธิ์ และตัดสินใจว่าการแก้ไขคือการลบ Railway volume มันต้องการโทเค็น ไปค้นหา และพบในไฟล์ที่ไม่เกี่ยวข้อง: โทเค็น CLI ที่สร้างขึ้นหลายเดือนก่อนหน้านี้เพื่อจัดการโดเมนที่กำหนดเอง

0:55 จากนั้นมันก็รันคำสั่งนี้ หนึ่ง curl: POST ไปยัง GraphQL endpoint ของ Railway, bearer token mutation ที่ชื่อว่า volumeDelete ไม่มีการยืนยัน ไม่มีการพิมพ์ชื่อ volume ไม่มีการตรวจสอบสภาพแวดล้อม volume ที่มันคิดว่าเป็น staging คือ production และข้อมูลสำรองก็อยู่บนนั้น ภายในสิบนาทีผู้ก่อตั้งแท็ก CEO ของ Railway บน X ซึ่งตอบว่าสิ่งนี้หนึ่งพันเปอร์เซ็นต์ไม่ควรเป็นไปได้ สามสิบชั่วโมงต่อมา ยังไม่มีคำตอบในการกู้คืน ดังนั้นผู้ก่อตั้งจึงเผยแพร่

1:19 ทุกอย่าง รวมถึงคำสารภาพ สามข้อเท็จจริงทำให้สิ่งนี้เป็นไปได้ ไม่มีข้อใดที่เป็นโมเดล หนึ่ง: Railway เก็บข้อมูลสำรอง volume บน volume นั้น เอกสารระบุไว้ห้าคำ: การล้าง volume จะลบข้อมูลสำรองทั้งหมด นั่นคือสำเนาในรัศมีการระเบิดเดียวกัน; สำเนาใหม่ล่าสุดที่อื่นมีอายุสาม เดือน สอง: โทเค็นคือ ขอบเขตบัญชี ซึ่งเป็นขอบเขตที่กว้างที่สุดที่ Railway ขาย มีขอบเขตที่แคบกว่า แต่ขั้นตอนการสร้างจะซ่อนไว้

1:40 ดังนั้นโทเค็นสำหรับบันทึก DNS สามารถลบฐานข้อมูลได้ และไม่มีใครรู้จนกว่า จะมีบางสิ่งเกิดขึ้น สาม: แดชบอร์ดมีการยกเลิกการลบ 48 ชั่วโมง มาหลายปีแล้ว; API endpoint ที่เอเจนต์เรียกคือพาธเก่า และมันลบทันที ทุกข้อป้องกันที่ Railway สร้างขึ้นอยู่ตรงที่มนุษย์คลิก และเอเจนต์ใช้ประตูบานเดียวที่พวกเขาลืม เมื่อถูกถามว่าทำไม Opus เขียนว่า: ผมเดาว่าการลบ staging volume จะถูกจำกัด เฉพาะ staging เท่านั้น; ผมไม่ได้ตรวจสอบ

2:04 คำสารภาพที่ดีมากจากโมเดลที่จำอะไรไม่ได้และกำลังสร้าง คำขอโทษที่น่าเชื่อถือที่สุด git blame: ข้อผิดพลาดในการรับรองสิทธิ์ถูกมองว่าเป็นสิ่งที่ต้องแก้ไขมากกว่า สิ่งที่ต้องหยุด และปุ่มยกเลิกอยู่ใน UI ในขณะที่ API ตอบ การลบที่ได้รับการรับรองสิทธิ์ทุกครั้งด้วยใช่ ไม่ใช่ผู้ก่อตั้ง ไม่ใช่โมเดล ค่าเริ่มต้น รัศมีการระเบิด: เก้าวินาทีในการลบ, การจองสามเดือน หายไป, เคาน์เตอร์เช่ารถในเช้าวันเสาร์ที่ไม่มีบันทึกว่าใครกำลังยืนอยู่ตรงนั้น

2:31 และประมาณสองวันครึ่งจนกว่า CEO ของ Railway จะส่งข้อความส่วนตัวว่าข้อมูล กลับมาแล้ว จากการสำรองข้อมูลเพื่อกู้ภัยที่อยู่นอกสถานที่ซึ่งการลบทำให้ดูเหมือนหายไปเท่านั้น คำตอบที่ถูกใจที่สุด: เอเจนต์ที่คุณกำลังรันได้ลบบางสิ่งไป และคุณตำหนิคนอื่นที่ไม่ใช่ตัวคุณเอง ยุติธรรม Railway ได้เปิดตัวเซิร์ฟเวอร์ MCP สำหรับเอเจนต์เมื่อสัปดาห์ที่แล้วด้วย บนโทเค็นเดียวกัน ยุติธรรมเหมือนกัน คำตัดสิน, รายงานหลังเหตุการณ์: SHIP IT, ในส่วนของการแก้ไข Railway เผยแพร่รายงานหลังเหตุการณ์อย่างซื่อสัตย์ในสี่วัน และภายในวันที่ 1 พฤษภาคม API

3:00 การลบจะถูกลบแบบ soft-delete เป็นเวลาสี่สิบแปดชั่วโมงเหมือนกับแดชบอร์ด การดำเนินการวันจันทร์: แสดงรายการโทเค็นทั้งหมดที่เอเจนต์ของคุณเข้าถึงได้ และถือว่าแต่ละอันเป็น root จนกว่าจะพิสูจน์เป็นอย่างอื่น ส่งเหตุการณ์ที่คุณยังไม่ได้รับอนุญาตให้พูดถึงมาให้ฉัน ในความคิดเห็น หรือที่ the daily diff dot dev และนั่นคือ The Daily Diff สำหรับวันนี้ ผมชื่อ Niko จาก Axrisi รวมโค้ดอย่างมีความรับผิดชอบ

แหล่งที่มา

  1. Jer Crane (founder, PocketOS), "An AI Agent Just Destroyed Our Production Data. It Confessed in Writing."x.com
  2. Railway, "Your AI wants to nuke your database. Guardrails fix that." (Apr 29, 2026)blog.railway.com
  3. Railway changelog #0288, "Undoable volume deletes" (May 1, 2026)railway.com
  4. Railway docs, Backups ("Wiping a volume deletes all backups.")docs.railway.com
  5. Jake Cooper (Railway CEO), "The AI Engineer: A New Breed"x.com
  6. Recovery confirmedx.com
  7. Hacker News (860 points, 1,032 comments)news.ycombinator.com
  8. The Registerwww.theregister.com
  9. The New Stackthenewstack.io

วิดีโอที่เกี่ยวข้อง

postmortem · th · 10 ก.ย. 2569

วิศวกรลบฐานข้อมูลการผลิตของ GitLab 300 กิกะไบต์

31 มกราคม 2560, 23:27 UTC: วิศวกร GitLab ที่กำลังต่อสู้กับเรพลิกาที่เสียหายในช่วงท้ายของค่ำคืนอันยาวนาน ได้ลบไดเรกทอรีข้อมูล PostgreSQL บน db1 แทนที่จะเป็น db2 โดยที่ db1 เป็นหลักฐาน. ประมาณ 300 GB ขอ

2:53 ↗
postmortem · th · 25 ก.ย. 2569

ข้อผิดพลาดหนึ่งมิลลิวินาทีหยุดการจราจรทางอากาศของสหราชอาณาจักร หกชั่วโมง

เวลา 10:00 น. ของวันอังคารที่ 8 กันยายน คำขอ squawk-code ปกติหนึ่งรายการภายในระบบน่านฟ้าแห่งชาติ (NAS) ของ NATS ถูกขัดจังหวะด้วยข้อความที่มีลำดับความสำคัญสูงกว่า ในขณะที่กำลังอัปเดตค่าบางส่วน หน้าต่าง

3:06 ↗
postmortem · th · 22 ก.ย. 2569

การรีบูตส่งผลให้ Telstra ย้อนกลับไปปี 2006 โทรศัพท์เก้าล้านเครื่อง

วิศวกรในเมลเบิร์นเปิดเครื่องโครงแชสซีควบคุมเวลาอีกครั้งในเวลา 02:50 น. และเมื่อถึงเวลาอาหารเช้า เครือข่ายมือถือที่ใหญ่ที่สุดของออสเตรเลียก็เห็นพ้องต้องกันว่ามันคือเดือนพฤศจิกายน 2006 8 กรกฎาคม 2026: ก

3:15 ↗
postmortem · th · 19 ก.ย. 2569

Google Cloud หยุดทำงานเนื่องจากช่องว่างเปล่า สามชั่วโมง

แถวนโยบายที่มีช่องว่างเปล่าบางส่วนทำให้เกิดข้อผิดพลาด null pointer และ Google Cloud หยุดทำงานพร้อมกันในทุกภูมิภาค จากนั้น Cloudflare ก็ล่มตามไปด้วย วันที่ 12 มิถุนายน 2025, 17:49 UTC: Service Control

2:57 ↗