# Deleting Thoughts

> Use when asked to delete, remove, purge, wipe, or "get rid of" an Open Brain thought, or before calling delete_thought (the open-brain-delete-thought connector), which HARD-deletes with no undo. Also use when tempted to delete a thought that is merely outdated or wrong. To edit or deprecate instead of removing, see updating-thoughts.

- Skill: `natebjones-projects/deleting-thoughts` (Agent Skill, multi-file: 3 files)
- Install (CLI): `npx skillmds@latest add natebjones-projects/deleting-thoughts`
- Raw SKILL.md: https://api.skillmd.com/api/skills/natebjones-projects/deleting-thoughts/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: natebjones-projects (https://skillmd.com/u/natebjones-projects)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/natebjones-projects/deleting-thoughts

---


# Deleting Thoughts

## Overview

`delete_thought` (the `open-brain-delete-thought` connector) performs a **hard
delete** — the row is gone the moment it returns, with no tombstone, no
soft-delete, and no restore. Recovery depends entirely on database backups. The
Open Brain maintainer's stance is **"deprecate and version rather than
delete."** So deletion is a last resort, and every delete must target an id you
verified this session.

**Violating the letter of these rules is violating their spirit.**

## When to Use

Delete only when **both** hold:
- The thought is genuinely disposable — a test/throwaway, an exact duplicate, or
  an accidental capture, **and**
- Editing or tagging it is not good enough.

If the thought is merely outdated, wrong, or superseded, **update it or tag it**
`superseded` instead — see the **updating-thoughts** skill.

## Process

1. **Resolve the id via `search_thoughts` / `list_thoughts`.** `delete_thought`
   takes a UUID; never delete an id you typed from memory.
2. **Show the target and confirm.** Surface the thought's content to the user
   and get explicit confirmation that this specific thought should be removed.
   - **Check for derivatives first.** Before deleting, run `find_derivatives`
     (and/or `related_thoughts`) on the thought. If other thoughts were derived
     from it, deleting orphans their provenance chain — those derivatives lose
     the source they point back to. Prefer deprecating over deleting in that
     case. Tool names may carry a connector prefix; use whatever the environment
     exposes.
3. **Delete only after confirmation.** Call `delete_thought(id)`. It pre-checks
   existence (a clean "not found" if already gone) and returns the prior content
   length as a receipt. Report that receipt to the user.

## This Is Irreversible — No Exceptions

- No undo, no trash, no restore. Backups only.
- Don't batch-delete "to clean up" without confirming **each** id.
- Don't delete when the user said "update", "fix", "archive", or "deprecate" —
  those are updates, not deletes.
- Don't guess a UUID; a wrong guess deletes the wrong memory permanently.

## Red Flags — STOP

- About to call `delete_thought` on an id you did **not** get from a search this
  session.
- Deleting more than one thought from a single vague instruction.
- The user's word was "clean up / tidy / archive / outdated" — not an explicit
  "delete".
- You have not shown the actual content to the user and gotten confirmation.

**All of these mean: pause, search, show the thought, and confirm first.**

## Rationalizations — and Reality

| Excuse | Reality |
|--------|---------|
| "It's obviously junk." | Show it and confirm anyway — "obvious" is exactly where wrong deletes happen. |
| "Faster to delete than to tag." | Speed never justifies an irreversible loss. Tag or deprecate instead. |
| "The user probably meant this one." | Probably ≠ confirmed. Resolve the id and show it. |
| "I'll just re-capture if it was wrong." | Re-capture loses the original metadata, embedding history, and provenance links. |

## Output

A receipt naming the deleted id and its prior content length. Always report it
so there is a record of what was removed.

## Notes

- Connector: `open-brain-delete-thought`, auth via `?key=` or the `x-brain-key`
  header — the same `MCP_ACCESS_KEY` as your core Open Brain connector.
- For recoverable deletes, install the `schemas/thought-audit` table and write
  an audit row before deleting (see the `integrations/delete-thought-mcp`
  README's extension hook).

