Uninstall the backup and legacy agent

Overview

This article explains how to uninstall the Code42 agent from your computer. This article applies to the backup agent and legacy agent only. For the insider risk agent, see Uninstall the insider risk agent from user devices.

Uninstalling the Code42 agent removes the log files associated with your backups on this computer. If you're uninstalling as part of a troubleshooting process, send your log files to our Technical Support Engineers before uninstalling.

Legacy agent end-of-life
On April 10, 2024, the Code42 legacy agent reached end-of-life. Devices with the legacy agent are no longer backing up, and Incydr monitoring has stopped. Follow the steps in this article to uninstall the legacy agent from any devices that have not upgraded yet, then follow these steps to deploy both the insider risk and backup agents.

Standard uninstall

A standard uninstall removes the Code42 agent from your computer. An identity file is left on your computer in case you reinstall in the future.

Windows

  1. Open the Control Panel and select Uninstall a Program.
  2. Select Code42 and choose Uninstall.

You may be prompted that another user on the device is signed in. If another user is signed in, it may prevent the Code42 agent from uninstalling completely. Coordinate with other users to ensure all users are signed out of their accounts before continuing. 

Uninstall fails
If the uninstallation fails, follow Microsoft's instructions to fix problems that block programs from being installed or removed.

Mac

Code42 agent version 11.0 and later, and all versions running on macOS Ventura and later
  1. Go to Applications > Utilities.
  2. Open Terminal.app.
    The Terminal window opens.
  3. Enter the command corresponding to your installation type. If you plan to reinstall the Code42 agent, append --preserve-data-upgrade to the end of the command to prevent the agent from resending files that are already backed up:
    • Version 12.2 and later:
      • Installed for everyone (default):
        sudo "/Library/Application Support/CrashPlan/uninstall.sh"
      • Installed per user:
        sudo "~/Library/Application Support/CrashPlan/uninstall.sh"
    • Version 12.1 and earlier:
      • Installed for everyone (default):
        sudo /Applications/Code42.app/Contents/Helpers/Uninstall.app/Contents/Resources/uninstall.sh
      • Installed per user:
        sudo ~/Applications/Code42.app/Contents/Helpers/Uninstall.app/Contents/Resources/uninstall.sh
  4. Enter your password if prompted.
    The password doesn't display as you enter it.

The Terminal uninstalls the Code42 agent.

Code42 agent version 10.3.1 and earlier
  1. Open the Finder.
  2. Press Command+Shift+G.
    A dialog box appears: Go to the folder.
  3. Paste this text into the dialog box:
    • Installed for everyone: /Library/Application Support/CrashPlan/Uninstall.app
    • Installed per user: ~/Library/Application Support/CrashPlan/Uninstall.app
  4. Click Go.
    If you see the error "The folder can't be found", download the Mac installer and double-click the .dmg file to mount it before continuing to the next step. 
  5. Double-click Uninstall.
  6. Follow the prompts to complete the uninstall process.

Linux

  1. Download the Code42 agent.
  2. Uncompress the TGZ file in Downloads.
  3. Open Terminal and enter: cd ~/Downloads/code42-install
  4. Press Enter.
  5. Then enter: sudo ./uninstall.sh -i /usr/local/crashplan
    If you plan to reinstall the Code42 agent, append -x to the end of the command to prevent the agent from resending files that are already backed up.
  6. Press Enter.
  7. At the prompt, type YES to uninstall and press Enter.

Complete uninstall

A complete uninstall removes the Code42 agent, your computer's identity file, and any backups on your computer. Only perform a complete uninstall if:

To completely uninstall the Code42 agent:

  1. Follow the instructions above for a standard uninstall.
  2. Delete the following folder from your computer:
  • Windows:
    • If installed for everyone: C:\ProgramData\CrashPlan
    • If installed per user: C:\Users\<username>\AppData\<Local or Roaming>\CrashPlan
  • Mac:
    • If installed for everyone: /Library/Application Support/CrashPlan
    • If installed per user: ~/Library/Application Support/CrashPlan
  • Linux: /var/lib/crashplan

Manual uninstall for Mac

Perform the following steps if you were unable to uninstall the Code42 agent on a Mac using the directions provided above.

