SSD Nodes Learn
가이드 Matt Connor작성자 Matt Connor · 업데이트됨 2026-07-24

Claude 토큰 계산법과 코딩 세션 비용이 급증하는 이유

Claude의 token은 약 3.5글자이며 코드는 더 많은 토큰을 소비합니다. Claude Code 사용 시 한 번의 turn에 80,000 token이 발생하는 이유와 5분간 유휴 상태일 때 다음 turn 비용이 5배 증가하는 구조를 상세히 설명합니다.

Claude의 token이란 무엇입니까?

token은 Claude가 읽고 쓰는 텍스트 단위입니다. 대략 영어 3.5글자에 해당하는 단어의 파편입니다. 이 수치는 Anthropic의 용어집을 기준으로 합니다. 공백과 문장 부호를 포함하면 단어당 token 수가 훨씬 많아집니다. 따라서 1,000단어의 산문은 1,300 token을 가볍게 초과합니다. 코드는 줄당 소모량이 더 많습니다. 중괄호, 연산자, 언더스코어, 들여쓰기는 영어보다 글자당 더 많은 token으로 분리됩니다. 수백 줄의 소스 파일은 보통 수천 token에 달합니다. 에이전트가 읽기로 결정한 2,000줄짜리 파일은 새로운 코드를 한 줄도 쓰기 전에 이미 5자리 숫자의 token 비용을 발생시킵니다.

tokenizer와 관련하여 사용자가 혼동하는 두 가지 사항이 있습니다. 첫째, tokenizer는 모델마다 다릅니다. 2026년 7월 기준, Opus 4.7 및 이후 버전, Sonnet 5, Fable 5는 새로운 tokenizer를 사용합니다. 이 모델들은 이전 Claude 모델보다 동일한 텍스트에 대해 약 30% 더 많은 token을 생성합니다(정확한 증가율은 콘텐츠에 따라 다릅니다). 따라서 token당 가격이 오르지 않았더라도 token 예산 산정 방식이 달라집니다. 둘째, 모든 블로그 포스트에서 사용하는 tiktoken 라이브러리는 OpenAI의 tokenizer입니다. 이 라이브러리는 일반 텍스트에서 Claude보다 약 15–20% 적게 계산하며, 코드의 경우 그 차이가 더 큽니다. 신뢰할 수 있는 유일한 계산 방식은 아래에 설명된 count_tokens endpoint입니다.

코딩 세션 비용이 발생하는 이유

API 인보이스든 구독 한도든, 모든 Claude 비용은 '입력 토큰'과 '출력 토큰'이라는 하나의 측정 기준에 의해 결정됩니다. 가격 페이지를 보면 입력 토큰 100만 개당 얼마, 출력 토큰 100만 개당 얼마식으로 단순해 보입니다. 하지만 에이전트 방식의 코딩 세션에서는 입력 측의 비용이 직관보다 훨씬 더 많이 발생합니다. 대화 내용 전체가 매 턴마다 다시 전송되기 때문입니다. 저는 15년 동안 사용량 기반 인프라를 판매해 왔으나, 토큰은 대부분의 고객이 비용 발생 원인을 정확히 파악하지 못하는 첫 번째 측정 기준입니다. 이 가이드는 다음 내용을 다룹니다. 에이전트 세션에서 무엇이 입력과 출력으로 계산되는지, 왜 재전송 루프의 비용이 높은지, 프롬프트 캐싱이 계산 방식을 어떻게 바꾸는지, 그리고 비용을 줄이기 위해 실제로 조절해야 할 요소는 무엇인지 설명합니다.

Everything is input: 실제 측정되는 항목

사용자는 Claude가 작성한 코드에 대해 비용을 지불한다고 생각합니다. 하지만 agentic session에서 해당 비용은 매우 적은 비중을 차지합니다. 입력 토큰(Input tokens)은 단가는 낮지만 사용량이 매우 많으며, 다음 항목들을 포함합니다:

  • The system prompt. Claude Code의 자체 harness 지침과 사용자의 CLAUDE.md 및 memory 파일이 포함됩니다. 이 파일들은 session 시작 시 로드되며 이후 모든 request에 포함됩니다.
  • Tool definitions. agent가 호출할 수 있는 모든 tool schema가 포함됩니다. 연결된 모든 MCP server는 이 고정 오버헤드를 증가시킵니다. 다만 Claude Code는 현재 기본적으로 MCP tool definition 전체를 지연 로드하므로, tool이 처음 사용되기 전까지는 tool name만 context에 포함됩니다. 이는 비용을 완화하지만 완전히 제거하지는 않습니다.
  • agent가 읽는 모든 파일. 소스 파일의 Read를 읽으면 파일 전체가 context에 포함되며, 그 상태가 유지됩니다.
  • 모든 tool result. test run, grep output, terminal 출력, build logs 등이 모두 input token으로 반환됩니다. 8,000줄을 출력하는 실패한 test suite는 작은 책 한 권 분량의 비용을 청구할 수 있습니다.
  • 매 turn마다 재전송되는 전체 대화 내역. 이 항목은 별도의 섹션으로 다룰 가치가 있습니다.

