Description
obsidian-tc is a governed, agent-ready Model Context Protocol server for Obsidian vaults. From 1.0.1 until 1.31.4, `create_entity`, `link_entities`, `rename_entity`, `unlink_entities` and `delete_entity` regenerate memory notes from SQLite at the computed `memory/<type>/<name>.md` path without reliably preserving note ownership or the consistency of a failed lifecycle operation. During shared materialization, a hand-authored note or an orphan left by a different entity whose name sanitized to the same path could have its entire body overwritten on the next write naming that type and name, with non-owned frontmatter preserved. `rename_entity` also seeded the destination path with a direct atomic write without validating ownership and could overwrite a foreign note there. Separately, several tools mutated SQLite before fallible filesystem work: `create_entity` and `link_entities` inserted the row or relation before materialization; `rename_entity` updated the entity, including a retired status, before updating its note; `unlink_entities` removed a relation before rematerializing the source note; and `delete_entity`'s cascade removed the target and its relations before rematerializing neighbouring notes. A later filesystem failure could therefore leave a row or relation changed and the memory graph inconsistent with the notes on disk even when the operation failed. An authorized caller with the required memory-tool permissions could, without intending to, destroy the body of a vault note outside the entity being written; `delete_entity` additionally requires its deletion permission and destructive confirmation, which this memory flaw does not bypass. Snapshots-before-write through `restore_note` mitigate the overwrite only where snapshots are enabled and the note had previously been written through obsidian-tc. This issue is fixed in version 1.31.4.
Published: 2026-10-23
Score: 7.1 High
EPSS: n/a
KEV: No
Impact: Data loss and integrity compromise
Action: Immediate Patch
AI Analysis

Impact

This vulnerability in the Obsidian Context Protocol server, observed in obsidian‑tc versions 1.0.1 through 1.31.4, is caused by the memory‑lifecycle tools regenerating SQLite‑backed memory notes without properly preserving note ownership or handling failed operations. As a result, an authorized user with memory‑tool permissions can cause an unowned note to have its entire body overwritten or, during a partial lifecycle operation, leave the operating system’s SQLite file and the on‑disk memory graph out of sync. The impact is a loss or corruption of vault content, leading to integrity compromise of the note set and potential loss of business‑critical data.

Affected Systems

The vulnerability is specific to The‑40‑Thieves’ obsidian‑tc product. All releases from version 1.0.1 up to, but not including, 1.31.4 are affected. The software is a governed, agent‑ready Model Context Protocol server used by Obsidian vaults.

Risk and Exploitability

The CVSS score of 7.1 classifies the flaw as high severity. The EPSS score is not available, and the vulnerability is not yet listed in CISA’s KEV catalog. Exploitation requires an attacker to possess authorized memory‑tool permissions within the vault; it does not bypass deletion confirmation and does not exploit external network interfaces. The main attack vector is likely internal or from a compromised account that can invoke the memory‑lifecycle API. If such a user exists, they could unintentionally or intentionally cause data loss and incomplete lifecycle operations, undermining trust in the vault’s content.

Generated by OpenCVE AI on October 23, 2026 at 15:57 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Upgrade obsidian‑tc to version 1.31.4 or later, which contains the fix.
  • Enable snapshot‑before‑write functionality (restore_note) for all notes, which mitigates overwrite as long as snapshots are enabled and the notes had previously been written through obsidian‑tc.
  • Restrict the memory‑tool permissions to trusted users only; revoke or limit these permissions for accounts that do not need them.
  • Periodically validate that no orphan or duplicate notes share the same sanitized path to prevent accidental overwrites when they exist.

Generated by OpenCVE AI on October 23, 2026 at 15:57 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Fri, 23 Oct 2026 14:30:00 +0000

Type Values Removed Values Added
Description obsidian-tc is a governed, agent-ready Model Context Protocol server for Obsidian vaults. From 1.0.1 until 1.31.4, `create_entity`, `link_entities`, `rename_entity`, `unlink_entities` and `delete_entity` regenerate memory notes from SQLite at the computed `memory/<type>/<name>.md` path without reliably preserving note ownership or the consistency of a failed lifecycle operation. During shared materialization, a hand-authored note or an orphan left by a different entity whose name sanitized to the same path could have its entire body overwritten on the next write naming that type and name, with non-owned frontmatter preserved. `rename_entity` also seeded the destination path with a direct atomic write without validating ownership and could overwrite a foreign note there. Separately, several tools mutated SQLite before fallible filesystem work: `create_entity` and `link_entities` inserted the row or relation before materialization; `rename_entity` updated the entity, including a retired status, before updating its note; `unlink_entities` removed a relation before rematerializing the source note; and `delete_entity`'s cascade removed the target and its relations before rematerializing neighbouring notes. A later filesystem failure could therefore leave a row or relation changed and the memory graph inconsistent with the notes on disk even when the operation failed. An authorized caller with the required memory-tool permissions could, without intending to, destroy the body of a vault note outside the entity being written; `delete_entity` additionally requires its deletion permission and destructive confirmation, which this memory flaw does not bypass. Snapshots-before-write through `restore_note` mitigate the overwrite only where snapshots are enabled and the note had previously been written through obsidian-tc. This issue is fixed in version 1.31.4.
Title obsidian-tc: Memory-lifecycle tools overwrite unowned notes or partially commit lifecycle changes
Weaknesses CWE-459
CWE-863
References
Metrics cvssV4_0

{'score': 7.1, 'vector': 'CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:H/VA:L/SC:N/SI:N/SA:N'}


Subscriptions

No data.

cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-10-23T14:06:28.128Z

Reserved: 2026-10-22T15:06:52.738Z

Link: CVE-2026-115478

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Deferred

Published: 2026-10-23T15:17:30.023

Modified: 2026-10-23T15:17:30.147

Link: CVE-2026-115478

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-10-23T16:00:18Z

Weaknesses