· 6분 · 엔지니어링

Claude Code가 프롬프트보다 먼저 33k개의 토큰을 보내는 이유와 대응 방법

Claude Code가 프롬프트보다 먼저 33k개의 토큰을 보내는 이유와 대응 방법

새 Claude Code 세션을 열고 두 단어짜리 질문을 입력했는데, 첫 API 호출부터 이미 입력 토큰이 33,000개로 표시됩니다. 파일을 붙여 넣지도 않았고, 스택 트레이스를 공유하지도 않았습니다. 그저 “안녕”이라고 했을 뿐입니다. 이 토큰은 대체 어디서 나온 걸까요?

이는 버그도, 이상한 과금 현상도 아닙니다. 저장소에서 실제로 작업을 은 수행할 수 있는 에이전트를 가동하는 데 드는 고정 비용입니다. 이 토큰이 정확히 어디에 쓰이는지 살펴보고, 더 가벼운 도구와 비교한 뒤, 무엇보다 여러분이 실제로 조절할 수 있는 요소를 알아보겠습니다.

Claude Code 토큰 사용량의 오버헤드 이해하기

모든 에이전트형 코딩 도구는 프롬프트를 보기도 전에 컨텍스트를 먼저 로드합니다. 모델은 자신이 누구인지, 어떤 도구를 호출할 수 있는지, 어떤 환경에서 작동하는지 알아야 합니다. Claude Code는 이 범위에서 무거운 편에 속합니다. 콜드 스타트 시 사전 컨텍스트는 보통 33k 토큰 정도이며, OpenCode처럼 최소한의 구성으로 된 대안은 7k.

에 더 가까운 수치를 보고합니다. 이 차이는 실제로 존재하지만, 품질의 순위를 뜻하지는 않습니다. 설계상의 선택입니다. 33k는 더 풍부한 내장 도구와 더 안정적인 에이전트 동작을 제공하고, 7k는 더 작은 사용량과 더 저렴한 콜드 스타트를 제공합니다. 어느 쪽도 “정답”은 아닙니다. 기능과 비용의 균형 곡선에서 서로 다른 지점에 있을 뿐입니다.

Claude Code의 시작 시 토큰 예산이 어디에 쓰이는지 대략적으로 나누면 다음과 같습니다. 정확한 수치는 버전마다 달라지므로, 고정된 상수가 아닌 비중으로 이해하세요.

구성 요소대략적인 토큰 수내용
시스템 프롬프트~3k–5k에이전트의 정체성, 행동 규칙, 형식 정책
도구 정의~15k–20k활성화된 모든 도구와 MCP 서버의 JSON 스키마
환경 컨텍스트~2k–4k작업 디렉터리, git 상태, 운영체제, 디렉터리 목록
CLAUDE.md / 프로젝트 메모리0–10k+프로젝트 지침(전적으로 직접 관리 가능)

가장 큰 비중을 차지하는 항목은 거의 항상 도구 정의입니다. 시스템 프롬프트가 대부분을 차지할 것으로 생각했던 사람들은 이 사실에 놀랍니다.

도구 스키마가 이렇게 무거운 이유

모델이 호출할 수 있는 각 도구는 이름, 설명, 매개변수에 대한 완전한 JSON Schema를 포함한 구조화된 스키마로 제공됩니다. 중첩된 매개변수 설명과 열거형까지 포함하면, 문서화가 잘 된 도구 하나만으로도 500~1,500개의 토큰이 필요할 수 있습니다. Claude Code는 파일 읽기·쓰기, 편집, bash, glob, grep, 웹 가져오기, 작업·에이전트 생성, 할 일 추적 등 다양한 도구를 기본으로 활성화하며, 이 도구들은 모든 요청에 포함됩니다.

도구 하나의 스키마를 간략히 줄이면 대략 다음과 같습니다.

{
  "name": "edit_file",
  "description": "Make a targeted edit to an existing file. Use this instead of rewriting the whole file when possible...",
  "input_schema": {
    "type": "object",
    "properties": {
      "path": { "type": "string", "description": "Absolute path to the file" },
      "old_string": { "type": "string", "description": "Exact text to replace, including surrounding context for uniqueness" },
      "new_string": { "type": "string", "description": "Replacement text" }
    },
    "required": ["path", "old_string", "new_string"]
  }
}

이를 열 개가 넘는 도구 수만큼 곱한 뒤, 연결된 MCP 서버가 노출하는 모든 도구까지 더하면 스키마 페이로드는 빠르게 커집니다. 흔히 놓치는 상황이 있습니다. 누군가 “한번 써 보려고” MCP 서버 세 개를 설치하고, 각 서버가 8~15개의 도구를 노출하면, 기본 토큰 사용량이 10k개만큼 늘어나지만 이후에는 이를 신경 쓰지 않게 됩니다.

