This release includes 2 security fixes for security teams reviewing exposed deployments.
Topics
+3 more
Affected surfaces
Summary
AI summaryUpdates v0.18.0 Release Supplement, Breaking changes, and Security hardening across a mixed release.
Full changelog
v0.18.0 Release Supplement
Highlights
v0.18.0 closes the "my files and my edits are part of the loop" gap for local-first operators with two long-standing evaluator asks — by-reference source storage and disk-to-entity write-back — alongside the Bundles capability system (definition → runtime → activation → surfacing), richer sandbox showcase packs, and a set of cross-user read-leak security fixes.
What changed for npm package users
Sources / storage — by-reference (source_storage: "reference") (closes #1775)
store(andparse_file) acceptsource_storage: "inline" | "reference". Withreference, Neotoma reads the file once to compute itscontent_hash+ metadata and persists asourcesrow without copying the bytes — so a large or local file (e.g. a PDF on a space-constrained machine) becomes first-class in the graph without inflating the DB.- Retrieval resolves the path at read time; a moved/deleted file surfaces a structured
SOURCE_UNAVAILABLE(never a misleading empty blob), and content drift surfacesSOURCE_REFERENCE_STALE. Content-addressing, dedup, and interpretation linkage are unchanged. - Default
inline⇒ zero behavior change for existing callers.
Mirror profiles — disk-to-entity write-back (neotoma mirror push) (closes #1776)
- New
neotoma mirror push <path|profile>round-trips operator edits of a mirrored markdown file back into Neotoma ascorrect()-ions, behind an opt-in per-profileallow_disk_writeback. - Editable fields only (generated/frontmatter regions are ignored); a 3-way diff against the last-synced base flags conflicts instead of overwriting;
--checkpreviews the exact corrections; edits are stampedobservation_source: "human".
Bundles
- A capability-bundle system landed end-to-end: definition lock (m1), runtime loader + enforcement + linter (m2), activation state store + CLI +
manage_bundlesMCP tool (m3), and/bundlessurfacing — HTTP route + Inspector panel + scaffold tooling (m4).
Docs / onboarding
docs/foundation/what_to_store.mdnow leads with "you don't keep Neotoma clean — Neotoma keeps your state clean for you" and recasts the Tier 1/2/3 tables as a guide, not a gate.- New
docs/vocabulary/plain_language.md— a plain-language primitives cheat-sheet (record/entity, observation, source, interpretation, relationship) with a "you say → Neotoma says" mapping.
Behavior changes
- All additive / opt-in.
source_storagedefaults toinline;allow_disk_writebackdefaults off; bundles enforce only when installed.
Security hardening
- Scoped pre-existing cross-user read leaks in MCP handlers + aggregates (#1795).
- Sandbox: degrade an unresolvable session bearer to anonymous instead of 401 (#1790); exempt internal seeding from the write rate limit (#1797).
Breaking changes
- None. Every new surface is opt-in and backward-compatible.
Documentation
- Neotoma issues #1775 / #1776 carry the full designs; both were driven by developer-release evaluator feedback.
Security Fixes
- Scoped cross‑user read leaks in MCP handlers and aggregates (#1795)
- Sandbox degrades unresolvable session bearer to anonymous instead of returning 401 (#1790)
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.
Share this release
About markmhendrickson/neotoma
Deterministic state layer for AI agents. Stores versioned entities (contacts, tasks, transactions, decisions) with immutable observations, full provenance, and schema-first extraction. Local-first SQLite, cross-client memory across Claude, Cursor, ChatGPT, and OpenClaw. Website
Related context
Related tools
Earlier breaking changes
- v0.12.1 Inspector build prepublish now exits non-zero if inspector submodule is missing, breaking ad-hoc npm pack runs without init.
- v0.12.0 Access policy source precedence: env > SchemaMetadata.guest_access_policy > config
- v0.12.0 Legacy feedback subsystem completely removed; issues subsystem is replacement
- v0.12.0 MCP submit_issue requires reporter_git_sha or reporter_app_version
Beta — feedback welcome: [email protected]