Claude Code가 자체 사용량 제한을 인지하게 만들었습니다
요약
Claude Code(CLI)는 Anthropic API의 속도 제한 헤더를 모델 자체에 노출하지 않아, 개발자가 현재 할당량 사용량을 인지하기 어렵다는 문제를 발견했습니다. 이를 해결하기 위해 작성자는 Claude Code와 Anthropic API 사이에 로컬 HTTP 프록시를 구축하여 모든 `anthropic-ratelimit-*` 헤더를 가로채고 모델이 접근할 수 있도록 했습니다. 이 프록시는 순수 Node.js 표준 라이브러리로 구성되었으며, 사용량 수준에 따라 Claude의 동작을 자동으로 조정하는 규칙까지 제공합니다.
핵심 포인트
- Claude Code는 API 속도 제한 정보를 내부적으로만 처리하며, 모델 자체에는 할당량 소모 상태를 노출하지 않습니다.
- Anthropic은 모든 추론 응답에 통합 풀(unified pool) 기반의 속도 제한 헤더(`anthropic-ratelimit-*`)를 반환합니다. Sonnet 사용량 바는 실제 분리된 제한을 반영하지 않으며, Opus와 동일한 풀을 소모합니다.
- 작성자는 로컬 HTTP 프록시를 구축하여 이 속도 제한 헤더들을 가로채고 Claude Code에 전달함으로써 모델이 현재 할당량을 인지하도록 만들었습니다.
- 프록시는 npm 의존성이 없는 순수 Node.js 표준 라이브러리로 작성되었으며, 운영체제별 서비스 설치 방법(Windows/macOS/Linux)을 제공합니다.
오랫동안 저를 짜증나게 했던 것이 있습니다: Claude Code는 자신이 얼마나 많은 할당량을 소모했는지 전혀 알지 못합니다. UI에서 사용량 막대를 볼 수는 있지만, 모델 자체는 그것들에 대해 완전히 무지합니다. 대화 중에 현재의 속도 제한 상태를 노출하는 API, 도구 또는 훅이 없습니다.
알고 보니 Anthropic은 모든 추론 응답에 속도 제한 헤더(rate limit headers)를 반환합니다("anthropic-ratelimit-unified-5h-utilization", "anthropic-ratelimit-unified-7d-utilization" 등). Claude Code는 이들을 내부적으로 받아 UI 막대를 렌더링하지만, 모델이 볼 수 있는 곳에는 절대 전달하지 않습니다.
그래서 저는 Claude Code와 api.anthropic.com 사이에 위치하는 작은 로컬 HTTP 프록시를 만들었습니다. Claude Code
참고: 이것은 Claude Code(CLI)에서만 작동합니다. 웹 채팅 및 브라우저 확장 프로그램은 Anthropic 자체 인프라를 통해 요청을 보내기 때문에 로컬 프록시로 가로챌 수 없습니다.
흥미로운 발견: 테스트하는 동안 Opus와 Sonnet 요청 모두에서 모든 anthropic-ratelimit-* 헤더를 덤프했습니다. 모델별 헤더는 없으며, 모든 것을 포괄하는 통합 풀이 있습니다. Claude Code UI에 있는 별도의 Sonnet 사용량 바는 실제 분리된 제한을 반영하지 않습니다. GitHub 이슈 #57050에 따르면, Anthropic은 Sonnet에 자체 버킷을 제공할 계획이었으나(2025년 11월 발표), 백엔드에서 이를 구현하지 않았습니다. Sonnet을 사용하는 것은 Opus와 동일한 통합 풀을 소모합니다.
이 프록시는 npm 의존성이 전혀 없으며, 순수한 Node.js stdlib로 구성되어 있습니다. Windows에서는 NSSM을 통해 서비스로 설치됩니다. macOS 및 Linux 설정(launchd/systemd)은 README에 나와 있습니다.
https://github.com/InertiaUK/claude-quota-proxy
README에는 또한 사용량 수준에 따라 Claude가 자동으로 동작을 조정하도록 하려면 몇 가지 예시 [CLAUDE.md] 규칙이 있습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 r/ClaudeAI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기