재전송으로 인한 비용 증가 문제

Claude API는 stateless 방식입니다. 요청 간에 세션 정보를 기억하지 않습니다. 따라서 turn 2에서는 client가 turn 1과 이전 응답, 그리고 새로운 메시지를 함께 전송합니다. turn 50에 도달하면 turn 1부터 49까지의 모든 내용 — 모든 file read, tool result, diff — 그리고 turn 50을 다시 전송합니다. 모델은 매번 전체 transcript를 다시 읽으며, 이때 발생하는 모든 re-read token은 input 비용으로 청구됩니다.

결과적으로 turn당 비용은 session length에 따라 선형적으로 증가하며, 전체 session cost는 이차 함수적으로 증가합니다. turn 3에서 0.5 cent였던 메시지가 turn 60에서는 동일한 한 줄짜리 질문이라도 20배의 비용이 발생할 수 있습니다. 이는 60개의 turn 데이터가 포함되어 있기 때문입니다. 이 사실은 "왜 청구 금액이 이렇게 높은가"라는 문의의 대부분을 설명합니다. 이는 Claude만의 특징이 아닙니다. stateful하게 작동하는 것처럼 보이는 모든 LLM 제품은 내부적으로 resend loop를 가진 stateless API입니다.

Output: 보이는 결과물과 보이지 않는 추론 과정

Output token은 비용이 높습니다. 현재 제품군 기준으로 input rate보다 5배 높습니다 (2026년 7월 기준, Opus 4.8은 $5/$25, Sonnet 5는 $3/$15, Haiku 4.5는 $1/$5). Output에는 Claude가 생성하는 텍스트와 코드가 포함되며, thinking tokens도 포함됩니다. 이는 모델이 답변하기 전에 수행하는 내부 추론 과정입니다. 여기서 두 가지 사실이 중요합니다. Thinking은 output rate로 과금되며 max_tokens에 포함됩니다. stop_reason: "max_tokens"으로 인해 API 응답이 중단되면 답변이 잘릴 수 있으며, 이는 답변이 생성되기 전에 thinking이 예산을 모두 소모했음을 의미합니다. 또한 현재 모델에서는 추론 요약이 표시되지 않을 수 있습니다. Opus 4.8, Sonnet 5, Fable 5는 기본적으로 이를 생략하지만, 추론은 실제로 수행되며 비용도 발생합니다. 보이지 않는다고 해서 무료는 아닙니다.

Claude Code는 다단계 작업의 성능을 실질적으로 향상시키므로 기본적으로 extended thinking을 활성화합니다. 기본 예산은 요청당 수만 token까지 설정될 수 있습니다. 단순한 작업에서는 이 설정을 낮출 수 있습니다. /effort 또는 /model에서 effort level을 낮추거나, /config에서 thinking 설정을 조정하십시오. 이는 단순한 추측이 아닌 실제 비용 제어 수단입니다.

Prompt caching rewrites the math

Prompt caching 덕분에 반복적인 요청으로 인한 비용 폭증을 방지할 수 있습니다. API는 system prompt, tool definitions, conversation history와 같이 변하지 않는 프롬프트 접두사(prefix)를 캐시할 수 있습니다. 다음 요청 시 이 캐시된 데이터를 훨씬 저렴한 가격으로 제공합니다. 2026년 7월 기준 배수는 다음과 같습니다. 캐시 write 비용은 기본 입력 요율의 1.25배(1시간 유지 버전은 2배)이며, 캐시 read 비용은 0.1배입니다. Write는 추가 비용이 발생하지만, Read는 90% 할인된 가격입니다. 단 한 번의 Read 비용만으로도 5분간의 Write 추가 비용을 충당하고도 남습니다.

