Claude Code로 실수로 Fork Bomb 만들고 컴퓨터 벽돌됨 (+ $3,800 API 청구서)
Accidentally created my first fork bomb with Claude Code
TL;DR Highlight
Claude Code의 SessionStart 훅이 Claude 인스턴스를 무한 재귀로 생성하는 fork bomb을 만들어 컴퓨터를 밤새 다운시키고 높은 API 청구서 위기를 초래했다.
Who Should Read
Claude Code나 Cursor 같은 AI 코딩 에이전트를 적극적으로 활용하고 있는 개발자, 특히 훅이나 자동화 스크립트를 설정해서 쓰는 사람이라면 반드시 읽어봐야 한다.
Core Mechanics
- 개발자가 Claude Code의 SessionStart 훅(세션 시작 시 자동 실행되는 스크립트)을 만들었는데, 이 훅이 claude -p ... 명령으로 백그라운드 CC(Claude Code) 인스턴스 2개를 spawn하도록 설정했다. 문제는 각 인스턴스가 시작될 때마다 또 훅이 실행되면서 1→2→4→8→...→2^N으로 기하급수적으로 프로세스가 폭발하는 fork bomb이 만들어진 것이다.
- fork bomb(포크 폭탄)이란 프로세스가 자기 자신을 계속 복제해서 시스템 자원을 모두 소진시키는 고전적인 공격/실수 패턴이다. 이 경우 새벽 2시에 자리를 떠나면서 눈치채지 못했고, 컴퓨터가 밤새 혼자 수백 개의 Claude Code 인스턴스를 돌리다가 완전히 먹통이 됐다.
- 다음날 오전 11시에 컴퓨터를 켜보니 마우스, 키보드, 트랙패드 모두 무응답 상태였고 본체는 뜨겁게 달아올라 있었다. Activity Monitor를 열어보니 수백 개의 CC 인스턴스가 돌고 있었고 메모리 압력이 최대치(red)를 찍은 상태였다.
- 강제 재시작 후 가장 먼저 API 청구서를 확인했는데, 다행히 $600 정도만 추가된 상태였다. 이 사람의 예상보다 피해가 적었던 이유는 Claude Code 자체가 Bun → React → TUI 체인으로 인스턴스당 메모리를 엄청나게 잡아먹기 때문에, 메모리가 먼저 고갈되어 컴퓨터가 일찍 뻗어버렸기 때문이다. 즉 소프트웨어가 무거운 덕분에 API 청구액이 더 불어나기 전에 멈춰진 것이다.
- 해결 방법은 간단했다. ~/.claude/settings.json 파일을 열어 문제의 SessionStart 훅을 제거하는 것으로 끝났다. 그 이후 Activity Monitor로 남은 인스턴스가 없는지 확인하면서 한 손을 전원 버튼에 올려두고 claude를 실행해봤다고 한다.
- 이 개발자는 2025년 초부터 Cursor를 3억 1,100만 토큰 이상 사용할 정도로 AI 코딩 도구를 적극 활용해왔다. 처음엔 agentic workflow 도입에 회의적이었지만, 어차피 피할 수 없다면 제대로 마스터하겠다는 마음으로 Claude Code 계정을 신청해 깊게 파고들었고 그 과정에서 이 사고가 발생했다.
- 이 사건은 AI 에이전트 훅이나 자동화 설정이 얼마나 위험할 수 있는지를 보여주는 생생한 사례다. 훅은 강력하지만, 해당 훅이 실행하는 프로그램이 또 같은 훅을 트리거할 수 있다는 점을 반드시 고려해야 한다.
Evidence
- 다른 개발자들도 비슷한 실수 경험을 공유했다. Python multiprocessing 코드를 Windows에서 짰는데 if __name__ == '__main__' 블록으로 엔트리포인트를 감싸지 않아서 의도치 않은 fork bomb이 발생했다는 경험담이 있었다. Windows는 Unix의 fork()가 없어서 자식 프로세스를 만들 때 모듈을 재실행하기 때문에 이런 일이 생길 수 있다는 맥락 설명도 함께였다.
- 90년대 MS의 OLE/COM 공식 예제 코드를 실행했다가 fork bomb을 경험했다는 댓글도 있었다. 이를 계기로 '공식 문서 코드라도 절대 맹신하지 말라'는 교훈을 얻었다고 했다. AI가 생성한 코드를 그대로 훅에 넣은 이번 사례와 맥락이 닿는 부분이다.
- '첫 번째 fork bomb'이라는 표현에서 성장 마인드셋이 보인다는 유머러스한 댓글이 달렸다. 즉 또 만들 거라는 뉘앙스인데, 커뮤니티 분위기가 이 사고를 재앙이 아니라 통과의례처럼 받아들이는 분위기였다.
- Claude Code가 SessionStart 훅에서 왜 굳이 CC 인스턴스를 2개 더 띄우려 했는지, 그 의도된 목적이 무엇이었냐는 질문이 달렸다. 원문에서는 이 부분에 대한 충분한 설명이 없어 독자들이 궁금해했다. 아마도 /adhd 같은 특정 스킬이나 병렬 작업 처리를 위한 실험이었을 것으로 추측되었다.
- 글에 언급된 /adhd 스킬(ADHD를 가진 개발자를 위한 Claude Code 커스텀 기능으로 추정)이 무엇인지 궁금하다는 댓글이 많았다. 실제로 ADHD가 있는 개발자에게 유용할 것 같다는 반응이 있었다.
How to Apply
- Claude Code의 SessionStart, PostToolUse 등 훅을 설정할 때, 해당 훅 내에서 claude 명령이나 cc 명령을 실행하면 새 인스턴스가 또 훅을 트리거해 fork bomb이 될 수 있다. 훅 스크립트 안에서는 절대로 Claude Code 자체를 spawn하지 말고, 반드시 재귀 가능성을 먼저 검토한 후 배포할 것.
- Claude Code의 훅 설정은 ~/.claude/settings.json에서 관리된다. 훅을 새로 만들었다면 Activity Monitor(Mac) 또는 Task Manager(Windows)를 열어두고 프로세스가 폭발적으로 늘어나지 않는지 눈으로 확인하면서 테스트하는 것이 안전하다. 이상 징후 발견 즉시 settings.json에서 해당 훅 항목을 제거하면 된다.
- Anthropic Claude API를 회사 비용으로 사용 중이라면 Usage 페이지에서 일별 비용 알림을 설정해두는 게 좋다. 이번 사례처럼 자동화 스크립트 실수 하나로 단기간에 수백~수천 달러가 쌓일 수 있고, 조기에 알림을 받으면 피해를 최소화할 수 있다.
- Python multiprocessing이나 subprocess를 활용한 병렬 처리 코드를 짤 때도 유사한 위험이 있다. Windows 환경이라면 반드시 if __name__ == '__main__': 블록으로 엔트리포인트를 감싸서 자식 프로세스가 부모 코드를 재실행하지 않도록 해야 한다.
Code Example
# 위험한 예시 - SessionStart 훅이 claude 인스턴스를 spawn하면 fork bomb 발생
# ~/.claude/settings.json
{
"hooks": {
"SessionStart": [
{
"hooks": [
{
"type": "command",
# 이 명령이 새 CC 인스턴스를 시작하면 그 인스턴스도 동일한 훅을 실행 → 무한 증식
"command": "claude -p 'some background task' &"
}
]
}
]
}
}
# 안전하게 훅 제거하기
# 1. 터미널에서 settings.json 열기
nano ~/.claude/settings.json
# 2. SessionStart 훅 항목 삭제 후 저장
# 이미 fork bomb이 발생했다면 (Mac 기준)
pkill -f claude # claude 프로세스 전체 종료
# 그래도 안 되면 전원 버튼으로 강제 재시작Terminology
관련 논문
adamsreview: Claude Code용 멀티 에이전트 PR 코드 리뷰 파이프라인
Claude Code에서 최대 7개의 병렬 서브 에이전트가 각각 다른 관점으로 PR을 리뷰하고, 자동 수정까지 해주는 오픈소스 플러그인이다. 기존 /review나 CodeRabbit보다 실제 버그를 더 많이 잡는다고 주장하지만 커뮤니티에서는 복잡도와 실효성에 대한 회의론도 나왔다.
Claude를 User Space IP Stack으로 써서 Ping에 응답시키면 얼마나 빠를까?
Claude Code에게 IP 패킷을 직접 파싱하고 ICMP echo reply를 구성하도록 시켜서 실제로 ping에 응답하게 만든 실험으로, 'Markdown이 곧 코드이고 LLM이 프로세서'라는 아이디어를 네트워크 스택 수준까지 밀어붙인 재미있는 사례다.
AI Agent를 위한 Git: re_gent
AI 코딩 에이전트(Claude Code 등)가 수행한 모든 툴 호출을 자동으로 추적하고, 어떤 프롬프트가 어느 코드 줄을 작성했는지 blame까지 가능한 버전 관리 도구다.
Agent-Native CLI를 위한 설계 원칙 10가지
AI 에이전트가 CLI 도구를 더 잘 사용할 수 있도록 설계하는 원칙들을 정리한 글로, 에이전트가 CLI를 도구로 활용하는 빈도가 높아지면서 이 설계 방식이 실용적으로 중요해지고 있다.
Agent-harness-kit: MCP 기반 멀티 에이전트 워크플로우 오케스트레이션 프레임워크
여러 AI 에이전트가 서로 역할을 나눠 협업할 수 있도록 조율하는 scaffolding 도구로, Vite처럼 설정 없이 빠르게 멀티 에이전트 파이프라인을 구성할 수 있다.
Tilde.run – AI Agent를 위한 트랜잭션 기반 버전 관리 파일시스템 샌드박스
AI 에이전트가 실제 프로덕션 데이터를 건드려도 롤백할 수 있는 격리된 샌드박스 환경을 제공하는 도구로, GitHub/S3/Google Drive를 하나의 버전 관리 파일시스템으로 묶어준다.