Claude의 토큰이란 무엇이고 어떻게 작동할까? 38억 개를 세어 봤습니다
토큰은 단어의 조각이며, Claude는 입력, 캐시 쓰기, 캐시 읽기, 출력의 네 종류를 셉니다. 우리 Claude Code 세션 30일 치, 38억 토큰을 세어 보니 98%는 캐시에서 다시 읽힌 대화였고, Claude가 쓴 것은 0.3%였습니다. 종류별 비용, 턴마다 세션이 무거워지는 이유, 그리고 5시간 창이 무엇을 재는지 정리합니다.
Claude 주변 어디서나 이 단어를 만납니다. 요금표에서, 한도 메시지에서, /usage에서, 비용을 아껴 준다는 모든 글에서. 그런데 토큰이 무엇인지 말해 주는 사람은 거의 없고, 사람들이 보는 숫자는 정작 중요한 숫자가 아닌 경우가 많습니다. Claude가 답으로 쓰는 부분은 코딩 세션이 집계하는 양의 1%에도 못 미칩니다.
그래서 우리 것을 세어 봤습니다. Mac 한 대에서 돌린 Claude Code 세션 30일 치, 2026년 9월 10일부터 10월 9일까지입니다. 세션 388개, 모델 요청 19,668개, 토큰 38억 개. 토큰이 무엇인지, Claude가 토큰을 세는 네 가지 방식, 그리고 그 숫자들이 실제 작업에서 어떻게 보이는지 소개합니다.
토큰은 텍스트의 조각이고, 조각의 크기는 달라진다
모델은 글자도 단어도 읽지 않습니다. 모델이 읽는 것은 토큰입니다. 고정된 어휘에서 가져온 텍스트 조각으로, 짧은 단어 하나 전체일 때도 있고, 대개는 단어의 일부이며, 처음 보는 것이라면 글자 하나나 바이트 하나일 때도 있습니다. 모든 것이 이 조각 단위로 집계됩니다. 여러분이 보내는 것, Claude가 쓰는 것, 턴과 턴 사이에 보관하는 것입니다.
토큰 하나에 들어가는 텍스트의 양은 모델과 언어에 따라 다릅니다. Anthropic 용어집은 Claude 4.7 이전 모델에서 토큰당 영어 약 3.5글자라고 하고, Claude 4.7 이후는 새 토크나이저를 써서 같은 텍스트에 토큰이 약 30% 더 나온다고 설명합니다. 정확한 개수는 사용할 모델을 지정해 토큰 카운팅 엔드포인트에 물어봐야만 나옵니다.
우리는 우리 텍스트로 비율을 측정했습니다. 우리 에이전트는 프랑스어로 답하므로, 사고 없음, 도구 호출 없음, 코드 블록 없음, 80단어 이상인 텍스트 전용 답변을 골랐습니다. Opus 5, Opus 5.5, Fable 5.1, Sonnet 5.5에 걸친 296개입니다. 중앙값은 토큰당 2.3글자, 단어당 약 2.6토큰이었습니다. 코드, JSON, 라틴 문자가 아닌 문자 체계는 비율이 다릅니다. 핵심은 정확한 숫자가 아닙니다. 토큰은 단어보다 작고, 손으로 셀 일은 절대 없다는 것입니다.
모든 요청은 네 개의 카운터로 집계된다
Claude Code는 모든 세션을 ~/.claude/projects/ 아래의 JSONL 트랜스크립트에 기록합니다. 모델의 각 답변에는 usage 블록이 붙어 있습니다. 우리 트랜스크립트에서 가져온 실제 예시를, 쓸모 있는 필드만 남겨 보여 드립니다.
"usage": {
"input_tokens": 2,
"cache_creation_input_tokens": 51836,
"cache_read_input_tokens": 24882,
"output_tokens": 315,
"output_tokens_details": { "thinking_tokens": 54 },
"cache_creation": {
"ephemeral_1h_input_tokens": 51836,
"ephemeral_5m_input_tokens": 0
}
}
카운터는 네 개이고, 가격은 저마다 다릅니다.
input_tokens: 프롬프트 중 캐시에 쓰이지도, 캐시에서 읽히지도 않는 부분으로, 기본 입력 가격으로 청구됩니다. Claude Code에서는 거의 항상 몇 토큰에 불과합니다. 거의 모든 것이 캐시를 거치기 때문입니다.cache_creation_input_tokens: 다음 요청이 재사용할 수 있도록 캐시에 저장되는 프롬프트 부분입니다. 캐시 쓰기는 5분 캐시면 입력 가격의 1.25배, 1시간 캐시면 2배가 듭니다. 우리 트랜스크립트에서는 쓰기의 97%가 1시간짜리였습니다.cache_read_input_tokens: 캐시에서 다시 재생되는 프롬프트 부분입니다. 캐시 읽기는 대부분의 모델에서 입력 가격의 0.1배, Opus 5.5와 Sonnet 5.5에서는 0.05배, Fable 5.1에서는 0.025배입니다(Anthropic의 프롬프트 캐싱 페이지, 2026년 10월 10일 확인).output_tokens: Claude가 쓰는 것으로, 사고도 포함됩니다. 출력은 현행 모든 모델에서 입력 가격의 5배입니다. 100만 토큰당 Opus 5.5는 20달러, Opus 5는 25달러, Fable 5.1은 50달러, Sonnet 5.5는 10달러입니다.
앞의 세 개를 더하면 모델이 이번 요청에서 읽은 컨텍스트가 됩니다. 네 번째가 답변입니다.
우리 세션 30일 치의 모습
19,668개 요청을, 요청마다 한 번씩 셌습니다(API 호출 하나가 트랜스크립트의 여러 줄에 걸칠 수 있습니다).
| 카운터 | 토큰 | 토큰 비중 | API 정가 기준 비용 비중 |
|---|---|---|---|
| 입력(캐시 없음) | 114,411 | 0.003% | 0.04% |
| 캐시 쓰기 | 74,834,070 | 2.0% | 37.4% |
| 캐시 읽기 | 3,710,054,709 | 97.7% | 45.7% |
| 출력 | 12,727,193 | 0.34% | 16.8% |
| 합계 | 3,797,730,383 | 100% | 2,563달러 |
비용 열은 각 요청을 그 요청의 모델과 그 요청의 캐시 기간으로 값을 매긴 것입니다. 우리가 이 금액을 내는 것은 아닙니다. 이 세션들은 구독으로 돌아갔습니다. 이것은 각 카운터의 무게이며, AgentsRoom이 요금제의 퍼센트를 프로젝트별로 나눌 때 쓰는 것과 같은 가중치입니다.
세 가지를 읽을 수 있습니다.
거의 모든 토큰은 다시 읽히는 대화입니다. 토큰의 97.7%가 캐시 읽기입니다. 요청의 99.2%가 캐시에서 무언가를 읽습니다. 누군가 세션에서 "5,000만 토큰을 썼다"고 말할 때 보고 있는 것이 바로 이것입니다.
Claude가 쓰는 양은 토큰으로는 아주 작지만 비용으로는 작지 않습니다. 토큰의 0.34%, 청구액의 16.8%입니다. 출력이 가장 비싼 토큰이기 때문입니다. 그 출력의 29%가 사고였습니다.
캐시 쓰기는 비싼 복병입니다. 토큰의 2%, 비용의 37%입니다. 캐시 만료에서 생긴다고 예상했지만, 식은 컨텍스트를 다시 써야 했던 요청은 19,668개 중 16개뿐이었고, 그중 7개는 한 시간 넘게 아무것도 하지 않은 뒤였습니다. 쓰기의 79%는 그저 새 메시지와 도구 결과가 각각 한 번씩, 입력 가격의 2배로 저장된 뒤 이어지는 모든 턴에서 다시 읽히는 것입니다. 나머지 20%는 각 세션의 첫 요청입니다.
턴마다 세션이 무거워지는 이유
모델은 두 요청 사이에 아무것도 보관하지 않습니다. Claude Code는 매번 모든 것을 다시 보냅니다. 시스템 프롬프트, 도구 정의, CLAUDE.md, 모든 메시지, 읽은 모든 파일, 모든 명령 출력입니다. 캐시는 반복되는 부분을 토큰당 싸게 만들 뿐, 공짜로 만들지도 않고 작게 만들지도 않습니다.
세션 내 위치별, 요청당 읽은 컨텍스트의 중앙값입니다.
| 세션 내 요청 | 요청 수 | 컨텍스트 중앙값 |
|---|---|---|
| 1번째 | 388 | 52,000토큰 |
| 2~10번째 | 3,210 | 93,000토큰 |
| 11~50번째 | 8,546 | 161,000토큰 |
| 51~200번째 | 6,414 | 237,000토큰 |
| 200번째 이후 | 1,110 | 342,000토큰 |
중앙값 요청은 290토큰짜리 답변을 쓰려고 179,000토큰의 컨텍스트를 읽었습니다. 이 비율이 코딩 에이전트에서 토큰 이야기의 전부입니다. 답변은 짧고, 읽는 양은 길며, 읽는 양은 세션과 함께 커집니다.
우리의 첫 요청은 무겁습니다. 누가 아무것도 입력하기 전에 이미 52,000토큰입니다. 우리 에이전트는 긴 역할 설명과, 도구 정의가 프롬프트에 들어가는 MCP 서버 네 개를 안고 시작하기 때문입니다. 빈 폴더에서 아무것도 없는 Claude Code 세션은 훨씬 낮게 시작합니다. 첫 메시지 전에 여러분의 세션이 무엇을 싣고 있는지는 /context로 볼 수 있습니다.
세션 하나가 쓰는 양
요청이 3개 이상인 세션 380개에서:
- 중앙값 요청 33개, 가운데 절반은 16~61개.
- 중앙값 출력 토큰 27,000개, 12,000~48,000개.
- 중앙값 처리된 토큰 540만 개, 가운데 절반은 150만~1,070만 개, 그중 510만 개가 캐시 읽기.
- 중앙값 181,000토큰이 캐시에 쓰이거나 캐시 없이 전송됨: 실제로 새로웠던 부분.
- API 정가 기준 중앙값 4.55달러, 가운데 절반은 1.81~9.25달러.
그러니 "코딩 세션은 토큰을 얼마나 쓰나"에 대한 솔직한 답은 대략 100만에서 1,000만 사이의 범위이고, 그 거의 전부가 다시 읽히는 같은 컨텍스트입니다. 오후 내내 긴 작업 하나를 붙잡고 도는 세션은 범위의 위쪽에, 버그 하나를 고치고 멈추는 세션은 아래쪽에 있습니다.
5시간 창과 주간 한도가 실제로 세는 것
Pro나 Max 요금제에서는 토큰 잔액이 절대 보이지 않습니다. Anthropic 고객센터에 따르면 두 요금제 모두 5시간 세션 한도와 주간 한도가 있고, 이 한도는 Claude와 Claude Code(IDE 포함)가 공유하며, Max 요금제에는 Fable용 별도 주간 한도가 있습니다. 어느 한도에 대해서도 토큰 수치는 공개하지 않습니다. /usage는 각 창의 퍼센트와 초기화 시각을 보여 줍니다.
이 퍼센트를 움직이는 것으로 Anthropic이 직접 꼽은 목록은 이렇습니다. 메시지 길이, 첨부 파일 크기, 현재 대화 길이, 도구 사용, 모델 선택, 추론 강도, 그리고 여러 단계로 이뤄진 작업. 위의 표와 함께 읽으면, 코딩 세션을 지배하는 것은 "현재 대화 길이"입니다. 요청마다 읽는 컨텍스트가 요청 50개를 거치며 52,000토큰에서 237,000토큰으로 늘어납니다. 고객센터는 프로젝트에서 캐시된 콘텐츠는 재사용될 때 한도에 덜 반영된다고도 말하는데, 이는 캐시 읽기 가격과 같은 발상입니다.
Anthropic이 토큰을 창의 퍼센트로 어떻게 환산하는지는 모르며, 환산식을 지어내지도 않겠습니다. 데이터가 말해 주는 것은, 같은 질문이라도 긴 세션 후반의 요청이 초반 요청보다 몇 배로 집계된다는 사실입니다.
실제로 집계를 바꾸는 것
우리 데이터에서 영향이 큰 순서대로, 지렛대 네 가지입니다.
- 관련 없는 작업 사이에는
/clear. Anthropic은 이것을 "품질과 비용 모두에 가장 효과적인 단 하나의 지렛대"라고 부릅니다. 오래된 세션에서 새 작업을 하면 요청마다 이전 작업의 컨텍스트 값을 치릅니다. - 긴 세션을 이어 갈 때는
/compact. 기록을 짧은 요약으로 바꾸므로, 이후 요청이 읽는 양이 줄어듭니다. - 컨텍스트에 무엇이 들어가는지 신경 쓰기. 20,000토큰짜리 파일 읽기나 명령 출력은 입력 가격의 2배로 한 번 쓰이고, 그 뒤 세션이 끝날 때까지 요청마다 다시 읽힙니다. 파일 전체 대신 필요한 줄만 읽으면 두 번 이득입니다.
- 모델과 추론 강도. 우리 출력의 29%가 사고였고, 출력은 가장 비싼 토큰입니다. 일상적인 작업에서 추론 강도를 낮추면 출력이 줄고, 더 싼 모델을 쓰면 모든 가격이 한꺼번에 내려갑니다.
우리 데이터에서 영향이 없었던 것: 세션을 놀려 두는 것. 우리 트랜스크립트에서 Claude Code가 쓰는 1시간 캐시로는, 식은 상태에서 다시 쓰는 일이 30일 동안 16번 있었습니다.
비용을 더 줄이는 방법은 Claude Code 토큰 비용을 줄이는 방법을 참고하세요.
직접 세어 보기
위의 표는 의존성이 없는 스크립트에서 나왔습니다. 머신에 있는 모든 Claude Code 트랜스크립트를 읽고, 각 요청을 한 번씩 세서, 네 카운터와 세션별 중앙값을 출력합니다. 기간을 정하고 싶다면 o["timestamp"]에 필터를 추가하세요.
import json, glob, os, statistics as st
from collections import defaultdict
FIELDS = ("input_tokens", "cache_creation_input_tokens",
"cache_read_input_tokens", "output_tokens")
totals, sessions = defaultdict(int), []
for path in glob.glob(os.path.expanduser("~/.claude/projects/*/*.jsonl")):
seen, session = set(), defaultdict(int)
with open(path, errors="ignore") as fh:
for line in fh:
try: o = json.loads(line)
except ValueError: continue
msg = o.get("message") or {}
usage = msg.get("usage") if isinstance(msg, dict) else None
if o.get("type") != "assistant" or not usage: continue
rid = o.get("requestId") or o.get("uuid")
if rid in seen: continue # one API call can span several lines
seen.add(rid)
session["requests"] += 1
for f in FIELDS:
n = usage.get(f) or 0
totals[f] += n
session[f] += n
if session["requests"] >= 3: sessions.append(session)
grand = sum(totals[f] for f in FIELDS)
for f in FIELDS:
print(f"{f:30s} {totals[f]:>15,} {100 * totals[f] / grand:6.2f}%")
for key in ("requests", "output_tokens", "cache_read_input_tokens"):
print(f"median per session, {key}: {st.median(s[key] for s in sessions):,.0f}")
여러분의 비중을 우리 것과 비교해 보세요. 캐시 읽기 줄은 다시 읽히는 대화이고, 캐시 쓰기 줄은 새로웠던 부분입니다. 이 두 줄이 출력 줄보다 여러분의 청구액에 대해 더 많은 것을 알려 줍니다.
AgentsRoom에서 보이는 곳
스크립트로는 한 달 치를 볼 수 있습니다. 작업하는 동안에는 AgentsRoom이 같은 카운터를 에이전트별로 보여 줍니다. 세션이 무거워지면 빨갛게 바뀌는 모든 세션 컴포저의 토큰 배지, 입력, 출력, 캐시 쓰기, 캐시 읽기, 캐시 적중률을 보여 주는 세션 모니터, 그리고 세션을 턴 단위로 다시 재생해 어떤 파일 읽기나 도구 결과가 컨텍스트를 채웠는지 보여 주는 세션 트레이스입니다. 사용량 패널은 요금제가 보고하는 퍼센트를 프로젝트와 에이전트별로 나누며, 각 세션을 API 가격으로 들었을 비용으로 가중합니다. 위의 표와 같은 가중치입니다.
이 중 어느 것도 토큰 잔액은 보여 주지 않습니다. 여러분의 요금제에는 잔액이라는 것이 없기 때문입니다. 그 질문은 Claude에서 토큰이 얼마나 남았는지를 참고하세요. 출력 토큰이 도착하는 속도는 Claude Code 초당 토큰 수 실측을 참고하세요.
자주 묻는 질문
Claude에서 토큰이란 무엇인가요?
Claude가 텍스트를 읽고 쓰는 단위입니다. 단어의 일부이고, 때로는 짧은 단어 하나 전체, 때로는 글자 하나나 바이트 하나입니다. Anthropic에 따르면 크기는 모델과 언어에 따라 달라집니다. Claude 4.7 이전 모델에서는 토큰 하나가 영어 약 3.5글자였고, Claude 4.7 이후는 새 토크나이저를 써서 같은 텍스트에 토큰이 약 30% 더 나옵니다. Claude가 하는 모든 일은 토큰으로 계량됩니다. 여러분이 보내는 것, Claude가 답으로 쓰는 것, 그리고 턴과 턴 사이에 캐시에 보관하는 것입니다.
Claude 토큰 하나는 몇 글자, 몇 단어인가요?
언어와 텍스트에 따라 다릅니다. Anthropic은 Claude 4.7 이전 모델에서 토큰당 영어 약 3.5글자, Claude 4.7 이후에서는 같은 텍스트에 토큰이 약 30% 더 나온다고 밝힙니다. 2026년 9월과 10월에 우리 에이전트가 프랑스어로 쓴 텍스트 전용 답변 296개에서 토큰 하나는 2.3글자, 단어당 약 2.6토큰이었습니다. 코드, JSON, 라틴 문자가 아닌 문자 체계는 비율이 다릅니다. 정확한 개수가 필요하면 Anthropic의 토큰 카운팅 엔드포인트에 텍스트와 모델을 넘기면 됩니다.
Claude Code는 왜 그렇게 많은 토큰을 쓰나요?
요청할 때마다 대화 전체를 다시 보내기 때문입니다. 시스템 프롬프트, 도구 정의, CLAUDE.md, 지금까지의 모든 메시지와 모든 도구 결과입니다. 우리의 19,668개 요청에서 중앙값 요청은 290토큰짜리 답변을 쓰려고 179,000토큰의 컨텍스트를 실어 날랐고, 컨텍스트는 세션 첫 요청의 52,000토큰에서 요청 50개 뒤에는 237,000토큰으로 늘었습니다. 캐시 덕분에 이 재읽기는 토큰당 싸지지만, 그래도 집계는 됩니다.
일반적인 Claude Code 세션은 토큰을 얼마나 쓰나요?
2026년 9월 10일부터 10월 9일까지 기록한, 요청이 3개 이상인 세션 380개에서 중앙값은 요청 33개, 출력 토큰 27,000개, 처리된 토큰 총 540만 개였고, 그중 510만 개가 캐시 읽기였습니다. 세션의 절반은 150만에서 1,070만 토큰 사이에 있었습니다. API 정가로 치면 이 중앙값 세션은 약 4.55달러가 들었을 것입니다. Pro나 Max 요금제에서는 같은 작업이 대신 5시간 창과 주간 창에서 차감됩니다.
사고 토큰도 집계되나요?
네. 사고 토큰은 모든 usage 블록에서 output_tokens에 포함되며, 출력 중 얼마가 사고였는지는 thinking_tokens 필드가 알려 줍니다. API에서는 출력 가격으로 청구되고, Anthropic은 요금제의 사용량 한도를 더 빨리 소진시키는 요인 중 하나로 추론 강도를 꼽습니다. 우리 코퍼스에서는 모델이 쓴 전체의 29%가 사고였습니다.
캐시 쓰기 토큰과 캐시 읽기 토큰의 차이는 무엇인가요?
캐시 쓰기는 다음 요청이 재사용할 수 있도록 프롬프트의 일부를 저장하는 것으로, 일반 입력보다 비쌉니다. 5분 캐시는 입력 가격의 1.25배, 1시간 캐시는 2배입니다. 캐시 읽기는 저장된 부분을 재사용하는 것으로, 훨씬 쌉니다. 대부분의 모델에서 입력 가격의 0.1배, Opus 5.5와 Sonnet 5.5에서는 0.05배, Fable 5.1에서는 0.025배입니다. 우리 세션에서 캐시 읽기는 토큰의 98%, 정가 기준 비용의 46%였고, 캐시 쓰기는 토큰의 2%, 비용의 37%였습니다.
AgentsRoom 다운로드
모든 AI 에이전트를, 모든 프로젝트에서, 하나의 창으로 실행하세요.
컴패니언 앱: 이동 중에도 에이전트를 모니터링
Claude, Codex, Antigravity CLI 또는 다른 AI 공급자를 사용하세요.
버그와 요청을 공개 백로그로 바로 보내세요.
계속 읽기
SSH가 끊겨도 Claude Code 계속 실행하기: tmux 레시피
tmux로 SSH 연결이 끊긴 뒤에도 Claude Code를 살려 두세요. 같은 프로세스에 다시 연결하고, 지속성을 확인하고, AgentsRoom의 옵트인 설정을 쓰는 방법입니다.
기사 읽기Claude Code의 Routines: 클라우드에서 도는 것, 내 컴퓨터에 남는 것, 그리고 고르는 법
Routines는 저장해 둔 프롬프트를 여러분 없이 실행하는 Claude Code의 방식입니다. 예약 시각에, API 호출로, 또는 GitHub 이벤트로 시작되며, 저장소를 새로 클론한 cloud session으로 돌아갑니다. 지금은 리서치 프리뷰 단계입니다. Claude Code에는 작업을 로컬에서 예약하는 방법도 두 가지(데스크톱 앱의 예약 작업과 /loop) 있는데, 셋은 똑같이 동작하지 않습니다. 최소 간격, 로컬 파일 접근, 권한 확인, 노트북이 잠자기에 들어갔을 때 일어나는 일이 다릅니다. 이 가이드는 문서에 적힌 제약과 함께 셋을 정리하고, 저희의 야간 에이전트 일곱 개가 왜 로컬 머신에서 돌아가는지 설명합니다.
기사 읽기AI 에이전트 7개가 우리의 밤을 돌립니다: 코딩 너머의 예약 에이전트, 프롬프트까지 공개
한 사용자가 코드 작성 말고 AI 에이전트를 어디에 쓰는지 물었습니다. 8월 28일부터 예약 에이전트 7개가 매일 저녁 Mac mini에서 시작됩니다: 당직 CEO, SEO 팀, 프로덕트 매니저, 버그 수정 담당, 소셜 미디어 팀, 문서 담당, 그리고 25줄 요약을 이메일로 보내는 보고 담당. 33번의 밤, 31통의 아침 이메일, 커밋 링크가 달린 버그 수정 51건, 20개 언어로 된 블로그 글 7편. 각자 무엇을 하는지, 서로 대화하지 않고 어떻게 일을 넘기는지, 어떤 모델이 어떤 일을 맡는지, 프롬프트가 배워야 했던 네 가지 규칙, 그리고 바로 복사해 쓸 수 있는 프롬프트 자체를 정리했습니다.
기사 읽기