Claude Code는 캐시를 자동으로 관리하며, 정상적인 세션에서는 대부분의 대규모 재전송 요청이 캐시에서 처리됩니다. 하지만 기본 캐시 유지 시간은 마지막 사용 후 5분입니다. 커피를 마시는 시간이 길어져 잠시 자리를 비운 뒤 메시지를 보내면, 캐시가 만료되어 누적된 전체 접두사를 0.1배로 읽는 대신 1.25배의 비용을 들여 다시 써야 합니다. 150K-token 세션의 경우, 이러한 단 한 번의 cold turn 비용이 dozen 번의 warm turn 비용보다 더 많이 발생합니다. 여기서 주의해야 할 역설적인 결과는 다음과 같습니다. 작업을 중단했다가 재개하는 방식이 연속적인 작업보다 비용이 더 많이 들 수 있습니다. TTL을 초과하는 모든 유휴 시간은 다음 요청을 저렴한 read에서 비싼 re-write로 전환하기 때문입니다. 작업을 몰아서 처리하십시오. 10분마다 메시지를 하나씩 보내는 방식으로 대규모 세션을 조금씩 진행하지 마십시오.

VPS에서 직접 운영하는 애플리케이션을 통해 API를 호출하는 경우, 이러한 혜택을 자동으로 받을 수 없습니다. 흔히 발생하는 실수 중 하나는 system prompt에 timestamp나 request ID를 삽입하는 것입니다. 이 경우 매 요청마다 prefix 바이트가 변경되어 캐시 기능이 비활성화됩니다. usage.cache_read_input_tokens 값이 동일한 요청들에 대해 0으로 유지된다면 캐싱이 작동하지 않는 것입니다.

공식 및 계산 예시

"세션당 비용은 $X입니다"라고 단정적으로 말하는 정보는 무시하십시오. 세션 비용은 규모에 따라 100배까지 차이가 납니다. 중요한 것은 다음 공식입니다.

turn cost = (uncached input      x base input price)
          + (cache writes        x 1.25 x base input price)
          + (cache reads         x 0.10 x base input price)
          + (output incl. thinking x output price)

session cost = sum over all turns

Claude Opus 4.8을 사용한 계산 예시입니다. 2026년 7월 기준, 입력 토큰 100만 개당 $5, 출력 토큰 100만 개당 $25입니다. 누적 컨텍스트가 80,000개인 세션 중간의 턴을 가정합니다: 캐시에서 75,000개 읽기, 3,000개 새로 쓰기, 캐시되지 않은 신규 입력 2,000개, 사고(thinking) 과정을 포함한 출력 토큰 1,500개.

  • Cache reads: 75,000 × $0.50/M = $0.0375
  • Cache writes: 3,000 × $6.25/M = $0.019
  • Uncached input: 2,000 × $5/M = $0.010
  • Output: 1,500 × $25/M = $0.0375

해당 턴의 비용은 약 $0.10입니다. 이와 동일한 턴이 50번 반복되면 약 $5가 소요됩니다. 이제 캐시가 만료된 후 동일한 턴을 수행할 경우를 보겠습니다. 80,000개 전체 토큰을 $6.25/M로 다시 쓰면 출력 비용 발생 전 이미 $0.50이 됩니다. 이는 동일한 작업을 수행함에도 따뜻한(warm) 상태의 턴 전체 비용보다 약 5배 더 높습니다. 이 차이가 캐싱의 핵심 가치를 나타내는 수치입니다.

예측이 아닌 기준점(calibration)을 위한 데이터: 2026년 7월 기준, Anthropic이 발표한 enterprise Claude Code 배포 수치에 따르면 개발자 1인당 활성 일일 평균 비용은 약 $13(월 $150–250)입니다. 사용자의 90%는 일일 $30 미만을 유지합니다. 실제 비용은 모델 선택, 세션 관리 상태, codebase 크기에 따라 결정됩니다. 이것이 아래의 제어 요소들이 중요한 이유입니다.

사용량 확인

Claude Code에서 사용량 확인 명령어는 /usage입니다 (/cost도 사용 가능하며, 이는 alias입니다). 상단의 Session 블록에는 현재 세션의 토큰 통계와 로컬에서 계산된 예상 비용이 표시됩니다. 구독 플랜을 사용하는 경우, 동일한 화면에서 플랜 한도 표시줄과 함께 최근 사용량이 skills, subagents, plugins, 개별 MCP servers별로 어떻게 배분되었는지 확인할 수 있습니다. API 계정의 정확한 결제 내역을 확인하려면 Claude Console의 usage 페이지를 참조하십시오. CLI에 표시되는 수치는 추정치입니다. /context를 실행하면 컨텍스트 윈도우를 점유하는 항목인 system prompt, tools, MCP definitions, files, history를 색상 그리드 형태로 보여줍니다. 이는 비대해진 CLAUDE.md 또는 과도하게 통신하는 MCP server를 식별하는 가장 빠른 방법입니다. 항목별 상세 내역을 보려면 all 플래그를 사용하십시오.

