Configure proxy server settings (deprecated)
Verified with Microsoft Edge 152.0.4191.53 — updated on July 10, 2026
Supported on: Microsoft Edge version 77, Windows 7 or later
Path in the GPO console
Computer Configuration\Administrative Templates\Microsoft Edge\Proxy server User Configuration\Administrative Templates\Microsoft Edge\Proxy server Description
DEPRECATED: This policy is deprecated. It is currently supported but will become obsolete in a future release. This policy is deprecated and doesn't work in Microsoft Edge version 91. Use 'ProxySettings' (Proxy settings) instead. If you set this policy to Enabled, you can specify the proxy server Microsoft Edge uses and prevents users from changing proxy settings. Microsoft Edge ignores all proxy-related options specified from the command line. The policy is only applied if the 'ProxySettings' policy isn't specified. Other options are ignored if you choose one of the following options: * direct = Never use a proxy server and always connect directly * system = Use system proxy settings * auto_detect = Auto detect the proxy server If you choose to use: * fixed_servers = Fixed proxy servers. You can specify further options with 'ProxyServer' (Configure address or URL of proxy server) and 'ProxyBypassList' (Configure proxy bypass rules). * pac_script = A .pac proxy script. Use 'ProxyPacUrl' (Set the proxy .pac file URL) to set the URL to a proxy .pac file. For detailed examples, go to https://go.microsoft.com/fwlink/?linkid=2094936. If you don't configure this policy, users can choose their own proxy settings. Policy options mapping: * ProxyDisabled (direct) = Never use a proxy * ProxyAutoDetect (auto_detect) = Auto detect proxy settings * ProxyPacScript (pac_script) = Use a .pac proxy script * ProxyFixedServers (fixed_servers) = Use fixed proxy servers * ProxyUseSystem (system) = Use system proxy settings Use the preceding information when configuring this policy. Example value: direct
Registry
Software\Policies\Microsoft\Edge Software\Policies\Microsoft\Edge Export Builder
BETAConfigure the state, scope and options, then generate .reg, PowerShell, Intune and SCCM outputs — or add the setting to a multi-setting collection.
These exports write the registry — this is not a managed GPO. ⓘ
Applying both scopes creates an ambiguous configuration (computer takes precedence over user). Only do this intentionally.
.reg file
Windows Registry Editor Version 5.00
; Exported from gporais.com
; Policy: Configure proxy server settings (deprecated)
; State: Enabled
; Scope: Computer (HKLM)
; Supported on: Microsoft Edge version 77, Windows 7 or later
[HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Edge]
"ProxyMode"="direct" More formats (PowerShell, Intune, SCCM)
PowerShell
# Exported from gporais.com
# Policy: Configure proxy server settings (deprecated)
# State: Enabled
# Scope: Computer (HKLM)
# Supported on: Microsoft Edge version 77, Windows 7 or later
$path = 'HKLM:\Software\Policies\Microsoft\Edge'
New-Item -Path $path -Force | Out-Null
Set-ItemProperty -Path $path -Name 'ProxyMode' -Value 'direct' -Type String Intune XML
No direct Policy CSP / OMA-URI mapping for this policy. Use the Intune Remediation tab, or ingest the ADMX in Intune. Intune Remediation
# === Detection script ===
# Exported from gporais.com
# Policy: Configure proxy server settings (deprecated)
# State: Enabled
# Scope: Computer (HKLM)
# Supported on: Microsoft Edge version 77, Windows 7 or later
function Test-RegistryValue {
param(
[Parameter(Mandatory = $true)][string]$Path,
[Parameter(Mandatory = $true)][string]$Name,
[object]$Expected,
[ValidateSet('String', 'DWord', 'MultiString')][string]$Kind = 'String',
[switch]$Absent
)
try {
$item = Get-ItemProperty -LiteralPath $Path -Name $Name -ErrorAction Stop
} catch {
return $Absent.IsPresent
}
if ($Absent.IsPresent) { return $false }
$actual = $item.$Name
if ($Kind -eq 'DWord') { return ([int64]$actual) -eq ([int64]$Expected) }
if ($Kind -eq 'MultiString') {
$actualValues = @($actual)
$expectedValues = @($Expected)
if ($actualValues.Count -ne $expectedValues.Count) { return $false }
for ($i = 0; $i -lt $expectedValues.Count; $i++) {
if ([string]$actualValues[$i] -ne [string]$expectedValues[$i]) { return $false }
}
return $true
}
return [string]$actual -eq [string]$Expected
}
$checks = @(
(Test-RegistryValue -Path 'HKLM:\Software\Policies\Microsoft\Edge' -Name 'ProxyMode' -Expected 'direct' -Kind String)
)
if ($checks -notcontains $false) {
Write-Output 'Compliant'
exit 0
}
Write-Output 'Non-compliant'
exit 1
# === Remediation script ===
# Exported from gporais.com
# Policy: Configure proxy server settings (deprecated)
# State: Enabled
# Scope: Computer (HKLM)
# Supported on: Microsoft Edge version 77, Windows 7 or later
$path = 'HKLM:\Software\Policies\Microsoft\Edge'
New-Item -Path $path -Force | Out-Null
Set-ItemProperty -Path $path -Name 'ProxyMode' -Value 'direct' -Type String SCCM scripts
# Exported from gporais.com
# Policy: Configure proxy server settings (deprecated)
# State: Enabled
# Scope: Computer (HKLM)
# Supported on: Microsoft Edge version 77, Windows 7 or later
# SCCM Configuration Item guidance:
# Create a Configuration Item of type "Setting: Script".
# Discovery script: use the Detection script below.
# Remediation script: use the Remediation script below.
# Compliance rule: the Discovery script output equals 'Compliant'.
# === Detection script ===
# Exported from gporais.com
# Policy: Configure proxy server settings (deprecated)
# State: Enabled
# Scope: Computer (HKLM)
# Supported on: Microsoft Edge version 77, Windows 7 or later
function Test-RegistryValue {
param(
[Parameter(Mandatory = $true)][string]$Path,
[Parameter(Mandatory = $true)][string]$Name,
[object]$Expected,
[ValidateSet('String', 'DWord', 'MultiString')][string]$Kind = 'String',
[switch]$Absent
)
try {
$item = Get-ItemProperty -LiteralPath $Path -Name $Name -ErrorAction Stop
} catch {
return $Absent.IsPresent
}
if ($Absent.IsPresent) { return $false }
$actual = $item.$Name
if ($Kind -eq 'DWord') { return ([int64]$actual) -eq ([int64]$Expected) }
if ($Kind -eq 'MultiString') {
$actualValues = @($actual)
$expectedValues = @($Expected)
if ($actualValues.Count -ne $expectedValues.Count) { return $false }
for ($i = 0; $i -lt $expectedValues.Count; $i++) {
if ([string]$actualValues[$i] -ne [string]$expectedValues[$i]) { return $false }
}
return $true
}
return [string]$actual -eq [string]$Expected
}
$checks = @(
(Test-RegistryValue -Path 'HKLM:\Software\Policies\Microsoft\Edge' -Name 'ProxyMode' -Expected 'direct' -Kind String)
)
if ($checks -notcontains $false) {
Write-Output 'Compliant'
exit 0
}
Write-Output 'Non-compliant'
exit 1
# === Remediation script ===
# Exported from gporais.com
# Policy: Configure proxy server settings (deprecated)
# State: Enabled
# Scope: Computer (HKLM)
# Supported on: Microsoft Edge version 77, Windows 7 or later
$path = 'HKLM:\Software\Policies\Microsoft\Edge'
New-Item -Path $path -Force | Out-Null
Set-ItemProperty -Path $path -Name 'ProxyMode' -Value 'direct' -Type String Building a multi-setting collection? Add this setting and generate combined .reg / PowerShell / GPO scripts.