# Redirecting robots through a proxy server

> For a Robot to establish direct communication with Orchestrator, it needs to be on the same network or use an open one. Otherwise, you need to set up a proxy server to facilitate the communication.

For a Robot to establish direct communication with Orchestrator, it needs to be on the same network or use an open one. Otherwise, you need to set up a proxy server to facilitate the communication.

Set up a proxy by either using a proxy script or supplying the proxy server address with a list of addresses to bypass. Only one method can be used. If both are configured, the proxy script takes precedence.

The following configuration options are available:

* Configuring the web browser
* Configuring the Windows proxy settings
* Configuring the proxy setting through command line parameters
* Editing the `uipath.config` file
  :::important
  When updating from versions previous to v2021.4, proxy configurations are migrated from the `proxy.config` file to the `uipath.config` in order to match the new format.
  :::

## Proxy for Use Mode robots

User Mode robots inherit the proxy settings configured for your web browser.

For proxy settings that require basic non-Windows authentication, store the necessary credentials in the Credential Manager of the machine.

:::important
To apply proxy settings on User Mode robots, you need to restart the User Host Service. You can do this by signing out of the Windows user session and then signing back in.
:::

## Proxy for Service Mode robots

To correctly use proxy settings for Service Mode robots with the Interactive Sign In and Live Streaming features, you need to modify both the `uipath.config` file and the corresponding Windows Settings of the user account running the Robot.

## Proxy settings based on user types (Executor)

In the context of UiPath, Windows processes can run under two distinct identities:

* Local user—These processes run under the identity of the user who is currently logged into the Windows session.
* LocalSystem users****—These processes are typically services or background tasks that run with system-level privileges.

When configuring a proxy in Windows, the proxy settings are tied to the user executing the process. Therefore, depending on the identity of the process making the HTTP request, there are two possible scenarios for proxy configuration:

* The proxy defined for the user in Windows is used.
* The proxy settings are loaded from the `uipath.config` file.

The table below summarizes the Robot-related Windows processes, the user identities under which they run, and the HTTP requests they perform:

 <colgroup>
  <col/>
  <col/>
  <col/>
 </colgroup>
 
  
     Windows process  
     User identity  
     HTTP requests  
  
 
 
  
    <code>UiPath.ServiceHost.exe</code> 
     LocalSystem  
   
      
        Responsible for service communication with Orchestrator, including:
          Fetching heartbeats  
          Fetching jobs and submitting job states  
          Handling logs for unattended processes  
          Managing authentication for the service  
          Downloading packages  
      

  
  
    <code>UiPath.UserHost.exe</code> 
     User  
   
      
        Responsible for service communication with Orchestrator when installed in User Mode, including:
          Fetching heartbeats  
          Managing logs for processes  
          Handling authentication for Assistant  
          Downloading packages  
      

  
  
    <code>UiPath.Executor.exe</code> 
   
      
          LocalSystem (when running a background job)  
          User (when running regular jobs)  
      

   
      
        Responsible for handling automation-specific HTTP requests, including:
          Managing assets and queue items  
          Sending activity-specific requests (HTTP requests to external services)  
      

  
  
    <code>UiPath.Assistant.exe</code> 
     User  
   
      
        Responsible for handling Assistant-related traffic, including:
          Process list management  
          Trigger handling  
          Marketplace interactions  
      

  
  
    <code>UiPath.RemoteDebugging.Agent.exe</code> 
     User  
     Responsible for handling remote debugging traffic via SignalR.  
  
  
    <code>UiPath.UpdateService.Worker.exe</code> 
     LocalSystem  
    Responsible for downloading the MSIs from Orchestrator. 
  
 

## The auto-update process for proxy configurations

You can configure the auto-update process for robots operating behind a proxy, depending on the on the Robot installation type:

For unattended installations, the Update Agent is absent. Configurations for proxy are manually handled by modifying the `UiPath.config` file. Both the Robot Service and the Update Service run using a Windows Service, independent of a user.

For attended installations, configurations for proxy are also manually handled by modifying the `UiPath.config` file. However, the user starts both the Robot Service and the Update Agent. The Update Service runs using a Windows Service.

For quick installations, configurations for the proxy are inherited from the existing user settings. The user initiates all services: Robot Service, Update Agent, and Update Service.

## Windows Credentials Proxy Authentication

The proxy server might require credentials to allow traffic. You can configure the proxy to authenticate using the credentials of the logged-in Windows user.

To enable this feature, add the system environment variable `UIPATH_PROXY_USE_DEFAULT_CREDENTIALS` on the machine running the Robot and set its value to `true`. This tells the Robot to use the Windows Credentials of the current user for proxy authentication.

