Power Management
Athena sets Windows power settings centrally across your fleet. These include display and sleep timeouts, what the power button and lid do, battery thresholds and actions, processor limits and USB selective suspend. You build named power policies, assign them to agents, collections or tags, and Athena writes each machine's values. Each agent's tab shows whether the machine still matches its policy. All of this runs between your Athena server and its agents, so it works on an air-gapped network.
- Windows agents only. Linux agents are not managed.
- A licensed module. Your licence must include the Power Management module
(
module.power). Without it, nothing is sent to agents and the power REST endpoints return403. See Separately licensed modules. - Nothing is applied by default. Two switches control applying, and both are off by default. Until you turn on Enforce power policies, your policies are only a plan and no machine is changed.
- Not copied by settings sync. Power policies stay on the server where you create them. Settings sync does not copy them to your other Athena servers.
Where Power Management appears#
- Policies → Power Management (
/policies/power), in the Policies group of the left navigation, headed Power configuration. Until October 2026 this was the Settings → Agent → Power Management sub-tab; old/settings/agent/powerbookmarks still redirect for one release. It has the Enforce power policies switches, the Power policies list and the Assignments list. - Agent details → Power, the section after BitLocker. It shows one machine's effective policy, its active power scheme, and each setting's policy value beside the machine's value.
Permissions
Power Management has two permissions. The built-in Admin role has both. View power management is also given to the built-in Helpdesk and Operator roles, because a machine's power settings are not sensitive. Manage power management is also given to Operator. 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 power management | power.view | Helpdesk, Operator, Admin | See power policies, their assignments, an agent's effective policy and the power configuration agents report. Both Power tabs are hidden without it. |
| Manage power management | power.manage | Operator, Admin | Create, edit, delete and assign policies, and turn the two switches on or off. Also apply a policy, ask agents to report, and schedule the Power State Collection task. |
Power policies#
A policy is a named set of power settings. Click Add a power policy on the Power Management tab to open New power policy. To change a policy, click Edit in its row.
| Field | Values | Notes |
|---|---|---|
| Name | Up to 100 characters | Required. Must be unique, ignoring case (Laptops and laptops are the same name). |
| Description | Up to 500 characters | Optional. |
| Policy enabled | On / off | A disabled policy is skipped when Athena works out which policy applies. Its agents fall through to the next matching assignment (see Assignments). |
| Managed settings | The grid of 25 settings | Tick a setting to manage it, then set its On battery and Plugged in values. |
Managed, "Never" and unmanaged
Each setting in a policy is in one of three states:
- Managed with a value. Athena writes the value and reports drift if the machine has a different one.
- Managed, set to 0. For a timeout,
0means Never, for example a display that never turns off. This is a real value, and Athena writes and enforces it. - Not managed (unticked). Nothing is stored and nothing is written. The machine keeps its own value and never reports drift for it. This is not the same as setting it to 0.
You can also manage one side only. Leave either the On battery or the Plugged in value empty and Athena leaves that side of the machine alone. The policy list shows how many settings each policy manages ({n} of 25 settings managed), or No settings managed.
If you open the editor while automatic re-apply is off, it shows a notice: "Policies are not applied automatically. Assigning this policy will show drift but will not change any device until someone presses Apply." See Applying policies.
The 25 settings
Timeouts are entered in minutes in the console, from 0 (Never) up to 24 hours. Percentages range from 0 to 100. Settings marked hidden in the editor do not appear in the Windows Power Options control panel, but Athena sets them anyway.
| Group | Setting | Values | REST key |
|---|---|---|---|
| Display | Turn off display after | Minutes | display-timeout |
| Dim display after (hidden) | Minutes | display-dim-timeout | |
| Display brightness | % | display-brightness | |
| Dimmed display brightness | % | display-dim-brightness | |
| Enable adaptive brightness | Off, On | adaptive-brightness | |
| Sleep | Sleep after | Minutes | sleep-timeout |
| Allow hybrid sleep | Off, On | hybrid-sleep | |
| Hibernate after | Minutes | hibernate-timeout | |
| Allow wake timers | Disable, Enable, Important Wake Timers Only | wake-timers | |
| Allow away mode (hidden) | No, Yes | away-mode | |
| Power buttons and lid | Power button action (hidden) | Do nothing, Sleep, Hibernate, Shut down, Turn off the display | power-button-action |
| Sleep button action (hidden) | Do nothing, Sleep, Hibernate, Shut down, Turn off the display | sleep-button-action | |
| Lid close action (hidden) | Do nothing, Sleep, Hibernate, Shut down | lid-close-action | |
| Start menu power button | Sleep, Hibernate, Shut down, Turn off the display | start-menu-power-button | |
| Hard disk | Turn off hard disk after | Minutes | disk-timeout |
| Battery | Low battery level | % | battery-low-level |
| Critical battery level | % | battery-critical-level | |
| Low battery action | Do nothing, Sleep, Hibernate, Shut down | battery-low-action | |
| Critical battery action | Do nothing, Sleep, Hibernate, Shut down | battery-critical-action | |
| Low battery notification | Off, On | battery-low-notification | |
| Critical battery notification | Off, On | battery-critical-notification | |
| Processor power management | Minimum processor state | % | processor-min |
| Maximum processor state | % | processor-max | |
| System cooling policy (hidden) | Active, Passive | cooling-policy | |
| USB settings | USB selective suspend | Disabled, Enabled | usb-selective-suspend |
A sleeping machine cannot receive deployments, commands or remote sessions. For desktops you manage remotely, consider a longer Sleep after (or 0 = Never) when plugged in. Use Allow wake timers if you run overnight maintenance windows. For docked laptops, set Lid close action to Do nothing.
Assignments#
An assignment links a policy to a target. In the Assignments section, choose a policy (Choose a policy) and a target type, then pick the target (Choose a target) and click Assign this policy to this target. You can target:
- Agent: one machine.
- Collection: every current member of a collection. The collection must exist.
- Tag: every agent carrying an agent tag. The tag does not have to exist yet. Until it does, it matches no agents.
Which policy applies
Each machine gets exactly one policy, which works like a firewall rule list:
- Assignments are checked in priority order, top first. A lower priority number wins.
- The first assignment whose target contains the agent decides its policy. Nothing below it is considered.
- An assignment whose policy is disabled is skipped, and its agents fall through to the next matching assignment.
- If nothing matches, the agent is unmanaged. Athena writes nothing and the machine keeps its own power configuration.
Settings are never merged across policies. If the winning policy leaves a setting unmanaged, it stays unmanaged, even if a lower-priority policy manages it. This way you can always tell which single policy configured a machine.
A new assignment is added last, with the lowest precedence. Use the Higher precedence and Lower precedence arrows to reorder. Removing an assignment hands its agents to the next matching assignment, or leaves them unmanaged if none matches.
Deleting a policy also deletes its values and every assignment that points to it. Removing an assignment or unticking a setting has the same limit. None of these puts the old values back on a machine: machines keep whatever they were last set to. To change a setting back, manage it with the value you want and apply again.
Applying policies#
Editing policies and assignments changes only the plan on the server. Two switches at the top of the Power Management tab decide whether anything reaches a machine. Both are off by default:
| Switch | When off | When on |
|---|---|---|
| Enforce power policies on agents | Nothing is sent to any agent, whoever asks. The tab says "Enforcement is off, so the values below are a plan: nothing is sent to any agent." | Operators can apply policies with Apply now. |
| Re-apply automatically when an agent drifts | A policy is applied only when someone clicks Apply now. | If a machine no longer matches its policy, Athena sends it the policy again at check-in, when it reports, and on each run of the Power State Collection task. It also re-applies to the affected agents right after you save a policy or change an assignment. Needs the first switch on as well. |
You can turn automatic re-apply on while enforcement is off. Nothing is re-applied until both switches are on.
Apply now and Refresh
- Policies → Power Management → Apply now sends each connected agent its policy. The result reads Sent to {n} of {m} connected agents. Agents that are unmanaged, or whose policy manages no settings, are counted but not sent anything.
- The report button next to it asks every connected agent to report its current power configuration (Asked {n} of {m} connected agents to report.). This changes nothing on the machines.
- On an agent's Power section, Apply now sends that one machine its policy. It is greyed out while enforcement is off. Refresh asks the machine to report.
Offline agents are not queued. An apply reaches only agents that are connected when you click. With automatic re-apply on, an agent that was offline gets its policy at its next check-in. Otherwise, apply again once it is online.
Athena writes values into the machine's currently active power plan. It writes only the settings the policy manages, and only the managed side (On battery or Plugged in) of each.
Apply messages
| Message | Meaning |
|---|---|
| Sent. | The policy was handed to the agent. |
| Power enforcement is off, so nothing was sent. | Turn on Enforce power policies on agents. |
| No power policy is assigned to that agent. | No assignment matches it, or the matching policy is disabled. |
| The assigned power policy manages no setting. | The winning policy has nothing ticked. |
| That agent is not connected. | Nothing was queued. Try again when it is online. |
| Power management is not licensed on this server. | Your licence does not include module.power. |
Agent details → Power#
The Power section of an agent shows:
- Effective policy: the policy that applies and why. For example, via Collection Laptops, priority 2, or assigned directly to this agent. An unmanaged agent reads "No power policy is assigned to this agent, so Athena writes nothing here and the machine keeps its own power configuration."
- Active power scheme: the machine's active Windows power plan (Custom scheme if it is not a standard one), and Last reported.
- A table of settings with On battery, Plugged in and State columns. Each value cell shows the value on this machine next to the value from the policy. The table lists every managed setting plus every setting the machine reported.
Agents report their power configuration on their own. It is requested when an agent connects (at most once every 5 minutes per agent), after a policy or assignment change, and on each run of the Power State Collection task. If an agent has never reported, the section says so. Click Refresh to ask it.
Setting states
| State | Meaning |
|---|---|
| In sync | Every managed side matches the machine. |
| Drift | A managed side differs from what the machine holds. |
| Failed | The last apply of the current policy failed on this setting. |
| Not reported | The machine has never reported this setting. This is never treated as in sync. |
| Not reported since the policy changed | The last report is older than the last change to the policy, so it cannot be compared. |
| Not available here | This machine does not support the setting. This is a normal state, not a warning. |
| Set by Group Policy | A Group Policy controls this setting on the machine, so Athena does not change it. This is a normal state, not a warning. |
| Not managed | The policy manages neither side of this setting. Athena shows the machine's value for information only. |
Machines without a battery (most desktops and virtual machines): the On battery values are neither written nor compared. The section says "This machine has no battery, so the On battery values are neither written nor compared."
Power State Collection task#
A value changed by hand on a quiet machine produces no event. To catch that drift, schedule the
Power State Collection task on the Scheduler. It
needs power.manage. Each run:
- re-applies the policy to connected agents that have drifted, but only when both switches are on;
- then asks every connected agent to report its current power configuration.
With either switch off, the task only collects. Every 60 minutes is recommended. Machines already in sync are sent nothing, so a shorter interval mostly adds reports.
The automatic triggers (check-in and a new report) never resend a policy that a machine has already
answered with drift. This stops an endless loop of re-applies. Retries come from this task. If an apply is
still in progress (sent less than 10 minutes ago and not yet answered), it is not sent again. Automatic
applies are recorded in the audit log with the user name power.autoconverge.
Filter fields#
Power adds four fields for collections, monitors, tagging rules and reports. See Filter Field Reference.
| Field | Label | Type | Value |
|---|---|---|---|
Module.power.DriftState | Power Drift State | Enum | The agent's worst setting state, in this order: Failed, Drift, NotCapable, PolicyManaged, NotReportedSince, NotReported, Unmanaged, InSync. It is recalculated against the current policy. |
Module.power.Managed | Power Policy Managed | Boolean | Whether any enabled policy applies to the agent. |
Module.power.HasBattery | Power Has Battery | Boolean | From the agent's last report. false if it has never reported. |
Module.power.PolicyName | Power Policy Name | String | The effective policy's name. Empty for an unmanaged agent. To ask whether a machine is managed at all, use Managed. |
For example, a collection with Module.power.DriftState equals Drift lists every
machine whose power settings no longer match its policy.
Audit events#
| Event type | Console label | Written when |
|---|---|---|
power.policy-changed | Power policy changed | A policy is created, updated or deleted. The entry records the full set of managed values (and, on delete, the assignments that were removed with it). |
power.assignment-changed | Power policy assignment changed | An assignment is added or removed, or the assignments are reordered. |
power.enforcement-toggled | Power enforcement toggled | Either switch is turned on or off (Severity: Warning). The resource id tells them apart: EnforcementEnabled or AutoConvergeEnabled. |
power.apply-requested | Power policy applied to an agent | A policy is actually sent to a machine, by an operator or automatically. The entry names the policy and the assignment that selected it. |
power.apply-incomplete | Power policy did not fully apply | An apply result includes a failed or drifting setting, or the whole apply errored (Severity: Warning). This is written once per result. It is not written for Not available here or Set by Group Policy. |
power.status-failed | Power configuration could not be read | An agent could not read its own power configuration. |
REST API#
All routes are under /api/power and need a bearer token (see API
Reference). Reads need power.view, and everything else needs power.manage.
Responses use the standard success / data / message envelope.
| Method & route | Permission | Purpose |
|---|---|---|
GET /api/power/settings | view | The two switches: enforcementEnabled, autoConvergeEnabled. |
PUT /api/power/settings | manage | Set either switch. An omitted (or null) field is left unchanged. |
GET /api/power/policies | view | Every policy with its values. |
POST /api/power/policies | manage | Create a policy. 400 for an invalid body, 409 for a duplicate name. |
PUT /api/power/policies/{id} | manage | Replace a policy, including its whole value set. A key you leave out becomes unmanaged. 404 if unknown. |
DELETE /api/power/policies/{id} | manage | Delete a policy with its values and assignments. |
GET /api/power/assignments | view | All assignments in resolution order (priority ascending). |
POST /api/power/assignments | manage | Add an assignment (appended last). Body: policyId, targetKind (Agent, Collection or Tag, by name), targetKey (agent id, collection id or tag name). |
DELETE /api/power/assignments/{id} | manage | Remove an assignment. |
POST /api/power/assignments/reorder | manage | Body {"assignmentIds": [...]}: every assignment id exactly once, highest precedence first (at most 500). Applied all-or-nothing. |
GET /api/power/agents/{id}/effective-policy | view | The agent's effective policy and the assignment that selected it. An unmanaged agent returns 200 with a null policy. |
GET /api/power/agents/{id}/reported-state | view | What the agent last reported beside the policy, with a state per setting. An agent that never reported returns reportedAt: null and every setting NotReported. |
POST /api/power/agents/{id}/status | manage | Ask one agent to report. Works while enforcement is off. |
POST /api/power/agents/{id}/apply | manage | Send one agent its effective policy. Refused while enforcement is off. |
POST /api/power/agents/apply | manage | Apply to every connected agent. Returns sent and skipped counts. |
In a policy body, values maps a setting key from the catalog to
{"ac": …, "dc": …}. Here ac is Plugged in, dc is On
battery, and null leaves that side unmanaged. Unlike the console, the API uses the units
Windows stores. Timeouts are in seconds (0 to 86400, with 0 = Never). Choice settings take the
Windows value, not the option's position in the list: 0 Do nothing, 2 Sleep,
3 Hibernate, 6 Shut down, 8 Turn off the display. For
System cooling policy, 0 is Active and 1 is Passive. Off/On, No/Yes and
Disabled/Enabled settings take 0 and 1. Wake timers take 0 Disable,
1 Enable and 2 Important only. Out-of-range values are rejected with
400, never adjusted.
The per-agent status and apply routes always return 200. The
success flag and message tell you whether the request was sent, using the
apply messages above.
For example, a policy that turns the display off after 10 minutes on battery and 30 minutes plugged in, and never sleeps when plugged in:
curl -k -X POST -H "Authorization: Bearer <token>" -H "Content-Type: application/json" \
-d '{"name":"Office desktops","enabled":true,
"values":{"display-timeout":{"ac":1800,"dc":600},
"sleep-timeout":{"ac":0,"dc":null}}}' \
"https://<server>:8443/api/power/policies"
Troubleshooting#
| Symptom | What to check |
|---|---|
| Policy assigned but nothing changes on the machine | Enforce power policies on agents is off. Or automatic re-apply is off and nobody clicked Apply now. Or the policy is disabled, or a higher-priority assignment matches the agent first. |
| Agent shows Not reported everywhere | The agent has not reported since the module was available, or it is a Linux agent. Click Refresh while it is connected. |
| "That agent is not connected." | Applies are not queued. Apply when the agent is online, or turn on automatic re-apply so it happens at the next check-in. |
| Stays in Drift | Automatic triggers do not resend a policy the agent has already answered. Click Apply now, or schedule the Power State Collection task with both switches on. If it still drifts, something on the machine is overriding the value. |
| Set by Group Policy | A Group Policy controls that power setting. Athena leaves it alone. Change it in the GPO, or remove it from the Athena policy. |
| Not available here | That machine does not support the setting (for example, no lid or no ambient light sensor). This is normal. |
| On battery values ignored on a desktop | The machine has no battery, so On battery values are neither written nor compared. |
| Removed a policy, but machines kept its values | This is expected. Athena does not undo values on a machine. Apply a policy with the values you want. |
REST 400: "'…' takes a value between …" | A timeout sent in minutes instead of seconds, or a choice value that is not in the list (for example, 4 for an action). |
Related#
- Collections and Agent Tags: the groups you assign policies to.
- Filter Field Reference: all filter fields, including module fields.
- Scheduled Jobs: scheduling the Power State Collection task.
- Licensing: separately licensed modules.
- Audit Event Types Reference: all audit events.
- BitLocker Management: the other Windows policy module that uses the same policy-and-assignment model.