For IT
Napless for IT administrators
Updated
Napless reads managed preferences from configuration profiles, so any MDM that can deliver a
com.apple.ManagedClient.preferences payload can manage it. The preference domain is run.bundl.napless.
How managed settings behave
- A forced setting is enforced inside the app, and the control shows Managed by your organization.
- Profiles override local values. When both a device and a user profile force a key, the user profile may only make the device value stricter.
- You can turn off each of these Napless Pro features for the whole fleet with one key:
NAPDisableAgentHooks,NAPDisableChatPresence,NAPDisableRemoteAlertsandNAPDisableTimeMachineTrigger.NAPDisableTrialturns off trial activation in Napless 1.2.12 and earlier; from 1.2.13 there is no trial. - Heat protection (
NAPStopWhenHot) is on by default. Forcing it on keeps anyone from turning it off. - To confirm on a managed Mac that macOS is honoring a keep-awake, verify keep-awake with pmset -g assertions.
Sample configuration profile
Save as a .mobileconfig and install with Profiles, or upload it to your MDM. This example forces heat protection
on and sets the battery floor to 30 percent.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>PayloadContent</key>
<array>
<dict>
<key>PayloadContent</key>
<dict>
<key>run.bundl.napless</key>
<dict>
<key>Forced</key>
<array>
<dict>
<key>mcx_preference_settings</key>
<dict>
<key>NAPStopWhenHot</key>
<true/>
<key>run.bundl.napless.BatteryCapacityThresholdEnabled</key>
<true/>
<key>run.bundl.napless.BatteryCapacityThreshold</key>
<real>30</real>
</dict>
</dict>
</array>
</dict>
</dict>
<key>PayloadDisplayName</key>
<string>Napless Managed Preferences</string>
<key>PayloadIdentifier</key>
<string>run.bundl.napless.managed</string>
<key>PayloadType</key>
<string>com.apple.ManagedClient.preferences</string>
<key>PayloadUUID</key>
<string>A1B2C3D4-E5F6-7890-ABCD-EF1234567890</string>
<key>PayloadVersion</key>
<integer>1</integer>
</dict>
</array>
<key>PayloadDisplayName</key>
<string>Napless</string>
<key>PayloadIdentifier</key>
<string>run.bundl.napless.profile</string>
<key>PayloadType</key>
<string>Configuration</string>
<key>PayloadUUID</key>
<string>B2C3D4E5-F678-90AB-CDEF-1234567890AB</string>
<key>PayloadVersion</key>
<integer>1</integer>
</dict>
</plist>
Managed keys
| Key | Type | Stricter value | What it does |
|---|---|---|---|
run.bundl.napless.ActivateOnLaunch |
bool | n/a | Start keeping awake when the app launches; default false. |
run.bundl.napless.AllowDisplaySleep |
bool | true is stricter | Allow display to sleep; default true. |
run.bundl.napless.MenuBarIconHighlightDisabled |
bool | n/a | Disable menu bar icon highlighting. |
run.bundl.napless.IsQuitOnTimerExpirationEnabled |
bool | n/a | Quit Napless when the timer ends. |
run.bundl.napless.DeactivateOnUserSwitchEnabled |
bool | true is stricter | End the manual session on user switch. |
run.bundl.napless.BatteryCapacityThresholdEnabled |
bool | true is stricter | Enable battery protection; default false. |
run.bundl.napless.LowPowerModeMonitoringEnabled |
bool | true is stricter | Stop keeping your Mac awake in Low Power Mode. |
run.bundl.napless.ClickToKeepAwake |
bool | n/a | Click the menu bar icon to toggle keep-awake. |
run.bundl.napless.BatteryCapacityThreshold |
double | higher is stricter | Battery protection floor in percent; minimum 10, default 20. |
run.bundl.napless.Triggers |
data | n/a | Whole JSON trigger configuration: isEnabled, appBundleIdentifiers, frontmostOnlyBundleIdentifiers, whenOnPowerAdapter, whenExternalDisplayConnected, networkThresholdBytesPerSecond, cpuThresholdPercent, wifiNetworkNames, schedule (weekdays, startMinute, endMinute), sustainSeconds, duringCalls, whileAudioPlaying, diskThresholdBytesPerSecond, onlyWhileOnPower, whileTimeMachineBacksUp, duringCalendarEvents, whileVolumeMounted, whileUSBDeviceConnected, whilePresenting, whileDownloading, whileVPNConnected, whileProcessesRun, whileLocalServer, whileRemoteLogin. Also accepts a JSON string. |
run.bundl.napless.ShowTimeLeftInMenuBar |
bool | n/a | Show time left in the menu bar; default true. |
run.bundl.napless.ShowReasonInMenuBar |
bool | n/a | Show what is keeping the Mac awake next to the menu bar icon: the app’s own icon when Napless knows the app (Claude, Zoom…), otherwise a symbol (agent, call, download…); default true. |
run.bundl.napless.GlobalShortcut |
data | n/a | Property-list dictionary containing the global shortcut key code and modifiers. |
run.bundl.napless.FocusMode |
string | n/a | Focus filter mode. |
run.bundl.napless.TimeInterval |
int | n/a | Default manual duration in seconds; zero means indefinite. |
run.bundl.napless.NotifyWhenCommandsFinish |
bool | n/a | Notify when a napless run or napless wait command exits after a minute or more; default true. |
run.bundl.napless.NotifyOnUnexpectedSleep |
bool | n/a | Notify when the Mac sleeps while Napless is keeping it awake; default false. |
run.bundl.napless.WeeklySummary |
bool | n/a | Post one weekly keep-awake summary notification on Monday; default false. |
run.bundl.napless.SessionPresets |
data | n/a | Saved keep-awake presets (name, duration, display choice). |
run.bundl.napless.RemoteAlerts |
data | n/a | Telegram and Slack alert settings; secrets stay in the Keychain. |
NAPDisableChatPresence |
bool | true is stricter | Disable chat presence. |
NAPDisableAgentHooks |
bool | true is stricter | Disable agent hooks and holds. |
NAPDisableTimeMachineTrigger |
bool | true is stricter | Disable the Time Machine trigger. |
NAPDisableRemoteAlerts |
bool | true is stricter | Disable alerts to Telegram and Slack. |
NAPDisableTrial |
bool | true is stricter | Disable trial activation. |
NAPStopWhenHot |
bool | true is stricter | Stop when thermal state is serious or critical; default true. |
NAPRestartTimerOnActivity |
bool | n/a | Restart duration timers on real user activity; default false. |
Help
Questions about deploying Napless: support@napless.io.
Related guides
- What's keeping your Mac awake: Read pmset assertions and find out why a Mac will not sleep.
- The caffeinate command: Every flag, with examples you can paste.
- AI coding agents: Keep a Mac awake while Claude Code, Codex and other agents work.