## Basic Authentication

Starting with version 2021.10, the Robot Service supports proxy servers using Basic Authentication protocols.

**User Mode robots** - With Basic Authentication, the Assistant identifies if a proxy configuration is implemented on the machine and prompts the user for their credentials.

**Service Mode robots** - The Robot Executor does not support Basic Authentication methods for proxy configurations. While you can use Basic Authentication for connecting to Orchestrator and downloading packages, you cannot use it within the actual workflow execution. To enable Basic Authentication for Service Mode robots, update the `UiPath.config` file with the following proxy parameters:
```
<webProxySettings>
<add key="ProxyAddress" value="http://my.proxy.net:8008" />
<add key="UserName" value="myUser" />
<add key="Password" value="myPassword" />
<add key="Domain" value="myDomain" />
</webProxySettings>
```

## Live streaming and remote control in a proxy setup

:::warning
Live streaming and remote control features do not work in a proxy setup for Robot versions older than 2024.10.5. Upgrade your Robot to versions 2024.10.5+ to access these features in a proxy setup.
:::

## Configuring the proxy using the web browser

1. Open the **Internet Properties** window.
2. On the **Connections** tab, select **LAN settings**. The **Local Area Network (LAN) Settings** window opens. Depending on your setup, you can set a proxy configuration script or a proxy server.

   ![docs image](https://dev-assets.cms.uipath.com/assets/images/robot/robot-docs-image-447965-ae561020.webp)

   1. To use a proxy script, select **Use automatic configuration script**, and provide the address to the script.
   2. To manually set up the proxy server, select **Use a proxy server for your LAN**, then provide the address of the proxy server and the port.
3. To save your settings, select **OK**.
4. In your web browser, test the connection by accessing the Orchestrator URL.

## Configuring the proxy using Windows settings

1. Open the **Proxy** settings window.
2. To use a proxy script, under **Automatic proxy setup**, switch on the **Use setup script**. Provide the address to the script.
3. To manually set up the proxy server, under **Manual proxy setup**, switch on the **Use a proxy server**. Provide the address of the proxy server and the port.
   :::important
   Adding the `http://` prefix to the proxy server address prevents Robot from making HTTPS calls. To ensure the proxy works as expected, remove the `http://` prefix entirely or add the proxy address with both `http://` and `https://` prefixes. For example:
   * Incorrect - `http://proxyaddress`,
   * Correct - `https://proxyaddress`, `http://proxyaddress; https://proxyaddress`
   :::
4. To save your settings, select **Save**.

## Editing the uipath.config file

1. Navigate to the installation folder, `%ProgramFiles%\UiPath\Studio`.
2. Search for the `uipath.config` file and open it using a text editor, such as Notepad++.
3. Add the `<webProxySettings>` tag and set the values based on your proxy environment.
   1. To use a proxy script, provide the following key-value pair:
      ```
      <webProxySettings>
          <add key="ScriptAddress" value="http://localhost/proxy.pac" />
      </webProxySettings>
      ```
   2. To provide a proxy address, provide the following key-value pairs:
      ```
      <webProxySettings>
          <add key="ProxyAddress" value="http://1.1.1.1:1234/" />
          <add key="BypassLocalAddresses" value="True" />
          <add key="BypassList" value="server\.domain\.local$;www.google.com;192\.168\.\d{1,3}\.\d{1,3}" />
      </webProxySettings>
      ```
4. Save the `uipath.config` file.
5. Restart the Robot service or the device.

## Configuring the proxy settings during Robot installation

To add the proxy settings while installing Unattended robots (service-mode), use the dedicated command line parameters in your installation command.

For example, the following command installs the Robot in Service Mode and uses a script to configure proxy:

```
UiPathStudio.msi ADDLOCAL=Robot,RegisterService PROXY_SCRIPT_ADDRESS=http://localhost/proxy.pac
```

The following command installs the Robot in Service Mode and sets up the Basic Authentication for proxy settings:

```
UiPathStudio.msi ADDLOCAL=Robot,RegisterService PROXY_ADDRESS=http://my.proxy.net:8008 PROXY_USERNAME="myUser" PROXY_PASSWORD="myUser" PROXY_DOMAIN="myUser"
```

## Checking the proxy server connection

1. Connect the Robot to Orchestrator
2. Deploy some packages to an environment which contains the previously configured Robot.
3. Navigate to the `%userprofile%\.nuget\` folder and check if the corresponding process and activities packages have been downloaded.
4. Run the corresponding job to check if it runs successfully.
