# Capture deletion > **Superseded** by `crabidy-store.md`: audio now lives in a shared store that > track deletion never touches, so deletion on `/crabidy` goes through directly > with no confirmation and no disk reclamation. This whole feature is removed. Deleting under `/captures` reclaims disk: downloaded audio is the one library content that is expensive to recreate (slow, throttled downloads — architecture/youtube-rustypipe.md), so stale captures must be removable from the TUI, and removal must actually delete the files. ## Context Before this feature, deletion (`d`) was limited to *top-level* folders of editable fsdy instances (architecture/bookmarks.md D4): whole captures could be deleted (and were removed from disk via `remove_dir_all`), but nothing below — no single album, no single track. Deletes were deliberately unconfirmed because every deletable node was cheap to recreate. ## Decisions ### D1 — deletable tree as an fsdy instance option `fsdy::Client::with_deletable_tree()` makes every folder below the instance root deletable (recursively, any depth) and every track file deletable. Only the `/captures` instance sets it: - `/queues` and `/bookmarks` keep the top-level-only contract; their nested structure mirrors a snapshot and partial edits are better done by re-saving. - Nested folders become deletable but **not renamable** — renames would break the incremental-capture merge by name (architecture/incremental-captures.md), deletes cannot: a re-capture of the same name simply re-downloads what is missing. - The instance root itself and reserved top-level names stay undeletable even on a deletable tree. ### D2 — tracks advertise deletability through their node Wire truth, not client guessing: the TUI must not hardcode which tracks are deletable. But a per-`Track` flag would touch every Track literal in every provider for a capability only fsdy uses. Instead `LibraryNode.tracks_deletable` says "this node's listed tracks may be deleted", exactly like the existing `is_downloadable` inheritance ("tracks inherit their node's blessing", architecture/captures.md D4). Child folders keep using the existing per-child `is_deletable`. ### D3 — a deleted track takes its audio with it, inside the root only Deleting a track file removes the `.cbd-track.toml` **and** the audio its `[playable] file` points to — that is the point of the feature. Safety boundary: the audio path (relative values resolved against the track file's directory) is canonicalized and must live inside the canonicalized instance root; anything else is kept and logged. So a hand-written track file referencing `~/Music/song.flac` from inside the captures folder can never delete foreign data, and `..`/symlink tricks resolve before the check. A track file that no longer parses is deleted blind (its audio cannot be located; the listing skipped it anyway). Deletes stay idempotent per the proto contract. ### D4 — confirmation in the client, scoped to /captures `d` on anything under `/captures` opens a one-line modal prompt (`delete