Three reliability fixes that close field-reported regressions in v0.9.5: search/recall returns saved memories again, the standalone MCP shim no longer caps non-Claude clients at a 7-tool subset, and the Claude Code session/subagent hooks no longer block agent startup for up to five seconds against a slow or unreachable REST server.
If you've been seeing memory_smart_search return empty results for memories you saved through memory_save on v0.9.5, this release fixes that. If you've been seeing OpenCode / Cursor / Gemini CLI / Cline expose only 4–7 tools through agentmemory mcp even with AGENTMEMORY_TOOLS=all on the server, this release fixes that too. If you've been hitting iii-engine OOM under concurrent claude -p fan-out, this release fixes that as well.
Fixed
-
memory_smart_searchandmemory_recallsurface memories saved viamemory_saveagain. v0.9.5 indexed memories into BM25 (#258), so search ranked them correctly — but the result-enrichment step on both retrieval paths still queriedKV.observations(sessionId, obsId). Memories live inKV.memoriesunder a synthetic sessionId, so every hit was silently dropped and clients sawresults: []. BothHybridSearch.enrichResults(which powers/smart-search) andmem::search's observation map (which powers/search/memory_recall) now fall back toKV.memorieswhen the observation lookup misses. Verified live end-to-end against an iii-engine 0.11.2 stack: pre-fix both endpoints returned[]for a saved memory; post-fix the memory surfaces withscore > 0on both. (#269, closes #265) -
@agentmemory/mcpstandalone shim now exposes the server's full tool surface to non-Claude clients. WithAGENTMEMORY_TOOLS=allon the server, OpenCode / Cursor / Gemini CLI / Cline users expected 51 tools; the shim filtered the response through a hardcoded 7-toolIMPLEMENTED_TOOLSset, so they got 4 (default) or 7 (with the env var). The shim now delegatestools/listtoGET /agentmemory/mcp/toolswhen an agentmemory server is reachable, and forwards any non-essential tool toPOST /agentmemory/mcp/callfor server-side validation. The local InMemoryKV fallback is unchanged. Verified live end-to-end via stdio JSON-RPC driver: pre-fixtools/listreturned 4 tools andmemory_lesson_saveraised "Unknown tool"; post-fixtools/listreturned 51 andmemory_lesson_savecreated a lesson. (#270, closes #234) -
Claude Code session/subagent hooks no longer block agent startup waiting for a slow agentmemory.
session-start.tsawaited a 5000 ms POST and discarded the response wheneverAGENTMEMORY_INJECT_CONTEXT=false(the default since 0.8.10) — pure latency.subagent-start.tshad a// fire and forgetcomment but the code awaited a 2000 ms POST. Under fan-out (Slack-bot orchestrators, multi-agent harnesses, fannedclaude -pjobs) the awaited timeouts stack and feed back into the engine; the reporter hit a positive feedback loop that OOM-killed iii-engine.session-startnow fire-and-forgets on the telemetry path and caps the inject path at 1500 ms (down from 5000 ms).subagent-startactually fire-and-forgets, capped at 800 ms. Verified live against a black-hole TCP listener: session-start (no inject) 5.05 s → 0.85 s, session-start (inject=true) 5.05 s → 1.55 s, subagent-start 2.05 s → 0.87 s. (#271, closes #221)
Changed
@agentmemory/mcppackage version bumped from 0.9.4 → 0.9.6 to lockstep with the main package, fixing a release-flow miss in v0.9.5.
Full diff: v0.9.5...v0.9.6