본문으로 건너뛰기

© 2026 Molayo

Qiita헤드라인2026. 06. 15. 12:02

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.mdtasks/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가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0