실수로 Claude Code로 포크 폭탄 만들어버린 건에 대하여
source https://www.droppedasbaby.com/posts/2602-01/
금요일, 2월 27일, 오전 11시쯤
나는 보통 11시쯤, 좀 늦게 업무를 시작한다. 책상에 앉아 마우스를 흔들었는데, 아무 반응이 없다.
"어? 이상하네. 이 멍청한 게 왜 안 켜지지?"
키보드를 아무 키나 몇 개 눌러본다. 반응 없음.
지문 센서를 눌러본다. 역시 반응 없음. "진짜 뭐야?"
트랙패드를 톡톡 쳐본다. 햅틱 피드백도 없다. 완전히 먹통이다. "어제 밤에 케이블 정리하다가 뭐 빠졌나?" 케이블을 확인해보니 전부 제대로 꽂혀 있다.
강제 재시동을 해보려는데, 컴퓨터가 따뜻하다... 아니, 뜨겁다. "이상한데."
갑자기 속이 철렁했다. 몇 달 전에 이 컴퓨터에 차를 쏟은 적이 있었다. 하판은 교체했지만, 혹시 안 바뀐 부품이 있었던 건 아닐까. 사흘 뒤에는 다음 온콜 근무도 잡혀 있다. "아, 젠장." 속으로 중얼거렸다.
"macOS 26이 좀 불안정하긴 했지. 이틀 전 밤에도 업데이트했잖아." 전원은 정상적으로 꺼진다. 손을 떼고 다시 버튼을 누르니 이번엔 멀쩡하게 켜진다.
로그인하고 터미널을 열어 claude를 입력한 뒤 엔터를 친다. /adhd로 지금 뭐 해야 하는지 보려던 참이었다.
그런데 또 느려지기 시작한다. 또다시 . cd조차 기어가는 수준이다. "어?"
Activity Monitor를 열어보니 memory pressure가 빨간색이다. "이상한데, 뭐가 이렇게 메모리를 잡아먹지?" 프로세스 목록을 스크롤하다가 원인을 본다. CC 인스턴스가 수백 개 떠 있다.
그제야 퍼즐이 맞춰지기 시작한다. 어젯밤부터 컴퓨터가 느렸고, "어," 본체는 뜨거웠고, "흠," memory pressure는 빨갛고, "아 안 돼 안 돼 안 돼 안 돼," 하판은 여전히 뜨겁고, "와, 씨."
살다 보면 실수라는 걸 바로 알아차릴 때도 있고, 한참 지나서야 깨닫는 때도 있다.
이번 건 후자였다. 이런 제정신 아닌 넋두리 더 듣고 싶다면 이메일 남겨.
Rewind: 늦은 밤 / 이른 아침
새벽 2시, 터미널이 느려지기 시작하자 속으로 "wtf"를 외쳤다. "아, 그냥 자자. 이건 내일 처리하지 뭐."
방금 만든 SessionStart hook은 claude -p ...로 백그라운드 CC 인스턴스 2개를 띄우고, 그 각각이 다시 평소의 시작 시퀀스를 그대로 밟도록 되어 있었다.
나는 책상에서 일어난다. 그날 밤은 그대로 터미널을 두고 자러 갔다.
금요일, 2월 27일, 오전 11시쯤
Activity Monitor에서 CC 인스턴스를 전부 강제 종료해보려 한다. 그런데 내가 죽이는 속도보다 더 빨리 새로 생긴다. ghostty + pkill이 더 잘 먹힐 것 같지만 ghostty 자체가 멈춰 있다.
머릿속에서는 계속 깨달음이 이어진다. "젠장 젠장 젠장"이 머리 안에서 반복되는 동안 손은 반사적으로 전원 버튼으로 튀어가고, 나는 기계를 강제로 재시동한다.
"이 멍청아." 스스로를 욕한다. CC 인스턴스 하나가 CC 인스턴스 두 개를 더 띄운다. 나는 폭발을 일으키는 hook을 만든 거였다... 1 → 2 → 4 → 8 → 16 → 32 → 2^N...
~/.claude/settings.json을 열어 그 hook을 지운다. Activity Monitor는 claude로 필터링해둔 상태다. ghostty를 하나 더 띄우고 claude를 입력한다. 엔터를 치기 전에 반대손 검지를 전원 버튼 위에 올려둔 채, 다른 손으로 return을 누른다. 아무 문제 없다. 인스턴스 하나만 뜬다. 그제야 숨이 좀 놓인다.
거의 20년이 걸렸지만, 그 순간 나는 내가 생애 첫 fork bomb를 만들었다는 걸 깨달았다.

