PayloadKit

Third Party Patcher

com.gilburns.patcher

Configuration settings for the Third Party Patcher tool

macOS

Configuration Keys (94)

KeyTypeTitle
PFC_SegmentedControl_0required
string
DeferralCountdownSeconds

Seconds of countdown in the deferral prompt before the automatic action fires.

Default: 300

integerDeferral Countdown Seconds
DeferralAutomaticAction

Action when the deferral countdown expires with no user input: "defer" (postpone to next cycle) or "kill" (force-quit blocking app and apply).

Default: "defer"

stringDeferral Automatic Action
DeferralTimerDefault

Default deferral duration in minutes applied when the user accepts without choosing a custom time (4 hours).

Default: 240

integerDeferral Timer Default
DeferralTimerMenu

Comma-separated list of deferral durations in minutes shown in the pop-up menu.

Default: "5,30,60,120,240,480,1440"

stringDeferral Timer Menu
DeferralTimerFocus

The number of minutes to defer the update restart dialog automatically if a process has prevented display sleep (for example, during an active meeting) or the user has Focus or Do Not Disturb enabled

stringDeferral Timer Focus
MonthlyPatchingCadenceEnabled
booleanMonthly Patching Cadence Enabled
PatchingWeekday

Day of the week for the patch window: 1=Sunday, 2=Monday, 3=Tuesday … 7=Saturday.

Default: 3

Range: Sunday (1), Monday (2), Tuesday (3), Wednesday (4), Thursday (5), Friday (6), Saturday (7)

integerPatching Weekday
PatchingWeekOfMonth

Which occurrence of `PatchingWeekday` in the month: 1=first, 2=second, etc.

Default: 2

Range: First (1), Second (2), Third (3), Fourth (4)

integerPatching Week Of Month
PatchingStartTime

Earliest time to begin applying on patch day (24-hour `HH:MM`). Empty = no lower bound.

stringPatching Start Time
PatchingEndTime

Latest time to begin applying on patch day (24-hour `HH:MM`). Apply will not start a new run after this time.

stringPatching End Time
DialogOnTop

When `true`, the swiftDialog window floats above all other windows.

Default: true

booleanDialog On Top
UnattendedExit

When `true`, the apply completion dialog closes automatically after `UnattendedExitSeconds` if the user does not interact.

Default: true

booleanUnattended Exit
UnattendedExitSeconds

Seconds before the apply completion dialog auto-closes when `UnattendedExit` is `true`.

integerUnattended Exit Seconds
BlockingProcessAction

Action when a blocking process is running during apply: `"ignore"` (skip the check entirely), `"kill"` (force-quit silently), `"notify"` (brief notification; skip label if still running), `"prompt"` (timed dialog; user can quit or skip), `"defer"` (skip silently; retry next cycle).

Default: "prompt"

Range: ignore, kill, notify, prompt, defer

stringBlocking Process Action
BlockingProcessCountdownSeconds

Seconds of countdown in the blocking process prompt before the automatic action fires.

Default: 120

integerBlocking Process Countdown Seconds
DialogIcon

Path to a custom icon for the apply dialog. Empty = use the system computer icon. Supports absolute paths, `SF=<symbol>` notation, or an SF Symbol name directly.

stringDialog Icon
UseOverlayIcon

When `true`, a small overlay icon is composited onto the dialog icon. Automatically disabled when swiftDialog is not installed.

Default: true

booleanUse Overlay Icon
OverlayIcon

Path to the overlay icon image. Empty = auto-detect from known MDM agents (Jamf, Intune, etc.).

stringOverlay Icon
DialogScreenPosition

Position of the main apply dialog: `topleft`, `left`, `bottomleft`, `top`, `center`, `bottom`, `topright`, `right`, or `bottomright`.

Default: "center"

Range: topleft, left, bottomleft, top, center, bottom, topright, right, bottomright

stringDialog Screen Position
DialogScreenProgressPosition

