PayloadKit

Nudge

com.github.macadmins.Nudge

Nudge settings

macOS
macOS 11.0+

Configuration Keys (6)

KeyTypeDescriptionDefaultRange
string—Default: —Range: —

Optional Features

dictAll optional features to enhance and customize the Nudge experience for your employer's needs.Default: —Range: —

Attempt to Fetch Major Upgrade

booleanWhen a major upgrade is required, Nudge will attempt to download it through the softwareupdate binary.Default: trueRange: —

Acceptable Application Bundle IDs

arrayThe application Bundle ID which Nudge allows without taking focus. (You can specify one or more Bundle ID.)Default: —Range: —
string

acceptableApplicationBundleIDs

string—Default: —Range: —

Acceptable Assertion Usage

booleanWhen enabled, Nudge will not activate or re-activate when assertions are currently set.Default: falseRange: —

Acceptable Assertion Application Names

arrayThe application names using assertions which Nudge allows without taking focus. (You can specify one or more applications. To find the names please run /usr/bin/pmset -g assertions in terminal while the application is open and running)Default: —Range: —
string

acceptableAssertionApplicationNames

string—Default: —Range: —

Acceptable Camera Usage

booleanWhen enabled, Nudge will not activate or re-activate when the camera is on.Default: falseRange: —

Acceptable Screen Sharing Usage

booleanWhen enabled, Nudge will not activate or re-activate when screen sharing is active.Default: falseRange: —

Aggressive User Experience

booleanWhen disabled, Nudge will not hide all non-acceptableApplicationBundleIDs after the requiredInstallationDate or allowedDeferrals.Default: trueRange: —

Aggressive User Full Screen Experience

booleanWhen disabled, Nudge will not create a blurred background when the user is past the deferral window.Default: trueRange: —

Asynchronous Software Update

booleanWhen disabled, Nudge will wait for Software Update to finish downloading (if any) updates before showing the UI.Default: trueRange: —

Attempt To Block Application Launches

booleanWhen enabled, Nudge will attempt to block application launches after the required installation date. This key must be used in conjunction with blockedApplicationBundleIDsDefault: falseRange: —

Blocked Application Bundle IDs

arrayThe application Bundle ID which Nudge disallows from launching after the required installation date. (You can specify one or more Bundle ID.)Default: —Range: —
string

blockedApplicationBundleIDs

string—Default: —Range: —
booleanWhen utilizing a SOFA feed and disableNudgeForStandardInstalls is true, Nudge will only enforce updates with published CVEs. Defaults to false.Default: falseRange: —

Disable Software Update Workflow

booleanWhen disableSoftwareUpdateWorkflow is true, Nudge will not attempt to run the softwareupdate process. Defaults to false.Default: falseRange: —

Enforce Minor Updates

booleanWhen enabled, Nudge will enforce minor updates. This should likely never be disabled.Default: trueRange: —

Terminate Applications On Launch

booleanWhen enabled, Nudge will terminate the applications listed in blockedApplicationBundleIDs upon initial launch.Default: falseRange: —
booleanWhen enabled, Nudge will not activate or re-activate when an update is being downloaded, prepared or staged.Default: trueRange: —
booleanWhen disabled, Nudge will no longer compare the current device against the SOFA feed for the required update. If the device cannot install this update, Nudge will not present the Unsupported UIDefault: trueRange: —
stringA url path to use a custom SOFA feed.Default: —Range: —
booleanWhen enabled, Nudge will not activate or re-activate when a user is in DoNotDisturb/Focus status. This feature is expiremental and may not work in all user settings.Default: falseRange: —
booleanWhen enabled, Nudge will honor the current cycle timers when user's press the `Quit` button.Default: falseRange: —
integerThe maximum age the cached SOFA feed file can be on disk. When this file age expires, Nudge will re-assess the SOFA feed for updates. Please be mindful of changing this value as there is an associated cost for maintaining the SOFA service.Default: 86400Range: —
booleanWhen enabled, Nudge will utilize the SOFA feed url for update data.Default: trueRange: —

OS Version Requirements

arrayThe required components necessary to enforce an Operating System version through Nudge. Specify one array to enforce a single Operating System version across all machines or specify multiple arrays for specific enforcements.Default: —Range: —

osVersionRequirement

dict—Default: —Range: —

About Update URL