A manual uninstall is typically not needed on Windows or Linux. However, if you already tried to remove the Code42 agent on a Mac by a non-standard method, the normal uninstall process will error out if subsequently run. This is because the installation file is locked on a Mac and it must be unlocked (with a chflags noschg command) before it can be uninstalled.

Perform manual uninstall under Technical Support Engineer supervision
You should only perform these manual uninstall steps under the supervision of a Technical Support Engineer. If run improperly, the commands have the potential to cause harm to your system. 

App Management permissions
Some versions of macOS Ventura may require you to grant additional permissions to the application you use to uninstall the agent (for example, Terminal). To add permissions:
  1. Go to System Settings > Privacy & Security > App Management.
  2. Click the plus + icon.
  3. Select the application you're using to perform the uninstall (for example, Terminal).
  4. After completing the uninstall steps below, you can remove this permission.

Installed for all users

  1. Run the following command in Terminal: sudo ls
  2. Enter the administrator password for the computer and press Return. 
  3. Copy and paste the following commands.
    sudo launchctl unload /Library/LaunchDaemons/com.code42.service.plist
    sudo chflags noschg /Applications/Code42.app
    sudo chmod -R 755 "/Library/Application Support/CrashPlan/" 
  4. Open a Finder window and delete the following folders:

/Library/LaunchDaemons/com.code42.service.plist
/Applications/Code42/
/Library/Caches/CrashPlan/
/Library/Application Support/CrashPlan/

Installed per user

  1. Run the following command in Terminal: sudo ls
  2. Enter the administrator password for the computer and press Return. 
  3. Copy and paste the following commands. The "~" symbol designates the user folder.
    sudo launchctl unload/ ~/Library/LaunchAgents/com.code42.service.plist
    sudo chflags noschg ~/Applications/Code42.app
    sudo chmod -R 755 "~/Library/Application Support/CrashPlan/"
  4. Open a Finder window and delete the following folder:  ~/Library/Application Support/CrashPlan/

Scripted uninstall for Mac and Windows

To perform an automated manual uninstall on Mac or Windows via script, use the following example scripts provided by our Professional Services team. 

Perform scripted uninstall under Technical Support Engineer supervision
You should only use these uninstall scripts under the supervision of a Technical Support Engineer. If run improperly, the scripts have the potential to cause harm to your system. 

Mac

Professional Services filename:  mac_uninstall.sh

# The section below uninstalls Code42, if it is installed on the system.
if [[ -e /Library/Application\ Support/CrashPlan/ ]]; then
	launchctl unload /Library/LaunchDaemons/com.crashplan.engine.plist
	launchctl unload /Library/LaunchDaemons/com.code42.service.plist
	/Library/Application\ Support/CrashPlan/uninstall.sh --preserve-data-upgrade
	# versions prior to 12.2.0 will need the below line un-commented
	# /Applications/Code42.app/Contents/Helpers/Uninstall.app/Contents/Resources/uninstall.sh --preserve-data-upgrade
fi

# The section below removes the Code42 identity file. Uncomment the lines below if you wish to do a complete uninstall.
# rm -r /Library/Application\ Support/CrashPlan/

Windows

Windows Powershell Script - Full Removal and Cleanup

Professional Services filename: EAv03_backup_agent_cleanup_code42_windows.ps1
This is a complete removal tool for Code42 Backup and Legacy, it will check for both Pre User and For Everyone installs and removes all .identity files and folder locations
Flag `dontLog` is set to false by default and will log out to C:\ProgramData\

#EAv03_backup_agent_cleanup_code42_windows.ps1
#Script for the removal of the Code42 Backup or Legacy Agents
#Removes up all Installs (For Everyone and Per User), Identities, Logs and Folders for Code42 Backup or Legacy Agents
#Last Updated 2025-06-16

#This work is licensed under the terms of the MIT license.
#For a copy, see <https://opensource.org/licenses/MIT>.
#Scripts are provided "As Is" 

#~~~~~~~~~~~~~~~~~
#Setup Run Flags

#Set $dontLog to True to remove the on Disk log out of the Code42 removal script
$dontLog=$false 

#Downloading the Backup installer
$latestWindowsBackupClient = "https://download-preservation.code42.com/installs/agent/cloud/12.6.0/33/install/Code42_12.6.0_15252000061260_33_Win64.msi"
$Code42BackupMSI = "C:\ProgramData\code42-backup.msi"

