Claude Code가 자신의 사용량 제한을 인식하도록 만들었습니다
I made Claude Code aware of its own usage limits
핵심 요약
로컬 프록시로 Claude Code가 실시간 API 사용량을 파악하고 스스로 행동을 조절하게 만드는 도구입니다.
- 로컬 프록시 구축 — Claude Code와 API 서버 사이에 프록시를 두어 응답 헤더의 사용량 정보를 가로챔.
- 사용량 자동 인식 — 가로챈 정보를 파일로 저장해 Claude가 읽게 함으로써 모델이 자신의 남은 쿼터를 알게 함.
- 지능적 행동 조절 — 사용량이 높으면 가벼운 모델로 전환하거나 복잡한 작업을 거부하도록 CLAUDE.md 규칙 설정 가능.
- 통합 쿼터 확인 — Opus와 Sonnet이 별도 제한이 아닌 하나의 통합된 풀(pool)을 사용한다는 사실을 발견함.
한동안 저를 짜증 나게 했던 것: Claude Code는 자신이 쿼터를 얼마나 썼는지 전혀 모릅니다. UI에서는 사용량 바를 볼 수 있지만, 모델 자체는 그것을 전혀 보지 못합니다. 대화 중에 현재 레이트 리밋 상태를 노출하는 API도, 도구도, 훅도 없습니다.
알고 보니 Anthropic은 모든 추론 응답에 레이트 리밋 헤더(anthropic-ratelimit-unified-5h-utilization, anthropic-ratelimit-unified-7d-utilization 등)를 반환합니다. Claude Code는 내부적으로 이를 수신하여 UI 바를 렌더링하지만, 모델이 볼 수 있는 곳으로는 절대 전달하지 않습니다.
그래서 저는 Claude Code와 api.anthropic.com 사이에 위치하는 작은 로컬 HTTP 프록시를 만들었습니다. Claude Code는 이미 ANTHROPIC_BASE_URL을 준수하므로, 이를 http://127.0.0.1:4080으로 설정하면 모든 트래픽이 프록시를 통과하게 됩니다. 프록시는 응답 헤더를 가로채서 ~/.claude/usage-status.md에 한 줄짜리 상태 파일을 작성합니다.
5h=9% 7d=99%! overage=0% bottleneck=seven_day (10/05/2026, 16:19:04)
Claude는 필요할 때 해당 파일을 읽을 수 있으며, 또는 UserPromptSubmit 훅을 통해 자동으로 주입하여 모든 프롬프트에 포함시킬 수도 있습니다. CLAUDE.md에 규칙을 추가하면 Claude는 제한에 가까워졌을 때 큰 작업을 시작하기 전에 경고를 하거나, 90% 이상일 때 경량 모드로 전환하거나, 98%에서 새로운 구현 작업을 아예 거부하게 됩니다.
참고: 이것은 Claude Code(CLI)에서만 작동합니다. 웹 채팅과 브라우저 확장은 Anthropic의 자체 인프라를 통해 요청을 보내므로 가로챌 로컬 프록시가 없습니다.
흥미로운 발견: 테스트하는 동안 Opus와 Sonnet 요청 모두에서 모든 anthropic-ratelimit-* 헤더를 덤프해 보았습니다. 모델별 헤더는 없으며, 하나의 통합된 풀이 모든 것을 커버합니다. Claude Code UI의 별도 Sonnet 사용량 바는 실제 별도의 제한을 반영하지 않습니다. GitHub 이슈 #57050에 따르면, Anthropic은 Sonnet에 자체 버킷을 부여할 계획이었으나(2025년 11월 발표), 백엔드에 반영되지 않았습니다. Sonnet을 사용하면 Opus와 동일한 통합 풀이 소모됩니다.
프록시는 npm 의존성이 전혀 없는 순수 Node.js 표준 라이브러리로 제작되었습니다. Windows에서는 NSSM을 통해 서비스로 설치됩니다. macOS 및 Linux 설정(launchd/systemd)은 README에 있습니다.
https://github.com/InertiaUK/claude-quota-proxy
README에는 Claude가 사용량 수준에 따라 자동으로 동작을 조정하도록 하려는 경우를 위한 몇 가지 CLAUDE.md 규칙 예시도 있습니다.

