Public mode

No access to your tenant or devices. Every item links to its source. What this means

Some sources or documents need attention: 258/260 feeds/APIs · 416/439 docs · checked 22:55 UTC Customize Public modeDiscuss ChangeIntel on Discord

Brave Browser Group Policy settings

769 settings · 1.97.59 · 16 Oct 2026

29 folders · 237 settingsCSV
Back to the list

Brave Software › Brave

Control where Chrome DevTools can be used

Computer and userIntune-readyDeveloperToolsAvailability

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

OptionTypeRegistry valueAllowed values
Control where Chrome DevTools can be used Drop-down list DeveloperToolsAvailability
  • Disallow usage of 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 Chrome DevTools in other contexts0
  • Allow usage of Chrome DevTools1
  • Disallow usage of Chrome DevTools2

Configure and deploy

Choose a state and the option values; the output below is generated from the template for exactly that.

State
Apply to
Options used when Enabled

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/DeveloperToolsAvailability
Intune 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. 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.
  2. 1.89.13716 Apr 2026
    • Translations changed; choose a language above to compare its wording.
  3. 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>
ChangeIntel

An IT change radar: releases, security, known issues, retirements, documentation changes, and service status from public sources. Every item links to supporting evidence; dates and statuses can change after they are read.

Sources read 20 Oct 22:55 UTC · 258 of 260 readable · 256 fully read · documentation 416/439 current