v0.7.0 — tesserae ask answers without an API key
Tesserae v0.7.0 — tesserae ask answers without an API key
한국어 · 中文 · 日本語 · Русский · Español · Français · Deutsch
Released 2026-06-10 · PyPI · GitHub release · pip install --upgrade tesserae==0.7.0
tesserae ask now synthesizes real answers over the CLI you're already
logged into — no ANTHROPIC_API_KEY required — and rotates across every
account on your machine so a rate limit never stops it. Plus two fixes that
make the sessions you ask about searchable and a compile that no longer
aborts.
1. tesserae ask synthesizes over the claude/codex CLI — no API key
Previously, tesserae ask could only write an answer through the Anthropic
SDK, which needs ANTHROPIC_API_KEY. If you run the common setup — logged
into the claude or codex CLI over OAuth — ask silently degraded to raw
search hits with (no LLM answer: LLM disabled).
Now the answer path reuses the same OAuth clients the JSON extractors already
use. tesserae ask --llm "<question>" (or TESSERAE_QUERY_LLM=1) synthesizes
a cited answer with zero API keys — exactly the no-key promise the rest of
the engine makes.
2. It rotates across every account on the machine
The CLI clients already auto-discover every ~/.claude* config dir and every
~/.codex* home. v0.7.0 makes ask use that — and chains it across
providers: a question only gives up once every account is exhausted.
In practice: with all your Claude accounts at their Sonnet/weekly limit, a
real tesserae ask --llm rotates through them, then falls through to
Codex, and answers (model=cli-oauth) — no key, no manual account
switching. A rate-limited or logged-out account is skipped, not fatal.
3. Fix: session titles no longer collapse to the harness preamble
Codex prepends # AGENTS.md instructions for <path> to every transcript, so
the session-title heuristic took that as the title for every session —
and keyword search returned a wall of indistinguishable boilerplate at
identical scores. Titles now skip the injected AGENTS/CLAUDE/GEMINI.md
preamble (and system wrappers) and come from your actual first instruction;
ask returns distinct, relevant hits again.
Two smaller ask fixes ride along: the LLM gate (--llm /
TESSERAE_QUERY_LLM) is honored on the wiki-search path (it was hard-disabled
before), and when --backend auto falls back because a richer backend errored
(e.g. a cognee auth failure), it now says so instead of silently looking like
wiki was the only backend tried.
4. Fix: compile no longer aborts on a stale cached reference
A full tesserae compile / refresh could fail with
KeyError: 'CodeFunction:…' — a code node id that no longer exists. Session
findings filter their references against the doc graph at extraction time,
but findings are cached per chunk; when a referenced node's id later changes
(e.g. a code function whose content-hash id shifts when the code is edited) or
vanishes, the cached finding replayed a stale reference, fabricating a
dangling node that broke a downstream code-graph step. References are now
re-validated against the live graph at merge time — linked when the target
still exists, dropped when it doesn't.
Upgrading from v0.6.1
Drop-in. To get answers from ask without an API key, just be logged into the
claude or codex CLI and pass --llm. If you'd hit the compile KeyError,
re-run tesserae compile (or refresh) — it now skips stale references
instead of aborting.