# Chrome Extension on Mac

> Install the UiPath Extension for Chrome on Mac for browser automation, with options for user-level or machine-wide installation.

This extension helps you create browser automations in Google Chrome on Mac.

## Install
You can install the Chrome extension using one of the following methods:
* [Current User](#current-user)
* [All Users](#all-users)
* [Group Policy Online](#group-policy-online)
* [Group Policy Offline](#group-policy-offline)
* [Current User (Native Messaging Host only)](#current-user-native-messaging-host-only)
* [All Users (Native Messaging Host only)](#all-users-native-messaging-host-only)

Installs can be performed using **UiPath Assistant** or from Terminal (invoking **UiPath.ExtensionControl.Portable.dll**).

**UiPath Assistant** and **UiPath.ExtensionControl.Portable.dll** install the latest extension version, as follows:
| Install type | Extension version |
|---|---|
| [Current User](#current-user) | Latest UiPath extension for Studio Web published on the Chrome WebStore. |
| [All Users](#all-users) | Latest UiPath extension for Studio Web published on the Chrome WebStore. |
| [Group Policy Online](#group-policy-online) | Latest UiPath extension for Studio Web published on the Chrome WebStore. |
| [Group Policy Offline](#group-policy-offline) | Latest self-hosted extension bundled with **UiPath Assistant**. |
| [Current User (Native Messaging Host only)](#current-user-native-messaging-host-only) | Latest UiPath extension for Studio Web published on the Chrome WebStore. |
| [All Users (Native Messaging Host only)](#all-users-native-messaging-host-only) | Latest UiPath extension for Studio Web published on the Chrome WebStore. |

You can also use `UiPath.ExtensionControl.Portable.dll` to install a specific browser extension version. Run it with the `help` command for details:
   ```bash
   dotnet /Applications/UiPath\ Assistant.app/Contents/Extensions/UiPath.ExtensionControl.Portable.dll help install chrome
   ```

### Current User
This method installs the extension only for the current user. It creates or updates the JSON configuration files used by Chrome to detect extensions. These files define the extension ID, update URL, and the path to the native messaging host.

#### A. Install Steps using UiPath Assistant
1. Access **UiPath Assistant**.
2. Select the account icon.
3. Select **Preferences**.
4. Go to **UiPath Extensions**.
5. Use the dropdown for **Google Chrome** to select the **Current User** install type.

   ![UiPath Assistant UiPath Extensions settings showing dropdown with install methods for Google Chrome](https://dev-assets.cms.uipath.com/assets/images/studio/AssistantInstallCurrentUser-38e466dd.png)

6. Select **Install**.
7. Select **Enable Extension** in the Google Chrome confirmation pop-up.

   ![Google Chrome Enable Extension confirmation pop-up](https://dev-assets.cms.uipath.com/assets/images/studio/studio-docs-image-171660-1870d722.webp)

**Result:**  The extension is installed and enabled.

#### B. Install Steps using UiPath.ExtensionControl.Portable.dll (from the Terminal)

**Prerequisites:**
* Always run the command using the `UiPath.ExtensionControl.Portable.dll` file from the `/Applications` directory, as macOS is sensitive when it comes to executing binaries from other locations.
* Close all Chrome windows before running the command.

1. Open a Terminal and run the following command:

   ```bash
   dotnet /Applications/UiPath\ Assistant.app/Contents/Extensions/UiPath.ExtensionControl.Portable.dll install chrome
   ```

2. Select **Enable Extension** in the Google Chrome confirmation pop-up.

   ![Google Chrome Enable Extension confirmation pop-up](https://dev-assets.cms.uipath.com/assets/images/studio/studio-docs-image-171660-1870d722.webp)

**Result:**  The extension is installed and enabled.

:::note
Add the `--ext-id={extensionId}` option to target a specific extension version; if omitted, the latest version published to the Web Store is installed. For available IDs, see [Studio - List of extensions for Chrome](https://docs.uipath.com/studio/standalone/latest/user-guide/chrome-extensions).
:::

### All Users

This method installs the extension for all users on the machine. It works similarly to the [Current User](#current-user) method by creating or updating the JSON configuration files that Chrome uses to detect extensions. The difference lies in the file location: this method writes the configuration files to a system-wide location, whereas the **Current User** method writes them to a user-specific location.

#### A. Install Steps using UiPath Assistant
1. Access **UiPath Assistant**.
2. Select the account icon.
3. Select **Preferences**.
4. Go to **UiPath Extensions**.
5. Use the dropdown for **Google Chrome** to select the **All Users** install type.

   ![UiPath Assistant UiPath Extensions settings showing dropdown with install methods for Google Chrome](https://dev-assets.cms.uipath.com/assets/images/studio/AssistantInstallAllUsers-33277196.png)

6. Select **Install**.
7. Enter the admin password in the **UiPath Assistant** confirmation pop-up.

   ![UiPath Assistant showing admin rights popup](https://dev-assets.cms.uipath.com/assets/images/studio/AssistantAdminPasswordPopup-8320f096.png)

8. Select **Enable Extension** in the Google Chrome confirmation pop-up.

   ![Google Chrome Enable Extension confirmation pop-up](https://dev-assets.cms.uipath.com/assets/images/studio/studio-docs-image-171660-1870d722.webp)

**Result:**  The extension is installed and enabled.

#### B. Install Steps using UiPath.ExtensionControl.Portable.dll (from the Terminal)

**Prerequisites:**
* Always run the command using the `UiPath.ExtensionControl.Portable.dll` file from the `/Applications` directory, as macOS is sensitive when it comes to executing binaries from other locations.
* Close all Chrome windows before running the command.

1. Open a Terminal and run the following command:

   ```bash
   sudo dotnet /Applications/UiPath\ Assistant.app/Contents/Extensions/UiPath.ExtensionControl.Portable.dll install chrome --scope=machine
   ```

2. Select **Enable Extension** in the Google Chrome confirmation pop-up.

   ![Google Chrome Enable Extension confirmation pop-up](https://dev-assets.cms.uipath.com/assets/images/studio/studio-docs-image-171660-1870d722.webp)

**Result:**  The extension is installed and enabled.

:::note
* `sudo` is needed to run this command, as it updates system configuration files.
* Add the `--ext-id={extensionId}` option to target a specific extension version; if omitted, the latest version published to the Web Store is installed. For available IDs, see [Studio - List of extensions for Chrome](https://docs.uipath.com/studio/standalone/latest/user-guide/chrome-extensions).
:::

### Group Policy Online

This method doesn't require the manual step to enable the extension after Chrome is first started. This is because it relies on Configuration profiles deployed by MDM (Mobile Device Management) tools.

The Configuration profile sets the [ExtensionInstallForcelist](https://chromeenterprise.google/policies/#ExtensionInstallForcelist) policy. This policy ensures that the extension is enabled and that it can't be disabled manually.

This procedure is similar to the Windows Group Policy Online installation method described here: [Studio - Extension for Chrome](https://docs.uipath.com/studio/standalone/latest/user-guide/extension-for-chrome#online).

#### MDM requirements

To install a Configuration profile (a `.mobileconfig` file) an MDM application should be present on the machine, and the machine has to be enrolled to be managed.

Examples of MDMs include:

- [Jamf](https://www.jamf.com/)
- [Microsoft Intune](https://www.microsoft.com/en-us/security/business/microsoft-intune)
- [Kandji](https://www.kandji.io/)
- [MicroMDM](https://micromdm.io/) (open-source)

If the device is enrolled in an MDM solution, ensure that the configuration is not overridden by the Configuration updates pushed via MDM. To prevent this, deploy the Configuration profile directly via MDM. The profile should contain settings similar to the example below:

```xml
<?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>PayloadContent</key>
	<array>
		<dict>
			<!-- This policy ensures that the {extensionId} is enabled -->
			<key>ExtensionInstallForcelist</key>
			<array>
				<string>{extensionId};https://clients2.google.com/service/update2/crx</string>
			</array>
			<!-- These policies specifically enable the Developer mode for {extensionId} -->
			<key>DeveloperToolsAvailabilityAllowlist</key>
			<array>
				<string>chrome-extension://{extensionId}</string>
			</array>
			<key>DeveloperToolsAvailabilityBlocklist</key>
			<array>
				<string>https://uipath-devtools-blocklist-placeholder.invalid</string>
			</array>
			<!-- Alternatively, this policy globally enables the Developer mode in chrome://extensions.
			Can be used in place of DeveloperToolsAvailabilityAllowlist / DeveloperToolsAvailabilityBlocklist -->
			<key>DeveloperToolsAvailability</key>
			<integer>1</integer>

			<!-- The policies below are not mandatory, but they are useful in some systems, 
			depending on the already present configuration -->
			<key>BlockExternalExtensions</key>
			<false/>
			
			<key>ExtensionAllowedTypes</key>
			<array>
				<string>extension</string>
			</array>
			
			<key>NativeMessagingUserLevelHosts</key>
			<true/>
			
			<key>NativeMessagingAllowlist</key>
			<array>
				<string>com.uipath.portable_host</string>
			</array>
			
			<key>PayloadDisplayName</key>
			<string>Google Chrome</string>
			<key>PayloadIdentifier</key>
			<string>com.google.Chrome.2C2280F4-2955-49E9-8161-A599B9BB6685</string>
			<key>PayloadType</key>
			<string>com.google.Chrome</string>
			<key>PayloadUUID</key>
			<string>2C2280F4-2955-49E9-8161-A599B9BB6685</string>
			<key>PayloadVersion</key>
			<integer>1</integer>
		</dict>
	</array>
	<key>PayloadDisplayName</key>
	<string>UiPath Studio Web Automation Chrome Extension Installation</string>
	<key>PayloadIdentifier</key>
	<string>com.uipath.chrome.extension.A64BC628-4ECF-4A71-91D5-20D7C7475C38</string>
	<key>PayloadOrganization</key>
	<string>com.uipath</string>
	<key>PayloadScope</key>
	<string>System</string>
	<key>PayloadType</key>
	<string>Configuration</string>
	<key>PayloadUUID</key>
	<string>A64BC628-4ECF-4A71-91D5-20D7C7475C38</string>
	<key>PayloadVersion</key>
	<integer>1</integer>
	<key>TargetDeviceType</key>
	<integer>5</integer>
</dict>
</plist>
```

If the device is not enrolled in an MDM solution, the required configuration files are written locally, without them being overridden by MDM-applied policies. This allows Chrome to apply the policy and ensures that the extension is enabled without requiring user interaction.

#### A. Install Steps using UiPath Assistant
1. Access **UiPath Assistant**.
2. Select the account icon.
3. Select **Preferences**.
4. Go to **UiPath Extensions**.
5. Use the dropdown for **Google Chrome** to select the **By Policy** install type.

   ![UiPath Assistant UiPath Extensions settings showing dropdown with install methods for Google Chrome](https://dev-assets.cms.uipath.com/assets/images/studio/AssistantInstallByPolicy-04335eaa.png)

6. Select **Install**.
7. Enter the admin password in the **UiPath Assistant** confirmation pop-up.

   ![UiPath Assistant showing admin rights popup](https://dev-assets.cms.uipath.com/assets/images/studio/AssistantAdminPasswordPopup-8320f096.png)

**Result:**  The extension is installed and enabled.

#### B. Install Steps using UiPath.ExtensionControl.Portable.dll (from the Terminal)

**Prerequisites:**
* Always run the command using the `UiPath.ExtensionControl.Portable.dll` file from the `/Applications` directory, as macOS is sensitive when it comes to executing binaries from other locations.
* Close all Chrome windows before running the command.
* To install for the current user only instead of all users, replace `--scope=machine` with `--scope=user` in the command below; other users won't get the extension installed.

:::warning
If the machine is MDM-enrolled you need to make sure that the policies are not overwritten. See the [MDM Requirements](#mdm-requirements) for more details.
:::

1. Open a Terminal and run the following command:

   ```bash
   sudo dotnet /Applications/UiPath\ Assistant.app/Contents/Extensions/UiPath.ExtensionControl.Portable.dll install chrome bypolicy --scope=machine
   ```

**Result:**  The extension is installed and enabled.

:::note
* `sudo` is needed to run this command, as it updates system configuration files, and the `bypolicy` option automatically sets the scope to machine.
* Add the `--ext-id={extensionId}` option to target a specific extension version; if omitted, the latest version published to the Web Store is installed. See [Studio - List of extensions for Chrome](https://docs.uipath.com/studio/standalone/latest/user-guide/chrome-extensions) for available IDs.
:::

### Group Policy Offline

This procedure is similar to the Windows Group Policy Offline installation method described here: [Studio - Extension for Chrome](https://docs.uipath.com/studio/standalone/latest/user-guide/extension-for-chrome#offline).

This method relies on Configuration profiles deployed by MDM (Mobile Device Management) tools. The Configuration profile applies the [ExtensionInstallForcelist](https://chromeenterprise.google/policies/#ExtensionInstallForcelist) policy, which ensures that the extension is automatically enabled and cannot be disabled by users. It also configures the [DeveloperToolsAvailabilityAllowlist](https://chromeenterprise.google/policies/developer-tools-availability-allowlist/) / [DeveloperToolsAvailabilityBlocklist](https://chromeenterprise.google/policies/developer-tools-availability-blocklist/) policies to specifically allow Developer Tools access to UiPath extension.

This method:
- Lets you install any extension, whether published to Web Store or unpublished.
- Is useful in environments with restricted Internet access (where `https://clients2.google.com/service/update2/crx` cannot be accessed).

:::warning
* This method only works on machines that are MDM enrolled. See the [MDM Requirements](#mdm-requirements) for more details.
:::

#### A. Install Steps using UiPath Assistant
1. Access **UiPath Assistant**.
2. Select the account icon.
3. Select **Preferences**.
4. Go to **UiPath Extensions**.
5. Use the dropdown for **Google Chrome** to select the **By Policy (Offline)** install type.

   ![UiPath Assistant UiPath Extensions settings showing dropdown with install methods for Google Chrome](https://dev-assets.cms.uipath.com/assets/images/studio/AssistantInstallByPolicyOffline-41f27850.png)

6. Select **Install**.
7. Enter the admin password in the **UiPath Assistant** confirmation pop-up.

   ![UiPath Assistant showing admin rights popup](https://dev-assets.cms.uipath.com/assets/images/studio/AssistantAdminPasswordPopup-8320f096.png)

**Result:**  The extension is installed and enabled.

#### B. Install Steps using UiPath.ExtensionControl.Portable.dll (from the Terminal)

**Prerequisites:**
* Always run the command using the `UiPath.ExtensionControl.Portable.dll` file from the `/Applications` directory, as macOS is sensitive when it comes to executing binaries from other locations.
* Close all Chrome windows before running the command.
* To install for the current user only instead of all users, add `--scope=user` to the command below; by default, the `bypolicy` option sets the scope to machine.

1. Open a Terminal and run the following command:

   ```bash
   sudo dotnet /Applications/UiPath\ Assistant.app/Contents/Extensions/UiPath.ExtensionControl.Portable.dll install chrome bypolicy --offline
   ```

2. Start Chrome.
3. Design and run automations.

**Result:**  The extension is installed and enabled.

:::note
`sudo` is needed to run this command, as it updates system configuration files. Using the `bypolicy` option automatically sets the scope to machine.
:::

### Current User (Native Messaging Host only)
This method installs only the extension's Native Messaging Host component for the current user. It creates or updates the JSON configuration files used by Chrome to allow communication with a native host.

:::warning
The [extension](https://docs.uipath.com/studio/standalone/latest/user-guide/chrome-extensions) needs to be installed manually from the WebStore or via a MDM configuration. See the [MDM Requirements](#mdm-requirements) for more details.
:::

#### A. Install Steps using UiPath Assistant
1. Access **UiPath Assistant**.
2. Select the account icon.
3. Select **Preferences**.
4. Go to **UiPath Extensions**.
5. Use the dropdown for **Google Chrome** to select the **Current User (Native Messaging Host only)** install type.

   ![UiPath Assistant UiPath Extensions settings showing dropdown with install methods for Google Chrome](https://dev-assets.cms.uipath.com/assets/images/studio/AssistantInstallCurrentUserNmh-98f47f13.png)

6. Select **Install**.

**Result:**  The extension's native messaging host component is installed.

#### B. Install Steps using UiPath.ExtensionControl.Portable.dll (from the Terminal)

**Prerequisites:**
* Always run the command using the `UiPath.ExtensionControl.Portable.dll` file from the `/Applications` directory, as macOS is sensitive when it comes to executing binaries from other locations.
* Close all Chrome windows before running the command.

1. Open a Terminal and run the following command:

   ```bash
   dotnet /Applications/UiPath\ Assistant.app/Contents/Extensions/UiPath.ExtensionControl.Portable.dll install chrome native-messaging-host-only
   ```

**Result:**  The extension's native messaging host component is installed.

:::note
Add the `--ext-id={extensionId}` option to target a specific extension version; if omitted, the latest version published to the Web Store is installed. For available IDs, see [Studio - List of extensions for Chrome](https://docs.uipath.com/studio/standalone/latest/user-guide/chrome-extensions).
:::

### All Users (Native Messaging Host only)
This method installs only the extension's Native Messaging Host component for all users. It creates or updates the JSON configuration files used by Chrome to allow communication with a native host.

:::warning
The [extension](https://docs.uipath.com/studio/standalone/latest/user-guide/chrome-extensions) needs to be installed manually from the WebStore or via a MDM configuration. See the [MDM Requirements](#mdm-requirements) for more details.
:::

#### A. Install Steps using UiPath Assistant
1. Access **UiPath Assistant**.
2. Select the account icon.
3. Select **Preferences**.
4. Go to **UiPath Extensions**.
5. Use the dropdown for **Google Chrome** to select the **All Users (Native Messaging Host only)** install type.

   ![UiPath Assistant UiPath Extensions settings showing dropdown with install methods for Google Chrome](https://dev-assets.cms.uipath.com/assets/images/studio/AssistantInstallAllUsersNmh-de7d1f14.png)

6. Select **Install**.
7. Enter the admin password in the **UiPath Assistant** confirmation pop-up.

   ![UiPath Assistant showing admin rights popup](https://dev-assets.cms.uipath.com/assets/images/studio/AssistantAdminPasswordPopup-8320f096.png)

**Result:**  The extension's native messaging host component is installed.

#### B. Install Steps using UiPath.ExtensionControl.Portable.dll (from the Terminal)

**Prerequisites:**
* Always run the command using the `UiPath.ExtensionControl.Portable.dll` file from the `/Applications` directory, as macOS is sensitive when it comes to executing binaries from other locations.
* Close all Chrome windows before running the command.

1. Open a Terminal and run the following command:

   ```bash
   dotnet /Applications/UiPath\ Assistant.app/Contents/Extensions/UiPath.ExtensionControl.Portable.dll install chrome native-messaging-host-only --scope=machine
   ```

**Result:**  The extension's native messaging host component is installed.

:::note
Add the `--ext-id={extensionId}` option to target a specific extension version; if omitted, the latest version published to the Web Store is installed. For available IDs, see [Studio - List of extensions for Chrome](https://docs.uipath.com/studio/standalone/latest/user-guide/chrome-extensions).
:::

## Uninstall

### Uninstall from UiPath Assistant

1. Access **UiPath Assistant**.
2. Go to **UiPath Extensions**.
3. Select **Uninstall** for **Google Chrome**.

   ![UiPath Assistant UiPath Extensions settings showing Uninstall button for Google Chrome](https://dev-assets.cms.uipath.com/assets/images/studio/AssistantUninstall-2a096c10.png)

**Result:**  The extension is uninstalled.

### Uninstall from Terminal

You can uninstall the UiPath extension for Chrome, regardless of the installation method, by running the following command:

```bash
dotnet UiPath.ExtensionControl.Portable.dll cleanup chrome
```

**Result:**  The extension is uninstalled.

## Check status

To check the status of the Chrome Extension, run the corresponding Terminal command based on your installation method:

* Current User
   ```bash
   dotnet UiPath.ExtensionControl.Portable.dll status chrome
   ```
* All Users
   ```bash
   dotnet UiPath.ExtensionControl.Portable.dll status chrome --scope=machine
   ```
* Group Policy Online
   ```bash
   dotnet UiPath.ExtensionControl.Portable.dll status chrome bypolicy --scope=machine
   ```
* Group Policy Offline
   ```bash
   dotnet UiPath.ExtensionControl.Portable.dll status chrome bypolicy --offline --scope=machine
   ```
* Current User (Native Messaging Host only)
   ```bash
   dotnet UiPath.ExtensionControl.Portable.dll status chrome native-messaging-host-only
   ```
* All Users (Native Messaging Host only)
   ```bash
   dotnet UiPath.ExtensionControl.Portable.dll status chrome native-messaging-host-only --scope=machine
   ```