#======================================================================================
#~~~~~~~~~~~~~~~~~
#No Edits or Input fields after this line
#~~~~~~~~~~~~~~~~~
#======================================================================================

#Logging Setup
$logfiledate = Get-Date -format "dd-MM-yyyy-HH-mm-ss"
$PROC_LOG = "C:\ProgramData\EAv03_backup_agent_cleanup_code42_windows_$logfiledate.log"
function Write-Log {
    [CmdletBinding()]
    Param
    (
        [Parameter(Mandatory=$true, Position=0)]
        [string]$LogMessage
    )
    Add-Content -Path $PROC_LOG -Value (Write-Output ("{0} - {1}" -f (Get-Date), $LogMessage))
	write-host $LogMessage
}

#Script must be run as an administrator. This will make the script exit if it is not.
if (-not ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) {
	$wshell = New-Object -ComObject Wscript.Shell
	$wshell.Popup("Not running as administrator!",0,"Code42 pre-Install",0x1)
    Write-Log "Not running as administrator!, closing script."
	exit
}

Write-Log "##########################################################"
Write-Log "Running Script EAv03_backup_agent_cleanup_code42_windows.ps1"
Write-Log "dontLog is set to ($dontLog)"
Write-Log "Last updated at 2025-06-16"
Write-Log "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"

#Download Backup installer package for msi uninstall as files may be corrupt  
#Set the security protocol to TLS 1.2
Write-Log "Download MSI URL ($latestWindowsBackupClient)"
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
$client = New-Object System.Net.WebClient
$client.Proxy.Credentials = [System.Net.CredentialCache]::DefaultNetworkCredentials
$client.DownloadFile($latestWindowsBackupClient, $Code42BackupMSI)
Write-Log "Download MSI Path ($Code42BackupMSI)"
Write-Log "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"

