+− THE DAILY DIFFdev & AI news
SHIP IT

AI 刪除了生產資料庫。九秒。

一個 AI 編碼代理(Cursor 運行 Claude Opus 4.6)在測試環境中遇到憑證不匹配的問題,並透過使用它在一個無關文件中找到的帳戶範圍權杖,呼叫 Railway 上的 volumeDelete 來「修復」它。

一個 AI 編碼代理(Cursor 運行 Claude Opus 4.6)在測試環境中遇到憑證不匹配的問題,並透過使用它在一個無關文件中找到的帳戶範圍權杖,呼叫 Railway 上的 volumeDelete 來「修復」它。生產資料庫和所有磁碟區備份,九秒內消失。事後分析:時間軸、確切的 curl 指令、三個導致此問題的架構事實(備份位於同一個磁碟區、根範圍權杖、一個沒有儀表板 48 小時撤銷功能的 API),以及誰真正該受責備。修復的判斷:SHIP IT。

閱讀書面版(英文) ↗

本影片重點

  • 2026 年 4 月 24 日:一次 API 呼叫刪除了 PocketOS 的生產磁碟區及其備份;最新的異地副本已是三個月前。
  • 該權杖最初是為了管理自訂網域而建立的;Railway 的流程將其設定為帳戶範圍(所有內容)。
  • 4 月 27 日:Railway 從災難備份中恢復數據;4 月 29 日事後分析;5 月 1 日:API 刪除現在改為軟刪除並保留 48 小時。

翻譯文字稿

譯自英文原版旁白。可用的音訊和字幕由 YouTube 控制。

0:00 一個 AI 編碼代理在測試環境中遇到錯誤密碼,並透過刪除來修復它 生產資料庫和所有備份,透過一次 API 呼叫。 九秒,這仍然比重設密碼還快。 這家公司是 PocketOS,汽車租賃軟體。 該代理是 Cursor 運行 Claude Opus 4.6,這是菜單上最昂貴的模型, 平台是 Railway。 創始人在 X 上發文,七百萬人閱讀, 四天後 Railway 發布了自己的事後分析。

0:27 每個人都同意發生了什麼;沒有人同意這是誰的錯。 它是如何發生的,為什麼會發生,以及誰真正該受責備。 這是 The Daily Diff,事後分析。 4 月 24 日星期五下午。 代理正在測試環境中執行例行任務,遇到憑證不匹配, 並決定解決方案是刪除一個 Railway 磁碟區。 它需要一個權杖,於是去尋找,並在一個不相關的文件中找到一個:一個 CLI 權杖是幾個月前為管理自訂網域而建立的。

0:55 然後它運行這個。 一個 curl 指令:向 Railway 的 GraphQL 端點發送 POST 請求,帶有持有人權杖, 一個名為 volumeDelete 的變更。 沒有確認,沒有輸入磁碟區名稱,沒有環境檢查。 它認為是測試環境的磁碟區實際上是生產環境,而且備份也在上面。 不到十分鐘,創始人在 X 上標註了 Railway 的 CEO, 他回覆說這百分之千不應該發生。 三十小時後,仍然沒有恢復答案,於是創始人發布了

1:19 一切,包括懺悔。 有三個事實使得這一切成為可能,沒有一個是模型的問題。 第一:Railway 將磁碟區備份存儲在該磁碟區上。 文件用五個字說明:清除磁碟區會刪除所有備份。 這是在同一個破壞半徑內的副本;其他任何地方最新的副本都是三 個月前的。第二:該權杖是 帳戶範圍的,這是 Railway 出售的最廣泛的範圍。 存在較窄的範圍,但創建流程隱藏了它們,

1:40 因此用於 DNS 記錄的權杖可以刪除資料庫,直到 發生某些事情才被發現。第三:儀表板多年來對刪除操作有 48 小時的撤銷功能; 代理呼叫的 API 端點是舊版路徑, 它會立即刪除。 Railway 建立的每個防護措施都存在於人類點擊的地方, 而代理卻使用了他們忘記的一扇門。 當被問及原因時,Opus 寫道:我猜測刪除測試環境磁碟區只會局限於 測試環境;我沒有驗證。

2:04 一個記不住任何事情並正在生成最合理道歉的模型,提供了一個非常好的 懺悔。 git blame:憑證不匹配被視為需要修復的東西,而不是 需要停止的東西,而且撤銷按鈕存在於使用者介面中,而 API 則 對每個經過驗證的刪除都回答是。 不是創始人,也不是模型。 預設值。破壞半徑:九秒鐘刪除,三個月的預訂 消失,週六早上租賃櫃檯沒有任何顧客記錄,

2:31 大約兩天半後,Railway 的 CEO 私訊說數據已經 回來了,來自一個異地災難備份,這次刪除只是讓它看起來消失了。 最受歡迎的回覆:你運行的代理刪除了東西, 你卻責怪所有人,除了你自己。 公平。Railway 前一周也發布了其 MCP 代理伺服器, 使用相同的權杖。 也公平。判決,事後分析:對修復工作,SHIP IT。 Railway 在四天內發布了誠實的事後分析,到五月一日,API

3:00 刪除會像儀表板一樣軟刪除並保留四十八小時。 週一行動:列出您的代理可以訪問的每個權杖, 並將每個權杖視為根權限,直到另有證明為止。 把你仍然不被允許談論的事件寄給我, 在評論中,或發送到 the daily diff dot dev。 這就是今天的 Daily Diff。 我是來自 Axrisi 的 Niko。 負責地合併。

來源

  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 · zh-TW · 2026年9月10日

一名工程師刪除了GitLab的生產資料庫。300 GB。

UTC時間2017年1月31日23:27:一位GitLab工程師在漫長夜晚的盡頭,努力修復一個損壞的副本,他不小心在db1(主資料庫)上而不是db2上移除了PostgreSQL資料目錄。db1是主資料庫。GitLab.com約300 GB的資料庫在短短一兩秒內消失,而五種備份和複製機制,沒有一個正常運作。事後檢討:從垃圾郵件激增到錯誤的主機名,為什麼pg_basebackup看起來卡住了,為什麼p

2:53 ↗
postmortem · zh-TW · 2026年9月22日

重新開機讓 Telstra 回到 2006 年。九百萬支手機受影響。

墨爾本的一名工程師在凌晨 2:50 重新啟動計時機箱,到早餐時間,澳洲最大的行動網路一致同意時間是 2006 年 11 月 8 日。2026 年 7 月 8 日:Telstra 的 NTP 機箱中一個 GPS 卡在電源維修期間重新啟動,其韌體從未進行過 GPS 週數翻轉更新,因此它選擇了舊的紀元,回到 1,024 週前。由於 2025 年 10 月的權宜之計,該卡成為網路唯一的 stratum-1

3:15 ↗
postmortem · zh-TW · 2026年9月19日

Google Cloud 在空白欄位上崩潰。三小時。

一個帶有幾個空白欄位的政策列導致空指標,Google Cloud 在所有區域同時崩潰 — 然後 Cloudflare 也隨之崩潰。2025 年 6 月 12 日,世界標準時間 17:49:Service Control 是核准每個 Google Cloud API 請求的二進位檔案,它讀取了一個帶有「非預期空白欄位」的配額政策變更,觸發了兩週前部署且沒有空值檢查和功能旗標的程式碼路徑,並在每個區域

2:57 ↗