Roo Code: the "volatile message" is a rolling ladder — verify, don't rip out
SkillAI & modelsLadder-aware Roo Code Anthropic caching — verify the rolling read/write ladder on the wire, then close the real gaps (Vertex 4-block budget, MiniMax path).
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Roo Code: the "volatile message" is a rolling ladder — verify, don't rip out skill
What this skill tells your AI
The instructions your AI receives, as published by onlyterp/prompt-cache-skills in skills/roo-fix-volatile-msg/SKILL.md and read by ahel’s review.
REANALYZED 2026-08-28. The previous version of this skill replaced Roo's last-two-user-messages marking with a single "last stable message" breakpoint. Direct source recon shows Roo (a Cline fork) carries the same documented rolling read/write ladder as Cline — the inline comment explains it verbatim. Applying the old diff would remove a working cache write point. Verify the ladder instead; the real Roo-specific wins are below.
Target
src/api/transform/caching/anthropic.ts in RooCodeInc/Roo-Code
(moved there by v3.54.0 — the ladder function addCacheBreakpoints
lives in that file now; src/api/providers/anthropic.ts calls it).
Permalink: https://github.com/RooCodeInc/Roo-Code/blob/v3.54.0/src/api/transform/caching/anthropic.ts
What Roo actually does
Same shape as Cline (see cline-fix-volatile-msg for the full ladder explanation — Roo's inline comment documents it verbatim): current user turn = write point, previous user turn = read point, system prompt has its own breakpoint.
Step 1 — verify the ladder on the wire (before any change)
Same 3-turn capture as the Cline skill. Ladder holds → leave the breakpoints alone. Thrash → real bug, apply the Cline skill's diagnosis. Do not skip this step on the strength of the source code alone — the ladder only proves itself on the wire.
Step 2 — Vertex: respect the 4-block budget explicitly
Roo's anthropic-vertex.ts documents Vertex-specific limits: max 4
cache_control blocks, text-only, user/assistant restrictions — and
implements an explicit strategy (system + last text block of each of
the last two user messages). If you patch message-level caching on
direct Anthropic, make sure the Vertex path still fits its own budget:
- System prompt: 1 block
- Last text block of second-to-last user message: 1
- Last text block of last user message: 1
- → 3 used, 1 spare. Any added breakpoint must not be a 4th on Vertex unless it replaces a message breakpoint.
Step 3 — OpenAI-native lanes: the missing prompt_cache_key
Roo scans show zero prompt_cache_key usage across the codebase
(665 TS files checked, 2026-08-28). Its OpenAI-native handler relies
on automatic prefix matching only. That works for single-session use
but leaves multi-worker pod routing to chance — the same gap Cline
has. See cline-openai-cache-key
for the hash-derivation pattern; the same fix applies to
src/api/providers/openai-native.ts (derive the key from system
prompt + model slug, NOT a per-session UUID).
Step 4 — MiniMax / anthropic-compat providers inherit the ladder
Roo's minimax.ts handler (and any Anthropic-compatible provider
added later) re-implements addCacheControl with the same
last-two-user-messages shape. Any future provider handler copied from
it inherits the ladder — apply the same verify-don't-rip rule, and
check the compat endpoint actually honors cache_control (gotcha 17:
a 200 response proves nothing).
Verify (whole skill)
3-turn capture on the direct Anthropic path unchanged in shape;
Vertex capture shows ≤4 blocks per request; OpenAI path shows stable
prompt_cache_key across turns and non-zero cached_tokens by turn 2.
Background
- docs/gotchas.md #17, #18.
- Full audit: audits/roo-code.md.
Signals
- GitHub stars
- 114
- Forks
- 9
- Last commit
- Aug 2026
Advanced
- Catalog kind
- skill
- Gateway key
roo-fix-volatile-msg- Source
- github.com/onlyterp/prompt-cache-skills