클로드 사용량 급증 원인, 범인은 모델을 안 정한 스크립트였다
오전 내내 클로드를 거의 안 켰는데 5시간 한도가 꽉 차 있었다. 세어보니 돈을 쓴 건 내가 까먹고 있던 설정 한 줄이었다.
클로드 사용량 급증 원인을 찾을 때 처음엔 당연히 매일 도는 자동화 중 하나가 과하게 먹는 거라고 생각했다. 근데 까보니 범인은 따로 있더라. 모델을 안 정한 스크립트가 있었다. 그 빈칸은 예전에 내가 박아둔 전역 설정이 채웠다. 앤트로픽 탓할 거리는 하나도 없었다.
📑 목차
- 1. 손도 안 댄 오전에 5시간 한도가 100%를 찍었다
- 2. 짐작 대신 세어보니 블로그 하네스는 13%뿐이었다
- 3. 2시간 12분짜리 회의 녹음 교정이 85%를 썼다
- 4. 비워둔 모델 칸은 내가 박아둔 제일 비싼 값을 따라갔다
- 5. 스크립트 한 곳만 고쳤으면 다음 스크립트에서 또 터졌다
- 6. "설정 안 함"은 중립이 아니었다
1. 손도 안 댄 오전에 5시간 한도가 100%를 찍었다
그날 오전엔 클로드코드에 거의 손을 안 댔다. 클로드는 앤트로픽의 AI 모델이자 내가 구독하는 서비스고 클로드코드는 그 클로드를 명령창에서 부려 쓰는 도구다. 클로드 구독은 5시간 단위로 쓸 수 있는 양에 한도가 있다(5시간이 지나면 다시 채워진다). 근데 점심 지나 확인해보니 그 5시간 한도가 100% 차 있었고 추가 크레딧까지 빠져나가 있더라. 내 설정에선 한도를 넘기면 추가 크레딧이 붙는다. 뭘 했다고 이게 다 찼나 싶었다.
처음엔 블로그 자동발행 하네스(글을 자동으로 쓰고 검사까지 하는 파이프라인)를 의심했다. 평일 오전마다 초안을 쓰는 이 블로그 하네스가 돌고 있으니 나는 얘가 범인이겠거니 했다. 그래서 클로드코드한테 그대로 물어봤다. 블로그 하네스가 그렇게 비싼 거냐고.
2. 짐작 대신 세어보니 블로그 하네스는 13%뿐이었다
클로드코드는 내 질문에 짐작으로 답하지 않고 사용량 기록부터 셌다. 클로드코드는 세션(클로드코드를 한 번 켜서 끌 때까지의 대화 한 묶음)마다 내 컴퓨터에 기록 파일을 남긴다. 여기엔 내가 대화창에서 쓴 것뿐 아니라, 스크립트가 화면 없이 명령 한 줄로 부른 호출(헤드리스 호출)까지 전부 들어간다. 호출마다 시각과 토큰 사용량이 같이 찍히는 구조다. 토큰은 AI가 글 양을 세는 단위라고 보면 된다.
클로드코드는 5시간 한도가 찬 그 구간만 잘라낸 다음 세션별·모델별로 입력과 출력 같은 항목의 토큰을 합산했다.
블로그 하네스는 출력 기준 7.9만 토큰을 썼고 비중으로는 전체 출력 토큰의 13%에 그쳤다. 전체 출력 토큰의 85%는 한 시간이 채 안 되는 사이에 몰린 세션 7건이 가져갔다. 이 7건은 출력 기준으로 52.4만 토큰을 썼고 전부 제일 비싼 모델(Fable 5)로 돌아가 있었다.
▲ 5시간 한도 구간에서 회의 녹음 교정 세션 7건이 출력 토큰의 85%, 블로그 하네스가 13%를 쓴 가로 막대 차트 (자체 제작 이미지)
내 짐작대로 갔으면 멀쩡한 블로그 하네스 코드를 한참 뒤지며 고치고 있었겠지 ㅋ
3. 2시간 12분짜리 회의 녹음 교정이 85%를 썼다
세션 7건 기록에는 어느 스크립트가 불렀는지 적혀 있지 않았다. 클로드코드가 세션마다 첫 메시지를 뽑았다. 7건 모두 한국어 회의·상담 녹음의 받아쓰기를 교정하라는 지시문(프롬프트)으로 시작했다. 클로드코드는 거기서 거꾸로 따라가 녹음 파일이 들어오면 알아서 교정 파이프라인에 넘기는 자동화를 찾아냈다.
그날 점심 전에 2시간 12분짜리 녹음(129MB)이 구글 드라이브로 동기화됐다. 감시 스크립트가 그걸 집어 교정을 돌렸다. 녹음이 길어서 감시 스크립트는 여섯 구간으로 나눠 교정하고 마지막에 한 번 이어 붙였다. 그래서 클로드코드를 총 7번 불렀다. 교정 파이프라인 자체가 어떻게 생겼는지는 회의록 자동 교정 글에 따로 적어뒀다.
한 번 부를 때마다 무거운 작업이기도 했다. 교정 스크립트가 받아쓰기 엔진 세 개의 결과를 한꺼번에 넣고 서로 대조시키는 구조라서 구간 하나에 들어가는 프롬프트가 35~40KB나 됐다. 게다가 "요약하지 말 것"이 규칙이라 출력도 원문 길이만큼 나온다. 많이 넣고 많이 받는 작업이 제일 비싼 모델에서 일곱 번 돌았으니 한도가 버틸 리가 없지.
4. 비워둔 모델 칸은 내가 박아둔 제일 비싼 값을 따라갔다
그럼 왜 하필 제일 비싼 모델이었을까. 클로드코드가 교정 스크립트를 열었다. 이 스크립트는 모델을 적는 칸(환경변수)이 비어 있으면 모델 지정 옵션 자체를 안 붙이는 구조였다. 주석에는 "빈값 = CLI 기본 모델"(CLI는 명령창에서 클로드코드를 부르는 방식)이라고만 적혀 있었다.
보통 사람이라면 여기서 멈춘다. 기본값이 좀 비싼가 보다 하고 넘어가기 딱 좋은 자리다. 클로드코드는 그 "CLI 기본 모델"이 실제로 뭔지 확인하러 전역 설정 파일을 열었다. settings.json이라는 파일인데, 권한 목록 같은 걸 적어두는 곳이다(권한 세팅 글에서 다룬 그 파일 맞다). 이 파일에 기본 모델을 적어두면 클로드코드는 명령에 모델이 따로 없을 때 이 값을 쓴다 (code.claude.com).
거기 model 항목에 제일 비싼 모델이 박혀 있었다. 앤트로픽이 정해둔 무난한 기본값도 아니었다. 예전에 내가 전역으로 지정해둔 값이었다. 그러니 모델을 안 적은 호출은 전부 내가 박아둔 제일 비싼 모델로 흘러가고 있었던 거다.
▲ 모델 칸이 빈 교정 스크립트 호출이 CLI 기본 모델을 거쳐 전역 설정 파일의 제일 비싼 모델로 흘러가는 흐름도 (자체 제작 이미지)
5. 스크립트 한 곳만 고쳤으면 다음 스크립트에서 또 터졌다
교정 스크립트에 모델 이름만 적어 넣으면 이번 교정 스크립트의 과금 문제는 해결된다. 근데 전역 기본값이 그대로면 모델 칸을 빠뜨린 다음 스크립트가 똑같이 제일 비싼 쪽으로 흘러간다. 클로드코드가 바로 이 대목을 짚었다. 그래서 클로드코드는 고치기 전에 내 자동화에서 클로드코드를 부르는 곳부터 전수 조사했다.
내 자동화 전체에서 클로드 구독을 소모하는 호출은 두 곳뿐이었다. 하나는 녹음 교정 스크립트였고 다른 하나는 블로그 하네스였다. 나머지는 내 맥에서 도는 로컬 모델이나 다른 회사 AI를 프로그램으로 부르는 호출(API)이라 이번 일과 무관했다(로컬 모델을 어디에 쓰는지는 로컬 모델 글에 있다).
클로드코드는 세 군데를 고쳤다. 모델 등급은 Fable 5 > Opus 5 > Sonnet 5 순이다. 교정 파이프라인에는 두 단계 아래인 Sonnet 5를 못 박았다. 토크나이저(글을 토큰으로 쪼개는 규칙)가 같은 계열이라 토큰 수는 거의 안 변하고 단가만 내려간다. 같은 토큰량을 정가로 치면 Sonnet 5 비용은 제일 비싼 모델의 약 3.3분의 1로 줄어든다 (platform.claude.com).
웹검색도 막았다. 교정 중에 검색할 이유가 없으니 도구를 전부 끄는 CLI 옵션을 걸었다 (code.claude.com). 근데 도구만 끄고 프롬프트에 "웹검색으로 검증하라"는 지시를 그대로 두면, 모델이 검색한 척 지어낸 정정을 끼워 넣는다. 그래서 프롬프트 네 군데도 같이 바꿨다. 새 지시는 받아쓰기 엔진 세 개의 결과끼리 대조하고 문맥으로 판단하되 확실하지 않으면 각주로 표시만 하라는 내용이다.
마지막으로 전역 기본값을 제일 비싼 모델에서 한 단계 낮은 Opus 5로 내렸다. 바꾸기 전 설정 파일은 백업해뒀고 파일이 제대로 읽히는지와 실제 호출이 되는지까지 확인하고 끝냈다.
▲ 교정 파이프라인은 Sonnet 5로, 전역 기본값은 Opus 5로 바꾼 조치 전후 비교 카드 (자체 제작 이미지)
6. "설정 안 함"은 중립이 아니었다
설정을 안 한 칸은 비어 있는 게 아니다. 다른 곳에서 누군가 정한 값으로 이미 채워져 있다. 이번엔 그 누군가가 과거의 나였다 ㅎㅎ
진단도 딱 거기서 갈렸다. 주석에 적힌 "CLI 기본 모델"에서 멈췄으면 원인은 '기본값이 좀 비싸다' 정도로 뭉개졌을 거다. 코드가 기본값을 쓴다고 적혀 있어도 그 기본값이 뭔지 파일을 열어 확인하기 전까지 진단은 끝난 게 아니더군.
사용량이 튀면 이제 짐작하기 전에 사용량 기록을 문제의 5시간 한도 구간으로 잘라 합산한다.
평소 쓰는 습관으로 비용 줄이는 얘기는 비용 아끼는 법에 있다. 늘 깔려 있는 스킬(클로드코드에 미리 넣어두는 작업 지침 묶음)을 걷어낸 얘기는 스킬 80개를 7개로에 적었다. 이번 건은 달랐다. 내가 직접 쓰는 방식이 멀쩡해도 안 보는 곳에서 빈칸이 비싼 값을 끌어오면 소용이 없더라.
모델 칸을 비운 새 스크립트는 지금도 전역 기본값(Opus 5)으로 가니, 새 스크립트엔 모델부터 적어야겠다.
이미 한도에 막힌 뒤라면 기다리는 것 말고 쓸 수 있는 카드가 몇 개 있다. 공식 리셋 버튼, 주간 한도 초기화 시각 확인법, /limit-reset 이야기는 클로드코드 한도 초기화 정리 글에 모아뒀다.
3줄 요약
- 손 안 댄 오전에 5시간 한도가 찼다. 세어보니 블로그 하네스는 13%였고 회의 녹음 교정 세션 7건이 85%를 썼다
- 교정 스크립트는 모델을 안 정했다. 그 빈칸은 내가 전역에 박아둔 제일 비싼 모델로 흘러갔다
- 스크립트에 모델을 고정했고 전역 기본값도 한 단계 내렸다
이 글은 정보 제공을 목적으로 하며, 작성 시점(2026년 9월) 기준이다. 요금·모델 구성·CLI 옵션은 바뀔 수 있으니 설정 전에 공식 문서를 한 번 확인하는 게 좋다. 특정 요금제나 모델 사용을 권하지 않는다.
참고한 공식 자료
- 모델 설정: code.claude.com/docs, Model configuration
- 설정 파일(settings.json): code.claude.com/docs, Settings
- CLI 옵션: code.claude.com/docs, CLI reference
- API 요금: platform.claude.com, Pricing
댓글
댓글 쓰기