# recall 0.3.0

Released 13 Oct 2026 · [Compare on GitHub](https://github.com/alirng/recall/compare/v0.2.1...v0.3.0) · [recall-agents 0.3.0 on PyPI](https://pypi.org/project/recall-agents/0.3.0/)

recall measured on coding work: finding the session where a bug was fixed before, how much an agent reads to get there, and notes that keep up with the conventions you set. With 0.3.0's notes loaded at session start, an agent follows the latest conventions of a long MemoryCode history 65% of the time, against 45% with 0.3.0's search alone (held-out histories; one run and three). Method and numbers: docs/research/coding-memory-hillclimb.md.

## Added

- **Benchmarks built from coding work.** `recall eval swe-contextbench` checks whether recall finds the past fix for a new GitHub issue among 300 real Claude Code sessions, by itself or through an agent using its tools. `recall eval memorycode` checks whether the nightly notes hold every coding convention you set, in its latest form, and whether an agent's code follows them. `recall eval amb` scores retrieval on agent-memory-bench. Each has a fixed train/test split, so a change is judged on cases it was not tuned on.
- **Evals on your own chats.** `recall eval search --v2`, `recall eval agent` and `recall eval memory --v2` score cases you write (questions and the chats that answer them, questions an agent must answer from past work, chats and the memories they should yield), with confidence intervals, paired comparisons (`--against`) and a results page per run. Answers and memories are graded by Claude Sonnet 5.5 against checkable claims.
- **One search, several phrasings.** `search_chats` takes `alternatives`, other words for the same thing, and returns the best chats across all of them, each listed once.

## Changed

- **Search finds past work from a pasted issue or error.** A long query no longer favours chats just for having a title. The past fix for a new bug report is in the top five 80% of the time, up from 47% (SWE-ContextBench Lite, 99 issues over all 300 sessions). Queries of 12 words or fewer rank as before.
- **Agents read less to find the same thing.** Search results leave out fields that repeated others, and `read_chat` shows a long message's start, the passage that matches and its end (ask for one message to see it whole). An agent takes in an estimated 37% fewer Claude tokens per question on held-out SWE-ContextBench issues (about 9.0k against 14.4k, tool definitions included), and finds as much.
- **Lighter in every request.** recall's tool definitions dropped repeated schema titles: 2,480 Claude tokens on every request an agent makes with recall connected, down from 2,591, even with the new `alternatives`. Codex and Cursor now get search results as compact text instead of JSON, 29% fewer characters per search over 481 logged searches.
- **Notes catch what you set, and leave out the task at hand.** The model now reads every chat on its own and decides first whether a memory outlasts the current task. Notes hold 62% of the conventions you set on MemoryCode, in their latest form, up from 9% (40 held-out histories, three runs). More notes take more consolidation calls, and the new extraction prompt (v4) makes the nightly run read past chats again, newest first, within its call budget (80 by default), so a large history takes several nights.

## Fixed

- **Batched chats were mostly skipped.** Given a dozen chats and one list to fill, the model wrote memories for the first few. Each chat now gets its own entry: on a fresh held-out set of my chats, 61% of expected memories are found, up from 48% (six runs).
- **One-off requests became preferences.** "Do X now" could be stored as how you always work. A preference now needs you to state it as a rule or repeat it; on the same held-out chats, 88% of stored memories are worth keeping, up from 83%. On an earlier test set of my chats, already used for several decisions, the change found no more memories and precision fell from 98% to 92%; the research note has both results.
- docs: EverMemOS's token column for LongMemEval reads 2.8k in its paper, not 6.7k.