Position of the progress/status window during apply. Same position values as `DialogScreenPosition`.

Default: "bottomright"

Range: topleft, left, bottomleft, top, center, bottom, topright, right, bottomright

stringDialog Screen Progress Position
DownloadBandwidthLimit

curl `--limit-rate` format bandwidth cap for staged downloads (e.g. `"500K"` for 500 KB/s, `"2M"` for 2 MB/s). Empty string = unlimited.

Default: ""

stringDownload Bandwidth Limit
StageDownloadFailThreshold

Consecutive download or verification failures before a label is marked broken and skipped by the stage phase.

Default: 3

integerStage Download Fail Threshold
ApplyFailThreshold

Consecutive install failures before a staged update is abandoned and that version is blocked from re-staging. Staging resumes automatically when a newer version becomes available.

Default: 3

integerApply Fail Threshold
IgnoreUnknownVersionLabels

When `true`, labels that return no `appNewVersion` value are skipped entirely during staging.

Default: false

booleanIgnore Unknown Version Labels
UnknownVersionCheckIntervalDays

For labels with unknown versions, re-check this many days after the last attempt (instead of the normal `CheckIntervalHours` cadence).

Default: 7

integerUnknown Version Check Interval Days
VersionMismatchThrottleDays

When a label reports a version that does not match the file actually downloaded, suppress re-staging for this many days. Cleared automatically when the label reports a different `appNewVersion`.

Default: 7

integerVersion Mismatch Throttle Days
InitialScanDelayEnabled

When `true`, a one-time random delay is applied before the first scan after initial deployment. Spreads fleet-wide first-scan load across the `InitialScanDelayMaxSeconds` window.

Default: true

booleanInitial Scan Delay Enabled
InitialScanDelayMaxSeconds

Maximum jitter for the initial deployment delay in seconds (default: 24 hours). The actual delay is chosen randomly in `[0, max]` on first launch and persisted.

Default: 86400

integerInitial Scan Delay Max Seconds
ScanIntervalDays

Days between full application scans. A full scan re-evaluates all Installomator labels to discover installed apps.

Default: 30

integerScan Interval Days
ScanOnLabelUpdate

When `true`, a scan is triggered immediately if the Installomator or Managed Labels have been updated since the last scan, regardless of `ScanIntervalDays`.

Default: true

booleanScan On Label Update
LightScanIntervalHours

Hours between light scan runs. A light scan checks uninstalled labels for apps that may have been installed by other means, without re-running label scripts or hitting the network for non-installed labels.

Default: 24

integerLight Scan Interval Hours
CheckIntervalHours

Hours between check runs. A check reads installed versions for already-discovered apps to detect whether an update is needed.

Default: 12

integerCheck Interval Hours
StageIntervalHours

Hours between stage runs. The stage phase downloads pending updates.

Default: 12

integerStage Interval Hours
ApplyIntervalHours

Minimum hours between apply runs in deadline-based patching mode. Prevents apply from running every 10-minute cycle once updates are pending. Not used in monthly patching mode — the patch-day window controls timing.

Default: 4

integerApply Interval Hours
IgnoredLabels

A space-separated list of Installomator labels to ignore for the TPP workflow. Supports wildcards, for example "microsoft*". A single "*" ignores every Installomator label except those listed in Required Labels and Optional Labels.

stringIgnored Labels
IgnoreManagedApps

When `true`, automatically detects apps whose updates are already controlled by MDM policies and excludes their labels from patching. Currently detects Microsoft 365/Office (via MAU), Microsoft Edge, Google Chrome, and Google Drive.

Default: true

booleanIgnore Managed Apps
IgnoreNonProductionLabels

When `true`, automatically ignores non-production label variants — labels whose name ends with one of `NonProductionLabelSuffixes` — but only when a production label of the same base name also exists. E.g. with the default suffixes, `microsoftedgebeta` and `microsoftedgedev` are ignored because `microsoftedge` also exists as a label; a label like `figma` is untouched, and a hypothetical `somethingbeta` is left alone if `something` is not also a known label.

