Mozilla › Firefox › Required Relaunch After Update
Relaunch hour
Supported on Firefox 150 or later
What it does
If this policy is enabled, the required relaunch is scheduled at this hour, in 24-hour format between 0 and 23. At the scheduled time Firefox closes and reopens automatically. Tabs are restored, but the user is not prompted and cannot cancel the restart. Note: If less than one hour remains until the scheduled time, the restart is deferred to the same time the following day. If this policy is disabled or not configured, the Firefox default applies.
What it writes
- Hive
- HKEY_LOCAL_MACHINE or HKEY_CURRENT_USER
- Registry key
Software\Policies\Mozilla\Firefox\RelaunchRequired\RestartTimeOfDay
Options
| Option | Type | Registry value | Allowed values |
|---|---|---|---|
| Number | Number | Hour |
0 to 23 |
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\Mozilla\Firefox\RelaunchRequired\RestartTimeOfDay]
"Hour"=dword:00000001
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: Relaunch hour
# Name: RelaunchRequired_RestartTimeOfDay_Hour
# Scope: Machine
# State: Enabled
# Source: firefox.admx
Set-RegistryValue -Path 'Registry::HKEY_LOCAL_MACHINE\Software\Policies\Mozilla\Firefox\RelaunchRequired\RestartTimeOfDay' -Name 'Hour' -PropertyType 'DWord' -Value 1
- 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: Number
ADMX profile candidate (OMA-URI)
./Device/Vendor/MSFT/Policy/Config/ADMX_firefox/RelaunchRequired_RestartTimeOfDay_HourIntune 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: Relaunch hour
# Name: RelaunchRequired_RestartTimeOfDay_Hour
# Scope: Machine
# State: Enabled
# Source: firefox.admx
$isMatch = Test-RegistryValueEquals -Path 'Registry::HKEY_LOCAL_MACHINE\Software\Policies\Mozilla\Firefox\RelaunchRequired\RestartTimeOfDay' -Name 'Hour' -Kind 'DWord' -Expected 1
if (-not $isMatch) {
$reasons.Add('Value mismatch: HKEY_LOCAL_MACHINE\Software\Policies\Mozilla\Firefox\RelaunchRequired\RestartTimeOfDay\Hour') | 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: Relaunch hour
# Name: RelaunchRequired_RestartTimeOfDay_Hour
# Scope: Machine
# State: Enabled
# Source: firefox.admx
Set-RegistryValue -Path 'Registry::HKEY_LOCAL_MACHINE\Software\Policies\Mozilla\Firefox\RelaunchRequired\RestartTimeOfDay' -Name 'Hour' -PropertyType 'DWord' -Value 1
History 93 retained releases
- 8.413 Oct 2026
- Added in this release.
Template
- Internal name
RelaunchRequired_RestartTimeOfDay_Hour- Namespace
Mozilla.Policies.Firefox- Template file
firefox.admx- Release
- Mozilla Firefox 8.4 · file set
a495190075c2a974…
Definition, editor controls and support
Definition
<policy class="Both" displayName="$(string.RelaunchRequired_RestartTimeOfDay_Hour)" explainText="$(string.RelaunchRequired_RestartTimeOfDay_Hour_Explain)" key="Software\Policies\Mozilla\Firefox\RelaunchRequired\RestartTimeOfDay" name="RelaunchRequired_RestartTimeOfDay_Hour" presentation="$(presentation.Number)" xmlns="http://schemas.microsoft.com/GroupPolicy/2006/07/PolicyDefinitions">
<parentCategory ref="Mozilla.Policies.Firefox:RelaunchRequired" />
<supportedOn ref="Mozilla.Policies.Firefox:SUPPORTED_FF150_ONLY" />
<elements>
<decimal id="Number" maxValue="23" minValue="0" valueName="Hour" />
</elements>
</policy>Editor controls
<presentation id="Number" xmlns="http://schemas.microsoft.com/GroupPolicy/2006/07/PolicyDefinitions">
<decimalTextBox refId="Number" />
</presentation>Supported platforms and category
Mozilla.Policies.Firefox:category:RelaunchRequired
<category displayName="$(string.RelaunchRequired_group)" name="RelaunchRequired" xmlns="http://schemas.microsoft.com/GroupPolicy/2006/07/PolicyDefinitions">
<parentCategory ref="Mozilla.Policies.Firefox:firefox" />
</category>
Mozilla.Policies.Firefox:category:firefox
<category displayName="$(string.firefox)" name="firefox" xmlns="http://schemas.microsoft.com/GroupPolicy/2006/07/PolicyDefinitions">
<parentCategory ref="Mozilla.Policies:Cat_Mozilla" />
</category>
Mozilla.Policies.Firefox:definition:SUPPORTED_FF150_ONLY
<definition displayName="$(string.SUPPORTED_FF150_ONLY)" name="SUPPORTED_FF150_ONLY" xmlns="http://schemas.microsoft.com/GroupPolicy/2006/07/PolicyDefinitions" />
Mozilla.Policies:category:Cat_Mozilla
<category displayName="$(string.mozilla)" name="Cat_Mozilla" xmlns="http://schemas.microsoft.com/GroupPolicy/2006/07/PolicyDefinitions" />
Mozilla.Policies.Firefox:category:RelaunchRequired
<category displayName="$(string.RelaunchRequired_group)" name="RelaunchRequired" xmlns="http://schemas.microsoft.com/GroupPolicy/2006/07/PolicyDefinitions">
<parentCategory ref="Mozilla.Policies.Firefox:firefox" />
</category>
<strings><string id="Mozilla.Policies.Firefox:RelaunchRequired_group">Required Relaunch After Update</string></strings>
Mozilla.Policies.Firefox:category:firefox
<category displayName="$(string.firefox)" name="firefox" xmlns="http://schemas.microsoft.com/GroupPolicy/2006/07/PolicyDefinitions">
<parentCategory ref="Mozilla.Policies:Cat_Mozilla" />
</category>
<strings><string id="Mozilla.Policies.Firefox:firefox">Firefox</string></strings>
Mozilla.Policies.Firefox:definition:SUPPORTED_FF150_ONLY
<definition displayName="$(string.SUPPORTED_FF150_ONLY)" name="SUPPORTED_FF150_ONLY" xmlns="http://schemas.microsoft.com/GroupPolicy/2006/07/PolicyDefinitions" />
<strings><string id="Mozilla.Policies.Firefox:SUPPORTED_FF150_ONLY">Firefox 150 or later</string></strings>
Mozilla.Policies:category:Cat_Mozilla
<category displayName="$(string.mozilla)" name="Cat_Mozilla" xmlns="http://schemas.microsoft.com/GroupPolicy/2006/07/PolicyDefinitions" />
<strings><string id="Mozilla.Policies:mozilla">Mozilla</string></strings>