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
관련 논문
ctx – 로컬 머신의 코딩 에이전트 히스토리를 검색하는 CLI 도구
Claude Code, Cursor, Codex 등 코딩 에이전트가 이전 세션의 논의·결정·실패 시도를 잊지 않도록 SQLite로 인덱싱해 재사용할 수 있게 해주는 오픈소스 CLI 도구다.
Micro-Agent: Model API 내부 협업으로 Frontier 모델을 이기는 방법 (vLLM Semantic Router)
vLLM 팀이 단일 모델 API 호출 뒤에서 여러 모델이 협업하는 'Micro-Agent' 개념을 공개했습니다. 별도의 에이전트 코드 없이 라우터 레이어에서 모델 조합을 실행해 GPT-4급 결과를 더 저렴하게 낼 수 있다는 아이디어입니다.
Ornith-1.0: 에이전틱 코딩을 위한 자기 개선형 오픈소스 모델
Gemma 4와 Qwen 3.5를 기반으로 파인튜닝한 코딩 특화 오픈소스 모델로, RL(강화학습)을 통해 스캐폴드(에이전트 실행 구조)까지 함께 최적화하는 방식을 주장하지만, 커뮤니티에서는 벤치마크 과최적화에 불과하다는 의심을 받고 있다.
Tool-Augmented Agent에서의 Entity Binding 실패 분석
AI 에이전트가 올바른 도구를 선택해도 잘못된 대상에 실행하는 'Entity Binding 실패' 문제를 정의하고, 이를 막는 실행 정책을 평가한 논문.
Herdr: 터미널에서 여러 AI Agent를 한 번에 관리하는 Agent Multiplexer
여러 AI 코딩 에이전트(Claude, Codex 등)를 하나의 터미널에서 동시에 실행·관리할 수 있는 Rust 기반 오픈소스 툴로, tmux처럼 세션이 유지되고 SSH로 원격 접속도 가능해 멀티 에이전트 워크플로우를 크게 단순화해준다.
Ornith-1.0: 스스로 Scaffold를 생성하는 Agentic Coding LLM
모델이 문제 풀이 전략(scaffold)을 직접 생성하고 개선하는 자기강화 학습 프레임워크를 적용한 오픈소스 코딩 특화 LLM으로, 9B 소형 모델부터 397B 대형 모델까지 라인업을 갖추고 SWE-Bench 등 주요 벤치마크에서 Claude Opus 4.7을 능가하는 성능을 보여줬다.