Added
- The Claude Code plugin now ships an icon.
ROADMAP.md: what's planned next and where help is wanted.iai-tools: a separate, brain-free code index, session-event store, and
command executor, shipped as its owniai-toolsconsole script, an
iai-mcp toolssubcommand, and aniai-toolsMCP server. It indexes code
by whole file, symbol, cross-reference, Python AST, exact literal, and
vector lanes; runs commands through a resident executor daemon with bounded
output; and offers boundedgit-log/git-blame/git-diffqueries. On
Windows the executor binds a TCP-loopback transport behind a mandatory
per-user auth token. It is off by default:iai-mcp capture-hooks install --with-toolsregisters its MCP server and five hooks, one of which blocks
Grep, Glob, and shellgrep/rg/find/fd/cat/head/tail/gh
reads in favor of the iai-tools search and executor. The flag needs the
MCP server and executor built from a source checkout (see
docs/DEPLOYMENT.md); install refuses it and changes nothing until both
are present.- New operator command
iai-mcp prune-snapshotsremoves the pre-write
snapshot directories that migration commands leave behind after--apply. - New operator command
iai-mcp template-pollution-sweeptombstones internal
prompt/template records by explicit id. Dry run by default;--apply
snapshots the store first. - The nightly sleep cycle runs the one-time salience/entity backfill
automatically on stores that predate capture-time salience, and
iai-mcp doctorreports its status. - The per-turn memory pack admits one salience- or directive-tagged record per
turn by existence rather than raw cosine, and serves it ahead of
conversational matches. - A synthetic recall-quality benchmark (
bench/recall_quality_fixture.py,
bench/recall_quality_verdict.py) measures recall misses by cause against
a dev/holdout split, with an A/A null-arm check (#85).
Changed
- The plugin's MCP launcher moved from
bin/toscripts/. It is the same
readable shell script; reinstall or update the plugin to pick up the new path. - The plugin README, the repository README, the reference and
llms.txtnow
say which files under~/.iai-mcp/are plain text (the per-turn capture
spool until the engine's next pass, and the hook injection caches). They also
list every network path with its off switch (REMclaude -pis on by default,
IAI_MCP_REM_DISABLED=1; the embedding model download,
IAI_MCP_EMBED_OFFLINE=1), state when and why the engine reads the Claude
Code login record, and explain that the background engine outlives the
session, with how to stop it and delete the store. The plugin install line
pins the engine version. - The plugin README now lists every place the engine touches the network and
the local files the hooks read. - Read-only engine connections bound their page cache to 8 MiB by default
(IAI_MCP_RO_CONN_CACHE_SIZE_KIB), and the read pool is clamped to a
256 MiB aggregate ceiling acrossIAI_MCP_RO_CONN_CACHE_SIZE_KIBand
IAI_MCP_RO_POOL_SIZE. A long-running daemon no longer grows without bound
on a large store (#173). - The working-tier goal re-anchors when a session's topic shifts and stays
shifted, instead of staying fixed at the first message. - Ambient capture folds a near-duplicate paraphrase of an existing record into
that record instead of inserting a new row, and rejects structural machine
noise (harness templates, host-injected markup) at capture time. iai capture --directiverequires text that begins with the
standing directive:marker.
Fixed
- The plugin manifest, marketplace entry, README, and reference docs now say
fifteen MCP tools and listclaim_check; they previously said fourteen. - The Claude Code plugin ships the recall renderer its per-turn hook imports,
so the plugin's per-turn memory block is no longer empty. - Windows: the daemon no longer crashes at boot on the missing hangup signal
or on Unix-socket introspection ahead of its Windows branch, and every
deployed hook script resolvespython3fromPATHinstead of a hardcoded
/usr/bin/python3(#113). - Windows:
iai-mcp crypto statusno longer crashes on the missing
effective-uid call (#109). - Windows: the daemon and Antigravity scheduled tasks are scoped to the
installing user's SID instead of any local logon; an unresolvable SID fails
the install loudly, and--target allisolates that failure to the one host.
Existing Windows installs re-runiai-mcp daemon-install(and the
Antigravity hook installer) to pick up the scoping (#109). - Windows:
capture-hooks installquotes thebashinterpreter path, so a
path under "Program Files" no longer breaks every hook command, and the
Antigravity installer quotes its hook script path; re-running install heals
an already-broken entry in place (#118, #121). - The Antigravity hook installer writes
hooks.jsonatomically, like the
Codex and Cursor installers, and matches an existing entry by its exact
command instead of a substring, so a stale or hand-edited entry no longer
suppresses a correct install. iai-mcp cowork statuson a platform with no supported scheduler prints the
same honest message as the installer instead of suggesting a command that
will decline (#119).- The runtime graph cache no longer builds a full-corpus embedding copy before
deciding it exceeds its size cap, and daemon boot routes community detection
and centrality through the memory-bounded child path (#173). - The Rust recall scoring path applies the valence multiplier that the Python
path already applied, and a record served twice in one session keeps its
real valence and salience. - Recall no longer serves machine-traffic noise records, and the
recall-success signal is computed from the records actually served. - The per-turn ambient capture hook no longer aborts on every invocation
because of a quote inside its embedded noise filter. iai-mcp salience-backfill --applyno longer marks a store that was born
with native salience as migrated.- The directive cache follows the store's own root instead of always writing
under the home directory. - Stdlib-driver read-only scan connections open with a read-only URI, so the
file layer refuses a write.
Security
- The plugin's MCP launcher no longer puts the working directory on Python's
import path, so a folder namediai_mcpin the project cannot stand in for
the installed engine. - Bumped
rustlsto 0.23.45 (RUSTSEC-2026-0285) andrustls-webpkito
0.103.15.