Comprehensive guide to unenrolling a managed Chromebook from enterprise or school enrollment. Covers Sh1mmer, BadRecovery, FORGE, Quicksilver, and more methods by version.
Use this file to discover all available pages before exploring further.
Unenrollment removes your Chromebook from enterprise or school management (Google Admin Console), freeing the device from policy restrictions, blocked extensions, supervised browsing, and kiosk mode. Once unenrolled, the device behaves as a personal Chromebook. The community maintains a comprehensive guide at chromebook-guide.github.io covering the most actively developed methods. This page documents every known method from the utilities collection, organized by version compatibility and mechanism.
Unenrolling a managed Chromebook likely violates your school or organization’s Acceptable Use Policy. Most methods cause data loss. Some exploits are hardware-specific — applying the wrong method to an incompatible board can brick the device. Proceed at your own risk and understand each step before executing it.
Sh1mmer (Shady Hacking 1nstrument Makes Machine Enrollment Retreat) was discovered by Mercury Workshop and released on January 13, 2023. It is capable of completely unenrolling enterprise-managed Chromebooks by booting a modified RMA shim.
Go to chrome://version on your Chromebook and copy the word after stable-channel in the Platform field.
2
Download and build a Sh1mmer image
Download a shim from dl.sh1mmer.me and build it with the Sh1mmer web builder. You need a modified shim, not a raw shim.
3
Flash to USB
Install the Chromebook Recovery Utility extension on your personal computer. Open it, click the gear icon, select “Use local image”, choose your shim file, select your USB, and start writing. This takes approximately 10 minutes.
Executing on the Chromebook:
1
Enter Recovery Mode
Press Power (⏻) + Reload (↻) + Escape simultaneously.
2
Trigger developer mode flag
Press Ctrl + D on the recovery screen, then press Enter.
3
Re-enter recovery mode
Press Power (⏻) + Reload (↻) + Escape again. This step is critical and cannot be skipped.
4
Boot the shim
Plug in your shimmed USB, then press Power (⏻) + Reload (↻) + Escape once more. After a brief loading screen you will be in the Sh1mmer menu.
5
Unenroll
Navigate the Sh1mmer UI to unenroll the device, then exit and reboot.
After unenrolling, it is recommended to add your personal account first, then add your school account. To re-enroll temporarily for kiosk exams, see instructions at sh1mmer.me/kiosks.txt.Credits: Mercury Workshop
BadRecovery (≤ v124 / all EOL-before-2024 devices)
BadRecovery (formerly OlyBmmer) leverages a vulnerability in ChromeOS recovery images to get arbitrary code execution. It unenrolls all devices that went EOL before 2024, and can unenroll supported devices on kernel version 3 or lower. Released October 5th, 2024.
Use --type (or -t) to specify a mode (e.g., -t postinst). The script auto-selects the best mode if unspecified.Running on device:
1
Enter Recovery Mode
Press Esc + Reload + Power. If using the unverified payload, press Ctrl + D to enter developer mode, then re-enter recovery.
2
Plug in the BadRecovery drive
On the “Connect a recovery device” screen, plug in your prepared USB.
3
Follow the payload
On postinst/postinst_sym, BadRecovery runs partway through recovery. On persist/basic, reboot into verified mode first; on basic, proceed through setup to the Add Account screen, then Powerwash.
On Cr50 devices (most 2018 or later), you must not be in developer mode for unenrollment to work — ensure you are in verified mode recovery.
Quicksilver unenrolls Chromebooks running ChromeOS v125–v142 with kernel versions 4 through 6.If your device can boot Sh1mmer (unkeyrolled):
1
Boot Sh1mmer
Boot Sh1mmer (use a version from at least December 15th, 2025).
2
Run Quicksilver payload
Open the payloads menu and run the Quicksilver payload.
3
Complete setup
Go through OOBE setup. You should be unenrolled.
If using a Sh1mmer version from before December 15th, 2025, run the following in the bash shell: vpd -i RW_VPD -s re_enrollment_key="$(openssl rand -hex 32)" (ignore the “unable to write ‘random state’” message).
If your device cannot boot Sh1mmer (keyrolled):
1
Run Sh1ttyExec
Execute Sh1ttyExec for versions below v143.
2
Enable Developer Mode then re-enter Recovery
Enable developer mode, then enter recovery mode again.
3
Boot GoodSilver and deprovision
Boot a GoodSilver image from unenrollment.com/GoodSilver and choose “Deprovision”. After reboot you will be unenrolled.
This unenrollment is persistent on unpatched versions (≤ v142). To re-enroll (if you want to), run vpd -i RW_VPD -d "re_enrollment_key" in any shell.Credits: Emery/emerwyi (discovery), Awen/qorsola, kxtz, crosbreaker, lxrd/SPIRAME
GoodSilver (≤ v142)
GoodSilver is a port of Quicksilver to the BadRecovery exploit, enabling devices that cannot boot Sh1mmer shims (keyrolled devices) to unenroll using the Quicksilver method.
BR1CK was released October 27th, 2024. It exploits an oversight in FWMP (Firmware Management Parameters) creation in the TPM. By EC-resetting at precisely the right moment during enrollment, it corrupts the FWMP TPM space, making the FWMP unreadable and allowing Sh1mmer to unenroll the device.
A leaked shim, USB drive, and another PC to flash it
Preferably access to chrome://network#logs for timing precision
Finding your board name: Go to chrome://version, press Ctrl + F, and search for stable-channel. The word after it is your board name.Finding the reset timing (recommended — with chrome://network#logs):
1
Powerwash and capture logs
Powerwash your device, go to chrome://network#logs, check all options, and upload the combined-logs.tar.gz to the BR1CK website to get your precise timing.
2
Powerwash again and time enrollment
Powerwash, proceed through setup, start a stopwatch when “Enterprise enrollment” appears, and EC-reset (Reload ↻ + Power ⏻) at the timing the website provided.
3
Verify the brick
If you see an error screen (press Tab to confirm the recovery reason mentions a TPM error), proceed. Otherwise, retry — most people succeed within 2–20 attempts.
After bricking — unbricking and unenrolling:
1
Enable Developer Mode and enter Recovery
Press Ctrl + D, then Enter, then Esc + Reload ↻ + Power ⏻.
2
Boot the shim and deprovision
Plug in your shim USB. When Sh1mmer boots, press D for “Deprovision”.
3
Open bash and unbrick via gsctool
Press B for bash shell, then run:
gsctool -a -o
Press the power button whenever it says “Press PP button now!” and wait when it says “Another press will be required”.
4
Re-enter Developer Mode and set up
After rebooting, press Esc + ↻ + ⏻, then Ctrl + D, then Enter. Boot into ChromeOS and begin setup through OOBE.
Dunroll unenrolls Chromebooks on ChromeOS v130 and lower by performing a rollback via Crosh while disconnected from WiFi during the enrollment phase.
1
Powerwash the device
Press Ctrl + Alt + Shift + R on the login screen, or enable and disable developer mode if the shortcut is blocked.
2
Disconnect WiFi at the critical screen
When you reach the update setup screen or the “Please wait / Determining device configuration” screen with the Google logo, disconnect from WiFi and stay disconnected for the rest of the process.
CryptoSmite was found by FWSmasher and released March 9th, 2024. It uses stateful backups to alter the encrypted stateful partition contents and make the device appear unenrolled. It has been patched since ChromeOS v120, and requires a kernver ending in 0, 1, or 2.
Go to Payloads, select CryptoSmite using the arrow keys, and press Enter.
3
Confirm and reboot
Type Y and press Enter. The device reboots automatically.
4
Proceed through setup and Powerwash
Go through setup until the “Add Account” screen. If an update prompt appears, reboot and press Ctrl + Alt + E on the Wi-Fi screen to skip it. At the “Add Account” screen, Powerwash the Chromebook. It will be fully unenrolled.
BadApple (≤ v131, keyrolled devices, disk layout v3)
BadApple provides code execution in developer-mode recovery on keyrolled devices (e.g., nissa). It has the same capabilities as Sh1mmer but with the TPM disabled. Patched around KV4.
Requirements: Disk layout v3 (boards made after 2021); keyrolled board (e.g., nissa).
1
Enter Developer Mode
Press Esc + Refresh + Power then Ctrl + D.
2
Re-enter Recovery from the block screen
When you reach the developer mode block screen, press Esc + Refresh + Power again.
3
Select Internet Recovery
Choose Internet Recovery from the advanced options.
4
Open VT3 shell
When miniOS loads, press Ctrl + Alt + F3 to open the VT3 shell. If the screen is blank, try Internet Recovery (old) instead.
5
Run exploits from the shell
You now have a shell. You can run CryptoSmite, Icarus, or DAUB from here.
Why this works: When developer mode is enabled, cros_debug is set to 1 in crossystem. Google forgot that the recovery initramfs should always be trusted regardless. miniOS opens a VT3 shell when cros_debug == 1, giving shell access while enrolled.Credits: appleflyer, Titanium Network
CRSH2TTY (Patched — No Longer Works)
CRSH2TTY was a USB-less universal unenrollment exploit that worked on any version/kernver. It has been confirmed to no longer work.How it worked: By powerwashing, proceeding through enrollment, restarting at specific times during enrollment, then leaving the device off for at least 15 hours, roughly 20% of attempts would result in an unenrolled state.This exploit is documented here for historical reference only.
E-Halcyon (via RecoMod) provides a semi-tethered unenrolled ChromeOS environment. After setup, the device boots into a downgraded and unenrolled ChromeOS, but requires the USB to be present each boot to jumpstart the process. History/cookies do not persist across reboots due to cryptohome restrictions.
Flash the modified image to USB. Enable developer mode and reach the dev mode block screen, then plug in the USB. Spam the E key — a 5-minute wait begins. Spam E again near the end of those 5 minutes. (Only needed once; subsequent boots skip this wait.)
3
Activate Halcyon
In the boot menu, navigate to “activate halcyon environment” and press Enter. Then select “Install halcyon semi-tethered” and wait. After completion, go back and select “Boot halcyon semi-tethered” to boot into the unenrolled environment.
Credits: CoolElectronics (RecoMod), OlyB, vk6
Icarus (any version, self-hosted only)
Icarus unenrolls devices through device management interception using a proxy and a custom Certificate Authority. It intercepts ChromeOS enrollment traffic at the network level.
NEVER use a public IP address or public server for Icarus. Anything Google can remotely perform on your device (install extensions, spy, use your camera, remote in, get your passwords) can also be done by whoever controls the Icarus proxy. Only self-host Icarus on a server you fully control.
Before continuing, open Chrome on your build machine, go to chrome://components, find PKIMetadata, and click “Check for Updates”. Ensure it shows as up-to-date with a version below 2000. Then:
Boot the shim. Then start your proxy server with make start-server. Reboot the device, open network configuration, set your proxy to Manual, set the HTTPS IP to your server IP, and resume setup. The device will unenroll.Credits: MunyDev, Archimax, r58Playz, Akane
HWID Method (WP off required, ≤ v129)
The HWID method provides persistent and easy toggling between unenrolled and enrolled states by setting a malformed HWID, preventing the device from completing enrollment normally.Requirements: Hardware write protection must be disabled first. See Disable Hardware Write Protect.
1
Disable write protection
Disable hardware WP (see the Hardware Write Protect guide). You must be unenrolled or have FWMP off with developer mode on.
2
Set a malformed HWID
Change your HWID to a malformed one (e.g., append -DEV to your existing HWID). Use the MrChromebox payload in Sh1mmer if you need a GUI, or use manual commands. Set GBB flags for developer mode as well.
3
Recover to any image
Flash and recover to any ChromeOS recovery image.
4
Handle the factory error
The device will show a “factory error malformed HWID” screen — press Skip. There should be no “Get Started” screen at this point. Connect to WiFi and log in with your personal account.
5
Re-trigger OOBE
Sign out with Ctrl + Shift + Q + Q. You will be placed on a “Get Started” screen. Go through OOBE — after pressing Continue on WiFi, the device will attempt to enroll but fail. EC-reset (Refresh + Power). You should land on the personal account sign-in screen.
To re-enroll, Powerwash and choose enterprise enrollment at the account screen instead of your personal account. Revert your HWID before returning the device to school.Credits: Titanium Network
The Pencil Method unenrolls by physically bridging pins on the flash chip to disable hardware write protection, then running commands to remove FWMP. Created by Darkn.
This can harm your Chromebook if done incorrectly. Physical hardware modification required. Proceed entirely at your own risk.
Requirements: Conductive material (staple, tin foil, paperclip), scissors, tape (optional), Sh1mmer USB, screwdriver.
1
Dismantle and bridge pins
Remove screws from the bottom of your Chromebook and disconnect the battery. Locate the 8-pin flash chip on the motherboard (typically Winbond or GigaDevice branding, labelled 25Q64xx or 25Q128xx). Bridge pin 3 (WP) to pin 8 (VCC) using your conductive material. Optionally tape it in place, then reconnect the battery.
2
Boot Sh1mmer and run commands
Boot into Sh1mmer. Navigate to Utilities → Un-Enroll Device (required even if it fails). Then go to Open Bash and run:
If these commands fail, the pins are not bridged correctly.
3
Reboot and enter VT2
Press Refresh ↻ + Power ⏻ to reboot. Press Ctrl + D to bypass the OS verification screen and boot into ChromeOS. Then press Ctrl + Alt + F2 to enter VT2 and log in as root.
De-Enterprise unenrolls by physically replacing the storage chip (which contains enrollment data) with a new identical chip. The new chip contains no enrollment information, so the device boots as unenrolled.
You must be willing to disassemble your Chromebook. Incorrect handling of internal components can cause permanent damage.
1
Open your Chromebook
Disassemble the Chromebook to access the motherboard.
2
Identify the storage chip
Check the brand and model of the drive chip (the chip responsible for storing enrollment data). Note the exact model number.
3
Purchase an identical chip
Find and purchase the exact same chip online. It must be an exact match.
4
Swap the chip
Remove the old chip and install the new one.
5
Power on
Turn on the Chromebook. It should be unenrolled. To re-enroll later, swap the old chip back in.
FORGE (Firmware Overwrite and Reflash for Google Equipment) is an intentional exploit for unenrolling KV7+ keyrolled CR50 devices using a CH341A programmer.
Only do this if: Your device is on KV7 or higher and is a keyrolled CR50 device.Do not do this if: You are on a KV6 or lower (use Quicksilver or the Pencil Method instead), or the device is not yours.Requirements: CH341A programmer.
If your Chromebook gets bricked using FORGE, it is entirely your fault. Requires a CH341A programmer and comfort with hardware flashing.
After unenrolling, ChromeOS may automatically re-enroll on the next setup. The method to prevent this varies by version. See the full version-specific commands in the Developer Mode guide.