
Claude Code 세션 재개로 $342 증발 — 토큰 폭발을 방지하는 2가지 hook
요약
Claude Code 세션 재개 시 발생하는 컨텍스트 비대화로 인한 막대한 비용 폭발 문제를 다룹니다. 이를 방지하기 위해 컨텍스트 크기를 검사하고 출력량을 감지하는 두 가지 훅(hook) 설정 방법을 제안합니다.
핵심 포인트
- 세션 재개 시 거대한 컨텍스트로 인해 의도치 않은 토큰 비용 발생 가능
- 컨텍스트 크기를 추정하여 경고하거나 차단하는 guard 훅 활용
- 단일 응답 및 누적 출력량이 임계값을 넘을 시 감지하는 detector 훅 활용
- 주기적인 /compact 명령 실행 및 세션 분리 운영 권장
GitHub Issue에 충격적인 보고가 올라왔다.
#38029——사용자가 세션을 재개했을 뿐인데, 65만 출력 토큰이 순식간에 사라졌다. $342. 사용자는 아무것도 입력하지 않았다. 그저 재개했을 뿐이다.
「resume my last session」이라고 입력했다. 그것만으로 $342가 녹아내렸다.
이런 종류의 사고는 한 건이 아니다.
공통된 패턴은 「컨텍스트의 비대화 (Context Bloating)」다. 장시간 세션으로 인해 대화 이력이 불어나고, 재개 시 그 전체량이 컨텍스트 윈도우 (Context Window)에 흘러 들어간다. 모델은 거대한 컨텍스트를 처리하려고 시도하며, 대량의 출력 토큰을 생성한다.
결과적으로 사용자의 의도하지 않은 비용 폭발이 일어난다.
Claude Code는 세션 재개 시 과거의 대화 이력을 복원한다. 문제는 그 이력이 끝없이 불어난다는 점이다.
- 도구 호출 (Tool Call)의 입출력이 모두 이력에 남는다
- 파일의 읽기/쓰기 결과가 통째로 포함된다
- 에러 → 재시도 (Retry) 루프가 있으면, 동일한 내용이 몇 번이고 축적된다
수 시간의 세션을 거치면 컨텍스트는 수십만 토큰에 달한다. 이를 재개하면 모델은 「이전의 연속」을 재구축하려고 시도하며 방대한 출력을 만들어낸다.
세션 재개 시 대화 이력 파일의 크기를 추정하여, 너무 크면 경고한다.
#!/bin/bash
# resume-context-guard.sh
# 트리거: Notification (세션 재개 알림을 감지)
...
| 컨텍스트 크기 | 동작 |
|---|---|
| 500KB 이하 | 정상 동작 |
| 500KB ~ 2MB | 경고: /compact 실행 권장 |
| 2MB 초과 | 차단: 재개를 중단 |
임계값은 환경 변수로 변경할 수 있다.
export CC_CONTEXT_WARN_KB=300 # 300KB에서 경고
export CC_CONTEXT_BLOCK_KB=1500 # 1.5MB에서 차단
1회의 응답이 50KB를 초과하거나, 세션 누적 출력이 500KB를 초과하면 경고한다. $342 사고는 65만 출력 토큰——즉, 약 2.5MB의 출력이었다. 50KB 임계값이라면 폭발의 초기 단계에서 멈출 수 있다.
#!/bin/bash
# output-explosion-detector.sh
# 트리거: PostToolUse
...
| 조건 | 동작 |
|---|---|
| 1회 출력 > 50KB | 경고 |
| ... |
2개의 hook을 한꺼번에 등록한다.
{
"hooks": {
"Notification": [
...
hook 파일의 배치 위치는 ~/.claude/hooks/이다. 디렉토리가 없다면 생성한다.
mkdir -p ~/.claude/hooks
chmod +x ~/.claude/hooks/resume-context-guard.sh
chmod +x ~/.claude/hooks/output-explosion-detector.sh
hook은 방어선이다. 애초에 컨텍스트를 비대화시키지 않는 운용이 더 중요하다.
** /compact를 조기에 실행한다.** 세션이 길어지기 시작하면,
/compact
로 대화 이력을 압축한다. 체감상 30분 이상의 작업 세션이라면, 적절한 끊어 가기 시점에 한 번 실행해 두는 것이 좋다. 큰 세션은 재개하지 말고, 새로 시작한다. 수 시간에 걸친 세션의 재개는 항상 리스크가 있다. 필요한 정보는 CLAUDE.md나 tasks/todo.md에 적어 두고, 새로운 세션에서 다시 불러오는 편이 안전하다.
--resume 플래그에 주의한다. claude --resume은 직전 세션을 그대로 복원한다. 직전 세션이 거대했을 경우, 재개하는 순간 비용이 발생한다.
| 대책 | 효과 |
|---|---|
| resume-context-guard | 재개 전 컨텍스트 크기 검사 |
| output-explosion-detector | 출력 토큰의 이상 증가를 즉시 감지 |
/compact 정기 실행 | 컨텍스트 비대화 예방 |
| 거대 세션의 신규 시작 | 재개 리스크 회피 |
$342는 비싼 수업료다. hook을 2개 넣는 것만으로 동일한 사고를 방지할 수 있다.
hook 설정을 더 체계적으로 배우고 싶은 분은, Claude Code Hooks 실전 가이드 (Zenn Book)에서 446개의 hook 패턴을 해설하고 있다.
설정의 안전 진단만 하려면, 다음 명령어로 즉시 실행할 수 있다.
npx cc-safe-setup
446개의 hook 예시와 6,099개의 테스트를 수록. 세션 재개 시의 사고 방지 외에도, rm -rf 차단, sudo 금지, DB 삭제 방지 등 Claude Code의 안전한 운영에 필요한 hook이 갖춰져 있다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Qiita AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기