TL;DR

  • Token cached chỉ tốn 10% giá input thường - 91 triệu token cached billed như 9 triệu.

  • Claude Code subscription dùng TTL 1 giờ. Claude API mặc định 5 phút. Sub-agents luôn 5 phút.

  • Cache có 3 lớp: system, project, conversation - thay đổi lớp dưới invalidate toàn bộ.

  • Cache write 5 phút tốn thêm 25% (1.25x). Cache write 1 giờ tốn thêm 100% (2x). Cache read luôn là 10%.

Cache thực sự là gì

Hầu hết mọi người nghĩ prompt caching là lưu text để reuse. Thực ra không phải vậy.

Khi một transformer xử lý token, nó tạo ra Key/Value matrices ở mỗi attention layer - gọi là KV cache. Anthropic lưu chính những tensor này, không phải text. Khi request tiếp theo bắt đầu với cùng prefix, model load KV cache trực tiếp vào attention layers thay vì tính lại từ đầu.

Để hình dung quy mô: một prompt 100K token có thể tạo ra KV cache ~500MB đến 1GB per request trong VRAM. Anthropic đang lưu và retrieve dữ liệu này cho hàng triệu user đồng thời - đó là lý do tại sao có phí premium khi write cache.

Cache hoạt động theo prefix matching từ trái sang phải. Bất kỳ thay đổi nào ở đầu chuỗi đều invalidate toàn bộ phần sau. Đổi 2 chữ hoa trong system prompt - 2.727 token tính toán bị throw away ngay lập tức.

Ba lớp cache trong Claude Code

3 lớp cache trong Claude Code - System, Project, Conversation

Cache trong Claude Code được tổ chức theo 3 lớp, ổn định nhất ở dưới cùng:

  • System layer: Tool definitions (read, write, bash, grep, glob), base instructions, output style. Được cache globally - mọi user Claude Code đều share cùng system cache này.

  • Project layer: CLAUDE.md, memory, project rules. Cache per project - mọi người trong cùng project share CLAUDE.md cache.

  • Conversation layer: Messages và replies. Chỉ grow mỗi turn, unique per session.

Quy tắc quan trọng nhất: thay đổi lớp dưới sẽ invalidate toàn bộ lớp trên. Nếu bạn đang ở message 16 và chỉnh system prompt, toàn bộ 16 message đó phải recompute từ đầu.

Đây cũng là lý do tại sao Claude Code inject dynamic data (ngày giờ, git status, file đang mở) vào <system-reminder> tag trong user message thay vì cập nhật system prompt. System prompt được freeze hoàn toàn. Dynamic data đi vào message - prefix nguyên vẹn.

Con số đáng kinh ngạc

Nate Herk đã tiết kiệm 300 triệu token trong một tuần, 91 triệu chỉ trong một ngày. Không thay đổi bất kỳ setting nào. Prompt caching tự làm việc trong background.

Cơ chế tiết kiệm rất đơn giản: mỗi turn tiếp theo, toàn bộ context từ các turn trước đã được cached, chỉ có tin nhắn mới là phải xử lý fresh. Session 100 turn với Opus không có cache: $50-100. Với cache hit rate 90%: $10-19. Đó là lý do tại sao Claude Code Pro ở $20/tháng có thể hoạt động được về kinh tế.

Bảng giá chi tiết

Hai con số cần biết trong dashboard:

  • Cache create: chi phí một lần ghi vào cache. Trả xong từ turn sau.

  • Cache read: token Claude reuse từ cache (CLAUDE.md, tool definitions, prior messages). Rẻ hơn 10x.

Cấu trúc giá cụ thể (theo model):

Model

Base input

Cache write 5m

Cache write 1h

Cache read

Claude Sonnet 4.6

$3/MTok

$3.75

$6

$0.30

Claude Opus 4.6

$5/MTok

$6.25

$10

$0.50

Claude Haiku 4.5

$1/MTok

$1.25

$2

$0.10

Điểm breakeven quan trọng: caching chỉ có lợi khi bạn đạt hơn 1.3 cache reads per write. Nếu cache hit rate dưới 60% với traffic thấp, bạn có thể đang trả nhiều hơn là không dùng caching.

Minimum threshold để cache kích hoạt: 1.024 token (Sonnet/Haiku), 4.096 token (Opus). Dưới ngưỡng này request được xử lý bình thường, không báo lỗi.

Câu chuyện nhầm lẫn 1h và 5 phút

Đây là điểm mà nhiều người bị confused nhất.

Đầu năm 2026, Anthropic giảm default TTL của Claude API từ 60 phút xuống còn 5 phút. Với nhiều production workload, thay đổi này tăng cost thêm 30-60%. Nhiều người dùng Claude Code lúc đó báo cáo subscription "bị ăn hết rất nhanh" và cho rằng Anthropic âm thầm giảm TTL của Claude Code xuống 5 phút.

Thực ra không phải vậy. Claude Code subscription vẫn duy trì TTL 1 giờ cho main session. Nhưng documentation bị tách ra giữa Claude Code docs và API docs - hai thứ hoàn toàn khác nhau - dẫn đến nhầm lẫn lan rộng.

Bảng tóm tắt chính xác:

  • Claude Code subscription (main session): 1 giờ TTL mặc định

  • Claude API: 5 phút mặc định (có thể nâng lên 1 giờ với phí thêm)

  • Sub-agents (mọi plan): luôn luôn 5 phút

  • Claude.ai web chat: chưa được document chính thức

Số 5 phút chỉ quan trọng nếu bạn chạy heavy sub-agent workflows hoặc dùng API trực tiếp. Với 95% người dùng Claude Code, cửa sổ 1 giờ là thứ duy nhất cần quan tâm.

Token dashboard - theo dõi miễn phí

Nate cũng build một tool mã nguồn mở để visualize token usage: nateherkai/token-dashboard.

Dashboard đọc các file JSONL mà Claude Code tự động lưu vào ~/.claude/projects/, dedup streaming responses theo message.id để đảm bảo số liệu khớp với những gì Anthropic thực sự tính tiền, sau đó hiển thị analytics trên local server.

Không có telemetry, không có remote API calls. Toàn bộ chạy trên máy bạn.

Các tab hữu ích nhất: Overview (daily cache create vs cache read), Prompts (những prompt tốn nhiều token nhất), và Tips (rule-based suggestions - ví dụ: cache hit rate thấp, tool result quá lớn, đọc cùng file 20 lần trong một session).

Caveat nhỏ: dashboard track token theo máy. Nếu bạn switch giữa desktop và laptop, số liệu sẽ không khớp.

Kết

Prompt caching là lý do Claude Code subscription ở mức giá $20/tháng có thể cover những session code dài hàng trăm turn. Không phải magic, mà là KV cache lưu trên VRAM của Anthropic - và Anthropic có động lực rất lớn để giữ cache hit rate của bạn cao (họ giám sát bằng SEV alerts).

Phần tiếp theo sẽ đi vào những gì âm thầm phá cache, 7 quyết định kiến trúc của đội Claude Code để bảo vệ nó, và 3 thói quen thực tế cho người dùng hàng ngày.

via Nate Herk - Claude Code Camp - Anthropic Docs