실수로 하룻밤 사이에 Claude 사용료 6,000달러를 날려버렸습니다.
핵심 요약
/loop 명령어를 잘못 설정해 Claude API 사용료로 6,000달러를 낭비한 사례와 그 원인 분석.
- 비용 폭탄 — /loop 명령어의 캐시 만료와 토큰 재전송으로 인해 하룻밤 사이 6,000달러가 청구됨.
- 캐시 메커니즘 — 5분마다 캐시가 만료되어 매번 전체 대화 기록을 다시 전송하며 비용이 급증함.
- 대응 방안 — 자동화 작업 시 max_turns 대신 정지 조건을 설정하고 Opus 대신 Sonnet을 사용해야 함.
- 인프라 활용 — Claude를 인프라로 쓰지 말고 인프라를 구축하는 도구로 활용해야 비용 효율적임.
지난주에 일어나 보니 Claude 사용 한도가 초과되었다는 이메일을 받았습니다. 평소와 다를 게 없다고 생각했는데 말이죠.
로컬 세션 로그를 뒤져보니 범인을 찾았습니다. 전날 밤에 30분마다 열려 있는 PR을 확인하도록 설정해둔 /loop 명령어였습니다. 깜빡하고 있었던 거죠. 이 명령어는 26시간 동안 46번이나, 그것도 claude-opus-4-7 모델로 밤새 무인으로 실행되었습니다. 루프 세션과 제가 켜두었던 긴 분석 세션 두 개가 합쳐져 제가 일어나기 전까지 대략 6,000달러를 날려버렸습니다.
그런데 문제는 이겁니다. 제가 수동으로 확인했을 때 Anthropic 대시보드에는 그 금액의 일부만 표시되었습니다. 대시보드는 며칠씩 보고 지연이 발생하기 때문에, 한도 초과 이메일이 오기 전까지는 무슨 일이 벌어지고 있는지 전혀 몰랐습니다.
왜 이렇게 비용이 많이 나왔을까요? 대부분이 모르는 사실입니다.
모든 Claude API 호출은 마지막 메시지뿐만 아니라 전체 대화 기록을 함께 보냅니다. 1번째 턴은 수백 토큰을 보내지만, 46번째 턴은 800,000 토큰을 보냅니다. 컨텍스트 윈도우 제한은 상한선일 뿐, 매 턴마다 전송되는 모든 것에 대해 비용을 지불해야 합니다.
비용을 줄이기 위해 Anthropic은 프롬프트 캐싱을 사용합니다. 대화 기록이 최근에 전송되었다면, 전체 비용을 다시 청구하는 대신 12.5배 할인된 가격으로 캐시에서 불러옵니다.
문제는 캐시 항목이 약 5분간 활동이 없으면 만료된다는 점입니다. (예전에는 1시간이었습니다)
그래서 /loop 30m을 사용하면 이런 일이 벌어집니다:
- 루프 실행 → 기록이 캐시됨 → 30분 경과 → 캐시 만료
- 루프 다시 실행 → 캐시가 사라짐 → 비싼 쓰기 요금으로 전체 대화를 처음부터 다시 캐싱해야 함
- 각 반복마다 자체 출력 결과가 대화에 추가되므로, 다음 재캐싱은 더 커짐
20시간이 지나자 대화는 약 800K 토큰으로 커졌습니다. 밤새 실행된 모든 반복 작업은 800K 토큰을 비싼 쓰기 요금으로 다시 캐싱하는 데 비용을 지불하고 있었습니다. 실제 PR 확인 응답은 이 비용에 비하면 반올림 오차 수준이었습니다.
제가 다르게 할 점들
- /loop에 항상 정지 조건을 추가하세요. "/loop 30m PR 확인해줘" 대신 "/loop 30m PR 확인해줘 — 모든 PR이 병합되거나 3시간이 지나면 멈춰"라고 쓰세요. 조건이 충족되면 Claude가 스스로 루프를 종료합니다.
- 무인 작업에는 Opus가 아닌 Sonnet을 사용하세요: Opus는 출력 토큰당 비용이 약 5배 더 비쌉니다. PR 확인 같은 자동화된 폴링 작업에는 Sonnet으로 충분합니다. Opus는 실제로 사용자가 옆에 있고 품질 차이가 중요한 작업에만 아껴 쓰세요.
- 대시보드를 실시간 예산 측정기로 믿지 마세요: Anthropic의 사용량 대시보드는 며칠씩 지연될 수 있습니다. 급증하는 게 보일 때쯤이면 이미 돈은 다 나간 뒤입니다. 한도 초과 알림 이메일이 유일한 실시간 신호일 수 있습니다.
- 장기 세션은 공짜가 아닙니다: 자동화 작업을 위해 하나의 큰 세션을 계속 유지하는 것은 캐싱을 통해 비용을 절약해주지 않습니다. 오히려 더 나쁘게 만듭니다. 5분 이상 간격이 있는 모든 자동화 호출은 커져가는 컨텍스트 전체를 다시 캐싱하는 비용을 지불하게 됩니다. 새로운 세션을 시작하는 것이 종종 더 저렴합니다.
- max_turns는 루프 제한기가 아닙니다: max_turns는 단일 반복 내의 도구 호출 체인을 제한할 뿐입니다. 루프가 몇 번 실행되는지에는 아무런 영향을 주지 않습니다. /loop의 유일한 내장 만료 기능은 7일 후 자동 삭제뿐입니다.
- 루프는 메인 대화에서 실행되므로, 같은 세션을 계속 사용하면서 루프가 실행되기 시작하면, 루프가 돌 때마다 필요한 것보다 훨씬 많은 토큰이 캐시로 읽고 쓰이게 됩니다.

