2 điểm bởi justn 2026-04-17 | 10 bình luận | Chia sẻ qua WhatsApp

Tôi định xóa một repo test, nhưng lại xóa bay toàn bộ một tổ chức GitHub gồm 9 người.

Lúc đó tôi đang chạy kiểm thử end-to-end cho bot webhook Discord, và vì tưởng mình đang ở phần Settings của repo test nên tôi cuộn xuống Danger Zone rồi nhấn "Delete this repository". Ngay sau khi xóa, trang được chuyển hướng không phải sang 404 của repo mà là 404 của tổ chức, và đến lúc đó tôi mới nhận ra suốt từ đầu mình đang ở phần Settings của tổ chức.

Đòn chí mạng là tôi đã không đọc kỹ đoạn văn bản xác nhận. Tôi tin chắc thứ mình sắp xóa đương nhiên là repo test nên chỉ copy-paste cho xong, nhưng thứ thực sự được nhập vào ô lại là tên tổ chức. Chỉ một lần dán là xác nhận luôn. Repo, issue, PR, discussion, toàn bộ lịch sử CI đều biến mất trong một cú.

Tôi nhắn KakaoTalk khẩn cho đồng đội rồi gửi mail cho đội hỗ trợ GitHub và chờ 7 ngày làm việc. Trong thời gian đó thì không thể push hay xem issue gì cả.

Nhưng càng nghĩ tôi càng thấy kỳ lạ.

Dù là xóa repo hay xóa tổ chức thì đường khôi phục cũng giống nhau: đều là "gửi mail cho đội hỗ trợ". Nhưng trong khi tổ chức có thể khiến hàng chục thành viên và hàng chục repo biến mất cùng lúc, UI lại tái sử dụng nguyên xi luồng xóa repo, vẫn cho phép copy-paste và cũng không có cảnh báo nào tương xứng với mức độ phá hủy. Một nút có thể gây thiệt hại lớn hơn gấp 100 lần lại được bảo vệ bằng đúng hàng rào yếu ớt như nút xóa repo.

Vì thế tôi đã tạo ra for-real.

Khi bạn nhấn nút xóa trong repo/tổ chức đã đăng ký, tiện ích sẽ chặn cú nhấp và yêu cầu bạn tự gõ một mã ngẫu nhiên 20 ký tự thì mới được mở khóa trong 5 phút. Việc copy-paste đã bị chặn. Nếu thật sự muốn xóa thì cứ gõ tay.

Tôi biết GitHub đã cảnh báo bằng Danger Zone rồi. Nhưng nếu chỉ cần ngăn được dù chỉ một người mắc sai lầm như tôi, thì thêm một chút thời gian hoàn toàn xứng đáng.

Hiện tiện ích mới chỉ có thể cài bằng cách unpack vì vẫn đang chờ duyệt trên Web Store. Hướng dẫn cài đặt và mã nguồn đều có trong repo. Rất mong nhận được phản hồi.

Showcase: https://www.youtube.com/watch?v=n3q9DMqOb_s

10 bình luận

 
joyfui 2026-04-17

Tôi từng nghe chuyện có người định xóa kênh YouTube nhưng lại xóa luôn cả tài khoản Google của mình (may mà đã khôi phục được).
Nếu lúc đó cũng có quy trình như thế này, liệu bi kịch đó có ngăn được không...?

 
dydwls140 2026-04-17

Delete this repository, Delete this organization mà cũng có thể nhầm lẫn được nhỉ

 
justn 2026-04-17

Giao diện Settings trông giống nhau hơn mình tưởng, nên lúc lơ mơ làm thì dễ bị nhầm thật;;
GitHub có tách riêng vào Danger Zone rồi, nhưng cuối cùng lỗi con người vẫn xảy ra ngay cả trong đó,,

 
dydwls140 2026-04-17

Chắc phải cẩn thận thôi..

 
ipeng 2026-04-17

https://httpie.io/blog/stardust Trước đây cũng từng có vụ 54k star bị reset vì lý do tương tự; khi đó vấn đề về UI cũng đã bị chỉ ra, vậy mà đã 4 năm trôi qua rồi.

 
runableapp 2026-04-17

Chắc hẳn bạn đã thấy lạnh sống lưng. Thật tuyệt khi bạn chia sẻ trải nghiệm và đưa ra giải pháp để ngăn vấn đề tái diễn.

Tôi nghĩ với những vụ xóa quy mô lớn như thế này thì nên có một khoảng thời gian chờ. Giống như thùng rác trên máy tính, có lẽ cần một cơ chế để việc xóa thực sự chỉ diễn ra sau vài ngày, nhờ đó vẫn có thể khôi phục lại.

 
hshim 2026-04-17

Ôi, hú hồn thật..

 
holywork 2026-04-17

Có vẻ chỉ cần ngăn chặn sao chép và dán là được.

 
justn 2026-04-17

Tôi cũng do không suy nghĩ mà copy-paste nên đã làm mất luôn.. nên trong dự án này tôi cũng chặn cả việc copy-paste. Cảm ơn bạn đã đọc bài.

 
holywork 2026-04-21

Cảm ơn bạn đã chia sẻ một chương trình hay. Sẽ thật tốt nếu phía GitHub tự triển khai cơ chế trì hoãn việc xóa tổ chức hoặc tài khoản khoảng 24–72 giờ.