What's Changed
Fixed
- claude-hooks: socket hang-up on multi-phase retrieval eliminated (
memory-client.js): Node.js HTTPS agent defaults tokeepAlive: true, which causes Uvicorn to close idle sockets after ~5 s. The hook is a one-shot CLI process — keepAlive provides zero benefit and caused subsequent phase requests to reuse dead sockets, producingECONNRESET("socket hang up"). Addedagent: falseandConnection: closeheader to_attemptHealthCheck,storeMemoryHTTP, and_performApiPost. Also added a 10 s request timeout + timeout handler to_performApiPost(previously unset) for consistency with the other two paths and to ensure slow semantic-search queries fail fast rather than starving the overall HOOK_TIMEOUT. Intermittent silent partial-injection failures are resolved. - claude-hooks: HOOK_TIMEOUT raised from 9.5 s to 28 s (
session-start.js): Phase 0 (git query) + Phase 1 (recent memories) + Phase 2 (tagged memories) with a cold Python cache takes 12–15 s total. The 9.5 s budget expired beforeformatMemoriesForContext()ran, so memories were fetched but the injection block was never written — the hook appeared to "not work" in the Claude Code VSCode extension. Internal constant raised to 28 000 ms. - claude-hooks installer: outer process timeout raised from 10 s to 30 s (
install_hooks.py): Thetimeoutfield written into~/.claude/settings.jsonis Claude Code's hard kill limit for the hook process. Must be ≥ internal HOOK_TIMEOUT plus cleanup buffer; was 10 s (less than the old internal limit of 9.5 s leaving no headroom). Updated to 30 s.
Full Changelog
https://github.com/doobidoo/mcp-memory-service/blob/main/CHANGELOG.md#10403---2026-04-24