- Getting Started
- Setup and Configuration
- Automation Projects
- Dependencies
- Types of Workflows
- Control Flow
- File Comparison
- Automation Best Practices
- Source Control Integration
- Debugging
- Logging
- The Diagnostic Tool
- Workflow Analyzer
- About Workflow Analyzer
- ST-NMG-001 - Variables Naming Convention
- ST-NMG-002 - Arguments Naming Convention
- ST-NMG-004 - Display Name Duplication
- ST-NMG-005 - Variable Overrides Variable
- ST-NMG-006 - Variable Overrides Argument
- ST-NMG-008 - Variable Length Exceeded
- ST-NMG-009 - Prefix Datatable Variables
- ST-NMG-011 - Prefix Datatable Arguments
- ST-NMG-012 - Argument Default Values
- ST-NMG-016 - Argument Length Exceeded
- ST-NMG-017 - Class name matches default namespace
- ST-DBP-002 - High Arguments Count
- ST-DBP-003 - Empty Catch Block
- ST-DBP-007 - Multiple Flowchart Layers
- ST-DPB-010 - Multiple instances of [Workflow] or [Test Case]
- ST-DBP-020 - Undefined Output Properties
- ST-DBP-021 - Hardcoded Timeout
- ST-DBP-023 - Empty Workflow
- ST-DBP-024 - Persistence Activity Check
- ST-DBP-025 - Variables Serialization Prerequisite
- ST-DBP-027 - Persistence Best Practice
- ST-DBP-028 - Arguments Serialization Prerequisite
- ST-USG-005 - Hardcoded Activity Properties
- ST-USG-009 - Unused Variables
- ST-USG-010 - Unused Dependencies
- ST-USG-014 - Package Restrictions
- ST-USG-017 - Invalid parameter modifier
- ST-USG-020 - Minimum Log Messages
- ST-USG-024 - Unused Saved for Later
- ST-USG-025 - Saved Value Misuse
- ST-USG-026 - Activity Restrictions
- ST-USG-027 - Required Packages
- ST-USG-028 - Restrict Invoke File Templates
- ST-USG-032 - Required Tags
- ST-USG-034 - Automation Hub URL
- Variables
- Arguments
- Imported Namespaces
- Coded automations
- Introduction
- Registering custom services
- Before and After contexts
- Generating code
- Generating coded test case from manual test cases
- Troubleshooting
- Trigger-based Attended Automation
- Object Repository
- The ScreenScrapeJavaSupport Tool
- Extensions
- About extensions
- SetupExtensions tool
- UiPathRemoteRuntime.exe is not running in the remote session
- UiPath Remote Runtime blocks Citrix session from being closed
- UiPath Remote Runtime causes memory leak
- UiPath.UIAutomation.Activities package and UiPath Remote Runtime versions mismatch
- The required UiPath extension is not installed on the remote machine
- Screen resolution settings
- Group Policies
- Cannot communicate with the browser
- Chrome extension is removed automatically
- The extension may have been corrupted
- Check if the extension for Chrome is installed and enabled
- Check if ChromeNativeMessaging.exe is running
- Check if ComSpec variable is defined correctly
- Enable access to file URLs and Incognito mode
- Multiple browser profiles
- Group Policy conflict
- Known issues specific to MV3 extensions
- List of extensions for Chrome
- Chrome Extension on Mac
- Group Policies
- Cannot communicate with the browser
- Edge extension is removed automatically
- The extension may have been corrupted
- Check if the Extension for Microsoft Edge is installed and enabled
- Check if ChromeNativeMessaging.exe is running
- Check if ComSpec variable is defined correctly
- Enable access to file URLs and InPrivate mode
- Multiple browser profiles
- Group Policy conflict
- Known issues specific to MV3 extensions
- List of extensions for Edge
- Extension for Safari
- Extension for VMware Horizon
- Extension for Amazon WorkSpaces
- SAP Solution Manager plugin
- Excel Add-in
- Studio testing
- Troubleshooting
- About troubleshooting
- Assembly compilation errors
- Microsoft App-V support and limitations
- Internet Explorer X64 troubleshooting
- Microsoft Office issues
- Identifying UI elements in PDF with Accessibility options
- Repairing Active Accessibility support
- Validation of large Windows-legacy projects takes longer than expected
Studio user guide
This extension helps you create browser automations in Google Chrome on Mac.
Installation methods
The UiPath extension for Chrome can be installed in several ways, depending on how much user interaction is permitted.
Extensions can be installed either for a specific user or per machine (for all users). The only difference between these two installation types is the location of the configuration files.
| Install type | Configuration files locations |
|---|---|
| Per user | ~{userId}/Library/Application Support/Google/Chrome/External Extensions/~{userId}/Library/Application Support/Google/Chrome/NativeMessagingHosts/Replace {userId} with the username of the user. |
| Per machine | /Library/Application Support/Google/Chrome/External Extensions//Library/Google/Chrome/NativeMessagingHosts/ |
Install from UiPath Assistant
Installation using UiPath Assistant requires only a few clicks, with no additional configuration, as long as UiPath Assistant is already installed. This method installs the latest extension version published to the Web Store for the current user only.
-
Access UiPath Assistant.
-
Select the account icon.
-
Select Preferences.
-
Go to UiPath Extensions.
-
Select Install for Google Chrome.

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

