Skip to content

v0.6.6

Choose a tag to compare

@github-actions github-actions released this 03 Nov 20:43
· 16 commits to main since this release
75c52f2

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. Set keepalive_min_prefix_tokens: 80000 to get the old minimum back. The counts are keepalive_tool_wait_max_pings, keepalive_background_extra_pings and keepalive_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.
    • ultrahigh is xhigh plus tool deferral. On Claude models through the Anthropic route, a tool that your last 3 sessions declared and never used is sent with defer_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 ultrahigh and no durable session store, the proxy writes context-guru-tooldefer.db next to the dashboard database. It holds tool names only.
    • Data dependence: toolfilter moves from "none" to "metadata" (tool names only).
    • To turn it off: pick any other preset, set toolfilter: {defer: off}, or start Claude Code with ENABLE_TOOL_SEARCH=false.
  • [Notice] A new SessionStart hook in the Claude Code plugin (#861). It sends nothing unless ENABLE_TOOL_SEARCH turns search off. Then it tells the proxy, so the proxy does not defer tools for that session. CONTEXT_GURU_CLIENT_SIGNALS=off turns it off. New routes: /tool-search and /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

  1. Update the proxy: /context-guru:update.
  2. Update the plugins from the marketplace: Claude Code plugin 0.6.6, Codex plugin 0.2.10.
  3. To keep the old keep-alive, set cache.keepalive_wait_plan: false and keepalive_min_prefix_tokens: 80000.
  4. 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.
  • /stats has 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 -p runs, 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, ultrahigh acts like xhigh.
  • #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-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.