#~~~~~~~~~~~~~~~~~
#Checking for if Uninstalling is needed
#~~~~~~~~~~~~~~~~~
#Test for all Per User and For Everyone Legacy or Backup Agent installs.
Write-Log "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
$previousBackup=$false
get-childItem C:\Users | forEach $path {
	if (((Test-path C:\Users\$_\AppData\Local\Programs\Code42) -or (Test-path C:\Users\$_\AppData\Roaming\Programs\Code42)) -or (Test-path "C:\Program Files\Code42\")) {
		Write-Log "Found a install of Code42 Backup or Legacy Agent install.($_)"
		$code42_process = get-Process  | Where-Object {$_.Name -Match 'Code42Service'}
		$crashplan_process = get-Process  | Where-Object {$_.Name -Match 'CrashPlan'}
		Write-Log "code42_process is ($code42_process)"
		Write-Log "crashplan_process is ($crashplan_process)"
		if (-not ([string]::IsNullOrEmpty($code42_process)))
		{
			Stop-process $code42_process -Force
			Write-Log "Stopped Code42 Process/Service"
		}
		elseif (-not ([string]::IsNullOrEmpty($crashplan_process))) {
			Stop-process $crashplan_process -Force
			Write-Log "Stopped CrashPlan Process/Service"
		}
		sleep 10
		Write-Log "Found a install at System level or Per-User Code42 Backup or Legacy Agent install."
		& cmd.exe /c "msiexec.exe /x C:\ProgramData\code42-backup.msi /qn /norestart"
		Write-Log "Sleep for 60 for msiexec.exe to finish"
		sleep 60
	}
	else {
		Write-Log "No Install of Backup or Legacy Agent Found ($_)" 
	}
}
Write-Log "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
$previousIdentity=$false
#Cleaning backup agent folders
if (Test-path C:\ProgramData\CrashPlan\){
	Remove-Item C:\ProgramData\CrashPlan\ -Recurse -Force -ErrorAction SilentlyContinue
	Write-Log "Removed System Level folder at C:\ProgramData\CrashPlan\"
	$previousIdentity=$true
}
get-childItem C:\Users | forEach $path {
	Write-Log "Checking for Per User .identity in ($_)"
	if ((Test-path C:\Users\$_\AppData\Local\CrashPlan\) -or (Test-path C:\Users\$_\AppData\Roaming\CrashPlan\)){
		if (Test-path C:\Users\$_\AppData\Local\CrashPlan\){
			Remove-Item -Path C:\Users\$_\AppData\Local\CrashPlan\ -Recurse -Force -ErrorAction SilentlyContinue
		}
		if (Test-path C:\Users\$_\AppData\Roaming\CrashPlan\){
			Remove-Item -Path C:\Users\$_\AppData\Roaming\CrashPlan\ -Recurse -Force -ErrorAction SilentlyContinue
		}
		if (Test-path C:\Users\$_\AppData\Local\Programs\Code42\){
			Remove-Item -Path C:\Users\$_\AppData\Local\Programs\Code42\ -Recurse -Force -ErrorAction SilentlyContinue
		}
		Write-Log "Removed $_ user backup folder"
		$previousIdentity=$true
	}
}
if ($previousIdentity -eq $false) { Write-Log "No Identity File for Backup or Legacy Agent Found" }
Write-Log "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"

Write-Log "Checking for leftover Code42/CrashPlan Folders"
#checking if any folders are still existing and removing if so
if (Test-path C:\ProgramData\CrashPlan\){
	Remove-Item C:\ProgramData\CrashPlan\ -Recurse -Force -ErrorAction SilentlyContinue
	Write-Log "Removed C:\ProgramData\CrashPlan\"
}
if (Test-path "C:\Program Files\Code42\"){
	Remove-Item "C:\Program Files\Code42\" -Recurse -Force -ErrorAction SilentlyContinue
	Write-Log "Removed C:\Program Files\Code42\"
}
Write-Log "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"

#Clean up of installers
Write-Log "Removing $Code42BackupMSI file"
Remove-item $Code42BackupMSI -Force
sleep 10
Write-Log "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
Write-Log "Script Finished, Closing Down"
Write-Log "##########################################################"
if ($dontLog) {Remove-Item -Path C:\ProgramData\EAv03_backup_agent_cleanup_code42_windows* -Recurse -Force -ErrorAction SilentlyContinue }
else {Write-Log "Removal Log is at C:\ProgramData\EAv03_backup_agent_cleanup_code42_windows_$logfiledate.log"}
Exit 0

 

Windows Management Instrumentation (WMI) script

Professional Services filename:  win_uninstall_WMI.ps1

# The section below uninstalls Code42, if it is installed on the system.
Stop-Service -Name "CrashPlanService"
Stop-Service -Name "Code42Service"
$PRODID = (Get-CIMInstance -Class Win32_Product | Where-Object {$_.Name -Match 'CrashPlan'}).IdentifyingNumber
Start-Process "msiexec.exe" -Wait -ArgumentList "/X $PRODID /norestart /qn"
$PRODID = (Get-CIMInstance -Class Win32_Product | Where-Object {$_.Name -Match 'Code42$'}).IdentifyingNumber
Start-Process "msiexec.exe" -Wait -ArgumentList "/X $PRODID /norestart /qn"

# The section below removes the Code42 identity file. Uncomment the lines below if you wish to do a complete uninstall.
# Remove-Item -Path "C:\ProgramData\CrashPlan" -Recurse -Force


Windows Management Instrumentation Command-Line (WMIC) script

Professional Services filename:  win_uninstall_wmic.bat

@ECHO off

REM The section below uninstalls Code42, if it is installed on the system.
sc stop CrashPlanService
sc stop Code42Service
waitfor NEVERSIGNAL /t 20 2 NUL
FOR /f "tokens=1" %%I IN ('WMIC product get IdentifyingNumber^, Name ^| findstr CrashPlan') DO start /wait msiexec /x %%I /q /norestart
FOR /f "tokens=1" %%I IN ('WMIC product get IdentifyingNumber^, Name ^| findstr Code42 ^| findstr /v AAT') DO start /wait msiexec /x %%I /q /norestart

REM The section below removes the Code42 identity file. Uncomment the lines below if you wish to do a complete uninstall.
REM rd /s /q C:\ProgramData\CrashPlan

exit

Windows Command Prompt one-line batch command

cmd /c start /wait powershell.exe "(Get-WmiObject Win32_Product | where {$_.Name -eq 'Code42'}).IdentifyingNumber | ForEach-Object{(Start-Process msiexec.exe -ArgumentList \"/qnr /x $_\" -verb runas -Wait -PassThru)}; Remove-Item -Path "C:\ProgramData\CrashPlan" -Recurse -Force"

Related topics

Was this article helpful?
0 out of 0 found this helpful

Comments

0 comments

Please sign in to leave a comment.