Claude Code에게 git worktree를 맡겼더니 SSD를 11개 만들어버린 사연
아침에 커피 한 모금 마시며 레딧 보다가 진짜 모니터에 뿜을 뻔했다. r/ClaudeCode에 올라온 사연인데, Claude Code한테 git worktree로 브랜치 좀 나눠서 병렬 작업 환경 좀 세팅해달라고 시켰더니, 똑같은 459GB짜리 SSD 볼륨을 드라이브 문자(A, B, D, M, Q, R, T, W, X, Y, Z)만 바꿔가며 무려 11번이나 중복 마운트해 버렸단다(내 맥미니였으면 비명을 지르다 기절했을 거다). 당연히 실행 옵션은 확인 절차 없는 무지성 YOLO 모드였다.
기술적으로만 따지면 틀린 말은 아니다. 각 마운트 포인트가 독립적인 경로로 잡히긴 했으니까 ‘병렬’은 맞다(기적의 논리). 하지만 실제로는 하나의 디스크를 11개의 거울로 비추고 있을 뿐이다. 사용자 입장에선 기가 찰 노릇이지만, Claude Code 입장에서는 “주인님이 병렬 공간 만들어달라길래 군말 없이 11개 복제해 드렸는데요?”라며 억울해할 판이다.
YOLO 모드가 불러온 참사
YOLO(You Only Live Once) 모드는 Claude Code에서 온갖 확인 팝업을 죄다 스킵해 버리는 극단적인 상남자 모드다. 파일 삭제, 셸 명령어 실행, 라이브러리 설치까지 묻지도 따지지도 않고 직진한다. 프로토타입을 빠르게 치거나 뻔한 반복 노가다를 시킬 땐 이보다 편할 수가 없다.
문제는 모델이 내 프롬프트의 뉘앙스를 ‘창의적으로’ 오해했을 때 터진다.
이 사태의 핵심은 Claude Code가 지시 자체를 아예 못 알아들은 건 아니라는 점이다. worktree를 써서 여러 작업을 동시에 굴려야 한다는 개념까지는 파악했다. 다만 git worktree의 본질인 “하나의 저장소에서 브랜치만 디렉토리별로 따로 체크아웃한다”는 개발 상식 대신, “병렬로 보이는 드라이브를 왕창 꽂아주면 되겠지?”라는 엉뚱한 결론으로 폭주해 버린 거다.
덕분에 디스크 관리자 화면에 459GB짜리 귀신 볼륨 11개가 일렬종대로 도열하는 진풍경이 벌어졌다. 댓글 창도 공감과 폭소로 난리가 났다. “난 Claude Code가 worktree는 기가 막히게 파줬는데, 지가 어느 브랜치에 있는지 까먹고 엉뚱한 브랜치에 몽땅 커밋해 버려서 롤백하느라 밤샜다”는 눈물겨운 사연이 베스트 댓글을 먹었다.
에이전트에게 셸 권한을 넘긴다는 공포
그냥 웃긴 해프닝으로 넘기기엔, 엔지니어 입장에서 등골이 서늘해지는 포인트가 꽤 많다. AI 에이전트에게 내 터미널 제어권을 통째로 쥐여줬을 때 어떤 파형이 일어나는지 완벽하게 보여주기 때문이다.
첫째, 에이전트는 도구 사용법(Syntax)은 빠삭하게 알지만, 그걸 ‘왜(Why)’ 써야 하는지의 도메인 맥락은 여전히 허술하다. git 명령어와 mount 명령어를 칠 줄 안다고 해서, 시스템 리소스의 물리적 한계나 디스크 파티셔닝의 의미까지 온전히 이해하는 건 아니다.
둘째, 자동화의 속도는 치명적인 양날의 검이다. YOLO 모드가 켜져 있는 상태에선 11개의 드라이브가 마운트되는 데 1초도 안 걸린다. 사람이 터미널을 보고 엔터를 쳤다면 두 번째 마운트가 뜨는 순간 “어? 이 자식이 지금 뭐 하는 거지?” 하고 바로 Ctrl + C를 갈겼을 거다(국룰이다). 귀찮다고 확인창을 죄다 꺼버리면, 사고가 터지는 속도도 빛의 속도가 된다.
셋째, AI의 이 엉뚱한 창의성은 언제든 시한폭탄이 될 수 있다. 가끔은 인간이 미처 생각지 못한 천재적인 우회로를 뚫어주기도 하지만, 이번처럼 엉뚱한 삼천포로 빠져버리면 그 뒷감당은 온전히 인간의 몫이다.
Claude Code와 worktree를 평화롭게 쓰는 법
그렇다고 이 강력한 꿀 기능을 봉인할 수는 없다. 내 터미널과 SSD를 안전하게 지키면서 git worktree를 굴리려면 최소한의 가드레일이 필요하다.
가장 중요한 건 프롬프트를 두루뭉술하게 던지지 않는 거다. “worktree 만들어줘”라고 퉁치면 모델은 지 맘대로 소설을 쓰기 시작한다. 경로와 브랜치를 칼같이 못 박아줘야 한다.
# 수동으로 worktree를 만드는 기본 명령어
git worktree add ~/worktrees/feature-auth feature/auth
git worktree add ~/worktrees/feature-payment feature/payment
# Claude Code에게 맡길 때는 정확한 명령어와 디렉토리를 지정하자
"Claude, `git worktree add ../feature-auth feature/auth` 명령어로
worktree 두 개를 만들어줘. 다른 시스템 마운트 명령어는 절대 쓰지 마."
그리고 제발 시스템 설정이나 디스크, 권한을 건드릴 때는 YOLO 모드를 끄자. 처음 만져보는 라이브러리나 인프라 설정 단계에서는 사람이 한 번씩 눈으로 검품하는 과정이 필수다. YOLO 모드는 이미 테스트 코드가 촘촘하게 짜인 환경에서 비즈니스 로직만 반복 수정할 때나 켜는 거다.
마지막으로, worktree를 만든 뒤에는 에이전트가 지금 어느 디렉토리에서 작업하고 있는지 수시로 확인하는 습관을 들이자. pwd 한 번, git status 한 번 찍어보는 게 새벽 2시에 꼬여버린 깃 히스토리 푸는 것보다 백배는 덜 피곤하다(경험담이다…).
자동화의 민낯
이번 사연이 유쾌한 레딧 밈으로 끝날 수 있었던 건, 천만다행으로 데이터 유실이나 하드웨어 파손이 없었기 때문이다. 그냥 터미널 켜서 마운트 해제(unmount) 몇 번 때려주면 끝나는 귀여운 촌극이었다.
하지만 만약 에이전트 손에 rm -rf나 데이터베이스 드롭 권한이 쥐어져 있었다면? 프로덕션 서버 SSH 키가 열려 있는 상태에서 “불필요한 볼륨을 정리해 드렸습니다!”라며 밀어버렸다면? 상상만 해도 손에 땀이 난다.
도구가 강력해질수록 우리는 더 게을러지고 싶어 하지만, 역설적으로 터미널의 고삐는 사람이 더 단단히 쥐고 있어야 한다. 디스크 11개 짤을 보며 낄낄 웃다가도, 내 터미널 세션에 돌아가고 있는 Claude Code의 권한 설정을 한 번쯤 다시 쳐다보게 되는 밤이다.