Correcting Memories
Information changes. Something you ingested six months ago may now be outdated. Graphnosis has a structured correction flow that updates a memory precisely, without re-ingesting an entire source — and without ever quietly destroying what was there before.
What a correction is
A correction is a natural-language statement of what is wrong and what it should be. Graphnosis turns that statement into a diff — a precise, structured set of changes — and shows it to you. Nothing is written until you approve the diff. No AI model, local or cloud, can modify your cortex without your explicit confirmation.
A correction is one of the few correctness events that can change a memory’s standing (see Indelibility & Determinism). It does this safely: the original memory is superseded, not erased.
Deterministic by default
The correction flow works with no AI model installed — this is the default.
Given your correction, Graphnosis recalls the single closest-matching memory and proposes one change: supersede that memory with your correction text. If nothing matches, it proposes recording the correction as a new memory instead. This is fully deterministic — the same correction always produces the same diff.
With a Local LLM (optional)
If you enable the optional Local LLM, the correction flow auto-switches to a more capable path: the model reads several candidate memories and can propose a multi-part diff — superseding one memory, editing another, adding a third — all in one reviewed step. This path is non-deterministic (the proposed diff can vary between runs), which is why it is opt-in and off by default.
Either way, the diff is only ever a preview. You review it before anything is committed.
Corrections preserve the original
Applying a correction does not overwrite or delete the old memory. The default supersede operation keeps the original for audit lineage — it is demoted, not destroyed — and the op-log records the full before/after. You can trace the history at any time, and corrections are reversible. This is the indelibility guarantee in action: a correction never loses information.
Initiating a correction from your AI
Your AI can start a correction mid-conversation using the correct and apply MCP tools.
Step 1 — the AI calls correct:
{ "tool": "correct", "arguments": { "correction": "The API endpoint changed from /v1/search to /v2/query in March 2025.", "graphId": "work" }}correction is required; graphId is optional (when omitted, Graphnosis infers the engram from the closest-matching memory). The tool writes nothing — it returns a diffId, a mode ("deterministic" or "llm-assisted"), the proposed preview diff, and the candidate memories it considered.
Step 2 — you approve the diff. Normally you do this in the app (see below). An AI client should only call apply if you have explicitly reviewed a specific diff and told it to commit:
{ "tool": "apply", "arguments": { "graphId": "work", "diffId": "diff_m8x2k1" }}apply commits the change via the op-log and returns Applied.
Reviewing a correction in the app
When a correction is proposed, it appears as a pending diff in the Check-in tab — and Graphnosis fires a system notification if its window is in the background. There you see exactly what will change and decide:
- Approve — the diff is applied via the op-log.
- Reject — the proposed diff is discarded; nothing changes.
Graphnosis proposes; you decide. A correction is never applied on your behalf.
What happens when a correction is applied
- The targeted memory is superseded — kept for lineage, demoted so it no longer surfaces in recall.
- The corrected content becomes a new, active memory with a fresh embedding.
- The op-log records a
correctionevent referencing both the old and new content, so the change is fully auditable and reversible.
Correction scope
The deterministic path corrects one memory — the closest match — per call. The LLM-assisted path can touch several memories in a single diff.
If an error spans many memories (for example, a wrong date repeated across a whole document), it is usually faster to update the source file and use Reingest from the Source detail view.