Default: true

booleanIgnore Non Production Labels
NonProductionLabelSuffixes

Space-separated list of suffixes that mark a label as a non-production variant of a base label. Only used when `IgnoreNonProductionLabels` is `true`. Does not support wildcards.

Default: "beta canary dev"

stringNon Production Label Suffixes
PreferPkgLabels

When a label and its `pkg`-suffixed counterpart both exist (e.g. `bbedit` and `bbeditpkg`), only one should ever be active — they deliver the same app via different installer mechanisms. When `true`, the pkg-suffixed label is preferred and the non-pkg label is ignored. When `false`, the non-pkg label is preferred and the pkg-suffixed label is ignored instead.

Default: true

booleanPrefer Pkg Labels
RequiredLabels

a space-separated list of Installomator labels that are required, regardless if the app is installed or or the latest version. Supports wildcards.

stringRequired Labels
OptionalLabels

Space-separated list of label names made available for user-initiated self-service installation via the Available Software catalog. Does not support wildcards. Labels are presented in the order listed here, allowing you to feature priority apps at the top. Example: `"microsoftword zoom slack"`.

stringOptional Labels
SwiftDialogEnabled

Show swiftDialog prompts during the apply phase. If `false` (or swiftDialog is not installed), blocking process handling falls back to the configured `BlockingProcessAction`.

Default: true

booleanSwift Dialog Enabled
AppTitle

Allows you to customize the name of Third Party Patcher to something else

Default: "Third Party Patcher"

stringApp Title
BrandColorFont

Font color used in dialogs and apps. These values set the accent colors used in swiftDialog prompts. Each accepts a standard Apple color name (`black`, `blue`, `gray`, `green`, `orange`, `pink`, `purple`, `red`, `white`, `yellow`) or a hex value (e.g. `#00A4C7`).

Default: "white"

stringBrand Color Font
BrandColorBackground

Background color used in dialogs and apps. These values set the accent colors used in swiftDialog prompts. Each accepts a standard Apple color name (`black`, `blue`, `gray`, `green`, `orange`, `pink`, `purple`, `red`, `white`, `yellow`) or a hex value (e.g. `#00A4C7`).

Default: "blue"

stringBrand Color Background
LogVerbose

Enable verbose debug logging. When `true`, per-label key dumps and other low-signal output are included in `/Library/Logs/Patcher/`.

Default: false

booleanLog Verbose
LogRetentionDays

Number of days to retain log files in `/Library/Logs/Patcher/`. Files older than this are deleted during the `cleanLogs` run. Set to `0` to disable automatic log cleanup.

Default: 90

integerLog Retention Days
IgnoreAppsInHomeFolder

Ignore apps found in '/Users/'. If an update is found in '/Users/' and variable is set to false, the app will be updated into the application's default path

Default: true

booleanIgnore Apps In Home Folder
ConvertAppsInHomeFolder

This will convert any apps found in the users home folder to the /Applications folder

Default: false

booleanConvert Apps In Home Folder
IgnoreAppsOnExternalVolumes

When `true`, apps found only on external volumes (`/Volumes/*`) are excluded from discovery and never updated. Useful in environments where external drives are transient and should not be managed.

Default: false

booleanIgnore Apps On External Volumes
InstallomatorGitHubAccount

GitHub account hosting the Installomator label repository.

Default: "Installomator"

stringInstallomator GitHub Account
InstallomatorGitHubRepo

GitHub repository name for Installomator labels.

Default: "Installomator"

stringInstallomator GitHub Repo
InstallomatorGitHubBranch

The name of the branch you want to use in your custom repo, typically main.

Default: "main"

stringInstallomator GitHub Branch
InstallomatorLabelsDisable

When `true`, disables all Installomator label management: no initial download, no update checks, and Installomator labels are never used. Only Managed-Labels are used.

Default: false

booleanInstallomator Labels Disable
InstallomatorUpdateDisable