요청하지 않았던 환경 컨텍스트

Claude Code는 저장소 안에서 시작할 때 상황 정보를 주입합니다. 에이전트가 기본적인 질문을 하느라 한 턴을 소모하지 않도록 하기 위해서입니다. 실제로는 다음과 같은 정보가 포함됩니다.

Working directory: /home/ryan/projects/api-gateway
Platform: linux
Git branch: feature/rate-limiting
Git status: 4 modified, 1 untracked
Recent commits: ...

이는 실제로 유용합니다. 에이전트가 여러분이 기능 브랜치에서 작업 중이라는 사실을 이미 아는 이유이기도 합니다. 하지만 이 역시 토큰을 사용하며, 큰 모노레포에서는 디렉터리 스냅샷의 크기가 상당할 수 있습니다.

오버헤드가 실제로 제공하는 것

최적화로 이를 줄이기 전에, 그에 따른 절충을 솔직하게 살펴봐야 합니다. Claude Code가 첫 응답부터 적절한 주변 컨텍스트를 바탕으로 올바른 파일을 편집하고, 테스트를 실행하고, 병렬 작업을 위한 하위 에이전트를 생성하며, 프로젝트 규칙을 준수할 수 있는 이유는 바로 이 33k 덕분입니다. 추가 확인 질문을 주고받지 않고도 가능한 일입니다. 7k개 토큰을 사용하는 에이전트는 이런 컨텍스트를 추가적인 대화를 통해 확보해야 하는 경우가 많습니다. 이는 더 많은 요청과 더 긴 지연을 의미하며, 때로는 전체 세션에서 더 많은 토큰을 사용하게 됩니다.

따라서 비교의 핵심은 “33k는 낭비이고 7k는 효율적이다”가 아닙니다. 다음을 비교해야 합니다.

  • 횟수는 적지만 크기가 큰 요청 (Claude Code)과 횟수는 많지만 크기가 작은 요청 (최소한의 구성으로 된 에이전트)
  • 즉시 사용할 수 있는 기능 대 필요할 때 구성하는 기능
  • 더 높은 세션당 고정 비용 대 더 높은 작업당 변동 비용

메시지를 다섯 번 주고받는 디버깅 세션에서는 고정 오버헤드가 충분히 분산됩니다. 한 줄짜리 요청을 보내고 바로 끝내는 경우에는 낭비처럼 느껴집니다. 두 반응 모두 각 상황에서는 타당합니다.

직접 조절할 수 있는 요소

Claude Code의 핵심 도구 세트를 다시 작성할 수는 없지만, 세 가지 설정으로 기본 토큰 사용량을 유의미하게 바꿀 수 있습니다.

1. CLAUDE.md를 과감하게 줄이세요

CLAUDE.md 는 모든 요청에 전체 내용이 주입됩니다. 사전 컨텍스트 중 100% 여러분이 관리할 수 있는 유일한 부분이며, 제가 가장 많은 낭비를 발견하는 곳이기도 합니다. 모델이 이미 기본적으로 따르는 이상적인 스타일 가이드로 가득한 4k개 토큰짜리 파일이 그 예입니다.

간결하게 유지하고, 실제로 필요한 내용만 담으세요. 다음을 우선하세요.

# Project: api-gateway

- Package manager: pnpm (never npm)
- Tests: `pnpm test` — must pass before any commit
- Do NOT edit files in /generated
- API errors use the AppError class in src/errors.ts

모델이 어차피 수행할 내용은 모두 삭제하세요(“깔끔한 코드를 작성하라”, “주석을 추가하라” 등). 유용한 판단 기준은 다음과 같습니다. 한 줄을 삭제해도 에이전트의 동작이 달라지지 않는다면, 그 줄은 아무런 이득 없이 토큰만 소모하고 있는 것입니다. 상세한 컨텍스트는 에이전트가 필요할 때 읽도록 참조 파일에 넣고, 메모리에 그대로 붙여 넣지 마세요.

2. 사용하지 않는 MCP 서버와 도구를 비활성화하세요

대부분의 사람에게 가장 효과가 큰 조치입니다. 실제로 무엇이 연결되어 있는지 점검하세요.

claude mcp list

몇 달 전에 추가한 뒤 한 번도 사용하지 않는 서버가 보이면 제거하세요.

claude mcp remove some-unused-server

허용할 도구의 범위를 제한해 스키마가 컨텍스트에 포함되지 않도록 할 수도 있습니다. 프로젝트 설정이나 사용자 설정에서 다음과 같이 지정하세요.