밤새 돌아가면서 컴퓨터를 완전히 벽돌로 만들어버린 거다.
그다음 깨달음은 더 무서웠다.
"요금."
우리 회사는 API 과금이 있다. "나 진짜 조졌다." Edge를 열고, 아이콘이 통통 튀는 동안 심장이 미친 듯이 뛴다. "Usage" 페이지로 들어가 보니 겨우 $600 올라 있었다. 살았다. 조금 진정됐다.
CC 뒤에 붙어 있는 그 구린 코드가 오히려 나를 살렸다. Bun → React → TUI 체인 때문에 인스턴스 하나하나가 처먹는 메모리가 워낙 말도 안 되게 컸고, 그게 메모리 사용량을 폭발시켰다. 결국 컴퓨터가 그대로 얼어붙었다. 구린 코드와 Claude의 캐시 덕분에, 회계팀 누군가가 따지기 전에 멈춰 선 셈이다.
소프트웨어가 구리고 비대해서 고맙다고 느낀 건 살면서 이 한 번뿐일 거다.
이건 늦은 밤 코딩 세션, 토끼굴 파고들기, 그리고 skill, hook, framework를 만들며 보낸 엉망진창 같은 한 달의, 딱 그에 걸맞은 불완전한 끝이었다.
Rewind: 2월 초
회사는 2025년 초에 우리에게 Cursor 접근 권한을 줬다. 나는 필요할 때마다 거대한 코드베이스를 뒤지는 용도로 그걸 아주 많이 썼다. 사용량만 3억 1100만+ 토큰.
그리고 2026년 2월, agentic workflow와 프로그래밍을 더 밀어붙이려는 분위기가 시작됐다.
나는 이를 악물었다. AI slop을 쓰고, 리뷰하고, 유지보수하고 싶지 않았다. 완전한 agentic programming loop를 제안하는 RFC에는 반대 의견도 냈다.
그런데 곰곰이 생각해보니, 이게 새로운 기본 워크플로우고, 새로운 메타고, 새로운 패러다임이라면 그냥 내가 제일 잘하면 되는 일이었다. 이런 걸로 뒤처질 생각은 추호도 없었다.
CC 계정 권한을 요청했다. 대시보드를 열어 API 가격을 봤다. "tokens go brrrrrr?"
마지못해 brew install --cask claude-code를 돌리고 이것저것 살펴봤다. 그래도 좋은 점은 있었다. 이제 ghostty + nvim + tmux에 CC까지 얹어서 전부 해결할 수 있다는 것. AI 기능 몇 개 덕지덕지 붙인 VSCode 클론은 더 안 써도 됐다.
이리저리 실험하면서 잘 먹히는 용도를 찾았다. 더 중요했던 건, 어디가 거칠고 어디서 삐걱거리는지도 파악했다는 점이다. CC 실험하느라 토큰을 너무 많이 써버렸고, 그래서 팀에 CC 사용법을 빠르게 훑어주는 크래시 코스를 한 번 하기로 했다. 문서도 쓰고, 발표도 하고, 그 주 일정도 통으로 정리했다.
ADHD 하이퍼포커스와 불안, 그리고 오기로 밀어붙인 덕분에, 나는 내게 도움이 되는 도구를 직접 만들었고 엄청 많이 배웠다.
2월이 끝났을 때, $3800짜리 API 청구서와 함께 남은 괴물이 바로 이거였다. 이런 제정신 아닌 넋두리 더 듣고 싶다면 이메일 남겨.
What I Built
Skill: /yadumb [the dumb thing it just did]
CC가 한 짓을 맥락까지 포함해서 파일로 떨구라고 시키는 skill이다. 이 랜덤 토큰 생성기는 진짜 시도 때도 없이 망가지기 때문이다. 심지어 뭘 하라고 대문자에 BOLD에 ITALICIZED까지 써서 떠먹여줘도 말이다.
skill에 이렇게 대놓고 적혀 있어도:
Use CLI
MCP Prohibited
그래도 매번, 진짜 매번 다음 똑같은 순서를 탄다:
MCP를 쓴다, 실패한다
CLI를 써볼까 생각한다
그러고는 CLI 사용법을 곰곰이 고민한다
마침내 CLI면 될지도 모른다는 계시를 얻는다
CLI를 쓴다
🤦 그래서 난 자기가 뭘 했는지 로그나 남기고 꺼지라고 한다.
Skill: /memento
영화 Memento의 Leonard 기억력 아나? 아니면 도리 기억력은? 좋아, 난 둘 다 없다.
그래서 대화를 기록해둘 뭔가가 필요했다. 이건 정확히 그걸 해준다:
Summary
Project ID
Conversation ID
너도 나도 별로 관심 없는 지루한 메타데이터 여러 개
Skill: /yablind [-N] [path]
context window 크기가 이 통계 출력 기계의 천적이기 때문이다. 사용량이 40%만 돼도 출력 품질이 눈에 띄게 떨어진다. 특히 이미지가 들어가면 더 심하다. 게다가 나는 텍스트를 복붙하기도 귀찮다. 그래서 이건 subagent를 불러서 이렇게 하게 만든다:
최근 N개의 스크린샷에 OCR을 돌린다.
그게 별로면 이미지를 직접 읽는다.
아니면 같은 작업을
[path]에 한다이미지나 텍스트가 아니라 PDF라면, 그러니까 boomer/zoomer가 기본적인 컴퓨터 사용도 못 해서 그런 파일을 던진 거라면, 문서를 직접 읽는다
관련 정보를 메인 대화에 넘긴다.
스크린샷이었다면 파일을 삭제한다
목표는 딱 하나다: 빌어먹을 context window에 쓸데없는 내용을 최대한 안 넣는 것.
Skill: /adhd
ADHD 달린 내 몸으로는 Slack, GH, Notion, 그리고 신만 아실 그 외의 온갖 것들을 아침마다 하나하나 확인할 엄두가 안 난다.
나는 회의를 좋아하는 사람이다. 아니, Karen, 이건 이메일로 될 일이 아니었다. 왜냐면 내가 이메일을 안 읽으니까.
이 약점을 어떻게든 메우려고, 해야 할 일과 하고 싶은 일을 한데 끌어모아 목록으로 만들고, 예전 항목도 업데이트해보는 skill을 만들었다. 그다음 남은 것들에 우선순위를 매기려고 한다. 자세한 건 이걸 보면 되는데, 내 건 로컬 전용이다.
차트 1위를 찍은 히트곡들은 이렇다:
notnow- 금요일 오후 5시에 그 멍청한 요청에 분명히 답할 거라는 뜻imout- 오늘 일과 끝 루틴[others]- 굳이 나열하기도 귀찮은 평범한 것들
스크립트 17개가 데이터를 deterministic하게 긁어온 다음, 의욕만 과한 약 빤 주니어(LLM)에게 먹여서 이런 걸 만들어낸다:
내가 해야 할 일, 우선순위 포함
끝낸 항목 표시
Skill: /money
얘는 매 실행마다 전부 까먹는다. MEMORY.md 파일이 있다고 해서 속지 마라. 중요한 건 저장도 안 하고, 동시에 낡아 있기까지 하다. 이 EP skill에는 이런 게 들어 있다:
showmethemoney- 프로젝트 보기gimmethemoney- 상태와 의사결정을 이 프로젝트의 state에 덤프하기themoney [project id]- 프로젝트 state 파일 불러오기
이걸로 아마도 이전 대화의 맥락을 조금은 끌어올 수 있겠지만, 결국 얘도 주사위를 굴리고 너도 같이 굴리는 거다!
PreToolUse/PostToolUse Hook
내 패턴도 기억하기 귀찮은데, 하물며 CC 패턴까지 외울 생각은 없다. 그래서 훅 두 개를 만들었다:
PreToolUse-Bash명령의 내용을 저장한다. Shell로 감싼 Python까지 포함해서.PostToolUse-tool_use_id와 함께completed상태를 기록한다.
둘 다 날짜별로 정리된 append-only jsonl 파일 하나에 저장된다. "wHy DoN't yOu UsE tHe LoGs FrOm ~/.claude?" 그걸 분석하는 데 비용이 끔찍할 정도로 많이 들고, ~/.claude는 version control에 넣어둘 수도 없으니까.
Next Up
나머지는...TBC ✌
/fight-to-death- 검투사 코스프레, 그러니까 Adversarial PR review.~/.claude/CLAUDE.md- 그 LLM에는 "kinks of a nympho fetish"가 있다 (K.Dot).한 달 안에 또 까먹을 평생의 교훈들.