When `true`, skips routine label update checks while still using labels already on disk. Has no effect on the initial download when no labels are present. Ignored when `InstallomatorLabelsDisable` is `true`.

Default: false

booleanInstallomator Update Disable
InstallomatorGitHubMetadataAccount

GitHub account hosting the Installomator Metadata repository.

Default: "Installomator"

stringInstallomator GitHub Metadata Account
InstallomatorGitHubMetadataRepo

GitHub repository name for Installomator Metadata.

Default: "Installomator"

stringInstallomator GitHub Metadata Repo
InstallomatorGitHubMetadataBranch

Branch to pull metadata from.

Default: "main"

stringInstallomator GitHub Metadata Branch
MetadataSyncEnabled

When `true`, the scheduler periodically checks the metadata repository for updates and syncs icons and metadata to a local cache.

Default: true

booleanMetadata Sync Enabled
MetadataSyncIntervalDays

Days between metadata repository sync checks.

Default: 10

integerMetadata Sync Interval Days
SupportTeamName

Display name for your IT team in the Help Message

Default: "IT Support Team"

stringSupport Team Name
SupportTeamEmail

Support email address. Shown as a clickable `mailto:` link in the Help Message

Default: "support@company.com"

stringSupport Team Email
SupportTeamPhone

Support phone number in the Help Message. Set to `"None"` to hide the field.

Default: "None"

stringSupport Team Phone
SupportTeamWebsite

Support portal URL in the Help Message. Set to `"None"` to hide the field.

Default: "None"

stringSupport Team Website
ShowMenuBarApp

When `true`, the scheduler installs and loads the PatcherMenu LaunchAgent for the current console user. When `false`, the LaunchAgent is unloaded and the plist removed. Managed automatically at each scheduler run.

Default: true

booleanShow Menu Bar App
MenuBarIcon

Icon displayed in the menu bar status item. Accepts an SF Symbol name (e.g. `"gear"`) or an absolute path to a template-mode PNG. A template PNG adapts automatically to light/dark menu bar appearance. Empty = built-in default.

Default: ""

stringMenu Bar Icon
ShowHelpButton

When `true`, a Help (?) button is shown in the menu bar popover header. Tapping it displays the support contact information.

Default: true

booleanShow Help Button
ShowActivitySection

When `true`, the Last Activity section (scan / check / stage / apply dates) is shown in the menu bar popover.

Default: true

booleanShow Activity Section
MenuDeferralCountDisplay

Controls how the deferral count line is shown in the popover. `combined` — one total covering every deferral, including auto-deferrals (timer time-outs and blocking-process skips). `split` — two figures: deferrals the user actively chose, and auto-deferrals combined. `userOnly` — only the count of deferrals the user actively chose.

Default: "combined"

Range: combined, split, userOnly

stringMenu Deferral Count Display
ShowQuitButton

When `true`, a Quit button is shown in the menu bar popover footer.

Default: false

booleanShow Quit Button
ShowMenuDownloadAction

When `true`, the "Download New Updates" option appears in the Run Now menu.

Default: true

booleanShow Menu Download Action
ShowMenuCheckAction

When `true`, the "Check for Updates" option appears in the Run Now menu.

Default: true

booleanShow Menu Check Action
ShowMenuScanAction

When `true`, the "Full Discovery Scan" option appears in the Run Now menu.

Default: true

booleanShow Menu Scan Action
ShowScanCheckProgressDialog

When `true`, scan and check operations triggered from PatcherMenu display a swiftDialog progress window.

Default: true

booleanShow Scan Check Progress Dialog
CompanyName

Organization name shown in the Available Software sidebar header above the app title.

Default: "Patcher Corp."

stringCompany Name
CustomAppIconPath

Absolute path to a PNG or ICNS file used as the Available Software app icon, overriding the built-in icon in the Dock, Finder, and app switcher. Empty = use the default built-in icon.

Default: ""

stringCustom App Icon Path
AddToDockOnSelfServiceInstall

