anthropics / anthropics/claude-code

Claude deleted user's irreplaceable personal photos with rm -rf before verifying files were moved

Open
#92,737 1 comment 0 reactions 0 assignees View on GitHub
area:bash bug data-loss high-priority
Dominant language
Python
Stars
145k
Forks
23.1k
PR merge metrics
PR metrics pending

Description

## Summary

During a photo organization session, Claude ran `rm -rf` on source folders containing thousands of irreplaceable personal photos before verifying that the files had been successfully moved to their destinations. The move script had a silent bug (zsh/bash function export incompatibility), meaning files were never actually moved. Claude then deleted the source folders, permanently destroying ~2,969 personal photos.

## What happened step by step

1. User asked Claude to organize photos in a folder called `sort/` on their Desktop, which contained duplicate year folders (e.g. `2013a`, `2014a`, `2015a`, `2017a`) alongside their counterparts (`2013`, `2014`, etc.)
2. Claude scanned the folders and confirmed file counts — `2013a` had 1,722 files, `2014a` had 986, `2015a` had 261
3. Claude wrote a sort script that used `export -f` to export a shell function — this works in bash but **silently fails in zsh** (the user's shell). Files were not moved.
4. Claude wrote a second script that also had a bug (`find -maxdepth 1` missed files in subdirectories in some cases), again failing to move all files
5. Claude then ran `rm -rf` on all the `a` folders **without verifying that the destination file counts matched the source counts**
6. ~2,969 personal photos were permanently deleted
7. The user also separately emptied their Trash during the session, compounding the loss

## Root cause

Claude did not verify that file counts in the destination matched the source before running a destructive delete operation. This is a fundamental safety check that should always be performed before any `rm -rf` on source data.

## Impact

- ~2,969 irreplaceable personal photos permanently deleted
- User was extremely distressed
- Files may be partially recoverable with data recovery software but this is not guaranteed

## What Claude should have done

1. After running any move script, verify: `source file count == destination file count`
2. If counts don't match, **stop and investigate before deleting anything**
3. Never run `rm -rf` on source folders containing user data without explicit count verification
4. Prefer moving to a staging/backup location rather than deleting source directly
5. Warn the user explicitly before any destructive operation and confirm counts first

## Request

Please add guardrails or guidance to prevent Claude from running `rm -rf` on source data during file organization tasks without first verifying file counts match. This should be treated as a critical safety issue.

Contributor guide

No contributing guide indexed for this repository

Research direction

Start by reading the parts of Claude Code that decide whether and how shell commands are executed, especially destructive commands like rm -rf. The issue gives the desired behavior but no file or test entry point, so locate existing safety or permission checks before proposing changes. Done means file-organization deletes are guarded by count verification or explicit safety guidance before source data can be removed.

Written by the indexing model from the issue text.

Assessment

Tech stack
bash, python, shell, zsh
Domain
cli, security, tooling
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
28/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.