{"slug":"prompt-caching-review","name":"Prompt Caching Review","version":"1.0.0","updated_at":"2026-10-19T07:14:16.853Z","use_when":"Reviews ONE Claude API request (tools, system, messages, the cache marks, the model, the sizes and how often it is sent) for the five reasons its prompt cache does not pay off, and lists only those, one line each with a fixed code, the place, why the cache misses and the fix - or exactly No findings. It catches text that changes on every call (a clock, a request id, a user name) at or before the cache mark, a large stable prefix with no mark, a marked prefix shorter than the model's minimum, tools or system edited between calls, and calls spaced further apart than the cache lifetime. It leaves out the safe look-alikes, such as a timestamp placed after the last mark or a mark on the latest user turn. Use to review a request before an agent ships, to find out why prompt caching shows zero cache read tokens, or to gate a change to a system prompt or a tool list.","not_for":"Estimating cache savings or prices, reading real usage numbers from past calls, other model providers, retry and fallback logic, and the code that builds the request. It judges only the request text, the marks and the timing that you paste.","languages":["en"],"tags":["claude-api","prompt-caching","cache-control","llm-costs","agent-design","request-review"],"category":"agents","category_url":"https://aiskills402.com/categories/agents","keywords":["prompt caching","cache read tokens","system prompt","Claude API request"],"faq":[{"q":"Might a timestamp placed after the last cache mark still hurt the cache?","a":"It does not, so the skill stays silent about it. The next call compares only what lies up to the mark; whatever follows is billed as ordinary input. The same timestamp before the mark, or in the final block when the top-level automatic mark is used, is reported as a value that changes on every call."},{"q":"Which minimum lengths does it use?","a":"The table that Anthropic published on 19 October 2026, copied into the skill with that date. A model that is not in the table gets no line about length, because the skill does not guess a number."},{"q":"What did the trial look like?","a":"Two requests were planted with a defect and one was left clean: a clock written into the system block, a tool dropped between two calls of a session, and a stable chat whose only changing value comes after the mark. Claude Sonnet and Claude Haiku each took every request once, and by hand both read right on all of them."},{"q":"What does a request without problems get?","a":"The single sentence No findings. and no commentary, which lets a script gate a change on the reply. A problem is a line made of a code, the part of the request, why the cache misses and the fix."}],"examples":[{"lang":"en","model":"claude-sonnet-5-5","input_excerpt":"Two consecutive requests of one chat session with a research assistant, model claude-sonnet-4-5, sent about 25 seconds apart. In each request the last block of the newest user message carries cache_control {\"type\": \"ephemeral\"}; nothing else is marked.\n\nRequest 1\ntools (3): web_search, summarize_page, export_report. About 900 tokens in all.\nsystem: one text block of about 2,800 tokens, no mark.…","output_excerpt":"PREFIX-EDITED — tools list, `export_report` removed in request 2 once the export quota is used up — a tool change invalidates the cache for the tools, system and messages, so request 2 cannot read the entry request 1 wrote — keep all three tool definitions in every request and have the app refuse export calls once the quota is used up"}],"page_url":"https://aiskills402.com/skills/prompt-caching-review","markdown_url":"https://aiskills402.com/skills/prompt-caching-review.md","image_url":"https://cdn.aiskills402.com/og/skills/prompt-caching-review/745b2343.png","related_url":"https://api.aiskills402.com/v1/skills/prompt-caching-review/related","purchases_count":null,"tested":{"date":"2026-10-19","strong":{"model":"claude-sonnet-5-5 (Claude Code alias \"sonnet\")","verdict":"Right on all 3 cases, read by hand. It named the clock in the system block as one line and left out the request id that sits after the mark. It named the tool removed between two calls as one line and did not flag the mark on the latest user turn. On the clean chat, with a timestamp after the only mark, it answered exactly No findings."},"weak":{"model":"claude-haiku-5-5 (Claude Code alias \"haiku\")","verdict":"Right on all 3 cases, read by hand. It gave the same single line for the clock in the system block and the same single line for the dropped tool, each with a fix, and answered exactly No findings on the clean chat. It spent far more output tokens than Sonnet on the planted cases but stayed inside the format."},"note":"Light test: three cases (two planted, one clean), one run per model; no comparison without the skill. The three inputs were written by us; each planted one carries a safe look-alike and neither has a comment pointing at the defect. Facts come from the public pages named in the notes, read on 19 October 2026; there are no owner-measured facts.","report_url":null},"price_usd":"0.01","price_micro":10000,"size_bytes":9061,"sha256":"108845880b549ca02189f5f721918cb670acdbeb0d365b9c29e98d1c71786fbb","outline":["The answer","How the cache works (as published on 19 October 2026)","The codes","How to read the request","Rules","Work in this order","Short example"],"license":{"summary":"Perpetual, non-exclusive; use and modify for yourself incl. paid work; no resale or republishing","holder":"Georgi Kalchev, aiskills402.com","url":"https://aiskills402.com/docs#license"},"buy_url":"https://api.aiskills402.com/v1/skills/prompt-caching-review/file","redownload_url_template":"https://api.aiskills402.com/v1/purchases/{token}","mcp_tool":null,"payment":{"protocol":"x402","scheme":"exact","asset":"USDC","selling":true,"network":"base","network_caip2":"eip155:8453","pay_to":"0x8e37022edcf0f21cf3c9f93fee9d4d32519f36f4","facilitator":"cdp"},"seo_title":"Claude Prompt Cache Review","seo_description":"Reviews one Claude request for the five reasons its cache is never read: moving values, no mark, a short prefix, edits and long gaps. Pay $0.01 once, in USDC.","versions":[{"version":"1.0.0","date":"2026-10-19","changelog":"# Changelog\n\n## 1.0.0 — 2026-10-19\n\nFirst release, written in the light-test batch of 19 October 2026 (three cases, price $0.01). The idea is ours; no foreign skill was opened, facts come from public pages (see notes/ideas.md). Output: one line per finding with a fixed code, or exactly `No findings.`\n\nTest: three cases written by hand (a request with a clock in the system block, a session that drops a tool between two calls, and a clean chat), one run on Claude Sonnet and one on Claude Haiku, no run without the skill, no iteration on the skill text after the runs. `test/control.mjs` shows that the checks pass on the ideal answers and fail on realistic wrong ones. See `test-summary.json` for the verdicts read by hand.\n"}]}