# How to Make Chrome Extensions Unremovable on Windows and macOS Using Enterprise Policy

---

In controlled environments — like schools, businesses, parental supervision, or kiosk systems — administrators may want to enforce a Chrome extension so that it cannot be removed by the user. Google Chrome provides built-in enterprise features to support this via Windows Registry (on Windows) and Managed Preferences (on macOS).

This guide walks you through how to lock an extension to Chrome on both platforms using official enterprise mechanisms.

### **What Does “Unremovable” Mean?**

When an extension is force-installed by policy:

* It shows up as “Installed by enterprise policy” at `chrome://extensions`.
    
* The "Remove" button is disabled.
    
* Users cannot uninstall or disable it.
    
* Policy is managed at the system level (admin only).
    

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1750159341682/eadc9a22-0ddd-4ffe-a6ff-8066941fee12.jpeg align="left")

### **Windows — Use the Registry**

#### **Step-by-Step**

1. Open Registry Editor
    
    Press Win + R, type regedit, and hit Enter.
    
2. **Navigate to One of These Paths**:
    

| Scope | Registry Path |
| --- | --- |
| All users | `HKEY_LOCAL_MACHINE\Software\Policies\Google\Chrome\ExtensionInstallForcelist` |
| Current user | `HKEY_CURRENT_USER\Software\Policies\Google\Chrome\ExtensionInstallForcelist` |

1. **Add a New String Value:**
    
    * **Name:** `1` (or any number)
        
    * **Value:** `<EXTENSION_ID>;`[`https://clients2.google.com/service/update2/crx`](https://clients2.google.com/service/update2/crx)
        
    
    Example:
    
    gogbiohkminacikoppmljeolgccpmlop;[https://clients2.google.com/service/update2/crx](https://clients2.google.com/service/update2/crx)
    
    ![](https://cdn.hashnode.com/res/hashnode/image/upload/v1750154636049/48c4e726-e12d-4a5c-8c40-f996845dbb6e.png align="center")
    
2. Restart Chrome
    
    Visit chrome://policy and click "Reload policies".
    

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1750154724967/15a5cd4a-78a9-42f9-ab4a-1d9d3317d116.png align="center")

### **macOS — Use a Managed Preferences .plist**

#### **Step-by-Step**

1. **Open Terminal and run:**
    
    **Bash**
    
    ```plaintext
    sudo mkdir -p "/Library/Managed Preferences"
    sudo nano "/Library/Managed Preferences/com.google.Chrome.plist"
    ```
    
2. **Paste the Following XML (replace extension ID):**
    
    **XML**
    
    ```plaintext
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
     "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
        <key>ExtensionInstallForcelist</key>
        <array>
            <string>mcjjniagopehibibgdeifbdedcgmdndp;https://clients2.google.com/service/update2/crx</string>
        </array>
    </dict>
    </plist>
    ```
    
3. **Save and Exit:**
    
    * `Ctrl + O` → `Enter`
        
    * `Ctrl + X` → `Exit`
        
4. Restart Chrome & Reload Policy:
    
    Visit chrome://policy and click "Reload policies".
    

### **How to Verify It's Working**

Go to `chrome://extensions`. Your extension should appear with:

* "Installed by enterprise policy"
    
* No "Remove" button
    

Additionally, `chrome://policy` will show it under `ExtensionInstallForcelist`.

### **How to Remove the Lock (if needed)**

#### **Windows:**

1. Open `regedit`.
    
2. Delete the string from: `HKEY_LOCAL_MACHINE\Software\Policies\Google\Chrome\ExtensionInstallForcelist`
    

#### **macOS:**

1. Run the following commands in Terminal: **Bash**
    
    ```plaintext
    sudo rm "/Library/Managed Preferences/com.google.Chrome.plist"
    rm -rf ~/Library/Application\ Support/Google/Chrome/Policy
    rm ~/Library/Application\ Support/Google/Chrome/Local\ State
    ```
    
2. Then restart Chrome.
    

**Important Notes**: You must have administrator or root access to apply or remove these policies, and any extension you use must be hosted on the Chrome Web Store or supplied with a valid update.xml and .crx file; otherwise, Chrome will treat the extension as invalid—such as when the manifest is missing or the .crx is corrupted—and display a “Blocked by administrator” error.

---
