#7030·beets

Importer's [R]emove option should NOT delete the files if the config has write/move/copy/hardlink all disabled

Author: FlorentLMCreated Sep 15, 2026Updated Sep 15, 2026

Problem

Importer's Remove option should not delete the files if the config has write/move/copy/hardlink all disabled.

Led to this problem:

I use beets as a database only. No changes in the files at all. I have write/move/copy/hardlink all disabled. I had the source folder as a read-write mount to allow fetchart to write in there. I shouldn't have.

On trying to import a multi-disc album which had names for each discs, both discs got matched to a different release from MBID, when I tried to fix it I pressed R when the importer asked Remove / Merge / Keep, and it deleted my source files with no confirmation.

It's a pretty trivial addition for a (maybe niche, admittedly) use case where if write/move/copy/hardlink are all off, beets should treat the files as untouchable and should NOT delete them.

Setup

  • OS: Debian but that's the behaviour on any OS
  • Python version: same as above, doesn't matter
  • beets version: 2.11.0

My configuration (relevant part only) is:

yaml
import:
    write: no
    copy: no
    move: no
    hardlink: no
    resume: yes
    incremental: yes
    incremental_skip_later: yes
    timid: no
    quiet: no
    quiet_fallback: skip