자리 비운 사이 얼마 쓸지 무섭다면 — 지출 상한 걸어두기
9월 14일 주간 한도 축소가 일주일 앞이에요. 큰 작업을 시켜놓고 자리를 비우면 얼마나 쓸지 모르는 게 제일 불안하죠. 미리 상한을 걸어두는 옵션이 있어서 직접 걸어봤습니다.
--max-budget-usd
이 작업에 최대 얼마까지 쓸지 정해두는 옵션이에요. 대화창 없이 한 번만 실행하는 -p 모드에서만 동작합니다.
# 이 작업에 최대 얼마까지 쓸지 정해둬요
# -p 는 대화창 없이 한 번만 실행하는 옵션이고
# 지출 상한은 이 -p 모드에서만 동작해요
claude -p --output-format json \
--max-budget-usd 0.50 \
"저장소를 점검해줘" > 결과.json
# 상한에 걸려 멈췄는지 확인해요
python3 - <<'PY'
import json
# 방금 저장한 결과를 열어요
d = json.load(open("결과.json"))
# 상한에 걸리면 error_max_budget_usd 예요
print("종료 사유", d.get("subtype"))
# 실제 쓴 돈이에요. 상한보다 클 수 있어요
비용 = d.get("total_cost_usd", 0)
print("실제 비용", round(비용, 4))
PY상한에 걸리면 작업이 멈추고, 결과의 subtype이 error_max_budget_usd로 나와요. 종료 코드도 1이라 스크립트에서 바로 알아챌 수 있습니다.
실제로 걸어봤어요
같은 작업에 상한만 바꿔가며 돌렸어요. 상한은 지켜지긴 하는데, 정확하진 않았습니다.
- 상한 14원 → 실제 61원어치 썼어요 (4.33배)
- 상한 70원 → 실제 79원 (1.13배)
- 상한 280원 → 실제 282원 (1.01배)
- 상한 700원 → 실제 507원. 이건 상한에 걸리지 않고 작업이 끝났어요
여기서 금액은 모두 Claude Code가 쓴 토큰을 API 정가로 계산한 값이에요. 상한도 같은 잣대로 재요. 구독이라면 이만큼 청구되지는 않고, 플랜 한도에서 빠져요.
상한을 낮게 잡을수록 더 많이 넘겼어요. 넉넉히 잡으면 아예 안 걸리고요. (1달러 1,400원 기준)
왜 이렇게 되냐면요
턴이 끝나야 멈추기 때문이에요. AI가 한 번 생각하고 답하는 단위를 턴이라고 하는데, 이 옵션은 턴이 끝난 뒤에 "여기까지 얼마 썼지?"를 확인해서 상한을 넘었으면 다음 턴을 시작하지 않습니다.
그런데 첫 턴 하나가 이미 60원쯤 들어요. 그러니 14원짜리 상한은 지켜질 방법이 없죠. 반대로 280원처럼 여유 있게 잡으면 오차가 1%까지 줄어듭니다.
정밀한 차단기가 아니라 누전 차단기에 가까워요. 폭주를 막아주지 실비를 딱 맞춰주진 않습니다.
그래서 이렇게 쓰세요
- 한 턴 값보다 훨씬 크게 잡으세요. 최소 다섯 배는 되어야 의미가 있어요
- 넉넉히 잡아도 손해가 없어요. 작업이 그 전에 끝나면 상한은 그냥 안 걸립니다
- 내 작업의 한 턴이 얼마인지는 사용량을 재보면 바로 나옵니다
- 자동화 스크립트에 걸어두면 특히 좋아요. 밤새 도는 작업이 폭주해도 거기서 끊깁니다
- 대화형으로 쓸 땐 못 걸어요.
-p전용이에요
확인된 것과 짚어둘 것
확인된 것 — 옵션은 claude --help에 실제로 있고, 상한 초과 시 error_max_budget_usd로 멈추는 것까지 직접 확인했어요. 설치본은 2.1.263입니다.
짚어둘 것 — 위 배수는 제가 돌린 네 번의 실행에서 나온 값이에요. 작업 종류와 환경에 따라 달라집니다. 특히 한 턴 값이 크면 초과 폭도 커져요.
지출 상한 걸어보실 분 계세요? 카톡 오픈채팅 ⚡ AI랑 코딩하는 사람들에 후기 들려주세요.