Soft-delete a memory
Mark a memory as superseded so it stops surfacing in vestige-recall, vestige-context, and search. The memory itself stays in the durable journal — forget is reversible.
When to fire
- A previously-recorded decision has been reversed. Capture the new decision with
vestige-record-decision, thenvestige-forgetthe old one. - A previously-recorded note is no longer accurate. Either capture an updated note first, or just forget the stale one.
- An open question has been answered. Record the answer as a decision, then forget the question.
- The user explicitly says "forget X" or "that's outdated".
Do NOT use this for routine cleanup. Forgetting too aggressively makes the project's history less useful for future-you. The default state of a memory is "kept forever".
How to invoke
vestige forget <mem_id> --json
<mem_id>(positional, required): the handle of the memory to forget. Exact match — no partials or globs.--json(optional): structured envelope so the agent can parse the result.
When forgetting because of supersession, capture the replacement first:
vestige decision add "Use Postgres instead of SQLite" --rationale "…" --json
# → returns mem_<NEW>
vestige forget mem_<OLD> --json
That way the journal records both the supersession event and the new commitment.
After invocation
Surface the action briefly: "Forgot mem_… (soft-delete; restorable with vestige restore)." — explicit so the user knows it's reversible.
If you forgot a memory in error, fire vestige-restore immediately.
Idempotence & dedup
Soft-delete is idempotent in spirit: forgetting an already-deleted memory is a no-op (non-zero exit). The underlying row is never DELETEd — Vestige's hard rule is soft-delete only. Restore re-flips the status.