Brave Software › Brave
Control where Chrome DevTools can be used
Supported on Microsoft Windows 7 or later
What it does
Setting the policy to 0 (the default) means you can access Chrome DevTools and the JavaScript console, but not in the context of extensions installed by enterprise policy or, since version 114 and if this is a managed user, extensions built into the browser. Setting the policy to 1 means you can access Chrome DevTools and the JavaScript console in all contexts, including that of extensions installed by enterprise policy. Setting the policy to 2 means you can't access Chrome DevTools, and you can't inspect website elements. This setting also turns off keyboard shortcuts and menu or context menu entries to open Chrome DevTools or the JavaScript console. As of Brave version 99, this setting also controls entry points for the 'View page source' feature. If you set this policy to 'DeveloperToolsDisallowed' (value 2), users cannot access source viewing via keyboard shortcut or the context menu. To fully block source viewing, you must also add 'view-source:*' to the URLBlocklist policy. As of Brave version 119, this setting also controls whether developer mode for Isolated Web Apps can be activated and used. As of Brave version 128, this setting will not control developer mode on extensions page if ExtensionDeveloperModeSettings policy is set. This policy affects Chrome DevTools, direct Chrome DevTools Protocol (CDP) access (for instance, when launched with --remote-debugging-port or --remote-debugging-pipe), and Chrome DevTools Protocol (CDP) access via chrome.debugger APIs. Both this policy and the RemoteDebuggingAllowed policy apply: RemoteDebuggingAllowed controls whether remote debugging can start, while this policy restricts whether individual targets can be inspected even when remote debugging is running. The DeveloperToolsAvailabilityAllowlist and DeveloperToolsAvailabilityBlocklist policies take precedence over this policy. The availability of Chrome DevTools is determined in the following order of precedence: 1. If a URL matches a pattern in the DeveloperToolsAvailabilityAllowlist policy, Chrome DevTools are allowed. 2. If the DeveloperToolsAvailabilityAllowlist is set and the DeveloperToolsAvailabilityBlocklist is not, any URL not on the allowlist is blocked. 3. If a URL matches a pattern in the DeveloperToolsAvailabilityBlocklist policy, Chrome DevTools are blocked. 4. If neither policy is set, or if a URL matches neither list, this policy (DeveloperToolsAvailability) is used as the fallback mechanism.
What it writes
- Hive
- HKEY_LOCAL_MACHINE or HKEY_CURRENT_USER
- Registry key
Software\Policies\BraveSoftware\Brave
Options
| Option | Type | Registry value | Allowed values |
|---|---|---|---|
| Control where Chrome DevTools can be used | Drop-down list | DeveloperToolsAvailability |
|
Configure and deploy
Choose a state and the option values; the output below is generated from the template for exactly that.
Enabled · Computer · template defaults
Registry file (.reg)
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\Software\Policies\BraveSoftware\Brave]
"DeveloperToolsAvailability"=dword:00000000
PowerShell
$ErrorActionPreference = 'Stop'
function Set-RegistryValue {
param(
[Parameter(Mandatory = $true)][string] $Path,
[Parameter(Mandatory = $true)][string] $Name,
[Parameter(Mandatory = $true)][string] $PropertyType,
[Parameter(Mandatory = $true)][object] $Value
)
if (-not (Test-Path -LiteralPath $Path)) {
New-Item -Path $Path -Force | Out-Null
}
New-ItemProperty -LiteralPath $Path -Name $Name -PropertyType $PropertyType -Value $Value -Force | Out-Null
}
function Remove-RegistryValue {
param(
[Parameter(Mandatory = $true)][string] $Path,
[Parameter(Mandatory = $true)][string] $Name
)
if (Test-Path -LiteralPath $Path) {
Remove-ItemProperty -LiteralPath $Path -Name $Name -Force -ErrorAction SilentlyContinue
}
}
function Clear-RegistryKeyValues {
param(
[Parameter(Mandatory = $true)][string] $Path
)
if (-not (Test-Path -LiteralPath $Path)) {
return
}
foreach ($propertyName in (Get-Item -LiteralPath $Path).Property) {
Remove-ItemProperty -LiteralPath $Path -Name $propertyName -Force -ErrorAction SilentlyContinue
}
}
# Policy: Control where Chrome DevTools can be used
# Name: DeveloperToolsAvailability
# Scope: Machine
# State: Enabled
# Source: brave.admx
Set-RegistryValue -Path 'Registry::HKEY_LOCAL_MACHINE\Software\Policies\BraveSoftware\Brave' -Name 'DeveloperToolsAvailability' -PropertyType 'DWord' -Value 0
- The OMA-URI is an inferred ADMX-backed Policy CSP candidate derived from the source ADMX file name and policy name.
- Some Microsoft policies use built-in Policy CSP pages whose area names don't match the ADMX file name, so verify the candidate against Microsoft Learn before deployment.
- The generated payload is incomplete because one or more ADMX element values were not supplied: DeveloperToolsAvailability
ADMX profile candidate (OMA-URI)
./Device/Vendor/MSFT/Policy/Config/ADMX_brave/DeveloperToolsAvailabilityIntune remediation scripts
Detection
$ErrorActionPreference = 'Stop'
$reasons = [System.Collections.Generic.List[string]]::new()
function Test-RegistryValueExists {
param(
[Parameter(Mandatory = $true)][string] $Path,
[Parameter(Mandatory = $true)][string] $Name
)
if (-not (Test-Path -LiteralPath $Path)) {
return $false
}
return $null -ne (Get-ItemProperty -LiteralPath $Path -Name $Name -ErrorAction SilentlyContinue)
}
function Test-RegistryValueEquals {
param(
[Parameter(Mandatory = $true)][string] $Path,
[Parameter(Mandatory = $true)][string] $Name,
[Parameter(Mandatory = $true)][string] $Kind,
[Parameter(Mandatory = $true)][object] $Expected
)
if (-not (Test-Path -LiteralPath $Path)) {
return $false
}
$valueObject = Get-ItemProperty -LiteralPath $Path -Name $Name -ErrorAction SilentlyContinue
if ($null -eq $valueObject) {
return $false
}
$actual = $valueObject.$Name
switch ($Kind) {
'String' { return [string]$actual -ceq [string]$Expected }
'ExpandString' { return [string]$actual -ceq [string]$Expected }
'DWord' { return [uint32]$actual -eq [uint32]$Expected }
'QWord' { return [uint64]$actual -eq [uint64]$Expected }
'MultiString' {
$actualArray = @($actual)
$expectedArray = @($Expected)
if ($actualArray.Count -ne $expectedArray.Count) { return $false }
for ($index = 0; $index -lt $actualArray.Count; $index++) {
if ([string]$actualArray[$index] -cne [string]$expectedArray[$index]) { return $false }
}
return $true
}
'Binary' {
$actualArray = [byte[]]$actual
$expectedArray = [byte[]]$Expected
if ($actualArray.Length -ne $expectedArray.Length) { return $false }
for ($index = 0; $index -lt $actualArray.Length; $index++) {
if ($actualArray[$index] -ne $expectedArray[$index]) { return $false }
}
return $true
}
default { return [string]$actual -ceq [string]$Expected }
}
}
# Policy: Control where Chrome DevTools can be used
# Name: DeveloperToolsAvailability
# Scope: Machine
# State: Enabled
# Source: brave.admx
$isMatch = Test-RegistryValueEquals -Path 'Registry::HKEY_LOCAL_MACHINE\Software\Policies\BraveSoftware\Brave' -Name 'DeveloperToolsAvailability' -Kind 'DWord' -Expected 0
if (-not $isMatch) {
$reasons.Add('Value mismatch: HKEY_LOCAL_MACHINE\Software\Policies\BraveSoftware\Brave\DeveloperToolsAvailability') | Out-Null
}
if ($reasons.Count -eq 0) {
Write-Output 'Compliant'
exit 0
}
$reasons | ForEach-Object { Write-Output $_ }
exit 1
Remediation
$ErrorActionPreference = 'Stop'
function Set-RegistryValue {
param(
[Parameter(Mandatory = $true)][string] $Path,
[Parameter(Mandatory = $true)][string] $Name,
[Parameter(Mandatory = $true)][string] $PropertyType,
[Parameter(Mandatory = $true)][object] $Value
)
if (-not (Test-Path -LiteralPath $Path)) {
New-Item -Path $Path -Force | Out-Null
}
New-ItemProperty -LiteralPath $Path -Name $Name -PropertyType $PropertyType -Value $Value -Force | Out-Null
}
function Remove-RegistryValue {
param(
[Parameter(Mandatory = $true)][string] $Path,
[Parameter(Mandatory = $true)][string] $Name
)
if (Test-Path -LiteralPath $Path) {
Remove-ItemProperty -LiteralPath $Path -Name $Name -Force -ErrorAction SilentlyContinue
}
}
function Clear-RegistryKeyValues {
param(
[Parameter(Mandatory = $true)][string] $Path
)
if (-not (Test-Path -LiteralPath $Path)) {
return
}
foreach ($propertyName in (Get-Item -LiteralPath $Path).Property) {
Remove-ItemProperty -LiteralPath $Path -Name $propertyName -Force -ErrorAction SilentlyContinue
}
}
# Policy: Control where Chrome DevTools can be used
# Name: DeveloperToolsAvailability
# Scope: Machine
# State: Enabled
# Source: brave.admx
Set-RegistryValue -Path 'Registry::HKEY_LOCAL_MACHINE\Software\Policies\BraveSoftware\Brave' -Name 'DeveloperToolsAvailability' -PropertyType 'DWord' -Value 0
History 44 retained releases
- 1.97.567 Oct 2026
- Renamed Control where
[removed: Developer Tools][added: Chrome DevTools] can be used - Description
Setting the policy to 0 (the default) …
[removed: the developer tools ][added: Chrome DevTools ]and the JavaScript console, but not in the…[removed: the developer tools ][added: Chrome DevTools ]and the JavaScript console in all contexts, inc…[removed: developer tools,][added: Chrome DevTools,] and you can't inspect website elements. This setting a…[removed: developer tools][added: Chrome DevTools] or the JavaScript console. As of Brave version 99, this setting also … not c…[added: This policy affects Chrome DevTools, direct Chrome DevTools Protocol (CDP) acc…]The [added: DeveloperToolsAvailabilityAllowlist and DeveloperToolsAvailabilityBlocklist policies take precedence over this policy. The ]…Whole description, marked
Setting the policy to 0 (the default) means you can access
[removed: the developer tools ][added: Chrome DevTools ]and the JavaScript console, but not in the context of extensions installed by enterprise policy or, since version 114 and if this is a managed user, extensions built into the browser. Setting the policy to 1 means you can access[removed: the developer tools ][added: Chrome DevTools ]and the JavaScript console in all contexts, including that of extensions installed by enterprise policy. Setting the policy to 2 means you can't access[removed: developer tools,][added: Chrome DevTools,] and you can't inspect website elements. This setting also turns off keyboard shortcuts and menu or context menu entries to open[removed: developer tools][added: Chrome DevTools] or the JavaScript console. As of Brave version 99, this setting also controls entry points for the 'View page source' feature. If you set this policy to 'DeveloperToolsDisallowed' (value 2), users cannot access source viewing via keyboard shortcut or the context menu. To fully block source viewing, you must also add 'view-source:*' to the URLBlocklist policy. As of Brave version 119, this setting also controls whether developer mode for Isolated Web Apps can be activated and used. As of Brave version 128, this setting will not control developer mode on extensions page if ExtensionDeveloperModeSettings policy is set. [added: This policy affects Chrome DevTools, direct Chrome DevTools Protocol (CDP) access (for instance, when launched with --remote-debugging-port or --remote-debugging-pipe), and Chrome DevTools Protocol (CDP) access via chrome.debugger APIs. Both this policy and the RemoteDebuggingAllowed policy apply: RemoteDebuggingAllowed controls whether remote debugging can start, while this policy restricts whether individual targets can be inspected even when remote debugging is running. ]The [added: DeveloperToolsAvailabilityAllowlist and DeveloperToolsAvailabilityBlocklist policies take precedence over this policy. The ]availability of[removed: Developer Tools][added: Chrome DevTools] is determined in the following order of precedence:[removed: ][added: ]1. If a URL matches a pattern in the DeveloperToolsAvailabilityAllowlist policy,[removed: Developer Tools][added: Chrome DevTools] are allowed. 2. If the DeveloperToolsAvailabilityAllowlist is set and the DeveloperToolsAvailabilityBlocklist is not, any URL not on the allowlist is blocked. 3. If a URL matches a pattern in the DeveloperToolsAvailabilityBlocklist policy,[removed: Developer Tools][added: Chrome DevTools] are blocked. 4. If[removed: a URL][added: neither policy] is[removed: not covered by the allowlist or blocklist,][added: set, or if a URL matches neither list,] this policy (DeveloperToolsAvailability) is [added: used as ]the[removed: fallback.][added: fallback mechanism.] - Option “Control where Chrome DevTools can be used” Control where
[removed: Developer Tools][added: Chrome DevTools] can be used - A choice in “Control where Chrome DevTools can be used” is renamed Disallow usage of
[removed: the Developer Tools ][added: Chrome DevTools ]on apps and extensions installed by enterprise policy or, since version 114 and if this is a managed user, extensions built into the browser. Allow usage of[removed: the Developer Tools][added: Chrome DevTools] in other contexts (0) - A choice in “Control where Chrome DevTools can be used” is renamed Allow usage of
[removed: the Developer Tools][added: Chrome DevTools] (1) - A choice in “Control where Chrome DevTools can be used” is renamed Disallow usage of
[removed: the Developer Tools][added: Chrome DevTools] (2) - Editor controls or their defaults changed.
- Renamed Control where
- 1.89.13716 Apr 2026
- Translations changed; choose a language above to compare its wording.
- 1.88.13214 Mar 2026
- Already present in the first release ChangeIntel keeps.
41 later releases left it unchanged.
Template
- Internal name
DeveloperToolsAvailability- Namespace
BraveSoftware.Policies.Brave- Template file
brave.admx- Release
- Brave Browser 1.97.59 · file set
d6401efd8c1937d9…
Definition, editor controls and support
Definition
<policy class="Both" displayName="$(string.DeveloperToolsAvailability)" explainText="$(string.DeveloperToolsAvailability_Explain)" key="Software\Policies\BraveSoftware\Brave" name="DeveloperToolsAvailability" presentation="$(presentation.DeveloperToolsAvailability)" xmlns="http://schemas.microsoft.com/GroupPolicy/2006/07/PolicyDefinitions">
<parentCategory ref="BraveSoftware.Policies.Brave:brave" />
<supportedOn ref="BraveSoftware.Policies.Brave:SUPPORTED_WIN7" />
<elements>
<enum id="DeveloperToolsAvailability" valueName="DeveloperToolsAvailability">
<item displayName="$(string.DeveloperToolsAvailability_DeveloperToolsDisallowedForForceInstalledExtensions)">
<value>
<decimal value="0" />
</value>
</item>
<item displayName="$(string.DeveloperToolsAvailability_DeveloperToolsAllowed)">
<value>
<decimal value="1" />
</value>
</item>
<item displayName="$(string.DeveloperToolsAvailability_DeveloperToolsDisallowed)">
<value>
<decimal value="2" />
</value>
</item>
</enum>
</elements>
</policy>Editor controls
<presentation id="DeveloperToolsAvailability" xmlns="http://schemas.microsoft.com/GroupPolicy/2006/07/PolicyDefinitions"><dropdownList refId="DeveloperToolsAvailability">Control where Chrome DevTools can be used</dropdownList></presentation>Supported platforms and category
BraveSoftware.Policies.Brave:category:Cat_Brave
<category displayName="$(string.Cat_Brave)" name="Cat_Brave" xmlns="http://schemas.microsoft.com/GroupPolicy/2006/07/PolicyDefinitions" />
BraveSoftware.Policies.Brave:category:brave
<category displayName="$(string.brave)" name="brave" xmlns="http://schemas.microsoft.com/GroupPolicy/2006/07/PolicyDefinitions">
<parentCategory ref="BraveSoftware.Policies.Brave:Cat_Brave" />
</category>
BraveSoftware.Policies.Brave:definition:SUPPORTED_WIN7
<definition displayName="$(string.SUPPORTED_WIN7)" name="SUPPORTED_WIN7" xmlns="http://schemas.microsoft.com/GroupPolicy/2006/07/PolicyDefinitions" />
BraveSoftware.Policies.Brave:category:Cat_Brave
<category displayName="$(string.Cat_Brave)" name="Cat_Brave" xmlns="http://schemas.microsoft.com/GroupPolicy/2006/07/PolicyDefinitions" />
<strings><string id="BraveSoftware.Policies.Brave:Cat_Brave">Brave Software</string></strings>
BraveSoftware.Policies.Brave:category:brave
<category displayName="$(string.brave)" name="brave" xmlns="http://schemas.microsoft.com/GroupPolicy/2006/07/PolicyDefinitions">
<parentCategory ref="BraveSoftware.Policies.Brave:Cat_Brave" />
</category>
<strings><string id="BraveSoftware.Policies.Brave:brave">Brave</string></strings>
BraveSoftware.Policies.Brave:definition:SUPPORTED_WIN7
<definition displayName="$(string.SUPPORTED_WIN7)" name="SUPPORTED_WIN7" xmlns="http://schemas.microsoft.com/GroupPolicy/2006/07/PolicyDefinitions" />
<strings><string id="BraveSoftware.Policies.Brave:SUPPORTED_WIN7">Microsoft Windows 7 or later</string></strings>