Skip to content

v0.6.5

Choose a tag to compare

@github-actions github-actions released this 02 Nov 19:48
· 104 commits to main since this release
c66c392

context-guru v0.6.5

The dashboard now prices cache reads correctly: Opus 5.5 and Sonnet 5.5 reads cost 0.05× the input price, and Fable 5.1 and Mythos 5.1 reads cost 0.025×. Before, every model used 0.1×, so the dashboard showed read costs 2 to 4 times too high. Display-only skills no longer take space in the model's skills list. A subagent that has given its final answer gets no more keep-alive pings.

Items marked [Notice] change something you will see, or need an action from you.

What we measured

The keep-alive fixes from v0.6.4 hold on real traffic (#778). One laptop, 1.5 days, about 4,000 requests:

  • Ping 2 wrote the conversation again 0 times in 197. Before v0.6.4 it was 26% (80 of 308, $97.97 in 3.9 days).
  • A user who came back inside the cache plan read the cache 140 times in 140, also after a sweep question.
  • Keep-alive cost $26.22 and saved $120.70 in this period.
  • The ping limit stays at 2.

New and changed

  • [Notice] Cache reads have the provider's price for each model (#855, #849, #860).
    • When the price table gives no cache_read: Opus 5.5 and Sonnet 5.5 use 0.05× the input price, and Fable 5.1 and Mythos 5.1 use 0.025×. Every other model stays at 0.1×. The source is Anthropic's pricing page.
    • Read cost, cost_usd, the savings figures and the keep-alive calculator's ping cost go down for these 4 models. The break-even point moves for them too.
    • A price table that gives no cache-write rate for GPT before 5.6, Gemini or an unknown model now uses 1.0×, not 1.25×. These families charge no extra for a cache write.
    • A price file with a negative cache multiple now fails to load.
    • To keep the old 0.1×, set cache_read on the model's entry, or cache_read_frac: 0.1 in the price file.
  • [Notice] Display-only skills are out of the model's skills list (#850). Claude Code plugin 0.6.5, Codex plugin 0.2.9.
    • 12 Claude Code skills (status, dashboard, chart, fill, heatmap, timeline, session, watch, doctor, statusline, uninstall and update) and 9 Codex skills are now for the user only. The model does not start them by itself.
    • You start them with /context-guru:<name>, or $name in Codex.
    • This saved about 0.96% of spend on a hosted deployment.
  • [Notice] A subagent that has given its final answer gets no keep-alive pings (#859).
    • When a subagent ends with a StructuredOutput call, its thread is marked finished. Before, it got up to 2 pings that nothing could use.
    • The band and cg.py show "finished" for that agent.
    • To turn it off: cache.keepalive_terminal_tools: [] in the host config.
  • [Notice] A beep when Claude finishes or needs you (#738). Claude Code plugin 0.6.5.
    • It is on by default. It plays only on your machine, and nothing goes to the proxy.
    • To turn it off: set the plugin's beep option to off, or set CONTEXT_GURU_BEEP=off.
  • [Notice] A cache breakpoint at the end of a long tail (#796, #801).
    • When the client's last cache mark is far from the end of the request, the proxy adds one mark at the end. The text after the client's mark is then cached, not billed as plain input again.
    • Today this happens with Claude Code when CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1 is set. It saves about 16% per run on a short task. With default Claude Code settings, nothing changes.
    • It is on in every preset except off. To turn it off: cache: { tail_breakpoint: false }.
  • The prefix split uses the provider's minimum cache size for each model (#848).
    • The proxy splits the system prompt only when its stable part is large enough for the provider to cache it. The minimum is 4,096 tokens on Haiku-class and unnamed models, and 1,024 on others.
    • The dashboard's split saving now uses a real token count, so its figure moves.
    • New config key: head_ttl_min_bytes (default 200,000). The old head_ttl_min_tokens still works.
  • Session recorder for internal deployments (#649). It is only in a build made with -tags cg_record (make build-record). The release binary does not have it. In hosted mode, each account turns recording on for itself in Settings.
  • The dashboard shows OpenAI and Responses tools correctly (#819, #822, #815).
    • Responses tools show their real names. Function calls count as used tools. OpenAI function tools show as tool or mcp_tool, not server_tool.
    • The skills listing, deferred tools and system prompt of a Responses request are read.
    • GPT-5.6 and later threads show a 30-minute cache lifetime, as the keep-alive already uses.

Fixed

  • A settings save deleted 7 cache tuning keys (#848). The settings page does not send them, so a save removed them. Now a save leaves them alone. A new cache_reset list sets named keys back to their defaults.
  • The bifrost adapter split one conversation into two sessions when the agent compacted (#805). It now uses the session id that the agent sends, with the same rule as the proxy. Session ids from the bifrost adapter change once, at the upgrade.
  • Expand missed tool results whose content is a list of blocks (#803). It now reads them as text. The repair writes a short pointer, not a second copy of the removed output.
  • The same message in two forms read as two different messages (#787). A message sent once as a plain string and once as one text block now matches. This helps expand restores, summary checkpoints and held sweep answers. Stored values still match.
  • The Codex session skill did not load (#852). Its header was not valid YAML.
  • Smaller fixes:
    • Bedrock cachePoint marks now count as cache marks (#813).
    • cacheinject places breakpoints on Bedrock Mantle, as on Bedrock (#811).
    • A model id with fable and no claude in it, sent through a relay that is not Anthropic's, now gets keep-alive pings (#807).
    • Cheap-model calls record their 1-hour cache writes in /stats (#818).

How to upgrade

  1. Update the proxy: /context-guru:update.
  2. Update the plugins from the marketplace: Claude Code plugin 0.6.5, Codex plugin 0.2.9.
  3. If you started a display-only skill by asking Claude, type /context-guru:<name> instead.
  4. If you do not want the beep, set the plugin's beep option to off.
  5. For code that imports the library: reformat.LookbackBlocks moved to schema.LookbackBlocks. The old name stays as an alias. keepalive.Policy.HeadTTLMinTokens is deprecated: use HeadTTLMinBytes.

Known limits

  • The 1-hour cache tier, and a user who comes back 9 to 13 minutes after a text turn, were not tested on real traffic (#778). The data had too few such cases.
  • The dashboard's savings after a restart can read too high (#766 part 2). It waits for the counterfactual library (#592).
  • --dashboard-content-cap cannot raise the 4,000-byte limit on stored change text (#765).
  • Small clean-ups after the history import removal are open (#762).
  • After the sweep removes outputs on a cold request, the next turns can write the conversation to the cache again (#729).
  • Two threads with identical requests can still send identical pings (#718).
  • On a shared proxy with many users, 320 MB may not hold every large thread (#704).

Changelog

Install

No Go toolchain and no C compiler are needed — the binary is statically linked.

Download the tarball for your platform, untar it, and put context-guru-proxy on your
PATH. The archive unpacks into its own directory, so this is safe to run anywhere:

tar xzf context-guru_*_darwin_arm64.tar.gz
install -m 755 context-guru_*/context-guru-proxy ~/.local/bin/

Then see docs/get-started/quickstart-proxy.md.