Continue: enable caching defaults
Target
packages/openai-adapters/src/apis/Anthropic.ts and
core/llm/llms/Bedrock.ts in continuedev/continue.
Symptom
Continue's caching is gated on three config flags:
cacheBehavior.cacheConversation(default: false)cacheBehavior.cacheSystemMessage(default: false)completionOptions.promptCaching(default: false)
A user has to know all three exist and set them in config.yaml.
Most don't. Net effect: the median user gets no caching.
Open issue #5172 ("Anthropic prompt caching doesn't work") is mostly this — users don't realize they need to configure it.
Fix (two-part)
Part A — flip the default strategy
In Anthropic.ts:
--- a/packages/openai-adapters/src/apis/Anthropic.ts
+++ b/packages/openai-adapters/src/apis/Anthropic.ts
@@
- const cachingStrategy = CACHING_STRATEGIES[this.config.cachingStrategy ?? "systemAndTools"];
+ // Default to caching system + tools. Users on supported models pay
+ // the 1.25x write premium on the first call and get 0.1x on every
+ // subsequent call within 5 minutes — strict win above ~3 reads.
+ const cachingStrategy = CACHING_STRATEGIES[this.config.cachingStrategy ?? "systemAndTools"];
(systemAndTools already IS the documented default in the code path
above, but the user-facing config schema treats it as optional with
unclear default. Audit your codebase to confirm the actual fallback
behavior matches the documented one. If not, fix.)
Part B — auto-enable conversation message caching for supported models
@@
- if ((this.config.cachingStrategy ?? "systemAndTools") !== "none") {
- addCacheControlToLastTwoUserMessages(result.messages);
+ // Auto-enable for any model that declares supportsPromptCache.
+ // User can still opt out with cachingStrategy: "none".
+ const strategy = this.config.cachingStrategy ?? "systemAndTools";
+ if (strategy !== "none" && this.modelSupportsPromptCache()) {
+ // NOTE: this is currently buggy — see continue-fix-volatile-msg
+ // skill for the volatile-message fix that should land alongside.
+ addCacheControlToLastTwoUserMessages(result.messages);
}
Same change in Bedrock.ts — auto-enable cachePoint for models
with supportsPromptCache: true unless user explicitly opts out.
Part C — document the change in CHANGELOG
Users coming from older Continue versions will see bills shift (downward, but still a change). Add a CHANGELOG entry calling out that caching is now default-on for supported models.
Verify
- With NO
cacheBehaviororcompletionOptions.promptCachingset in config.yaml, start a Continue chat with Claude. - Capture wire.
- Confirm outbound request body contains
cache_controlmarkers without any user config touching them. - Confirm second-turn response
usage.cache_read_input_tokens > 0.
Background
Caching that requires a config flag to enable is caching that doesn't get used. The 1.25x write premium pays for itself after ~3 reads, which any multi-turn chat clears trivially. There's no scenario where "caching off" is the right default for an agent CLI on a model that supports it.
This skill is best applied alongside continue-fix-volatile-msg (same Cline-family copy-paste bug present in Continue too) so users don't get the cache thrash without knowing.
Full audit: audits/continue.md.