Show GN: for-real - GitHub 조직 통째로 날리고 만든 삭제 방지 크롬 익스텐션
(github.com/bssm-oss)테스트 레포 지우려다 9명짜리 GitHub 조직을 통째로 날렸습니다.
Discord 웹훅 봇 end-to-end 테스트하던 중이었는데, 테스트 레포 Settings인 줄 알고 Danger Zone 스크롤해서 "Delete this repository" 눌렀습니다. 삭제 직후 리디렉트된 페이지가 레포 404가 아니라 조직 404였고, 그제서야 전 내내 조직 Settings에 있었다는 걸 깨달았습니다.
결정타는 제가 확인 텍스트를 제대로 안 읽었다는 겁니다. 지울 대상이 당연히 테스트 레포일 거라 믿고 복붙해버렸고, 실제로 입력란에 들어간 건 조직 이름이었습니다. 복붙 한 번에 그대로 통과. 레포, 이슈, PR, 디스커션, CI 히스토리 전부 한 방에 사라졌습니다.
팀원한테 긴급으로 카톡 보내고 GitHub 지원팀 메일 보내서 영업일 7일 기다렸습니다. 그 동안은 푸시도 이슈 보기도 안 됩니다.
근데 생각할수록 이상했습니다.
레포 삭제든 조직 삭제든 복구 경로는 똑같이 "지원팀 메일"입니다. 근데 조직은 멤버 수십 명, 레포 수십 개가 통째로 날아가는데 UI는 레포 삭제 플로우를 그대로 재활용했고, 복붙도 되고, 파괴력 경고도 없습니다. 100배 더 많은 걸 날릴 수 있는 버튼이 똑같이 약한 가드레일로 보호되어 있는 겁니다.
그래서 for-real을 만들었습니다.
등록해둔 레포/조직에서 삭제 버튼 누르면 클릭 가로채고, 20자 랜덤 코드 직접 타이핑해야 5분간 언락됩니다. 복붙은 막혔습니다. 진심이면 타이핑하면 됩니다.
GitHub가 이미 Danger Zone으로 경고하는 건 압니다. 근데 단 한 명이라도 저 같은 실수를 못 하게 막는다면 약간의 시간은 충분히 값어치 있다고 생각했습니다.
웹스토어 심사 중이라 현재는 언팩 설치만 가능합니다. 설치 가이드와 소스는 레포에 있습니다. 피드백 환영합니다.
유튜브 채널 삭제하려다가 구글계정 삭제했다는 이야기를 들었었는데(다행히 복구는 됐답니다)
그분도 이런 절차가 있었다면 그런 참사는 막을 수 있었을까요...?
생각보다 Settings UI가 비슷하게 생겨서, 멍한 상태에서 하다 보니 헷갈리더라고요;;
깃헙이 Danger Zone으로 분리해두긴 했는데, 결국 휴먼에러는 그 안에서도 일어나더라고요,,
https://httpie.io/blog/stardust 예전에 비슷한 이유로 54k star가 초기화된 일도 있었는데요, 그때도 UI 문제가 지적되었는데 벌써 4년이 지났었군요.
등골이 오싹하셨을 듯합니다. 경험담을 나누고 문제 방지 해결책을 내놓으시는 모습이 멋집니다.
이런 큰 규모의 삭제는 유예 기간 같은 것이 있어야 하지 않나 싶습니다. 컴퓨터의 휴지통처럼 실제 삭제는 며칠 후에 이루어지게 하여, 다시 복구할 수 있는 장치가 필요해 보이네요.