RePass Cloud product

CurseDelete 2

A native, high-performance deletion engine for files and directory trees that refuse to die. CurseDelete deletes while it enumerates, tunes its own concurrency to the storage target it is running against, and structurally refuses to ever delete a filesystem or SMB share root.

Current version: v2.0.0
Rust, cross-platform (macOS, Windows, Linux)
CLI binary: cursdel

Deleting large or difficult file trees safely and fast.

Standard delete tooling either walks a full tree into memory before acting, or offers no protection against accidentally deleting a filesystem or share root. CurseDelete's engine streams deletion as it enumerates — memory use stays bounded regardless of tree size — and root/share-root protection is enforced structurally, through two independently tested layers, not just by convention.

Retention cleanup for aged files and logs
Build/release pipeline and CI cleanup jobs
Large or slow storage targets (network shares, spinning disks)
Locked-file remediation on Windows file servers
$ cursdel /tmp/scratch/old-build --dry-run
CurseDelete 2

Target:       /tmp/scratch/old-build
Mode:         normal (dry-run)
Workers:      auto -> 10

Files scanned:       4
Directories scanned: 3

Would delete:
  Files:             4
  Directories:       3
  Data:              20.0 B

No files were modified.

Key features

Streaming deletion

Enumeration and deletion overlap — deletion starts before the tree is fully walked, with bounded memory use regardless of tree size.

Adaptive concurrency

--workers auto hill-climbs to a good worker count for the storage target it is running against, or --workers N gives an exact override.

Structural root protection

A filesystem or SMB share root can never be deleted — including via a symlink or junction disguising one — enforced by two independently tested layers.

Symlink-safe traversal

A symlink or junction found inside a target tree is always deleted as the link object itself, never followed.

Retention cleanup

--age/--age-by with a mandatory duration unit; directories are removed only once genuinely empty, and the target directory itself is always preserved.

Composable filters

--include/--exclude/--min-size/--max-size, with exclude always winning ties.

Machine-readable output

--json with a versioned schema and a frozen exit-code contract for automation.

Lock handling

--kill-locks for local process locks, and an Business/Enterprise-only --close-remote-locks for supported Windows file servers.

Cross-platform by design

macOS

Implemented and tested

Native Darwin/POSIX primitives (openat/unlinkat/fstatat) — the reference PlatformEngine implementation.

Windows

Implemented

Native Win32 primitives (FindFirstFileExW, FILE_DISPOSITION_INFO_EX with DeleteFileW/RemoveDirectoryW fallback), ownership/ACL remediation, Restart Manager for --kill-locks.

Linux

Implemented

Native openat/unlinkat/statx primitives via libc, with /proc-based local lock-holder discovery for --kill-locks.

Build from source

No prebuilt release binaries are published yet. Building from source is currently the only way to get cursdel. Requires a current stable Rust toolchain.

git clone https://github.com/repasscloud/cursedelete-2.git
cd cursedelete-2
cargo build --release -p cursdel-cli
./target/release/cursdel --version
Source and documentation

Editions

CurseDelete's core deletion engine — adaptive and manual worker control, retention, filters, dry-run, and JSON output — runs at full, unthrottled speed in every edition, including the free Community edition. Commercial editions monetise commercial-use rights, scale, and support, not raw deletion speed. The only capability actually gated at runtime is--close-remote-locks.

Community

Free

Personal use, developers, homelabs, evaluation

Education

Free

Students, teachers, recognised schools and universities

Business

$199 AUD

IT departments, DevOps teams, MSPs, file-server admins, build/release infrastructure

Enterprise

$1499 AUD

Organisation-wide deployment, negotiated scale, priority support

Payment is handled by Stripe; licensing is issued separately after purchase. For questions about editions, scale, or negotiated Enterprise terms, email hello@repasscloud.com.

Changelog

2.0.02026-08-17

Added

  • Initial CurseDelete 2 Rust rewrite: Cargo workspace with shared orchestration (`cursdel-core`), platform deletion engines (`cursdel-windows`, `cursdel-linux`, `cursdel-macos`), licensing (`cursdel-license`, `cursdel-policy`), and the `cursdel` CLI (`cursdel-cli`). See `docs/adr/` for the architectural decisions behind the crate split and `README.md#appendix-original-productarchitecture-brief` for the product brief this rewrite implements.
  • CI (`.github/workflows/ci.yml`): formatting, clippy, `cargo test` across Windows/Linux/macOS, cross-target type-checking for the ARM64 shipping targets, and dependency/license auditing via `cargo-deny`.
  • Release packaging (`.github/workflows/release.yml`): tag-triggered build matrix producing archives for all six shipping targets (Windows x64/ARM64, Linux x64/ARM64, macOS Apple Silicon/Intel), published to GitHub Releases with checksums. See `docs/RELEASE.md` for the process and what's still manual (code signing, WinGet, Linux package managers).