API를 통해 모든 응답에서 발생한 상황을 정확히 확인할 수 있습니다:

response = client.messages.create(model="claude-sonnet-5", max_tokens=2048,
                                  messages=messages)
u = response.usage
total_prompt = u.input_tokens + u.cache_creation_input_tokens + u.cache_read_input_tokens
print(f"uncached={u.input_tokens} written={u.cache_creation_input_tokens} "
      f"read={u.cache_read_input_tokens} output={u.output_tokens}")

input_tokens캐시되지 않은 잔여량임을 유의하십시오. 실제 프롬프트 크기는 세 가지 입력 필드의 합계입니다. input_tokens: 4000를 표시하며 한 시간 동안 실행된 에이전트가 저렴한 것은 아닙니다. 나머지 200,000 토큰은 캐시에서 제공되었기 때문입니다. 전송 전 사용량을 추정하려면 token-counting endpoint를 사용하십시오. 이 호출은 무료이며 별도의 rate limit이 적용됩니다. 지정한 모델의 tokenizer를 사용하여 토큰을 계산합니다(결과값은 근사치로 간주하십시오. 실제 결제는 실제 요청을 기준으로 이루어집니다):

count = client.messages.count_tokens(model="claude-sonnet-5",
                                     messages=[{"role": "user", "content": big_file}])
print(count.input_tokens)

위와 같은 이유로 절대 tiktoken하지 마십시오.

구독 플랜과 종량제(pay-as-you-go) 비교

이 가이드의 작동 방식은 어디서나 동일하며, 결제 방식만 다릅니다. API key를 사용하면 Anthropic은 공개된 요율에 따라 토큰당 비용을 청구하는 종량제 방식으로 결제합니다. 위에 언급된 모든 수치는 실제 비용을 의미합니다. Claude 구독(Pro, Max, Team, Enterprise)을 사용하는 경우, Claude Code 사용량은 해당 플랜에 포함된 할당량에서 차감됩니다. 2026년 7월 기준으로, 이 할당량은 모델 및 claude.ai 채팅과 공유되는 5시간 단위의 이동식 세션 윈도우와 주간 윈도우로 구성됩니다. 여기서 /usage 달러 수치는 청구 금액이 아닌 정보 제공용입니다. 윈도우를 모두 소모하면 리셋 시간과 함께 "You've hit your session limit" 또는 "You've hit your weekly limit" 메시지가 표시됩니다. /model를 통해 모델을 변경해도 액세스가 복구되지 않는데, 이는 윈도우가 모든 모델에 공유되기 때문입니다. 플랜 설정에 따라 /usage-credits로 관리되는 사용 크레딧을 활성화하여 한도 초과 사용량을 구매할 수 있습니다. 플랜별 할당량은 변동성이 매우 크므로 본 가이드에 기재하지 않습니다. 대신 claude.com/pricing 또는 본인의 /usage 바를 확인하십시오. 구독 모델에서도 토큰 메커니즘은 중요합니다. 비효율적인 세션은 실제 비용을 지불하는 것과 동일하게 할당량을 소모합니다. 구독 관련 상세 내용은 사용량에 적합한 Claude 플랜 확인하기를 참조하십시오.