When `true`, apps successfully installed via self-service are automatically added to the current user's Dock if not already present.

Default: true

booleanAdd To Dock On Self Service Install
WebhookFeature

Controls when scheduled webhook reports are sent: `"FALSE"` (never), `"FAILURES"` (failures only), `"ALL"` (successes and failures).

Default: "FAILURES"

Range: FALSE, FAILURES, ALL

stringWebhook Feature
WebhookURLTeams

Microsoft Teams incoming webhook URL.

stringTeams Webhook URL
WebhookURLSlack

Slack incoming webhook URL.

stringSlack Webhook URL
WebhookAttributes

Comma-separated list of device attributes included in webhook payloads, in display order. MDM info is always appended if detected. Supported values: `deviceName`, `hostname`, `serial`, `osVersion`, `osBuild`, `osName`, `model`, `hardwareModel`, `user`, `patcherVersion`, `installomatorVersion`.

Default: "deviceName,serial,osVersion,user"

stringWebhook Attributes
WebhookSchedule

When to send accumulated webhook reports: `"immediate"`, `"daily"`, `"weekly"`, `"monthly"`, or `"patchDay"`.

Default: "immediate"

Range: immediate, daily, weekly, monthly, patchDay

stringWebhook Schedule
WebhookScheduleWeekday

For `weekly` schedule: day of week to send (0=Sunday … 6=Saturday).

Default: 1

Range: Sunday (0), Monday (1), Tuesday (2), Wednesday (3), Thursday (4), Friday (5), Saturday (6)

integerWebhook Schedule Weekday
WebhookScheduleMonthDay

For `monthly` schedule: day of month to send (1–31).

Default: 1

integerWebhook Schedule Month Day
WebhookScheduleHour

For `daily`, `weekly`, and `monthly` schedules: hour of day (0–23) at which to send.

Default: 8

integerWebhook Schedule Hour
WebhookStageFailureThreshold

Minimum consecutive stage failures for a label before it is included in webhook notifications.

Default: 2

integerWebhook Stage Failure Threshold
WebhookSelfServiceFeature

Controls whether an immediate webhook is sent after a user-initiated self-service install, regardless of `WebhookSchedule`. Options: `"FALSE"` (never), `"FAILURES"` (failed installs only), `"ALL"` (success and failure).

Default: "FALSE"

Range: FALSE, FAILURES, ALL

stringWebhook Self Service Feature
QuietApplyEnabled

When `true`, the scheduler runs a silent apply pass before the interactive apply phase. Apps whose blocking process is not running are installed without prompting. Items skipped in the silent pass are shown in the interactive dialog as usual.

Default: false

booleanQuiet Apply Enabled
DeadlineDaysFocus

Days a pending update must be present before Focus/DND auto-deferral is disabled and the user must be prompted regardless of Focus state. `0` means Focus is always respected.

Default: 4

integerDeadline Days Focus
DeadlineDaysHard

Days a pending update must be present before no further deferrals are offered and the update is applied at the next opportunity. `0` disables hard deadlines.

Default: 10

integerDeadline Days Hard
FocusCheckEnabled

When `false`, Focus/DND and display assertions (e.g. active screen sharing) are never checked. The prompt is shown regardless of the user's Focus state.

Default: true

booleanFocus Check Enabled
FocusIgnoredProcesses

Space-separated list of process names to ignore when checking for display-sleep assertions (`pmset -g assertions`). If the process holding the assertion resolves to a name that matches an entry here (case-insensitive), the assertion is not treated as a blocker and patching may proceed.

stringFocus Ignored Processes
AggressivePatchDayDeferral

When `true`, deferral options are progressively capped as the patching window closes. Options shrink from 2 hours early in the day to 5 minutes near window end, then deferral is removed entirely once the window closes. When `false`, the full `DeferralTimerMenu` list is always shown. Applies to both monthly and deadline mode on the final patch day.

Default: true

booleanAggressive Patch Day Deferral