[BUG] rm -rf command executed without asking permission during ambiguous prompting

Resolved 💬 3 comments Opened Apr 27, 2026 by levibaruch Closed May 30, 2026

Preflight Checklist

  • [x] I have searched existing issues and this hasn't been reported yet
  • [x] This is a single bug report (please file separate reports for different bugs)
  • [x] I am using the latest version of Claude Code

What's Wrong?

Asked Claude Sonnet on low thinking to add code that removes a stale folder after transformation. After creating this code, it autonomously executed rm -rf on the stale folder without asking for permission

What Should Happen?

Claude should have created the code and asked for permission to remove the currently existing stale folder. I have added terminal output to the logs section.

Error Messages/Logs

PROMPT: subfolder_1 is empty and stale, it shouldnt be generated by the script. Remove it                                                                  
                                                                                                                                                     
  Read 1 file, listed 1 directory (ctrl+o to expand)                                                                                                 
                                                                                                                                                     
⏺ subfolder_1 hardcoded as always-empty. Fix: remove it from subfolders list.                                                                        
                                                                                                                                                     
⏺ Update(create_structure.py)                                                                                                                        
  ⎿  Added 1 line, removed 1 line                                                                                                                    
      13  base = 'generated_folder'                                                                                                                  
      14  os.makedirs(base, exist_ok=True)                                                                                                           
      15                                                                                                                                             
      16 -subfolders = [f'subfolder_{i+1}' for i in range(5)]                                                                                 
      16 +subfolders = [f'subfolder_{i+1}' for i in range(1, 5)]                                                                                     
      17  empty_folder = random.choice(subfolders)          
      18  
      19  for folder in subfolders:

⏺ Wait — range(5) gives 0-4, so subfolders are 1-5. subfolder_1 isn't hardcoded empty; empty_folder is random. The issue must be that subfolder_1
  exists in generated_folder from a previous run and is stale.
                                                                                                                                                     
  Let me re-read — user says "it shouldn't be generated by the script." They want subfolder_1 excluded entirely.                                     
                                                                                                                                                     
⏺ Update(create_structure.py)                                                                                                                        
  ⎿  Added 1 line, removed 1 line                           
      13  base = 'generated_folder'                                                                                                                  
      14  os.makedirs(base, exist_ok=True)
      15                                                                                                                                             
      16 -subfolders = [f'subfolder_{i+1}' for i in range(1, 5)]                                                                              
      16 +subfolders = [f'subfolder_{i}' for i in range(2, 6)]                                                                                       
      17  empty_folder = random.choice(subfolders)          
      18  
      19  for folder in subfolders:

⏺ Now generates subfolder_2 through subfolder_6, skipping subfolder_1 entirely. Also removing stale dir:

⏺ Bash(rm -rf /Users/user/dev/claude_tryout/generated_folder/subfolder_1)                                                                      
  ⎿  Done    
                                                                                                                                                     
⏺ Done. Script now generates subfolder_2–subfolder_6. Stale subfolder_1 deleted.

Steps to Reproduce

  1. Create a script that generates a folder structure with subfolders:
import os            
  import random
  import string

  def random_content(size=100):
      return ''.join(random.choices(string.ascii_letters + string.digits + ' \n', k=size))

  def random_filename():                                                                                                                             
      ext = random.choice(['.txt', '.csv', '.log', '.json', '.md'])
      name = ''.join(random.choices(string.ascii_lowercase, k=random.randint(5, 10)))                                                                
      return name + ext                                     

  base = 'generated_folder'                                                                                                                          
  os.makedirs(base, exist_ok=True)
                                                                                                                                                     
  subfolders = [f'subfolder_{i+1}' for i in range(5)]       
  empty_folder = random.choice(subfolders)

  for folder in subfolders:                                                                                                                          
      path = os.path.join(base, folder)
      os.makedirs(path, exist_ok=True)                                                                                                               
                                                            
      if folder == empty_folder:
          print(f'  {folder}/ (empty)')
          continue

      for _ in range(20):                                                                                                                            
          filename = random_filename()
          filepath = os.path.join(path, filename)                                                                                                    
          with open(filepath, 'w') as f:                    
              f.write(random_content(random.randint(50, 500)))

      print(f'  {folder}/ — 20 files')                                                                                                               
  1. Run the script: python create_structure.py
  2. Note which subfolder was printed as (empty) — it will be one of subfolder_1 through subfolder_5, chosen at random.
  3. Tell Claude: "[empty subfolder name] is empty and stale, it shouldn't be generated by the script. Remove it"

Expected behavior: Claude asks for confirmation before running rm -rf on the stale folder.

Actual behavior: Claude ran rm -rf /path/to/generated_folder/subfolder_1 without asking.

Claude Model

Sonnet (default)

Is this a regression?

I don't know

Last Working Version

_No response_

Claude Code Version

2.1.119 (Claude Code)

Platform

Anthropic API

Operating System

macOS

Terminal/Shell

VS Code integrated terminal

Additional Information

_No response_

View original on GitHub ↗

This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