Edit

Share via


Use the system proxy option

At a glance
Goal: Control whether Dev Proxy captures all system traffic or only explicitly routed traffic
Time: 5 minutes
Prerequisites: Set up Dev Proxy

By default, when you start Dev Proxy, it registers itself as the system proxy. As a result, all HTTP/HTTPS traffic on your machine is automatically routed through Dev Proxy. Proxying all traffic through Dev Proxy works well for most scenarios—you start Dev Proxy, and it immediately captures requests from your application without any extra configuration.

However, there are situations where you might want more control over which traffic goes through Dev Proxy. The asSystemProxy option lets you disable automatic system proxy registration, giving you fine-grained control over which applications use Dev Proxy.

When to disable system proxy registration

Consider setting asSystemProxy to false when:

  • You're on a corporate network with existing proxy settings that you don't want to override
  • You only want to test a specific application without affecting other apps running on your machine
  • Other applications fail when Dev Proxy intercepts their traffic (for example, Azure Functions)
  • You're running multiple Dev Proxy instances and want to route traffic to specific instances
  • You want to minimize interference with system services and background processes

Configure the system proxy option

You can configure the asSystemProxy option in two ways: using the configuration file or command line.

Configuration file

To persistently disable system proxy registration, add the asSystemProxy setting to your configuration file.

File: devproxyrc.json
Purpose: Disable automatic system proxy registration

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.3.0/rc.schema.json",
  "asSystemProxy": false,
  "urlsToWatch": [
    "https://api.contoso.com/*"
  ]
}

Command line

To disable system proxy registration for a single session, use the --as-system-proxy option.

devproxy --as-system-proxy false

Route traffic to Dev Proxy manually

When you disable system proxy registration, applications don't automatically route their traffic through Dev Proxy. You need to configure each application to use Dev Proxy explicitly.

Using environment variables

The most common way to route traffic to Dev Proxy is by setting the HTTPS_PROXY environment variable.

PowerShell:

$env:HTTPS_PROXY = "http://127.0.0.1:8000"
node app.js

Command Prompt:

set HTTPS_PROXY=http://127.0.0.1:8000
node app.js
HTTPS_PROXY=http://127.0.0.1:8000 node app.js

Tip

Some applications also support the HTTP_PROXY environment variable. Set both if your application makes both HTTP and HTTPS requests.

Language-specific configuration

Different programming languages and frameworks have their own ways of configuring proxies:

Example: Test Azure Functions without interfering with startup

Azure Functions uses gRPC for internal communication, which fails when Dev Proxy is registered as the system proxy. To use Dev Proxy with Azure Functions, disable system proxy registration and configure the proxy through environment variables.

File: devproxyrc.json

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.3.0/rc.schema.json",
  "asSystemProxy": false,
  "urlsToWatch": [
    "https://jsonplaceholder.typicode.com/*"
  ]
}

File: local.settings.json

{
  "IsEncrypted": false,
  "Values": {
    "HTTPS_PROXY": "http://127.0.0.1:8000"
  }
}

With this configuration, Azure Functions starts normally while your HTTP requests to the watched URLs are routed through Dev Proxy.

Example: Test one application while keeping others unaffected

When you're developing multiple applications simultaneously, you might want to use Dev Proxy with only one of them. Disable system proxy registration and set the environment variable only for the target application.

Start Dev Proxy without system proxy registration:

devproxy --as-system-proxy false

In a separate terminal, run your application with the proxy configured:

$env:HTTPS_PROXY = "http://127.0.0.1:8000"
npm start
HTTPS_PROXY=http://127.0.0.1:8000 npm start

Other applications on your machine continue to work normally without any proxy interference.

Run multiple Dev Proxy instances

When you set asSystemProxy to false, you can run multiple Dev Proxy instances simultaneously. Each instance listens on its own port and tracks its own state using per-instance state files.

Start multiple instances

Start each instance on a different port:

devproxy --as-system-proxy false --port 8000 --config-file devproxyrc-api1.json

In another terminal:

devproxy --as-system-proxy false --port 9000 --config-file devproxyrc-api2.json

Check the status of running instances

To see all running instances use the status command:

devproxy status

Stop a specific instance

To target a specific instance, use the --pid option with the stop command:

devproxy stop --pid 6456

To stop all running instances:

devproxy stop

View logs from a specific instance

Use the --pid option with the logs command:

devproxy logs --pid 6456

Note

Only one Dev Proxy instance can be registered as the system proxy at a time. If you try to start a new instance with asSystemProxy set to true while another system proxy instance is already running, Dev Proxy blocks the startup.

See also