Result: The extension is installed and enabled.
Install from Terminal (via UiPath.ExtensionControl.Portable.dll)
UiPath provides a tool for managing extension installation: UiPath.ExtensionControl.Portable.dll. This tool is distributed with UiPath Assistant, along with the additional files required to run the extension.
Prerequisites:
- Always run the command using the
UiPath.ExtensionControl.Portable.dllfile from the/Applicationsdirectory, as macOS is sensitive when it comes to executing binaries from other locations. - Close all Chrome windows before running the command.
You can use one of the following installation methods:
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.
- Add the
--ext-id={extensionId}option to target a specific extension version. Replace{extensionId}with the ID of the desired extension. For a list of available IDs, see Studio - List of extensions for Chrome. - The
--ext-id={extensionId}part of the command is optional. If omitted, the latest version of the extension published to the Web Store is installed.
Install Steps
-
Open a Terminal and run the following command:
dotnet /Applications/UiPath\ Assistant.app/Contents/Extensions/UiPath.ExtensionControl.Portable.dll install chromedotnet /Applications/UiPath\ Assistant.app/Contents/Extensions/UiPath.ExtensionControl.Portable.dll install chrome -
Select Enable Extension in the Google Chrome confirmation pop-up.

Result: The extension is installed and enabled.
All Users
This method installs the extension for all users on the machine. It works similarly to the 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.
sudois needed to run this command, as it updates system configuration files.- Add the
--ext-id={extensionId}option to target a specific extension version. Replace{extensionId}with the ID of the desired extension. For a list of available IDs, see Studio - List of extensions for Chrome. - The
--ext-id={extensionId}part of the command is optional. If omitted, the latest version of the extension published to the Web Store is installed.
Install Steps
-
Open a Terminal and run the following command:
sudo dotnet /Applications/UiPath\ Assistant.app/Contents/Extensions/UiPath.ExtensionControl.Portable.dll install chrome --scope=machinesudo dotnet /Applications/UiPath\ Assistant.app/Contents/Extensions/UiPath.ExtensionControl.Portable.dll install chrome --scope=machine -
Select Enable Extension in the Google Chrome confirmation pop-up.

