Repository navigation
v0.6.6
context-guru v0.6.6
The keep-alive now picks how many pings to send from what each thread waits for. A thread that waits for its own tool is kept warm until the result comes back, and a thread that never called a tool gets no pings. A new opt-in preset, ultrahigh, sends tools that your own history never used with deferred loading, so the model loads them through search. ultrahigh is experimental and not recommended yet: read its limits below.
Items marked [Notice] change something you will see, or need an action from you.
New and changed
- [Notice] The ping count follows what the thread waits for (#867). It applies to every account with keep-alive on, on the 5-minute Anthropic cache.
- Waits for its own tool: pings until the result comes, at most 8. Before, 2.
- The main agent waits for background work: 2 + 3 = 5 pings.
- The main agent waits for a person: 2 + 1 = 3 pings.
- Waits for a teammate, or a subagent that has ended its turn: 2 pings, as before.
- A thread that never called a tool (side calls, plain chat) gets no pings.
- No sweep question while a thread waits for its own tool. It is still asked after a turn ends.
- Strategy time windows apply only to a wait for a person. Other waits are pinged at any hour.
- The default minimum prefix for a ping is now 20,000 tokens, down from 80,000. Small subagents now get pings. A value you set does not change.
- The data behind it: on one laptop, 95% of 3,448 tool waits came back inside 5 minutes, so pinging them until the result costs little. Extra pings on a main agent's wait for background work saved an estimated $21 in 2.3 days.
- To turn it off:
cache.keepalive_wait_plan: false. Setkeepalive_min_prefix_tokens: 80000to get the old minimum back. The counts arekeepalive_tool_wait_max_pings,keepalive_background_extra_pingsandkeepalive_human_extra_pings. - 1-hour threads, OpenAI, session overrides and active campaigns keep their own counts.
- The keep-alive calculator shows the ping plan that runs (#870). The dashboard's first row is the live per-wait plan, marked current. The fixed-count rows stay as a comparison. The proxy does not change.
- [Notice] New opt-in preset:
ultrahigh(#861, #872). Experimental. Claude Code plugin 0.6.6, Codex plugin 0.2.10.ultrahighisxhighplus tool deferral. On Claude models through the Anthropic route, a tool that your last 3 sessions declared and never used is sent withdefer_loading. The proxy adds the provider's search tool and a list of the deferred names. The model loads a tool through search when it needs one.- An MCP server is one unit: all its tools are deferred together, or none.
- Bash, Read, Edit, Write, Agent, Skill, ToolSearch, AskUserQuestion and Context Guru's own tools are never deferred.
- The set is decided once per thread and stays the same across a proxy restart.
- In a live check, the cached prefix fell from 30,693 to 12,664 tokens with 12 built-in tools deferred.
- Accuracy (#871, 40 tasks): Sonnet 5.5 picks the right tool as often as with no deferral. Opus 5.5 picks it in 66 of 80 runs, against 72 of 80 with no deferral. (Corrected on 2026-11-04: the first version of these notes gave 70 and 73, from a variant that was not shipped.) This gap is accepted for now and is measured before each release.
- If the provider refuses a changed request, the proxy sends the original once and turns deferral off for that account and model. The client never sees the error.
- New file: with
ultrahighand no durable session store, the proxy writescontext-guru-tooldefer.dbnext to the dashboard database. It holds tool names only. - Data dependence:
toolfiltermoves from "none" to "metadata" (tool names only). - To turn it off: pick any other preset, set
toolfilter: {defer: off}, or start Claude Code withENABLE_TOOL_SEARCH=false.
- [Notice] A new SessionStart hook in the Claude Code plugin (#861). It sends nothing unless
ENABLE_TOOL_SEARCHturns search off. Then it tells the proxy, so the proxy does not defer tools for that session.CONTEXT_GURU_CLIENT_SIGNALS=offturns it off. New routes:/tool-searchand/tool-defer/probe.
Fixed
These fix ultrahigh defects that #871 found before this release (#872):
- A resumed session whose transcript names a removed MCP tool got a 400 error. The proxy now adds a deferred stub for the tool, and the cache is kept.
- The search count was 0 on Claude Code traffic. It now counts every search.
- The first session after a proxy start deferred nothing. The stored state now loads at start.
How to upgrade
- Update the proxy:
/context-guru:update. - Update the plugins from the marketplace: Claude Code plugin 0.6.6, Codex plugin 0.2.10.
- To keep the old keep-alive, set
cache.keepalive_wait_plan: falseandkeepalive_min_prefix_tokens: 80000. - To try
ultrahigh, pick it in/context-guru:preset-picker. Use it only on Claude models, and read its limits first.
Known limits
ultrahigh in this release (#866, fixes in progress):
- The saving it reports is too high. The net figure leaves out the cache write of a loaded tool definition on the next request. On responses of 64 to 128 KiB, one search can be counted twice.
/statshas no per-account counters, and no count of wrong guesses or dropped searches.- A failed history write loses those sessions' rows until they change again. The history writes every active session's rows every 5 s.
- The project veto sees at most 10 sessions of a project among the newest 64 for each account. A user with 4 or more projects, or many
claude -pruns, can lose it. - The 200-token minimum for an MCP server counts our tokenizer's tokens, about 337 Claude tokens.
- On direct Anthropic with a subscription token, deferral may stay off. The provider check sends no OAuth beta header. This is inferred, not tested.
- The proxy start can wait up to about 20 s for the stored state when a config turns deferral on.
- The deferral history misses the built-ins that Claude Code defers itself, and the tools loaded through search (#869). So its decisions use part of the data.
Not in this release:
- #825: deferral on GPT, GLM and Kimi. On those models,
ultrahighacts likexhigh. - #869: the dashboard panel for deferral,
save-more tools, and recording deferred built-ins and search loads. - The Opus gap above.
Keep-alive:
- The per-wait plan is not measured on real traffic yet. The baseline before this release is on #858. The re-measure runs before the next release, with laptop and hosted data.
- A main agent that waits for a teammate gets no extra pings. On one laptop, extra pings there would have saved an estimated $13 to $38 in 2.3 days. We wait for hosted data before we change it.
From earlier releases, still open:
- The dashboard's savings after a restart can read too high (#766 part 2). It waits for the counterfactual library (#592).
--dashboard-content-capcannot 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
- 75c52f2: chore(plugin): bump the plugins for v0.6.6 (Claude Code 0.6.6, Codex 0.2.10) (#873) (@amiddavid)
- c70c79c: feat(dash): replay the per-wait ping plan in the keep-alive calculator (#870) (@amiddavid)
- 38e4693: feat(keepalive): choose the ping count from what the thread waits for (#867) (@amiddavid)
- 99b7c92: feat(tooldefer): defer unused tools in the new ultrahigh preset (#485) (#861) (@amiddavid)
- ac6b288: fix(tooldefer): a removed tool, the search count and the first session after a start (#871) (#872) (@amiddavid)
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.