Secure Boot 2023 Certificate Update
Microsoft is moving Windows devices to a new set of Secure Boot certificates — the Windows UEFI CA 2023, the Microsoft UEFI CA 2023 and a new 2023 Key Exchange Key (KEK) — together with a boot manager signed by the new CA. Athena shows exactly where each Windows machine is in that rollout, tells you what (if anything) stands in the way, and lets you start the update — or re-run Windows' own update task with Retry now — on one machine or many without scripting it yourself.
Windows only. The certificate status is reported by the Windows agent, and starting the update is only supported on Windows. Linux machines, legacy-BIOS machines and agents older than 1.2.108 show Not reported by this agent. The general firmware and TPM readout is covered in Boot & Security Inventory.
Where to find it#
Open a machine from the Agents list and choose Boot & Security in the agent detail view's left-hand navigation. Under the Boot & Security Information card you'll find the Secure Boot certificates (2023) card with its Update progress checklist, followed by Certificate update readiness and, when they apply, the Start certificate update and Retry now buttons.
Reading the status#
The Status badge is worked out from all the evidence the agent reports — the Windows servicing status, the update stage, the Secure Boot servicing events in the System log and the certificates actually present in the firmware — not from the Windows status value alone, which can lag behind what has really happened. The states, checked in this order, are:
| Status | Meaning |
|---|---|
| Updated | The 2023 certificates and boot manager are in place (Windows reports Updated, event 1808 was logged, or the update stage is complete and the firmware db holds the Windows UEFI CA 2023). |
| Failed | Windows recorded an update error, or the newest thing that happened was a failure event (1795 or 1796). The line under the badge shows the failure and its code. |
| Pending restart | Windows applied the certificate step and needs a restart to update the boot manager and finish (update stage 0x4100, event 1800, or event 1801 part-way through an update). |
| In progress | An update was requested or is running. |
| Blocked | Secure Boot is turned off, or Microsoft has held this device model back for a known firmware issue (the known-issue ID is shown). |
| Not started | No sign of the update yet; nothing is wrong. |
When the status is Pending restart, users with the agents.restart
permission get a Restart computer button right next to the badge. It asks for a
delay (0–3600 seconds, 60 by default), warns anyone signed in, and then restarts the machine.
Card fields
| Field | Shows |
|---|---|
| Latest Event | The newest Secure Boot servicing event, with its meaning first and its ID second (for example Update complete — certificates and boot manager updated · event 1808), and when it was logged. The ? beside it explains the event and what to do. |
| Last Failure | Shown on the card only while a failure is the newest thing that happened. A failure that later progress superseded moves to Technical details. |
| Error Code | The error Windows recorded for the update, shown on the card only when one is set. |
| Update stage | Where Windows is in the update, worded to match the status badge (see Update stages); shown on the card while an update is under way, otherwise under Technical details. |
| 2023 CAs in Firmware db | Whether the firmware's allowed-signatures database holds the Windows UEFI CA 2023 and the Microsoft UEFI CA 2023 — read directly from the firmware. |
| KEK 2023 in Firmware | Whether the firmware's Key Exchange Key list holds the 2023 KEK. |
| Known Issue ID | The Microsoft known-issue ID when the device is held back. |
If the firmware already contains the Windows UEFI CA 2023 but Windows hasn't started the update (for example, because a newer BIOS shipped it), the card notes 2023 CA already present in firmware. If the firmware couldn't be read, the firmware fields say Could not read firmware; on an agent older than 1.2.108 they say Not reported by this agent (needs agent 1.2.108 or later).
Expand Technical details for the raw values: the Windows-reported status, the raw update-stage and policy registry values, Managed Opt-In (opted in to Microsoft-managed rollout), High-Confidence Opt-Out (opted out of automatic high-confidence rollout), Can Attempt Update After (a wait period Windows is observing), the Hardware group (Microsoft rollout bucket) — devices with the same make, model and firmware share a group, and Microsoft releases the update group by group — and the full list of Firmware db Certificates.
Update progress checklist
Under the card fields, Update progress breaks the rollout into the four pieces Windows has to put in place, each marked Done, Not done or Unknown:
| Step | How it's determined |
|---|---|
| Windows UEFI CA 2023 in firmware DB | Read directly from the firmware's allowed-signatures database. |
| Microsoft UEFI CA 2023 in firmware DB | Read directly from the firmware. Shows Not needed (no 2011 third-party CA in the firmware DB) when the firmware never trusted the 2011 third-party CA in the first place (common on virtual machines such as Hyper-V), so there is nothing to replace. |
| 2023 boot manager installed | Done when the status is Updated or the newest event is 1799 (boot manager updated); after an update was requested, it follows the boot-manager step of the update stage. With no request and no event it stays Unknown rather than guess. |
| KEK 2023 in firmware | Read directly from the firmware's Key Exchange Key list. |
Once the Windows UEFI CA 2023 and the 2023 boot manager are both in place, the checklist adds the summary Windows boot is protected (2023 boot certificate and boot manager installed). followed by Still outstanding: and every step that is still Not done — typically the KEK on machines whose firmware refused it.
Update stages
The Update stage always agrees with the status badge: a failed or blocked update is never described as "in progress", whatever the raw value says. The raw value (shown on hover) only picks the wording within a status:
| Status | Update stage shown |
|---|---|
| Not started | No update requested |
| In progress | Update requested, waiting for the Secure-Boot-Update task (raw 0x5944); otherwise Update in progress |
| Pending restart | Certificates applied, reboot needed to update the boot manager (raw 0x4100); otherwise Waiting for a restart to continue the update |
| Failed | Stopped after a failure; Windows retries at the next restart |
| Blocked | Stopped: a Microsoft known-issue hold applies to this device — or — Stopped: Secure Boot is off |
| Updated | Update steps complete |
Secure Boot servicing events
Athena translates the Secure Boot servicing event IDs Windows logs so you never have to look up a bare number:
| Event | Meaning | What to do |
|---|---|---|
1034 | DBX update applied — the revocation list in the firmware was updated. | Nothing. |
1036 | DB update applied — the allowed-signatures database was updated (for the 2023 rollout, this adds the Windows UEFI CA 2023). | Nothing. |
1037 | DBX update applied — Windows Production PCA 2011 revoked. | Nothing. |
1042 | DBX update applied — older boot manager versions revoked. | Nothing. |
1043 | KEK update applied — the firmware's Key Exchange Key was updated to the 2023 key. | Nothing. |
1044 | DB update applied — Microsoft Option ROM UEFI CA 2023 added. | Nothing. |
1045 | DB update applied — Microsoft UEFI CA 2023 added. | Nothing. |
1795 | Firmware refused the update — it returned an error. Windows retries on the next restart. | Ask the device manufacturer whether a BIOS/UEFI update is available. |
1796 | Update failed — Windows hit an unexpected error. Windows retries on the next restart. | Restart so Windows retries; if it keeps failing, look up the error code in Microsoft's guidance. |
1799 | Boot manager updated — signed with Windows UEFI CA 2023. | Nothing. |
1800 | Restart needed before the update can continue. | Restart the device. |
1801 | New certificates not yet applied to the firmware. | Follow Microsoft's guidance to complete the update. |
1802 | Update held back — known firmware issue on this device. | Check with the vendor for a firmware update that addresses it. |
1803 | No PK-signed KEK for this device — OEM key needed. | Check with the manufacturer for a PK-signed KEK for this model. |
1808 | Update complete — certificates and boot manager updated. | Nothing. |
With agent 1.2.109 or later, the agent watches the System log for these events and sends a fresh Boot & Security inventory as soon as one is logged, so the card follows Windows on its own — for example, it moves from Pending restart to Updated shortly after the post-restart task finishes, without waiting for the next scheduled inventory. With agent 1.2.111 or later, the "update applied" events (1034–1045) count as progress, so a later KEK update applied replaces an older failure as the card's latest event instead of leaving the machine shown as Failed.
Certificate update readiness#
Below the card, Certificate update readiness lists every reason the update can or cannot start, each marked Blocker, Warning or Info, with what to do and who does it. Any blocker disables the start button.
| Finding | Severity | Fix |
|---|---|---|
| No Secure Boot certificate data reported (older agent, legacy BIOS or not UEFI) | Blocker | Update the agent to 1.2.108 or later and collect inventory. |
| Not a Windows machine | Blocker | — |
| Secure Boot is off | Blocker | Enable Secure Boot in the BIOS/UEFI setup (on-site or with the vendor's BIOS tool). |
| Held by Microsoft for a known firmware issue | Blocker | Wait for Microsoft or the OEM to release a fix; don't force the update. |
| The 2023 update is already complete | Info | Nothing — the button is hidden. |
| Reboot needed to finish (boot manager step, or event 1800) | Warning | Reboot the device. |
| The last update attempt failed (shown while it's the newest thing that happened). When Windows reported the reason as text rather than a code, the text is shown. | Warning | Look the code up in Microsoft's Secure Boot event reference; a firmware update often fixes it. When one of the firmware findings below is also listed, this finding simply points to it, so there is only one instruction to follow. |
| The firmware rejected the Secure Boot update and the KEK still lacks the 2023 certificate (event 1803, or a 1795/1796 failure that is still the newest event) — on firmware that is old or whose date isn't known. When the BIOS is more than two years old, its date is named. | Warning | Update the BIOS/UEFI firmware first (check the manufacturer for an update), then press Retry now. With an old BIOS: Retrying on this firmware is unlikely to help. |
| The firmware rejects the new KEK even on a current BIOS (released within the last two years; the BIOS version and date are named) | Warning | Make sure Windows is up to date (the finding names the Windows build the device reports), then press Retry now. If that doesn't help, contact the manufacturer's support for this model, quoting the error the finding names. |
| Windows is throttling automatic attempts until a date | Info | Starting the update overrides the wait. |
| BitLocker | Info | If BitLocker protects the system drive, it's suspended for one reboot so the firmware change doesn't trigger recovery. Nothing required. |
The two firmware findings carry a Why this fix ? that explains the reasoning: Windows can only add the 2023 KEK when the firmware accepts it, and the key it writes ships in Windows' cumulative updates — so the firmware and Windows both need to be current, and Windows' Secure-Boot-Update task has to run, before the KEK goes in. Only if a current firmware still rejects it does the fix have to come from the manufacturer.
Starting the update#
What the card offers below the readiness list depends on the status:
| Status | What the card offers |
|---|---|
| Updated | Nothing. |
| Pending restart | Windows is waiting for a restart. Use the Restart computer button next to the badge. |
| In progress | Windows is applying the update. Nothing to do until it asks for a restart. If the update is queued but Windows hasn't acted on it yet, Retry now is offered as well. |
| Failed | Retry now, plus Start certificate update unless a firmware finding is listed. |
| Not started or Blocked, with the old-firmware finding | Update the firmware first — Windows retries by itself at the next restart. No button. |
| Not started or Blocked, with the current-BIOS finding | Nothing to do on this device — waiting for a manufacturer fix. Windows retries at every restart. No button. |
| Not started / Blocked | Start certificate update (disabled while a blocker is listed). |
Both buttons need the secureboot.update permission. To start the update:
- Click Start certificate update (disabled, with the reason in the tooltip, while a blocker is listed).
- Confirm in the Start the Secure Boot certificate update? dialog.
- Athena sends the machine a fixed PowerShell script, run as SYSTEM through
remote command execution (5-minute timeout). The script:
- checks that the Windows scheduled task
\Microsoft\Windows\PI\Secure-Boot-Updateexists and is enabled — if not, it stops withFAILEDand changes nothing; - suspends BitLocker on the system drive for one reboot, but only if protection is on;
- sets
AvailableUpdatesto0x5944— Microsoft's documented trigger for IT-managed updates — and starts the Secure-Boot-Update task; - after about 10 seconds, prints the new update stage and the Windows status.
- checks that the Windows scheduled task
- The card shows Update started - a reboot (usually two) is required to finish with a View command result link to the script's output.
The update only finishes after one or two restarts. Schedule them yourself — with the Restart computer action once the status turns Pending restart, or your usual maintenance process. Commands are not queued for offline agents: if a machine is offline, nothing is sent, so start it again once it's back online.
Retry now#
Windows applies the certificates through its own scheduled task, \Microsoft\Windows\PI\Secure-Boot-Update,
and normally only retries a failed step at the next restart. After you've updated the firmware or
installed the latest Windows cumulative update, you don't have to wait: Retry now
runs that task immediately. It's offered when the status is Failed, or
In progress with an update queued that Windows hasn't acted on yet. The hint under the
button reads After updating the firmware or Windows.
- Click Retry now (disabled while a blocker is listed).
- Confirm in the Retry the Secure Boot certificate update now? dialog.
- Athena sends the machine a fixed PowerShell script, run as SYSTEM through
remote command execution. The script:
- checks that the Secure-Boot-Update task exists and is enabled — if not, it stops with
FAILEDand runs nothing; - prints the current
AvailableUpdatesvalue, then starts the task; - waits up to 90 seconds for the task to finish (if it's still running, its result shows in the next inventory);
- reports the task state,
LastRunTime,LastTaskResult, the newAvailableUpdatesvalue and the Windows status.
- checks that the Secure-Boot-Update task exists and is enabled — if not, it stops with
- A toast confirms Windows' Secure Boot task was started. and the card shows a View command result link to the script's output. The card updates by itself as soon as Windows logs progress.
Unlike Start certificate update, Retry now never changes
AvailableUpdates (so it can't queue anything new), doesn't touch BitLocker and
never restarts the machine. If the run applies the remaining certificates, the status
moves on to Pending restart or Updated on its own.
Permissions#
| Permission | Allows | Default roles |
|---|---|---|
inventory.view | Seeing the card and the readiness findings. | Helpdesk, Operator, Admin |
secureboot.update | Starting the certificate update and Retry now. | Operator, Admin |
agents.restart | The Restart computer action. | Operator, Admin |
secureboot.update is separate from the general commands.execute
permission: it only allows these two fixed scripts, so you can let operators run the certificate
update without letting them run arbitrary scripts. See Roles & Permissions.
Each start is recorded in the audit log as a command execution labelled
Secure Boot certificate update, and each retry as
Secure Boot certificate update retry.
Tracking the rollout fleet-wide#
These fields are available under the Security category wherever Athena builds a machine filter — dynamic collections, automatic tagging rules — and as columns in the report builder's Agents data source:
| Field | Type | Meaning |
|---|---|---|
SecureBootUpdateState | Text | The overall status from the card: Updated, Failed, PendingRestart, InProgress, Blocked, NotStarted. Empty when nothing was reported. |
SecureBootRestartPending | Boolean | The certificate update is waiting for a reboot. |
RestartPending | Boolean | The machine needs a restart for any reason — Windows servicing or the Secure Boot update (the same answer as the Restart Pending field on the Boot & Security card, which also names the reason). |
SecureBootCertStatus | Text | The raw Windows-reported status. |
SecureBootCertUpdateComplete | Boolean | The update finished (event 1808 or status Updated). |
SecureBootLatestEventId | Number | Newest Secure Boot servicing event ID. |
SecureBootCertError | Number | Update error code (0 = none). |
SecureBootLastFailureCode | Number | Error code of the newest 1795/1796 failure, as a signed 32-bit number. |
SecureBootKnownIssueId | Text | Microsoft known-issue ID holding the device back. |
SecureBootBucketId | Text | Microsoft rollout bucket (hardware group). |
SecureBootDbHasWindowsUefiCa2023 | Boolean | Firmware db holds the Windows UEFI CA 2023. |
SecureBootKekHas2023 | Boolean | Firmware KEK holds the 2023 KEK. |
Typical uses:
- A dynamic collection
SecureBootUpdateState = NotStartedas the target list for the next wave. - A collection
SecureBootRestartPending = Trueto schedule the finishing restarts. - A report grouped by
SecureBootBucketIdwithSecureBootUpdateStateto see which hardware models are lagging. - An automatic tag for
SecureBootKekHas2023 = Falsemachines whose last event was1803, to hand to the hardware vendor for a firmware update.
REST API#
| Method & path | Permission | Purpose |
|---|---|---|
GET /api/agents/{id}/secureboot/readiness | inventory.view | Readiness for one machine: canStart, alreadyUpdated, updateInProgress, restartPending, state, isOnline, and findings (each with code, severity, reason, fix, who, detail, eventId, event, helpUrl). 404 if the agent doesn't exist. |
POST /api/agents/{id}/secureboot/update | secureboot.update | Start the update on one machine. Returns the per-machine result; 404 if the agent doesn't exist. |
POST /api/agents/secureboot/update | secureboot.update | Start the update on many machines. Body: { "agentIds": [ ... ] } (at least one, else 400). Returns one result per machine. |
POST /api/agents/{id}/secureboot/retry | secureboot.update | Retry now on one machine. Same result shape and 404 as the start call. |
POST /api/agents/secureboot/retry | secureboot.update | Retry now on many machines. Same body and 400 rule as the bulk start. Returns one result per machine. |
Each result has an outcome of Dispatched (with the commandId
whose output shows what the script did), Blocked (with the blocking finding codes in
reasons, e.g. SecureBootDisabled, KnownIssue,
AlreadyUpdated), Offline, NotFound or Failed.
In a bulk call, every machine that is ready and online is sent the script as a single command.
Unlike the buttons, the API doesn't look at the status — only blockers and already updated
stop it — so re-running either call from a script is harmless. Readiness findings that carry a
Why this fix explanation return it in a help field.
# Start the certificate update on every machine in a list
$headers = @{ Authorization = "Bearer $token" }
$body = @{ agentIds = $agentIds } | ConvertTo-Json
$r = Invoke-RestMethod -Method Post `
-Uri "https://athena.example.com:8443/api/agents/secureboot/update" `
-Headers $headers -ContentType "application/json" -Body $body `
-SkipCertificateCheck
$r.data | Select-Object hostname, outcome, reasons, commandId
Troubleshooting#
- The card says Not reported by this agent. Update the Windows agent to 1.2.108 or later (see Agent Binaries & Updates), then collect inventory. Legacy-BIOS and Linux machines never report it.
- Command result says
FAILED: scheduled task … is missingor… is disabled. Windows can't apply the certificates without the Secure-Boot-Update task. Nothing was changed; restore or enable the task, then start again. - Stuck on Pending restart. The update needs the restart (often two). After restarting, give Windows' task a few minutes to run; with agent 1.2.109+ the card updates itself when the next event is logged.
- Event 1795, 1796 or 1803 and KEK 2023 in Firmware: No. The firmware refused the new KEK. If the readiness list says the firmware is old, install the manufacturer's latest BIOS/UEFI update, then install the latest Windows cumulative update and press Retry now — restarting alone won't fix it.
- Current BIOS, still rejected. Bring Windows up to date and press Retry now: the KEK can go in only once both the firmware and Windows are current and Windows' Secure-Boot-Update task runs. If the firmware still rejects it, contact the manufacturer's support for that model with the error shown in the finding.
- Retry result says
The task is still running after 90 seconds. Nothing is wrong; the outcome appears with the next inventory (or sooner, as soon as Windows logs an event). - Blocked with a Known Issue ID. Microsoft is deliberately holding the device model back. Don't force it; wait for a firmware or Windows fix.
- Result
Offline. Nothing was sent. Start the update again when the agent is connected.