{
  "permissions": {
    "allow": ["Read", "Edit", "Bash", "Grep", "Glob"],
    "deny": ["WebFetch"]
  }
}

사용 대상에서 제외한 도구마다 매 턴 전송 비용을 지불하지 않아도 되는 스키마가 하나씩 줄어듭니다. 실제로 제 경우에는 스키마가 장황한 MCP 서버 하나를 비활성화한 것이 어떤 프롬프트 조정보다도 더 많은 토큰을 절약해 주었습니다.

3. 프롬프트 캐싱을 적극 활용하세요

이것이 가장 중요하며, 비용 계산 전체를 바꿉니다. 시스템 프롬프트, 도구 정의, 안정적인 프로젝트 컨텍스트는 세션 내 모든 요청에서 동일합니다 . 따라서 프롬프트 캐싱에 이상적입니다. 캐시된 입력 토큰은 새 입력 토큰보다 훨씬 저렴하므로, 33k에 달하는 사전 컨텍스트는 첫 호출 이후 대부분 비용에 큰 영향을 주지 않게 됩니다.

Claude Code는 캐싱을 자동으로 사용하지만, 컨텍스트의 고정적인 부분을 실제로 일정하게 유지하면 캐싱에 도움이 됩니다.

  • 다시 작성하지 마세요: CLAUDE.md 세션 도중 변경하면 그 뒤에 이어지는 내용의 캐시가 무효화됩니다.
  • 정적인 컨텍스트는 앞에 배치하고, 자주 바뀌는 세부 정보는 사전 컨텍스트가 아닌 메시지에 넣으세요.
  • 순서가 중요합니다. 캐싱은 접두부를 기준으로 작동하므로, 앞부분을 바꾸면 그 뒤의 모든 캐시가 무효화됩니다.

실무적으로는 비용을 줄이기 위해 첫 요청의 토큰 수를 최적화하되, 캐시 적중을 늘리도록 세션 을 최적화해야 합니다. 안정적으로 캐시되는 33k 접두부는, 매 턴 다시 구성되어 전혀 캐시되지 않는 7k 접두부보다 실제 작업 세션 전체에서 더 저렴한 경우가 많습니다.

대량의 에이전트 작업을 실행하면서 토큰당 비용을 면밀히 살피고 있다면, AI Prime Tech가 Claude 모델에 제공하는 것과 같은 더 저렴한 API 이용 비용도 올바른 캐시 관리와 결합해 효과를 더욱 높일 수 있습니다.

실무 핵심 사항

  • 약 33k에 달하는 시작 비용은 대부분 시스템 프롬프트가 아닌 도구 스키마에서 발생합니다. 도구 정의와 MCP 서버가 토큰 예산의 대부분을 차지합니다.
  • 이는 낭비가 아니라 절충입니다. 오버헤드는 즉시 사용할 수 있는 기능을 제공하고 대화 왕복 횟수를 줄여 줍니다. 더 가벼운 에이전트는 비용을 고정 비용에서 변동 비용으로 옮깁니다.
  • 먼저 MCP 서버를 점검하세요. 사용하지 않는 서버를 제거하고 사용하지 않는 도구를 차단하는 것이 가장 효과적인 단일 절감 조치입니다.
  • CLAUDE.md에는 실제로 필요한 내용만 담으세요. 모델이 기본적으로 수행하는 내용은 삭제하세요. 상세한 문서는 붙여 넣지 말고 필요할 때 참조하도록 하세요.
  • 첫 요청의 크기만 줄이기보다 캐시 적중을 고려해 설계하세요. 안정적으로 캐시되는 사전 컨텍스트가 매 턴 다시 구성되는 작은 사전 컨텍스트보다 낫습니다.
  • 메시지 단위가 아니라 세션 단위로 측정하세요. 고정 비용이 분산되는 전체 작업을 기준으로 오버헤드를 평가하세요.
A

이 블로그는 AI Prime Tech가 발행합니다. 기사는 AI의 도움을 받아 초안을 작성합니다. 모델 ID, 가격, 한도 등 버전별 세부 정보는 활용하기 전에 공식 문서와 대조해 확인하세요.

더 저렴하게 Claude API 이용하기

API 키 하나로 Claude Opus 5.5, Sonnet 5, Haiku 4.5, Fable 5.1 및 GPT-6개 모델을 이용하세요. 구독 없이 사용한 만큼만 결제합니다.

API 키 받기 →
AI Prime Tech는 독립적인 타사 API 게이트웨이입니다. Claude™ 및 Anthropic®는 Anthropic, PBC의 상표입니다. 제휴 또는 보증 관계를 의미하지 않습니다.