클로드 코드(Claude Code) 토큰 절약: 직접 재 본 8가지 방법
2만 8,921줄짜리 로그에서 마지막 작업이 왜 실패했는지 Claude Code에 물어봤습니다. 로그 경로만 주고 맡겼더니 입력 토큰이 10만~14만 개 나왔어요. 같은 질문에 로그 끝 50줄만 붙여 넣으니 3만 3천 개로 끝났고, 답은 똑같았습니다.
이 로그 실험을 포함해 토큰 절약 방법 여덟 가지를 같은 예제 프로젝트에서 하나씩 재 봤습니다. 입력을 가장 많이 줄인 건 큰 로그를 필요한 부분만 넘기기, 읽을 파일 경로를 질문에 적기, CLAUDE.md를 짧게 유지하기였어요. 반대로 /compact와 서브에이전트는 그 자체로 비용이 들어서, 같은 작업을 오래 이어 갈 때만 이득이더라고요.
2026년 9월 29일 Windows 11 · Windows PowerShell 5.1 테스트 환경에서 Claude Code 2.1.283(기본 모델 Opus 5.5)으로 직접 재 본 결과입니다. 소스 파일 22개, 2만 8,921줄 로그, 상품 6천 개가 든 JSON으로 만든 예제 프로젝트에서 대부분 한두 번씩 잰 값이라, 절대 수치보다 전후 차이를 보는 용도로 읽어 주세요.
확인한 버전·환경
- Claude Code 2.1.296 · Windows 11 · Windows PowerShell 5.1 · 확인일 2026-10-13
여덟 가지를 한 표로
“ok” 한 마디만 보내도 입력이 약 3만 1천 토큰이었습니다. 시스템 프롬프트와 도구 정의가 매 요청에 실리기 때문이에요. 토큰은 요청 한 번에 싣는 컨텍스트 × 왕복 횟수로 늘고, 아래 방법들은 둘 중 하나를 줄입니다.
| 방법 | 입력 토큰 전 → 후 | 결과 |
|---|---|---|
| 1. 읽을 파일 지정 | 약 9.7만 → 6.4만 | 약 33% 감소 |
| 2. 로그는 필요한 부분만 | 10.4만~14.3만 → 3.3만 | 68~77% 감소 |
| 3. CLAUDE.md 400줄 → 40줄 | 5.3만 → 3.3만 | 요청마다 약 1.9만 |
| 4. 관계없는 질문은 새 세션 | 7.9만 → 6.3만 | 이번 1회 비용은 증가 |
5. /compact |
7.9만 → 6.7만 | 압축 비용 별도 |
| 6. 서브에이전트에 맡기기 | 메인 12.1k → 5.8k | 전체 비용 증가 |
| 7. 작은 모델 | Opus 5.5 → Haiku 4.5 | 추정 비용 약 37% |
8. /context로 먼저 보기 |
— | 사용량 0 |
여기서 “입력 토큰”은 새로 처리한 토큰, 캐시에 쓴 토큰, 캐시에서 읽은 토큰을 모두 더한 값입니다. 캐시에서 읽은 토큰은 훨씬 싸게 계산되니까 토큰 수와 비용이 늘 같은 방향으로 움직이지는 않아요. 비용은 정가 기준 추정치이고, Pro·Max 구독자의 청구와는 관계없지만 두 방법을 비교하는 잣대로 함께 적었습니다.
그럼 구독 요금제라면 토큰을 아낄 필요가 없을까요? 그렇지 않습니다. 구독에는 5시간·주간 사용 한도가 있고, 한 요청에 싣는 컨텍스트가 클수록 한도에 빨리 닿거든요.
한도를 확인하는 법은 사용량 확인 글에 있습니다.
로그는 잘라서, 파일은 경로로
1. 읽을 파일을 질문에 적기
“이 가게의 최대 할인율은?“을 막연하게 물으면 Claude Code가 파일을 찾느라 한 번 더 왕복했습니다. 경로를 적어 주면 그 한 번이 빠져요.
| 질문 | 왕복 | 입력 토큰 | 추정 비용 |
|---|---|---|---|
| 막연하게 | 3 | 98,269 · 95,584 | $0.083 · $0.073 |
src/pricing/discount.js를 읽고 |
2 | 64,468 · 64,462 | $0.069 · $0.071 |
“·“로 이은 두 값은 같은 조건으로 두 번 잰 결과이고, 둘 다 0.35를 정확히 답했습니다. 왕복마다 그때까지의 컨텍스트 전체가 다시 실리니까, 탐색 한 단계를 줄이면 컨텍스트 한 벌을 덜 보내는 셈입니다.
그렇다고 모든 질문에 경로를 적을 필요는 없습니다. 위치를 알 때만 적으면 돼요. 위치를 모를 때는 막연한 질문도 결국 같은 답에 닿았고, 차이는 왕복 한 번(이 예제에서 약 3만 토큰)이었습니다.
2. 큰 로그는 필요한 부분만 넘기기
도입에서 말한 그 로그입니다. 2만 8,921줄(약 1.8MB) 로그에서 마지막 작업이 실패한 이유를 Opus 5.5에 물었습니다. 경로만 주고 맡기면 검색 도구로 로그를 좁혀 가며 여러 번 왕복했고, 끝부분을 붙여 넣으면 한 번에 끝났습니다.
Get-Content logs\app.log -Tail 50 | claude -p "Below is the end of the application log. Why did the most recent nightly-sync job fail? Answer in one sentence." --model opus
| 방식 | 입력 토큰 | 왕복 | 추정 비용 |
|---|---|---|---|
| 로그 경로만 주고 맡기기 | 143,028 · 104,312 | 4 · 3 | $0.134 · $0.114 |
| 끝 50줄을 파이프로 넘기기 | 32,981 | 1 | $0.059 |
| 끝 50줄 + 도구 끄기 | 4,578 | 1 | $0.022 |
세 방식 모두 “결제 API 연결 시간 초과로 정산 단계에서 실패했다”는 같은 답을 냈습니다. 도구가 필요 없는 질문이면 --tools에 빈 값을 줘 도구 정의까지 빼면 4,578 토큰까지 내려갑니다. Windows PowerShell 5.1에서는 그 빈 값을 '""'로 적어야 하는데, 이건 아래 PowerShell 절에서 따로 이야기할게요.
끝 50줄에 원인이 없으면 답도 틀립니다. 어디를 잘라야 할지 모르면
Select-String -Pattern ERROR처럼 먼저 걸러서 넘기세요.
테스트 출력에서 실패한 줄만 남기는 일은 훅으로 자동화할 수도 있습니다. 거는 법은 Claude Code 훅 가이드에 있습니다.
CLAUDE.md 400줄이 매번 붙이는 것
3. CLAUDE.md를 짧게 유지하기
프로젝트 루트의 CLAUDE.md는 세션을 시작할 때 실리고 이후 모든 요청에 따라갑니다. “ok” 한 마디로 크기별 차이를 쟀습니다.
| CLAUDE.md | 입력 토큰 | 첫 요청 추정 비용 |
|---|---|---|
| 없음 | 31,157 | $0.042 |
| 규칙 40줄(약 6KB) | 33,412 | $0.060 |
| 규칙 400줄(약 64KB) | 52,529 | $0.213 |
400줄짜리를 두자 /context에 Memory files | 21.3k가 새로 생겼습니다. 첫 요청이 비싼 건 새 내용을 캐시에 쓰는 비용 때문이고, 다음 요청부터는 캐시 읽기로 싸지지만 토큰 수는 매번 붙어요.
CLAUDE.md는 200줄 아래로 두고, 특정 작업에만 필요한 지시는 필요할 때만 읽히는 스킬로 옮기는 것이 공식 권장입니다. 무엇을 남길지는 CLAUDE.md 작성법에서 다뤘습니다.
/clear·/compact·서브에이전트가 바로 싸지지 않는 이유
셋 다 컨텍스트를 작게 만들지만, 재 보니 바로 다음 한 번의 질문은 오히려 비쌌습니다. 캐시를 새로 써야 하거나 별도 요청이 들기 때문이에요.
4. 관계없는 일로 넘어가면 새 세션에서
로그를 조사한 세션에서 이어서 “calculateDiscount는 어느 파일에 있나”를 물은 경우와, 새 세션에서 같은 질문을 한 경우입니다.
| 경우 | 입력 토큰 | 이번 질문의 추정 비용 |
|---|---|---|
| 로그 조사 세션에서 이어서 | 79,080 | $0.027 |
| 새 세션에서 | 62,510 · 62,475 | $0.052 · $0.052 |
앞 대화가 남아 있으면 관계없는 질문에도 로그 조사 내용이 실려 입력이 약 1만 6천 토큰 많았습니다.
그런데 이번 한 번의 비용은 이어서 물은 쪽이 쌌어요. 거의 다 캐시 읽기였고, 새 세션은 캐시를 새로 써야 했거든요.
그래서 저는 관계없는 일로 넘어가 여러 번 물을 거라면 /clear를 권하고, 질문 하나만 하고 끝낼 거라면 굳이 새로 열지 않아도 된다고 봅니다.
5. /compact는 같은 작업을 오래 이어 갈 때만
| 시점 | Messages | 후속 질문 입력 토큰 | 추정 비용 |
|---|---|---|---|
| 압축하지 않은 세션 | 12.1k | 79,080 | $0.027 |
/compact 요청 자체 |
— | — | $0.042 |
| 압축 후 | 3k | 66,535 | $0.070 |
대화 부분은 4분의 1로 줄었지만 압축 요청 자체가 $0.042였고, 대화 내용이 바뀌어 다음 요청이 캐시를 다시 써야 해서 바로 다음 질문도 더 비쌌습니다. /compact는 요약할 대화를 모두 읽으니, 큰 컨텍스트를 압축하는 것 자체가 큰 요청이에요.
수시로 /compact를 하면 되지 않을까 했던 분이라면, 측정으로는 손해였습니다. 압축은 그 뒤로 같은 작업을 길게 이어 갈 때 갚아지고, 작업을 바꿀 거라면 비용이 들지 않는 /clear가 낫습니다. 둘의 차이는 컨텍스트 관리 글에 정리했습니다.
6. 서브에이전트는 메인을 가볍게 하지만 전체는 비싸다
| 방식 | 메인 Messages | 조사 턴 추정 비용 | 후속 질문 추정 비용 |
|---|---|---|---|
| 메인이 직접 조사 | 12.1k | $0.134 · $0.143 | $0.027 |
| 서브에이전트에 맡김 | 5.8k | $0.236 | $0.025 |
로그를 읽은 내용은 서브에이전트에 남고 메인에는 요약만 돌아와서, 메인 컨텍스트가 절반 아래였습니다(후속 질문 입력 79,080 → 66,478). 대신 서브에이전트도 따로 요청을 보내니 조사 한 번의 전체 비용은 더 컸어요.
비용을 줄이려면 서브에이전트에 작은 모델을 지정하세요. 만드는 법은 서브에이전트 가이드에 있습니다.
답이 분명하면 작은 모델로
7. 작업에 맞는 모델 고르기
1번의 “파일 지정” 질문을 모델만 바꿔 실행했습니다. 세 모델 모두 0.35로 정확히 답했고, Haiku 4.5는 Opus 5.5 비용의 약 37%였습니다.
| 모델 | 추정 비용 |
|---|---|
| Claude Opus 5.5(기본) | $0.069 · $0.071 |
Claude Sonnet 5(--model sonnet) |
$0.045 |
Claude Haiku 4.5(--model haiku) |
$0.026 |
대화형 화면에서는 /model로 바꿉니다. 대부분의 코딩 작업에는 Sonnet, 복잡한 설계와 여러 단계 추론에는 Opus가 공식 권장이에요.
다만 이 방법이 안 맞는 경우도 있습니다. 답을 검증하기 어려운 작업이나 여러 파일을 엮어 판단해야 하는 작업은 이번 측정처럼 답이 하나로 정해진 질문과 다르니, 작은 모델로 바꾸기 전에 결과를 한 번 비교해 보세요.
모델을 바꾸는 자리와 우선순위는 Claude Code 모델 변경 방법에 있습니다.
모델은 그대로 두고 effort 단계만 바꿨을 때 토큰과 시간이 얼마나 달라지는지는 effort low부터 max까지 직접 잰 결과에서 따로 비교했습니다.
줄이기 전에 /context부터
8. /context로 먼저 보기
/context는 시스템 도구, 메모리 파일(CLAUDE.md), 스킬, 대화(Messages)를 나눠 보여 주고, 실행해도 사용량이 0이었습니다. 예제 프로젝트에서 새 세션을 열고 본 화면의 앞부분입니다.
**Model:** claude-opus-5-5
**Tokens:** 25.9k / 1m (3%)
| System prompt | 2.2k | 0.2% |
| System tools | 21.3k | 2.1% |
| Skills | 2.4k | 0.2% |
| Messages | 10 | 0.0% |
…
대화형 화면에서 열면 같은 내용이 색 격자로 나옵니다. 10월 13일 Claude Code 2.1.296으로 빈 폴더에서 새 세션을 열고 본 화면이에요. 위 출력과는 버전(2.1.283 → 2.1.296)과 폴더가 달라 숫자도 다릅니다.
새 세션인데도 이미 3만 4천 토큰이 차 있고, 그중 2만 7천이 System tools입니다. 첫 표 앞에서 말한 “ok 한 마디에 약 3만 1천 토큰”이 여기서 보이는 거죠. MCP 도구 정의는 612토큰만 올라가 있었어요.
CLAUDE.md가 크면 Memory files, 대화가 길면 Messages가 커집니다. MCP 서버가 많을 때도 여기서 먼저 확인하고, 쓰지 않는 서버는 /mcp에서 끄세요.
내 프로젝트에서 직접 재는 법
위 숫자는 예제 프로젝트에서 한두 번씩 잰 값이라, 프로젝트 크기·설정·MCP 서버·모델에 따라 절대 수치는 달라집니다. 방향을 보는 자료로 쓰고, 자기 프로젝트에서는 직접 재 보시길 권해요.
claude -p에 --output-format json을 붙이면 요청이 끝날 때 사용량이 나옵니다. 방법을 바꾸기 전과 후에 같은 질문으로 재 보면 됩니다.
$o = claude -p "Reply with exactly: ok" --output-format json | ConvertFrom-Json
$o.usage | Select-Object input_tokens, cache_creation_input_tokens, cache_read_input_tokens, output_tokens | Format-List
$o.num_turns
$o.total_cost_usd
input_tokens : 2
cache_creation_input_tokens : 4608
cache_read_input_tokens : 26523
output_tokens : 4
…
0.042256600000000005
세 입력 필드를 더한 값이 이 글의 “입력 토큰”이고 num_turns가 왕복 수입니다.
하나 조심할 게 있어요. --resume으로 이어서 실행하면 total_cost_usd는 그 요청 한 번이 아니라 세션 누적 추정치라서, /compact만 실행한 요청이 토큰 0인데 $0.185로 찍혔습니다(압축 전 $0.143 → 후 $0.185). 이 글의 이어서 실행한 비용은 모두 직전 값과의 차이로 계산했습니다.
PowerShell에서 도구를 껐더니 모델이 바뀌었다
재는 도중에 결과가 이상하게 나온 적이 있습니다. 도구를 끄려고 --tools ''를 줬더니, 기본 모델 claude-opus-5-5가 아니라 claude-sonnet-5로 돌았고 영어로 물었는데 한국어로 답하더라고요. 처음에는 도구를 끄면 모델이 바뀌는 것처럼 보였습니다.
원인은 Claude Code가 아니라 PowerShell이었어요. Windows PowerShell 5.1은 외부 프로그램에 빈 문자열 인자를 넘기지 않고 버립니다(PowerShell 7.3부터 보존하도록 바뀜, Microsoft about_Parsing). 빈 값이 빠지면서 --tools 뒤의 인자 해석이 어긋났고, 함께 적은 다른 옵션까지 적용되지 않았던 거죠.
| 전달 방법 | 실행된 모델 |
|---|---|
PowerShell에서 --tools '' |
claude-sonnet-5 |
PowerShell에서 --tools '""' |
claude-opus-5-5 |
cmd에서 --tools "" |
claude-opus-5-5 |
빈 문자열은 '""'처럼 따옴표를 한 번 더 감싸 넘기면 됩니다. 2번 표의 “도구 끄기” 수치도 이 방법으로 잰 값이에요. Windows PowerShell 5.1에서 옵션이 이상하게 무시된다면, 빈 문자열 인자가 섞여 있지 않은지부터 보세요.
마치며
재 보기 전에는 /compact나 서브에이전트 같은 기능이 토큰을 아껴 주는 도구라고 생각하기 쉽습니다. 그런데 숫자로 보니 가장 크게 줄인 건 기능이 아니라 요청을 어떻게 쓰느냐였어요.
로그를 잘라 넘기고, 파일 경로를 적고, CLAUDE.md를 짧게 두는 것. 컨텍스트를 줄이는 기능은 그 자체로 비용이 들어서, 같은 작업을 오래 이어 갈 때만 값을 합니다.
그러니 지금 세션에서 /context를 한 번 실행해 가장 큰 칸이 무엇인지부터 보세요. 캐시 쓰기와 읽기가 왜 비용을 뒤집는지는 프롬프트 캐싱이 실제로 싸지는 조건에 정리했습니다.
참고한 공식 자료
- Manage costs effectively (Claude Code 문서) — 세션 비용이 정가 기준 추정치라는 점,
/clear·/compact·모델 선택·CLAUDE.md 200줄·스킬·훅·서브에이전트·구체적인 요청 등 토큰을 줄이는 방법,/compact자체가 큰 요청이라는 점(확인일 2026-09-29) - about_Parsing (PowerShell 7.4, Microsoft Learn) — PowerShell 7.3부터 외부 프로그램에 빈 문자열 인자를 보존하게 된 변경(확인일 2026-09-30)
변경 이력
- 2026-10-13 — Claude Code 2.1.296에서 새 세션의 대화형 /context 화면을 더했습니다. 새 세션도 3만 4천 토큰이 차 있고 그중 2만 7천이 System tools이며, MCP 도구는 필요할 때 불러오도록 표시됩니다.
- 2026-09-30 — 처음에 도구를 끄면 모델이 바뀐다고 적었던 실전 후기를 고쳤습니다. 원인은 Claude Code가 아니라 Windows PowerShell 5.1이 빈 문자열 인자를 버린 것이었고, 도구 끄기 수치를 올바른 전달 방법('""')으로 다시 재서 바꿨습니다.