BitLocker Management
Athena manages BitLocker drive encryption on your Windows endpoints. It shows every machine's encrypted volumes and stores each machine's recovery passwords automatically. An operator can reveal a recovery password with a reason, and every reveal is audited. You define encryption policies, assign them to agents, collections or tags, and turn on enforcement to have agents encrypt their OS drive. Athena can also rotate recovery passwords on a schedule and publish a Compliance baseline. Recovery passwords are stored on your own Athena server, so all of this works on an air-gapped network.
- Windows agents only. Linux agents do not report BitLocker. For Macs, see FileVault Recovery-Key Escrow, which is included in the same licence.
- Operating-system and fixed data volumes only. Removable drives (USB sticks, external disks) are never reported or managed.
- A licensed module. Your licence must include the BitLocker module. Without it,
nothing is sent to agents, and the BitLocker REST endpoints return
403. See Separately licensed modules. - Enforcement is off by default. Until you turn it on, Athena only reports, escrows keys and shows what policies would do. It changes nothing on any machine.
Where BitLocker appears#
- Agent details → BitLocker, the tab after Sysmon. It shows one machine's Effective policy and override, its Enforcement status (with Re-evaluate and, when needed, Provide PIN), its Startup PIN line (TPM + PIN policies only), its volumes, and its Recovery keys (with Reveal and the rotate-key icon). While the tab is open it updates by itself.
- Policies → BitLocker (
/policies/bitlocker), in the Policies group of the left navigation, headed BitLocker policies. Until October 2026 this was the Policies → BitLocker tab; old/settings/bitlockerbookmarks still redirect for one release. It has the Enforcement master switch, Recovery password rotation, the Compliance baseline switch, the Policies list, the Assignments list and a Fleet enforcement summary.
Permissions
BitLocker has five permissions. The built-in Admin role has all of them. View BitLocker and Reveal BitLocker startup PINs are also given to the built-in Helpdesk and Operator roles, so help-desk staff can open the BitLocker tabs and read a machine's startup PIN to a user at the pre-boot prompt. Manage BitLocker is also given to Operator, so operators can change policies. Revealing recovery passwords and Decrypt stay Admin-only by default. Roles can't be edited in this release, so to give someone a permission, give them a role that holds it. See Roles & Permissions.
| Permission | Key | Default roles | Allows |
|---|---|---|---|
| View BitLocker | bitlocker.view | Helpdesk, Operator, Admin | See volume status, escrow status (never the key), policies, effective policy, sync state, which startup PIN applies (never the PIN), fleet summary and module settings. |
| Manage BitLocker | bitlocker.manage | Operator, Admin | Edit policies, assignments and per-agent overrides (except Decrypt). Also refresh an agent, re-evaluate, set, clear and push startup PINs, rotate keys, and change the enforcement, rotation and compliance settings. Viewing assignments also requires this permission. |
| Reveal BitLocker recovery keys | bitlocker.reveal | Admin | Reveal an escrowed recovery password. A reason is required and every reveal is audited. |
| Reveal BitLocker startup PINs | bitlocker.pin.reveal | Helpdesk, Operator, Admin | Show a stored TPM + PIN startup PIN (a policy PIN or a device override). Every reveal is audited. See Revealing a startup PIN. |
| Decrypt BitLocker volumes | bitlocker.decrypt | Admin | Set an agent's Decrypt override. This also needs Manage BitLocker. It is a separate permission, so being allowed to edit policies never means being allowed to remove a machine's encryption. |
Volume inventory#
Each Windows agent reports its OS and fixed data volumes every time it connects to the server, and continuously while someone has its BitLocker tab open (see Live updates while the tab is open). To ask a connected agent for a fresh report, click the refresh button on its BitLocker tab (Request current BitLocker volume status from this agent). If the agent is offline, the tab says so and keeps showing the last report it received. For each volume the tab shows:
- the mount point, the volume type (Operating system or Fixed data volume) and the capacity;
- Conversion status: Fully encrypted, Fully decrypted, Encryption in progress, Decryption in progress, Encryption paused or Decryption paused;
- Encrypted percentage and Encryption method (for example XtsAes256);
- protection (Protection on, off or unknown) and lock state;
- Key protectors (for example Tpm, TpmPin, RecoveryPassword) and, on data volumes, auto-unlock;
- readiness: BitLocker capable or Not BitLocker capable.
A machine is BitLocker capable only when BitLocker is available on it and it has a TPM. A Windows edition without BitLocker, or a machine without a TPM (many virtual machines), is Not capable. Athena never sends an encryption request to a Not capable machine, and those machines are never counted as drift. If a collection fails, the tab shows Last collection failed: with the error and time.
Live updates while the tab is open
You don't need to reload the page to watch an encryption or decryption. While an agent's BitLocker tab is open, Athena switches that agent into live mode:
- the agent checks its BitLocker status every 3 seconds and reports only when something has changed. The first check is always reported, so the tab starts with fresh data. A volume that isn't changing sends nothing;
- each report updates the whole tab: the volumes (encrypted percentage, conversion status, protection), the Enforcement status and the Recovery keys list. A key that was escrowed during an encryption appears, and a key that was removed disappears;
- live mode stops when the last person viewing that agent's BitLocker tab leaves it, switches to another tab, or closes the browser. If several people have the same agent open, it keeps running until all of them have left;
- if the agent reconnects while someone still has the tab open (for example after a reboot during encryption), live mode starts again automatically.
The refresh button still works as before: it asks the agent for a report now. The toast says "Status requested. The tab updates as soon as the agent answers." and the tab updates when the answer arrives. If the agent is not connected you see "This agent is not connected. Showing the latest available report."
Live updates need Windows agent version 1.2.112 or later and a license that includes the BitLocker module. An older agent still reports when it connects and when you click refresh, but the tab won't move by itself. To update agents, see Agent Binaries & Updates.
Recovery-key escrow#
Whenever an agent connects, it also sends the recovery passwords (the 48-digit numerical passwords) of every recovery-password protector on its OS and fixed volumes. The server stores each one encrypted. This escrow happens whether enforcement is on or off. It also happens after Athena enables BitLocker or rotates a key. Recovery passwords are never written to logs or audit entries.
The Recovery keys section of the agent's BitLocker tab lists each escrowed protector with its Escrowed: date and Last verified: date. Last verified updates each time the agent reports the same protector again. When an agent's full check-in no longer includes a protector (for example, someone removed it on the machine), Athena deletes its stored key. A volume with nothing escrowed shows No recovery key escrowed.
Keys are grouped by drive letter, newest first. The Reveal button for a volume's current (newest) key sits on the drive-letter row. Older keys that are still escrowed keep their own Reveal on their own line. The rotate-key icon on the Recovery keys title row starts a rotation.
Recovery passwords are encrypted with key material from your Athena server's own certificate authority. If that CA changes (for example, you restore the database onto a server with a different CA), a reveal fails with "The stored recovery key could not be decrypted." Back up the server's PKI together with the database. See Certificates & PKI and Data Directories & Backup.
Revealing a recovery password
- Open the agent's BitLocker tab and click Reveal next to the protector.
- Enter a Reason, for example a help-desk ticket number. It must have at least
3 visible characters (
INC-1passes,okdoes not). Only the first 500 characters are kept. - Click Reveal key. The recovery password appears with a Copy button. It hides automatically after 30 seconds.
The bitlocker.key-revealed audit entry is written before the key is shown.
It records who, which agent, volume and protector, and the reason, but never the password itself. If
the audit entry cannot be written, the key is withheld. Refused reveals (no reason, no escrowed key, a
key that cannot be decrypted) are audited as
bitlocker.key-reveal-failed. The REST response carrying a key is marked
Cache-Control: no-store.
Policies#
A policy describes the BitLocker state you want. Create one in Policies → BitLocker → Policies → New policy.
| Field | Values | Notes |
|---|---|---|
| Name | Up to 100 characters | Required. Unique, case-insensitive (Corp and corp are the same name). |
| Description | Up to 500 characters | Optional. |
| Enabled | On / off | A disabled policy is skipped during assignment matching (see below). |
| Encryption method | XTS-AES 128, XTS-AES 256 | Used when Athena enables BitLocker. |
| Encryption scope | Full volume, Used space only | Used when Athena enables BitLocker. |
| OS drive protector | TPM, TPM + PIN | TPM + PIN needs a startup PIN (see TPM + PIN startup PINs). |
| Startup PIN / Confirm startup PIN | 6 to 20 digits | Shown only for TPM + PIN. Optional. The policy PIN, stored encrypted. When editing a policy that already has a PIN, leave both fields blank to keep it, or tick Remove the stored PIN. The policy list shows PIN stored next to the protector. |
| Require the recovery key to be escrowed before encryption starts | On / off | Shown in the list as Escrow before enable. When on, the agent does not start encryption (or resume suspended protection) until the server confirms it has stored the recovery password. |
Deleting a policy also removes its assignments.
Assignments and priority
An assignment links a policy to a target: an Agent, a Collection or a Tag. Assignments are evaluated top to bottom - the first assignment whose target contains the agent wins, like firewall rules. A new assignment goes to the bottom (lowest priority). Use the Raise priority and Lower priority arrows to reorder.
- An assignment whose policy is disabled is skipped. Its agents fall through to the next matching assignment, or become unmanaged if nothing else matches.
- An assignment to a collection that was later deleted matches no one.
- You can assign a tag that no agent has yet. It takes effect when agents get the tag.
Per-agent overrides
On an agent's BitLocker tab, the Effective policy panel shows the policy that applies and which assignment it comes from (via collection …, via tag … or via this agent). The Override control changes that for one agent. You can add an optional reason, and every change is audited.
| Override | Effect |
|---|---|
| Inherit | No override: the first matching assignment decides. |
| On | Enforce the policy of the first matching assignment. With no matching assignment there is nothing to enforce. An override never has a policy of its own. |
| Off | Do not enforce anything on this agent. Off never decrypts: an encrypted machine stays encrypted. |
| Decrypt | The only way to ask Athena to remove BitLocker. It applies to one agent and is never available in a policy. It needs the Decrypt BitLocker volumes permission, and you must type the agent's hostname to confirm. It is audited as a Warning. |
Enforcement#
The Enforcement switch on Policies → BitLocker is off by default. While it is off, "policies are evaluated and shown, but nothing is sent to any agent". An agent's Enforcement panel then shows the state Athena would send. Turning it on evaluates every connected agent immediately. From then on, an agent is evaluated:
- when it connects, and each time it reports its volumes;
- when a policy, assignment or override that affects it changes;
- when you click Re-evaluate on its BitLocker tab;
- when the BitLocker Enforcement scheduled task runs.
Automatic triggers do not resend a desired state the agent has already answered. So agents that reported Drift, Failed or Suspended are retried only by Re-evaluate or by the BitLocker Enforcement task. Schedule that task in the Scheduler; every 60 minutes is recommended. See Scheduled Jobs. Turning enforcement off stops all sends, but a conversion already running on a machine continues.
What the agent does
- Enforce acts on the OS volume only. Fixed data volumes are reported and escrowed, but never encrypted by enforcement.
- Unencrypted OS volume: the agent needs a ready TPM (otherwise it reports Not capable and changes nothing). It adds the policy's TPM or TPM + PIN protector and adds a recovery-password protector if there is none. If the policy requires it, the agent escrows the recovery password and waits up to 2 minutes for the server's confirmation. Then it starts encryption with the policy's method and scope.
- Already-encrypted OS volume: the encryption method and the protector are never changed automatically. If they differ from the policy, the agent reports Drift. An encrypted volume without a recovery-password protector is also Drift, and the agent leaves it untouched.
- Suspended protection: resumed only when the suspension has no remaining reboot count. If protection is suspended for more reboots, the agent reports Suspended and leaves it alone.
- A volume that is decrypting or whose conversion is paused is left untouched.
- Decrypt (from a Decrypt override) decrypts every OS and fixed volume, data volumes first. It does not need a TPM.
- A machine that already matches the policy is not modified in any way.
Sync states
| State | Meaning |
|---|---|
| In sync | The machine matches its desired state. |
| Applying | A desired state was sent and the machine is converging (for example, encryption in progress). |
| Drift | The machine differs from the policy and is not being changed automatically, or enforcement is off ("this is what would be sent; nothing was"), or a TPM + PIN PIN is still needed. |
| Suspended | Protection is suspended for a number of reboots; left untouched. |
| Failed | The last attempt failed on the agent. The detail gives the reason. |
| Not capable | No BitLocker or no ready TPM. Never counted as drift. |
| Unmanaged | No policy applies (or the override is Off). |
| Not evaluated | The agent has not been evaluated yet. |
Re-evaluate reports what it decided, for example Desired state sent to the agent, Already in sync, The last apply is still converging on the agent, The agent is offline, The agent has not reported its volumes yet, A startup PIN is required or Enforcement is switched off in Settings. Nothing is sent in any of these cases except the first.
The Fleet enforcement summary on the Settings tab counts agents per sync state. It also counts Encrypted, Converting, Unencrypted, Not capable and Escrowed volumes.
From a sync count to the machines#
Each sync-state tile in the Fleet enforcement summary is a link. Hover it to see Show agents in <state>, then click it (or press Enter, or middle-click to open a new tab). The Agents list opens showing only the agents in that state, for example:
/agents?field=Module.bitlocker.SyncStatus&value=Drift
- The list shows the same agents the tile counted. Agents that have never been evaluated are not in any tile, and they don't appear in any of these lists either.
- A tile with a count of 0 is dimmed but is still a link. It opens an empty list.
- The volume tiles (Encrypted, Converting and so on) are not links. They count volumes, not agents, so an agent list would show a different number.
- You can bookmark or share the link. The same filter is available as the
Module.bitlocker.SyncStatusfield in dynamic collections, tagging rules and monitors.
TPM + PIN startup PINs#
With a TPM + PIN policy, users type a startup PIN before Windows boots. Athena needs that PIN when it first enables BitLocker, and it never makes one up. You can store the PIN at two levels:
| Level | Where you set it | Applies to |
|---|---|---|
| Policy PIN | Policies → BitLocker → Policies, the Startup PIN fields of a TPM + PIN policy | Every agent of that policy that has no device override. It is used for machines encrypted from now on; see Push PIN for machines that are already encrypted. |
| Device override | The agent's BitLocker tab, Startup PIN line (or Provide PIN) | That one agent. It wins over the policy PIN and is sent to the agent immediately. |
For each agent, Athena uses the device override if one is set, otherwise the policy PIN. If neither is set, nothing is sent. The agent stays in Drift with "This policy needs a TPM+PIN startup PIN before BitLocker can be enabled." Saving a policy PIN re-evaluates the fleet, so agents that were waiting for a PIN get it without further action.
A PIN must be 6 to 20 digits (digits only) and is always entered twice. Stored PINs are encrypted in the same way as escrowed recovery passwords, so they have the same dependency on the server's certificate authority (see Recovery-key escrow). A PIN never appears in a list or detail response, a log or an audit entry. It is only sent to the agent that needs it, and a person can see it only through the audited reveal.
The Startup PIN line on an agent
When an agent's effective policy is enforced with TPM + PIN, its BitLocker tab shows a Startup PIN line with the PIN that applies:
- Using policy PIN (with the policy name);
- Device override (with set by <user> at <time>);
- No PIN stored.
Its buttons:
- Set (pencil, needs Manage BitLocker): stores a device override and sends it to the agent now. If the machine is already encrypted with TPM + PIN, it changes its PIN in place, so its user types the new PIN at the next start.
- Remove (only when an override is set, needs Manage BitLocker): Remove the device PIN override? The agent returns to its policy PIN. If it is already encrypted with TPM + PIN, the policy PIN is sent now and replaces the current PIN.
- Show (needs Reveal BitLocker startup PINs): the audited reveal, described below.
Provide PIN appears in the Enforcement panel only when a TPM + PIN enable is waiting and no PIN is stored. The PIN you enter there is saved as the agent's device override and sent at once, just like Set.
If the line also says "The PIN that applies now has not reached this device yet - it keeps its previous PIN until it receives the new one.", the PIN that applies has changed since the last one sent to this machine. For example, the policy PIN was changed but not pushed, or the agent was offline when you set the override. Use Push PIN or save the override again while the agent is connected.
Changing the PIN on machines already encrypted (Push PIN)
Changing a policy PIN does not change the PIN on machines that are already encrypted. To roll it out to them, click Push PIN next to the policy in Policies → BitLocker → Policies (shown when the policy has a stored PIN; needs Manage BitLocker) and confirm Push the policy PIN? Athena sends the PIN to every agent that:
- is connected right now;
- is enforced with this policy and has no device override;
- already has a TPM + PIN protector on its OS volume.
Each of those agents changes its existing TPM + PIN protector's PIN in place, so the machine always keeps a TPM protector. The result reads PIN sent to N of M encrypted agent(s). Offline agents are not queued. Push again when they are back online. Changing the PIN on an already-encrypted machine needs Windows agent 1.2.103 or later.
Removing a policy PIN (Remove the stored PIN) does not touch encrypted machines: they keep their current PIN, and new TPM + PIN machines wait for a PIN again.
Revealing a startup PIN
Users with Reveal BitLocker startup PINs see a Show button on the agent's Startup PIN line and next to PIN stored in the policy list. The dialog warns "Showing a PIN is recorded in the audit log with your name." Nothing is decrypted until you click Show PIN. The PIN then appears with a Copy button and hides automatically after 30 seconds. When the dialog hides or closes, Athena tries to clear a PIN you copied from it off the clipboard.
On an agent, the reveal shows the PIN last sent to that machine. If Athena doesn't know
that PIN, it shows the PIN that applies now (the override, otherwise the policy PIN). No reason is
asked for, unlike a recovery-password reveal. The bitlocker.pin-revealed audit entry (Warning)
is written before the PIN is shown. If it cannot be written, the PIN is withheld.
Other TPM + PIN rules
- If the OS volume already has a TPM + PIN protector, enabling needs no new PIN.
- If the OS volume already has a different TPM-based protector, the apply fails with "A different TPM protector already exists on the OS volume."
- Setting, changing, clearing and pushing PINs are audited as
bitlocker.pin-changed/bitlocker.pin-pushed, before the change is made. If the audit entry cannot be written, nothing changes. - The REST route
POST /agents/{id}/pinstill accepts a one-time PIN for a single enable. That PIN is not stored.
Recovery-password rotation#
Athena can replace recovery passwords, for example after one has been revealed. Rotation only touches recovery-password protectors. It never changes encryption, protection or the TPM / TPM + PIN protectors. For each volume:
- the agent adds a new recovery password;
- it escrows the new password to Athena;
- it removes the old password only after Athena confirms the new one is stored.
If the confirmation doesn't arrive, the old password stays and the new, unconfirmed one is removed again. The volume always keeps an escrowed key. Until the rotation result arrives, the old key stays revealable in Athena.
- Rotate on demand: click the rotate-key icon on the title row of an
agent's Recovery keys section (hover it for "Replace this agent's recovery passwords
now…"). The Rotate recovery passwords? dialog says how many keys will be replaced. Click
Rotate now to start. The agent must be connected. If nothing is sent, the reason is
shown: not licensed, no escrowed recovery password, not capable, or offline. The icon is only shown
to users with
bitlocker.manage. It is greyed out while the agent has no escrowed key yet: an Enforce policy creates and escrows one when it encrypts the OS volume. An already-encrypted volume without a recovery password is reported as Drift and left unchanged. - Scheduled rotation: on Policies → BitLocker → Recovery password rotation, turn rotation on and set Rotate recovery passwords older than (days): 1–365, default 30. Rotation is off by default. Rotation runs only from the BitLocker Key Rotation server task, which you schedule in the Scheduler (daily is recommended). The task rotates connected agents that have a BitLocker-capable volume whose newest escrowed key is older than the interval.
Each escrowed key shows its Age: N days. While rotation is on, a volume's newest key that is older than the interval is also marked Stale.
Compliance baseline#
Policies → BitLocker → Compliance baseline → Create baseline adds a detection-only baseline named BitLocker to Compliance. It has one Windows rule, BitLocker - OS drive protected, which passes only when the OS drive's protection status is On. The baseline is assigned to a dynamic collection named BitLocker capable (agents whose BitLocker readiness is Capable) and evaluated every 60 minutes. It has no remediation and changes nothing on agents.
Compliance shows the baseline as Managed by BitLocker; edits made there are overwritten. Remove baseline deletes the baseline and its results. If an operator-created baseline or collection already uses one of these names, creation is refused and nothing half-built is kept.
Filter fields#
BitLocker data is available as filter fields in dynamic collections, tagging rules, monitors and
reports. For example, Module.bitlocker.OsDriveEncrypted equals false builds a
collection of machines whose OS drive is not encrypted yet. An agent that has never reported has no
value for any of these fields.
| Label | Field path | Type / meaning |
|---|---|---|
| BitLocker OS Drive Protection | Module.bitlocker.ProtectionStatus | On, Off or Unknown (OS volume) |
| BitLocker OS Drive Encryption Method | Module.bitlocker.EncryptionMethod | String, for example XtsAes256 (OS volume) |
| BitLocker OS Drive Encrypted | Module.bitlocker.OsDriveEncrypted | Boolean: true only when the OS volume is Fully encrypted (a volume still converting is false) |
| BitLocker Any Unencrypted Fixed Drive | Module.bitlocker.AnyUnencryptedFixed | Boolean: true when any fixed data volume is not fully encrypted |
| BitLocker Readiness | Module.bitlocker.Readiness | Capable or NotCapable |
Audit events#
BitLocker writes these event types to the audit log, and they are forwarded to your SIEM with the rest. No entry ever contains a recovery password or a PIN.
| Event type | Written when |
|---|---|
bitlocker.key-escrowed | A recovery password was stored for the first time. |
bitlocker.key-revealed | An operator revealed a recovery password (Warning; user, agent, volume, protector, reason). |
bitlocker.key-reveal-failed | A reveal was refused or failed. |
bitlocker.policy-changed | A policy was created, updated or deleted. |
bitlocker.assignment-changed | An assignment was created or deleted, or priorities were reordered. |
bitlocker.override-changed | An agent's override was set or cleared (Decrypt is a Warning). |
bitlocker.enforcement-applied | A desired state was applied or an agent reported convergence; also records that a PIN was supplied. |
bitlocker.enforcement-failed | An apply failed. |
bitlocker.decrypt-sent | A Decrypt was sent to an agent (Warning). |
bitlocker.enforcement-toggled | The enforcement switch was turned on or off (Warning). |
bitlocker.key-rotation-requested | A rotation was requested, manually or by the scheduled task. |
bitlocker.key-rotated | An old recovery password was actually retired after its replacement was stored. |
bitlocker.key-rotation-failed | A rotation failed or was partial; the old password was kept (Warning). |
bitlocker.compliance-baseline-changed | The BitLocker compliance baseline was created, updated or removed. |
bitlocker.pin-changed | A policy PIN or a device PIN override was set, changed or removed (action Set, Change or Clear). The value is never recorded. |
bitlocker.pin-revealed | Someone revealed a policy PIN or a device's PIN (Warning; user, policy or agent, and for an agent which PIN was shown). Refused reveals are recorded with the reason. |
bitlocker.pin-pushed | A policy PIN was pushed to its connected, already-encrypted agents (Warning). |
Changes to the enforcement switch, the rotation settings, overrides and startup PINs are audited first. If the audit entry cannot be written, the change is not made.
REST API#
All routes are under /api/bitlocker and use the standard { success, data, message }
envelope. Enum values are sent and returned as names (for example
"XtsAes256", "Collection"); numbers are rejected. See
API Reference for authentication.
| Method & route | Permission | Purpose |
|---|---|---|
GET /agents/{id}/volumes | view | Last reported volumes plus the last failed collection ({ volumes, lastError }). |
POST /agents/{id}/refresh | manage | Ask the agent to report now. data = whether a connected agent received the request. |
GET /agents/{id}/recovery-keys | view | Escrow metadata per protector (never the password). |
POST /agents/{id}/reveal | reveal | Body { protectorId, reason }. Returns the recovery password. 400 no/short reason, 404 no escrowed key, 500 cannot decrypt or cannot audit. |
GET /policies | view | List policies. |
POST /policies · PUT /policies/{id} | manage | Create / replace a policy. 409 on a duplicate name. |
DELETE /policies/{id} | manage | Delete a policy and its assignments. |
GET /assignments | manage | Assignments in priority order. |
POST /assignments | manage | Body { policyId, targetKind, targetKey }; appended last. targetKey is the agent id, the collection id or the tag name. |
DELETE /assignments/{id} | manage | Remove an assignment. |
POST /assignments/reorder | manage | Body { assignmentIds }: every assignment id exactly once, highest priority first (at most 500). All-or-nothing. |
GET /agents/{id}/effective-policy | view | The resolved policy, its source and the matched assignment. |
PUT /agents/{id}/override | manage (+ decrypt) | Body { mode, reason, confirm, confirmHostname }. mode is On, Off or Decrypt. Decrypt also needs bitlocker.decrypt, confirm: true and confirmHostname equal to the agent's hostname. |
DELETE /agents/{id}/override | manage | Clear the override (back to Inherit). |
GET /agents/{id}/sync-state | view | The agent's enforcement sync state (null = never evaluated). |
GET /fleet-status | view | Agent counts per sync state and volume posture counts. |
POST /agents/{id}/apply | manage | Re-evaluate the agent now; data = the decision (for example Sent, AlreadyInSync, Offline, PinRequired, EnforcementDisabled). |
POST /agents/{id}/pin | manage | Body { pin } (6–20 digits): a one-time PIN for a single TPM + PIN enable. Never stored. To store a PIN, use pin-override. |
GET /agents/{id}/pin | view | Which PIN applies, never the PIN: { source, policyId, policyName, policyHasPin, overrideSetBy, overrideSetAt, deliveryPending }. source is None, Policy or Device. |
PUT /agents/{id}/pin-override | manage | Body { pin }. Store the device override and send it to the agent now; data.decision = what that send decided. |
DELETE /agents/{id}/pin-override | manage | Remove the device override; the policy PIN (if any) is sent to the agent now. 400 when there is no override. |
POST /agents/{id}/pin/reveal | pin.reveal | Returns { pin }: the PIN last sent to the machine, otherwise the one that applies now. Audited first. |
PUT /policies/{id}/pin | manage | Body { pin }. Set or replace the policy PIN. GET /policies reports only hasPin. |
DELETE /policies/{id}/pin | manage | Remove the policy PIN. 400 when there is none. |
POST /policies/{id}/pin/push | manage | Push PIN. data.targeted = matching connected agents, data.sent = PINs actually sent. 400 when the policy has no PIN. |
PIN routes return 400 for a PIN that is not 6–20 digits, 404 for an unknown policy or agent (and for a reveal with nothing stored), 403 for a reveal without bitlocker.pin.reveal, and 500 when the audit entry could not be written (nothing was changed, sent or shown). | ||
POST /agents/{id}/rotate | manage | Rotate now; data = the decision (only Sent means a rotation was started). |
GET /settings | view | Enforcement switch, rotation on/off and interval, compliance baseline ids. |
PUT /settings | manage | Body { enforcementEnabled?, rotationEnabled?, rotationDays? }. Only the fields you send are changed; rotationDays 1–365. |
PUT /compliance | manage | Body { enabled }: create or remove the BitLocker compliance baseline. 403 when not licensed, 409 on a name conflict. |
For example, to turn enforcement on without touching rotation:
curl -k -X PUT -H "Authorization: Bearer <token>" -H "Content-Type: application/json" \
-d '{"enforcementEnabled": true}' \
"https://<server>:8443/api/bitlocker/settings"
Troubleshooting#
| Symptom | What to check |
|---|---|
| "This agent has not reported its BitLocker volumes yet." | The agent has not connected since the module was available, or it is a Linux agent. Click refresh while it is connected. |
| The encryption percentage doesn't move until you click refresh | Live updates need Windows agent 1.2.112 or later and a license that includes the BitLocker module, and the agent must be connected. Update the agent, or use refresh. See Live updates. |
| The rotate-key icon is greyed out | No recovery key is escrowed for the device yet. An Enforce policy creates and escrows one when it encrypts the OS volume. |
| Agent shows Not capable | BitLocker is not available on that Windows edition, or the machine has no (ready) TPM. Athena will not encrypt it; it is excluded from drift and from the compliance baseline's collection. |
| Policy assigned but nothing happens | Enforcement is off (the agent's panel says "Enforcement is switched off in Settings"), the policy is disabled, a higher-priority assignment matches first, or the override is Off. |
| Stuck in Drift after an earlier attempt | Automatic triggers don't resend an answered state. Click Re-evaluate, or schedule the BitLocker Enforcement task. |
| Drift: method or protector differs from the policy | Athena never re-encrypts or swaps protectors on an already-encrypted volume. Change it on the machine, or adjust the policy. |
| Failed with "the server did not acknowledge the recovery key escrow" | With Escrow before enable on, the agent waits up to 2 minutes for the server to confirm the key is stored. Check connectivity and that enforcement still applies to the agent, then Re-evaluate. |
| "The stored recovery key could not be decrypted." | The server's CA key material differs from the one used when the key was escrowed. Restore the matching PKI. The agent re-escrows its current keys each time it connects. |
| Reveal refused: "A reason of at least 3 visible characters is required" | Enter a real reason, such as a ticket number. |
| Agent stays in Drift: "This policy needs a TPM+PIN startup PIN…" | No PIN is stored for it. Set a Startup PIN on the policy, or click Provide PIN on the agent. |
| Users still type the old startup PIN after you changed the policy PIN | A new policy PIN only applies to machines encrypted from then on. Click Push PIN while those agents are connected. Agents with a device override are not changed by a push. |
| "The PIN that applies now has not reached this device yet" | The agent was offline, or the policy PIN changed after it was encrypted. Push the policy PIN, or save the device override again, while the agent is connected. |
| No Show button for a PIN, or "You do not have permission to see startup PINs." | Your role lacks bitlocker.pin.reveal (held by Helpdesk, Operator and Admin by default). Ask an administrator to give your account one of those roles. |
| "The stored PIN could not be decrypted." | As with recovery keys, the server's CA key material changed since the PIN was stored. Restore the matching PKI, or set the PIN again. |
Related#
- FileVault Recovery-Key Escrow: escrow, rotate and reveal the personal recovery key of your Macs (licensed with BitLocker).
- Boot & Security (Secure Boot / TPM): TPM and Secure Boot inventory.
- Compliance & Baselines: where the BitLocker baseline's results appear.
- Collections and Filter Field Reference: targeting with BitLocker filter fields.
- Scheduled Jobs: scheduling the BitLocker Enforcement and Key Rotation tasks.
- Audit Event Types Reference: all audit events.
- Air-Gapped Operation: running Athena with no outbound connectivity.