실질적인 효과를 내는 방법

  • Agent의 읽기 범위를 제한하십시오. "auth.py의 validation bug를 수정하라"는 파일 하나만 읽지만, "이 codebase를 개선하라"는 파일 40개를 읽습니다. CLAUDE.md은 모든 세션에 로드되므로 핵심 내용만 포함하여 가볍게 유지하십시오. 워크플로우 전용 지침은 필요할 때만 로드되는 skills로 분리하십시오.
  • 명확하고 간결하게 작성하십시오. 서로 관련 없는 작업 사이에는 /clear을 사용하십시오. 관련 없는 문맥이 계속 전송되면 비용이 중복 발생합니다. 하나의 긴 작업 내에서는 /compact Focus on the failing tests and the diff이 이력을 요약하여 비용이 기하급수적으로 증가하는 것을 방지합니다.
  • 모델의 크기를 적절히 선택하십시오. 2026년 7월 기준 도입 가격은 100만 토큰당 $2/$10이며 Sonnet이 대부분의 코딩 작업에 적합합니다 (Opus의 $5/$25 대비). 로그 분류와 같은 단순한 subagent 작업에는 $1/$5인 Haiku가 적합합니다. /model을 통해 세션 중간에 모델을 전환할 수 있습니다.
  • 상세한 출력을 미리 필터링하십시오. 테스트 실행 결과에서 실패한 부분만 grep하는 hook을 사용하면, Claude가 읽어야 할 20,000 토큰의 도구 결과를 300 토큰으로 줄일 수 있습니다. 이는 해당 턴이 다시 전송될 때마다 적용됩니다.
  • 대화형이 아닌 작업은 배치(Batch)로 처리하십시오. 분류, 대량 검토, 야간 작업과 같은 자체 API 파이프라인의 경우, Batches API를 사용하면 비동기 전달 조건으로 동일한 모델을 50% 저렴하게 사용할 수 있습니다.
  • 캐시 유효 시간을 고려하십시오. 작업을 연속적으로 수행하십시오. VPS의 tmux에서 실행되는 Claude Code session은 유휴 상태일 때 비용이 발생하지 않으며, 턴이 실행될 때만 토큰이 소모됩니다. 하지만 유휴 시간이 길어지면 warm cache를 사용할 수 없으며, 다음 턴에서 다시 작성하는 비용이 발생합니다.

FAQ

Claude Code 코딩 세션에서 토큰을 얼마나 사용합니까?

고정된 수치는 없습니다. 파일과 대화 기록이 쌓이면 세션 중간의 단일 턴에서 수만 개의 prompt tokens가 발생합니다. 전체 작업 세션에서는 수백만 개의 토큰이 사용되며, 대부분은 기본 요율의 10% 수준인 cache에서 처리됩니다. 기준점으로, Anthropic이 2026년 7월에 발표한 기업 데이터에 따르면 활성 일일 개발자 1인당 평균 비용은 약 $13이며, 사용자 90%가 $30 미만을 사용합니다. 본인의 세션에서 /usage을 실행하십시오. 5분간 관찰하는 것이 발표된 평균값보다 더 정확합니다.

사고(thinking) 토큰이 화면에 보이지 않아도 비용이 발생합니까?

그렇습니다. Thinking tokens는 output tokens로 간주되어 높은 요율이 적용되며 max_tokens에 포함됩니다. 현재 모델들은 인터페이스에 추론 요약(reasoning summary)을 표시하지 않더라도 해당 토큰에 대해 비용을 청구합니다. 만약 답변이 완료되기 전에 stop_reason: "max_tokens"와 함께 응답이 잘린다면, thinking 토큰이 할당된 예산을 모두 소모했을 가능성이 큽니다. Claude Code에서 깊은 추론이 필요 없는 작업에는 /effort을 사용하여 effort level을 낮추십시오.

Claude Code 세션이 길어질수록 메시지당 비용이 왜 증가합니까?

API는 stateless 방식이기 때문입니다. 매 턴마다 모든 파일 읽기 결과, tool 결과, 이전 대화 내용 전체를 billed input으로 다시 전송합니다. 따라서 50번째 턴은 1번째부터 49번째 턴까지의 데이터를 모두 포함합니다. Prompt caching을 통해 반복되는 prefix를 기본 input 가격의 약 10% 수준으로 처리할 수 있지만, prefix 자체는 계속 커집니다. 또한 cache TTL이 지난 후 발생하는 유휴 간격은 다음 턴을 전체 가격의 재작성(re-write)으로 전환시킵니다. /compact는 history를 축소하며, /clear는 이를 초기화합니다.

Claude 토큰 사용량과 비용을 어떻게 확인합니까?

Claude Code에서 /usage을 실행하면 세션 토큰 통계, 로컬 비용 추정치, 구독 플랜 제한 바를 확인할 수 있습니다(/cost은 별칭입니다). /context은 창에 표시되는 내용을 보여줍니다. 정확한 API 과금 내역은 Claude Console의 usage 페이지를 사용하십시오. 직접 코드를 작성할 때는 response.usage을 읽으십시오. input_tokens, cache_creation_input_tokens, cache_read_input_tokens를 합산하면 실제 prompt size를 구할 수 있습니다. 사전 예측에는 count_tokens endpoint를 사용해야 하며, tiktoken를 사용해서는 안 됩니다.