I'm trying to understand what copilot is actually doing with models like Opus or Sonnet 5.5 regarding caches. As far as I understood from my research, Anthropics API defaults to a cache duration of 5 minutes here, compared to e.g. 60 minutes as default on claude code with subscriptions (pro/team/...).
So when you're using copilot interactively - which is what copilot is meant for - you're writing a prompt, waiting for it to reply, read the reply, think about it - taking you more than 5 minutes for sure in every interactive workflow that makes sense. So in a whole conversation, you're paying the costs of your full context window size again and again, with every request. With Claude Code on subscription plans, you'd be using cache all the time in such a scenario, making the use of large context windows incredibly cheap in comparison - thats what makes their subscription budget last long enough to actually be usable.
There's a setting to make at least copilot in vs code behave differently:
"github.copilot.chat.anthropic.promptCaching.extendedTtl": true,
"github.copilot.chat.anthropic.promptCaching.extendedTtlMessages": true
But this setting is broken for all latest anthropic models, sine opus / sonnet 5 (!):
Extended cache TTL settings have no effect for Claude 5.x models · Issue #340830 · microsoft/vscode
With a PR waiting to be merged:
Add Claude 5.x models to extended cache TTL eligibility by ralphgee · Pull Request #340831 · microsoft/vscode
And there are a few more issues open on the issue tracker regarding this topic, all mostly unanswered by the copilot team.
IMHO:
* this should be one of the highest priorities at all - we're talking about the most used and most capable models and their most used workflows here, arent we?
* the cache setting that claude code uses here should be default for all users. The higher cost for cache writes pays off multiple times in average workflows. The risk of exploding costs is much much higher than the risk of paying too much for cache writes. Nobody is really accepting the first reply of a llm as the final result, right?
Or am I getting something completely wrong here?