Result: The extension is installed and enabled.
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 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.
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
- Microsoft Intune
- Kandji
- MicroMDM (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 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>
<!-- The policies below are not mandatory, but they are useful in some systems,
depending on the already present configuration -->
<!-- This policy enables the Developer mode in chrome://extensions -->
<key>DeveloperToolsAvailability</key>
<integer>1</integer>
<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>
<?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>
<!-- The policies below are not mandatory, but they are useful in some systems,
depending on the already present configuration -->
<!-- This policy enables the Developer mode in chrome://extensions -->
<key>DeveloperToolsAvailability</key>
<integer>1</integer>
<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 UiPath.ExtensionControl.Portable.dll tool writes the required configuration locally, without it being overridden by MDM‑applied policies. This allows Chrome to apply the policy and ensures that the extension is enabled without requiring user interaction.
sudois needed to run this command, as it updates system configuration files.- Using the
bypolicyoption automatically sets the scope to machine. - The command can be issued with
--scope=userinstead of--scope=machine, with the effect that only the current user gets the extension installed and automatically enabled. Any other user will not get the extension installed. - Add the
--ext-id={extensionId}option to target a specific extension version. Replace{extensionId}with the ID of the desired extension. For a list of available IDs, see Studio - List of extensions for Chrome. - The
--ext-id={extensionId}part of the command is optional. If omitted, the latest version of the extension published to the Web Store is installed.
Install Steps
A. MDM-enrolled machine:
-
Open a Terminal and run the following command. The
bypolicyargument can be removed if the configuration pushed via MDM is set to override existing values.sudo dotnet /Applications/UiPath\ Assistant.app/Contents/Extensions/UiPath.ExtensionControl.Portable.dll install chrome bypolicy --scope=machinesudo dotnet /Applications/UiPath\ Assistant.app/Contents/Extensions/UiPath.ExtensionControl.Portable.dll install chrome bypolicy --scope=machine -
Create a new
.mobileconfigfile to configure the required policies. The.mobileconfigfile should have roughly the content described above. -
Install the Configuration profile using the MDM provider.
-
Start Chrome.
-
Design and run automations.
Result: The extension is installed and enabled.
B. Not MDM-enrolled machine:
-
Open a Terminal and run the following command:
sudo dotnet /Applications/UiPath\ Assistant.app/Contents/Extensions/UiPath.ExtensionControl.Portable.dll install chrome bypolicy --scope=machinesudo dotnet /Applications/UiPath\ Assistant.app/Contents/Extensions/UiPath.ExtensionControl.Portable.dll install chrome bypolicy --scope=machine -
Design and run automations.
Result: The extension is installed and enabled.
Group Policy Offline
UiPath.ExtensionControl.Portable.dll cannot be used to fully perform this install type, as it requires intervention (either on the local machine or from an administrator machine).
UiPath.ExtensionControl.Portable.dll provides support for updating the configuration files needed by the extension for its communication with the native host. Therefore, it can be used to install the extension per user or per machine, as previously shown, but additional steps are required to ensure the extension is installed and enabled.
The Configuration profile sets the ExtensionInstallForcelist policy. This policy ensures that the extension is enabled and that it can't be disabled manually.
This method:
- Lets you install any extension, whether published to WebStore or unpublished.
- Is useful in environments with restricted Internet access (where
https://clients2.google.com/service/update2/crxcannot be accessed).
The Configuration profile should have roughly the following content:
<?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}</string>
</array>
<!-- The policies below are not mandatory, but they are useful in some systems,
depending on the already present configuration -->
<!-- This policy enables the Developer mode in chrome://extensions -->
<key>DeveloperToolsAvailability</key>
<integer>1</integer>
<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>
<?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}</string>
</array>
<!-- The policies below are not mandatory, but they are useful in some systems,
depending on the already present configuration -->
<!-- This policy enables the Developer mode in chrome://extensions -->
<key>DeveloperToolsAvailability</key>
<integer>1</integer>
<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>
The ExtensionInstallForcelist string has the following formats:
{extensionId}{extensionId};{urlWithThePathToTheUpdateManifestXmlFile}
The {urlWithThePathToTheUpdateManifestXmlFile} value has to be replaced with an URL (https:// or file://) to the update manifest XML file. This file has the following content:
<?xml version='1.0' encoding='UTF-8'?>
<gupdate xmlns='http://www.google.com/update2/response' protocol='2.0'>
<app appid='{extensionId}'>
<updatecheck
codebase='{crxUrl}'
version='{extensionVersion}' />
</app>
</gupdate>
<?xml version='1.0' encoding='UTF-8'?>
<gupdate xmlns='http://www.google.com/update2/response' protocol='2.0'>
<app appid='{extensionId}'>
<updatecheck
codebase='{crxUrl}'
version='{extensionVersion}' />
</app>
</gupdate>
- Replace
{extensionId}with the ID of the extension. - The
{crxUrl}has to be replaced with the URL of the CRX (https://- if the CRX is hosted on a server, orfile://- if the file is placed on the local machine). - The
{extensionVersion}has to be replaced with the version of the extension (something like 24.10.3).
Install Steps
Steps 1 and 2 are performed on the administrator machine.
-
Create the Configuration profile as described above.
-
Push the profile using an MDM provider.
-
Install the native messaging host by opening a Terminal and running the following command:
dotnet /Applications/UiPath\ Assistant.app/Contents/Extensions/UiPath.ExtensionControl.Portable.dll install chrome native-messaging-host-only --scope=machinedotnet /Applications/UiPath\ Assistant.app/Contents/Extensions/UiPath.ExtensionControl.Portable.dll install chrome native-messaging-host-only --scope=machine -
Start Chrome.
-
Design and run automations.
Result: The extension is installed and enabled.
This method relies on Configuration profiles deployed by MDM (Mobile Device Management) tools. The Configuration profile applies the ExtensionInstallForcelist policy, which ensures that the extension is automatically enabled and cannot be disabled by users.
This procedure is similar to the Windows Group Policy Offline installation method described here: Studio - Extension for Chrome.
Uninstall
Uninstall from UiPath Assistant
-
Access UiPath Assistant.
-
Go to UiPath Extensions.
-
Select Uninstall for Google Chrome.

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:
dotnet UiPath.ExtensionControl.Portable.dll cleanup chrome
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
dotnet UiPath.ExtensionControl.Portable.dll status chromedotnet UiPath.ExtensionControl.Portable.dll status chrome - All Users
dotnet UiPath.ExtensionControl.Portable.dll status chrome --scope=machinedotnet UiPath.ExtensionControl.Portable.dll status chrome --scope=machine - Group Policy Online
dotnet UiPath.ExtensionControl.Portable.dll status chrome bypolicy --scope=machinedotnet UiPath.ExtensionControl.Portable.dll status chrome bypolicy --scope=machine - Group Policy Offline
dotnet UiPath.ExtensionControl.Portable.dll status chrome native-messaging-host-only --scope=machinedotnet UiPath.ExtensionControl.Portable.dll status chrome native-messaging-host-only --scope=machine