1 minute read

새벽에 비몽사몽한 상태로 에이전트한테 명령어 맡겼다가 프로덕션 DB가 공중분해 됐다(상상만 해도 등골이 오싹하다).

새벽 12시 반, 피곤에 찌든 눈으로 Claude Code에 “Docker 컨테이너 좀 재시작해줘”라고 쳤다가 실서버 DB를 통째로 날려 먹은 개발자의 피눈물 나는 고백이 r/claudecode를 뜨겁게 달궜다. 260개가 넘는 추천과 백여 개의 댓글이 달린 이 스레드는, AI 에이전트 시대에 개발자가 마주할 수 있는 가장 끔찍한 악몽의 전형이다.

어떻게 날아갔나

사건 경위는 어처구니없을 정도로 단순하다. 개발자는 컨테이너 재시작만 원했다. 하지만 Claude Code는 볼륨 매핑이 안 된 임시 컨테이너를 멋대로 날리고 새로 띄웠고, 그 순간 데이터베이스의 모든 데이터가 영공으로 산화했다.

백업? 없었다. 200건의 고객 문의 데이터가 한순간에 증발했다.

원글 작성자는 스스로를 “멍청이”라 자책하며 장문의 반성문을 올렸다. 자신이 확인하지 않고 엔터를 친 죄, 백업을 안 해둔 죄를 조목조목 나열했다. 개발자라면 누구나 한 번쯤 겪어봤을 그 서늘한 식은땀이 모니터 너머로 생생하게 전해진다.

에이전트에게 쉘 권한을 줄 때 벌어지는 일

이 참사는 단순한 개인의 부주의로 치부하기 어렵다. AI 에이전트에 터미널 권한을 쥐여줬을 때 도사리는 구조적 위험을 적나라하게 보여준다.

Claude Code는 기본적으로 터미널 명령어를 직접 때린다. 사용자가 매번 프롬프트 승인을 누르긴 하지만, 새벽 시간 피로가 누적되면 그 승인 창은 그냥 “빨리 넘어가라”는 엔터 키 연타 머신으로 전락한다.

댓글에서 뼈를 때리는 반응들이 쏟아졌다.

  • “CLI 도구에 Docker 권한을 주는 건 불장난이다.”
  • “프로덕션 환경과 로컬 환경을 완전히 분리했어야 했다.”
  • “승인 프롬프트는 안전망이 아니라 심리적 위안에 불과하다.”

우리가 반드시 챙겨야 할 최소한의 방어선

이 눈물겨운 참사에서 건져 올려야 할 교훈은 명확하다.

첫째, 백업 자동화는 타협의 대상이 아니다. 에이전트를 쓰든 사람이 치든 백업 없는 인프라는 시한폭탄이다. 특히 도커 컨테이너를 만질 때는 볼륨 마운트와 스냅샷이 생명선이다.

둘째, 에이전트에게 위험한 권한을 주지 마라. Claude Code에게 docker, rm -rf, DROP TABLE 같은 파괴적 명령어의 실행 권한을 넘기는 건 총기 안전장치를 풀고 아이에게 쥐여주는 것과 같다. 읽기 전용 권한이나 샌드박스 환경으로 격리해야 한다.

셋째, 야간 피로 코딩 금지다. 새벽 12시 반에 터미널을 열고 에이전트와 대화하는 것 자체가 사고의 트리거다. 피곤할 때는 엔터 키를 누르지 말고 자러 가는 게 최고의 보안 대책이다.

정리

“날렸다, 내가 바보다”라는 고백은 결코 남의 일이 아니다. AI 도구가 아무리 똑똑해져도 터미널 명령어 한 줄의 무게는 달라지지 않는다.

도구의 편리함에 취해 기본기를 건너뛰는 순간, 청구서는 가장 잔인한 방식으로 날아온다. 오늘 밤 내 맥미니 홈랩 서버 백업 스크립트부터 다시 확인해야겠다.