Release · 2026-09-26T17:35:13Z · By Threadnote
Threadnote 5.0.2
Threadnote 5.0.2 makes graph-backed context more reliable under concurrent MCP use, large repositories, constrained disk space, legacy home permissions, and Windows filesystems, while adding optional BYOK Jev recall decisions.
What's new
Threadnote 5.0.2 makes graph-backed context more reliable under concurrent MCP use, large repositories, constrained disk space, legacy home permissions, and Windows filesystems, while adding optional BYOK Jev recall decisions.
More dependable graph-backed agent context
Context Brief and MCP code-graph reads now run their SQLite work in an isolated worker, so simultaneous agent requests do not contend with the MCP server's main Bun thread. MCP clients can also request a compact, schema-aware agent response format when they need bounded graph evidence and guidance.
Code-graph extraction now prewarms parallel parser capacity for planned uncached work and balances bounded waves, avoiding cold-start skew and an underfilled final wave on heavy-tail repositories.
When threadnote context check has no findings but graph-impact evidence is unavailable, it now reports clean-with-evidence-warning and exits successfully. Real findings and unsafe evidence gaps still fail closed. Missing project configuration produces recovery guidance instead of a misleading graph result, and a background refresh no longer replaces an already-current ready graph.
Leaner, self-healing MCP sessions
Long-lived MCP clients may legitimately keep one broker process per transport. Threadnote now retires the much heavier versioned MCP child after five minutes of proven inactivity while keeping that transport stable. The next request transparently starts the active release and replays initialization before continuing.
Process registrations and standalone release leases now repair missing owned files atomically, retry transient publication failures, and stop rather than overwrite foreign ownership. This keeps live managed processes visible, prevents old releases from being pruned underneath them, and avoids retaining the MCP server and local-model worker behind an idle broker.
Optional BYOK Jev recall decisions
Recall can optionally ask TypeSafe Jev to decide among weak candidates. It remains off unless THREADNOTE_DECISION_PROVIDER=jev, a TYPESAFE_API_KEY, and a pinned THREADNOTE_JEV_MODEL are all configured. Shadow mode records a bounded advisory receipt without changing recall results; enforced mode may select only from candidates Threadnote already offered, and provider failures fall back to the completed local selection.
The request contains the weak-recall query plus at most 24 opaque candidate IDs with bounded summaries. Credentials stay in the process environment, and receipts omit queries, raw responses, and full memory bodies. threadnote jev status reports the local configuration without contacting TypeSafe or displaying the key.
Safer graph storage and Windows cleanup
Scoped graph builds stop before persistent storage is changed when their planned disk capacity is insufficient. Threadnote also cleans up confirmed, terminal build failures so a later retry can start cleanly.
Windows graph maintenance now retains filesystem identities with exact integer values, including paths whose device or inode values exceed JavaScript's safe-number range.
Background graph-refresh coordination now also works with legacy Threadnote homes that are owner-controlled but readable by other users, such as mode 0755. Mutable sidecars and scoped child directories remain private, and homes writable by another principal are still rejected.
Memory replacements retain keywords
Replacing a memory or handoff now keeps its existing keywords: headers by default. Agents can deliberately supply keywords, clear them, or ask Threadnote to regenerate them through remember_context; replacement receipts make those choices visible.
Clearer release-gate planning
Contributors can inspect the live Stage 3 code-graph release plan with only --mode plan. Candidate commit, ref, executable, checksum, and output arguments remain mandatory for --mode execute.