stringA single URL, enabling the More Info button URL path. While this accepts a string, it must be a valid URL (http://, https://, file://). Note: If this value is passed with aboutUpdateURLs, the aboutUpdateURLs key will be ignored.Default: —Range: —

About Update URLs

arrayThe aboutUpdateURL - per country localization.Default: —Range: —
dict

aboutUpdateURL - Dictionary

dict—Default: —Range: —
_languagestring
stringThe targeted language locale for the user interface. Note: For a list of locales, please run the following command in Terminal: /usr/bin/locale -aDefault: —Range: —
stringThe URL for the More Info button. While this accepts a string, it must be a valid URL (http://, https://, file://).Default: —Range: —

Major macOS Upgrade App Path

stringThe app path for a major upgrade.Default: —Range: —

Required Installation Date

stringThe required installation date for Nudge to enforce the required operating system version. You must follow a standard date string as YYYY-MM-DDTHH:MM:SSZ - Example: 2021-09-15T00:00:00Z. Required for Nudge versions 1.1.16 and below.Default: —Range: —

Required Minimum OS Version

required
stringThe required minimum operating system version. Note: When passing versions such as `11.2.0`, it will be normalized to `11.2`. It is recommended to remove the trailing zero from the version number.Default: —Range: —

Targeted OS Versions

arrayThe versions of macOS that require a security update. You can specify single version or multiple versions.Default: —Range: —
string
string—Default: —Range: —

Targeted OS Versions Rule

stringThe OS string rule for targeting Nudge events. You can target with "default", the full OS version (example: "11.5.1"). or the major OS version (example: "11").Default: —Range: —
stringA path to a URI for opening alternative actions, like Jamf self service items.Default: —Range: —
integerWhen a major upgrade is under active exploit, this is the amount of days a user has to install the update.Default: 14Range: —
integerWhen a minor update is under active exploit, this is the amount of days a user has to install the update.Default: 14Range: —
integerWhen a major upgrade is not under active exploit but contains CVEs, this is the amount of days a user has to install the update.Default: 21Range: —
integerWhen a minor update is not under active exploit but contains CVEs, this is the amount of days a user has to install the update.Default: 21Range: —
integerWhen a major upgrade has no known CVEs, this is the amount of days a user has to install the update.Default: 28Range: —
integerWhen a minor update has no known CVEs, this is the amount of days a user has to install the update.Default: 28Range: —
stringA single URL, enabling the More Info button URL path when using the unsupported UI. While this accepts a string, it must be a valid URL (http://, https://, file://). Note: If this value is passed with aboutUpdateURLs, the aboutUpdateURLs key will be ignored.Default: —Range: —

unsupportedURLs

arrayThe unsupportedURL - per country localization.Default: —Range: —
dict

unsupportedURL - Dictionary

dict—Default: —Range: —
_languagestring
stringThe targeted language locale for the user interface. Note: For a list of locales, please run the following command in Terminal: /usr/bin/locale -aDefault: —Range: —
stringA single URL, enabling the More Info button URL path when using the unsupported UI. While this accepts a string, it must be a valid URL (http://, https://, file://). Note: If this value is passed with aboutUpdateURLs, the aboutUpdateURLs key will be ignored.Default: —Range: —
integerThe amount of minor versions a device can be behind before the requiredInstallationDate is recalculated against a previous update.Default: 0Range: —

User Experience

dictAll features related to how Nudge refreshes and defines the user experienceDefault: —Range: —
noTimersboolean

No Timers

booleanThis will disable all functionality related to the `userExperience` preference domain.Default: falseRange: —

Allowed Deferrals

integerThe number of times a user can defer Nudge (change it from the currently active window) before the "aggressive user experience" is enabled.Default: 1000000Range: —

Allow Grace Periods

booleanAllows a device to modify the requiredInstallationDate logic and launch behavior. Useful for new device provisioning.Default: falseRange: —

Allow User Quit Deferrals

booleanAllows the user to specify when they will next be prompted by Nudge. (Set to `False` to maintain v1.0.0 behavior.) When using this feature, Nudge will no longer adhere to your LaunchAgent logic as the user is specifying their own execution time for the next Nudge event.(See: `~/Library/Preferences/com.github.macadmins.Nudge.plist`.)Default: trueRange: —

Grace Period Install Delay

integerThe amount of time in hours Nudge will extend the requiredInstallationDate for newly provisioned devices.Default: 23Range: —

Grace Period Launch Delay

integerThe amount of time in hours Nudge will bypass launching for newly provided devices.Default: 1Range: —

Grace Period Path

stringThe path of the file Nudge will read and assess for allowGracePeriods.Default: "/private/var/db/.AppleSetupDone"Range: —

Imminent Refresh Cycle

integerThe amount of time in seconds Nudge will use as a timer to refresh the user interface if it is not the currently active window. This key is directly tied to its partner key `imminentWindowTime` to know when to trigger this timer.Default: 600Range: —

Allowed Deferrals until Forced Secondary Quit Button

integerThe number of times a user can defer Nudge (change it from the currently active window) before both quit buttons need to be actioned.Default: 14Range: —

Approaching Refresh Cycle

integerThe amount of time in seconds Nudge will use as a timer to refresh the user interface if it is not the currently active window. This key is directly tied to its partner key `approachingWindowTime` to know when to trigger this timer.Default: 6000Range: —

Approaching Window Time

integerThe amount of time in hours Nudge will use to determine that the `requiredInstallationDate` is "approaching".Default: 72Range: —

Elapsed Refresh Cycle

integerThe amount of time in seconds Nudge will use as a timer to refresh the user interface if it is not the currently active window. This key is triggered once the `requiredInstallationDate` has expired.Default: 300Range: —

Imminent Refresh Cycle

integer—Default: 600Range: —

Imminent Window Time

integerThe amount of time in hours Nudge will use to determine that the `requiredInstallationDate` is "imminent".Default: 24Range: —

Initial Refresh Cycle

integerThe amount of time in seconds Nudge will use as a timer to refresh the user interface if it is not the currently active window. This key is triggered for all Nudge launches until the `approachingWindowTime` has been passed.Default: 18000Range: —

Max Random Delay

integerThe maximum amount of delay Nudge will utilize before launching the UI. This is useful if you do not want your users to all receive the Nudge prompt at the exact time of the LaunchAgent. Note: This functionality only applies when also enabling `randomDelay`.Default: 1200Range: —

Nudge Refresh Cycle

integerThe amount of time in seconds Nudge will use as its core timer to refresh all the core code paths. Note: While you can lower this setting, it could make Nudge too aggressive. Be mindful of decreasing this value.Default: 60Range: —

Random Delay

booleanEnables an initial delay Nudge before launching the UI. This is useful if you do not want your users to all receive the Nudge prompt at the exact time of the LaunchAgent.Default: trueRange: —
booleanAllows the user to press the `Later` button through the custom deferrals UIDefault: trueRange: —
booleanAllows the user to move the Nudge window.Default: falseRange: —
stringUtilize the approachingWindowTime or imminentWindowTime for calendar deferrals.Default: "imminentWindowTime"Range: —
stringThe identifier of the Nudge LaunchAgent. Only set this if you use a custom identifierDefault: —Range: —
booleanLoads the Nudge LaunchAgent using macOS Ventura's SMAppService API (macOS 13+ required).Default: falseRange: —
integerWhen a new major upgrade is posted to the SOFA feed, this can artificially delay the SOFA nudge events by x amount of days.Default: 0Range: —
integerWhen a new minor update is posted to the SOFA feed, this can artificially delay the SOFA nudge events by x amount of days.Default: 0Range: —

User Interface

dictAll features related to how Nudge defines the user interface.Default: —Range: —
simpleModeboolean

Simple Mode

booleanEnables Nudge to launch in the simplified user experience.Default: falseRange: —

Force Screenshot Icon

booleanForce the built-in ScreenShot icon to render in the UI if a ScreenShot path is not passed.Default: falseRange: —

Show Deferral Count

booleanEnables or disables the deferral count of the current Nudge event.Default: trueRange: —

single Quit Button

booleanOnly display one quit button regardless of proximity to the due date.Default: falseRange: —

Dark Icon Path

stringA path to a local jpg, png, icns that contains the icon for dark mode. This will replace the Apple logo on the left side of Nudge.Default: —Range: —

Light Icon Path

stringA path to a local jpg, png, icns that contains the icon for light mode. This will replace the Apple logo on the left side of Nudge.Default: —Range: —

Dark Screenshot Path

stringA path to a local jpg, png, icns that contains the screen shot for dark mode. This will replace the Big Sur logo on the lower right side of Nudge.Default: —Range: —

Light Screenshot Path

stringA path to a local jpg, png, icns that contains the screen shot for light mode. This will replace the Big Sur logo on the lower right side of Nudge.Default: —Range: —

Action Button Path

stringA path to a URI for opening alternative actions, like Jamf self service items.Default: —Range: —

Fallback Language

stringThe language to revert to if no localizations are available for the device's current language.Default: "en"Range: —

Force Fallback Language

booleanForce the custom localizations to the value of `fallbackLanguage`.Default: falseRange: —

Update Elements

arrayThe individual buttons and text elements that can be customized for your employer's needs. This includes per country localization.Default: —Range: —
dict

updateElement - Dictionary

dict—Default: —Range: —
_languagestring

Language

stringThe targeted language locale for the user interface. Note: For a list of locales, please run the following command in Terminal: /usr/bin/locale -aDefault: —Range: —

Custom Deferral Button Text

stringModifies the customDeferralButtonText, also known as the "Custom" button.Default: —Range: —

Custom Deferral Dropdown Text

stringcustomDeferralDropdownText, also known as the "Defer" button.Default: —Range: —

One Day Deferral Button Text

stringModifies the oneDayDeferralButtonText, also known as the "One Day" button.Default: —Range: —

One Hour Deferral Button Text

stringModifies the oneHourDeferralButtonText, also known as the "One Hour" button.Default: —Range: —

Information Button Text

stringModifies the informationButton, also known as the "More Info" button.Default: —Range: —

Main Content Header

stringModifies the mainContentHeader. This is the "Your device will restart during this update" text.Default: —Range: —

Main Content Sub Header

stringModifies the mainContentSubHeader. This is the "Updates can take around 30 minutes to complete" text.Default: —Range: —

Main Content Text

stringModifies the `mainContentText`. This is the "A fully up-to-date device is required to ensure that IT can your accurately protect your device." text. (See the Wiki for information on adding line breaks.)Default: —Range: —

Main Content Note

stringModifies the mainContentNote. This is the "Important Notes" text.Default: —Range: —

Main Header

stringModifies the `mainHeader`. This is the "Your device requires a security update" text.Default: —Range: —

Action Button Text

stringModifies the actionButton, also known as the "Update Device" button.Default: —Range: —

Primary Quit Button Text

stringModifies the `primaryQuitButton`, also known as the "Later" button.Default: —Range: —

Secondary Quit Button Text

stringModifies the `secondaryQuitButton`, also known as the "I understand" button.Default: —Range: —
subHeaderstring

Sub Header

stringModifies the `subHeader`. This is the "A friendly reminder from your local IT team" text.Default: —Range: —
stringModifies the primaryQuitButton, also known as the "Update Device" button when using the Unsupported UI.Default: —Range: —
stringModifies the terminated application notification title.Default: —Range: —
stringModifies the terminated application notification body.Default: —Range: —
stringModifies the mainContentHeader. This is the "Your device is no longer capable of receiving critical security updates" text when using the Unsupported UI.Default: —Range: —
stringModifies the mainContentNote. This is the "Important Notes" text when using the Unsupported UI.Default: —Range: —
stringModifies the mainContentSubHeader. This is the "Please work with your local IT team to obtain a replacement device" text when using the Unsupported UI.Default: —Range: —
stringModifies the `mainContentText`. This is the "A fully up-to-date device is required to ensure that IT can your accurately protect your device." text when using the Unsupported UI. See the Wiki for information on adding line breaks.Default: —Range: —
stringModifies the `mainHeader`. This is the "Your device requires a security update" text when using the Unsupported UI.Default: —Range: —
stringModifies the accessible hover over on screen shots.Default: —Range: —
stringModifies the `subHeader`. This is the "A friendly reminder from your local IT team" text when using the Unsupported UI.Default: —Range: —
stringA local image path for the notification event when Nudge terminates and application.Default: —Range: —
stringWhen utilizing showRequiredDate, set a custom display format. Be aware that the format you desire may not look good on the UI.Default: —Range: —
booleanWhen disabled, Nudge will not show the Actively Exploited CVEs in the left sidebar.Default: trueRange: —
booleanWhen disabled, Nudge will not show the `Days Remaining To Update:` item on the left side of the UI.Default: trueRange: —
booleanWhen enabled, Nudge will also show the requiredInstallationDate as string formatted date.Default: falseRange: —
json-urlstring

JSON Preference File Location

stringWhen configuring Nudge using a JSON-formatted preferences file located outside of the default location, set this key to the custom location using either a remote (https://) or a local (file://) URL, and leave other keys in this payload unset. Leave this key unset when configuring Nudge using the other keys in this payload.Default: —Range: —