Portfolio

Case study · Jamf Pro · macOS

Package-Free Patch Management in Jamf Pro

A Jamf administrator take-home exercise, written for the admin who would build and support it. The design uses Installomator for vendor-verified updates, swiftDialog for user messaging, and Patch Management or Extension Attribute data for Smart Group scoping. Company name: Hillman Inc (fictional).

01

Recommendation and Rollout

I recommend Installomator as Hillman Inc’s package-free application update mechanism for its secure and dynamic update process, with controlled testing and deployment through Jamf Pro.

Updater and authenticity

Updater. This design uses Installomator, an open-source tool hosted on GitHub (https://github.com/Installomator/Installomator/releases) [3]. Before trusting it in production, I looked at the security mechanism it uses: Installomator uses macOS built-in verification for downloads, and all apps have to be signed and notarized by a valid Apple Developer ID or they will fail [1].

How authenticity is verified. All Installomator downloads and installations have to be signed and notarized by a valid Apple Developer ID. Signature and notarization verify the origin and that the archive has not been tampered with in transfer. The script compares the developer team ID (the ten-digit code associated with the Apple Developer account) with an expected team ID. Software signed with a different, presumably malicious, Apple ID will not be installed [1].

How each application is obtained

ApplicationInstallomator LabelVendor Source
Google ChromegooglechromepkgGoogle official Chrome macOS release
ChatGPTchatgptOpenAI official ChatGPT macOS release
CodexcodexOpenAI official Codex macOS release
SlackslackSlack official macOS release
Wispr FlowwisprflowWispr Flow official macOS release

Fallback when the updater does not support an app

Installomator supports Wispr Flow as of a recent update. If an application is not supported by Installomator, Homebrew is the documented package-free fallback rather than a pre-created Jamf object in this worksheet. IT would manage the Homebrew workflow through an approved script policy and would maintain application versioning and the approved version used for Jamf reporting manually.

Alternative considered: Homebrew

I considered Homebrew initially as a package-free alternative because it is a command-line utility with a large supported application library. I rejected it because Installomator has better compatibility for enterprise purposes. It is designed for upgrades and has a more straightforward testing path for this use case. Homebrew could be scalable, but it adds complexity.

Rollout and Support Plan

Pre-deployment Verification

Before pilot deployment, each Installomator label would be run locally with DEBUG=2. This performs the pre-deployment security checks without installing the application, allowing IT to verify the vendor source, detected version, archive/installer handling, code-signing/notarization, and expected Team ID, and to test the Jamf wrapper script before the 10-Mac pilot.

Pilot Go or No Go

Go: 10/10 pilot Macs complete the intended update without unintended application installation, data loss, forced termination of active work, or security-validation failure. Any initial failure must have an identified root cause, documented remediation, and a successful retest before production.

No-go: Any unresolved failure, incorrect scope, authenticity-validation failure, or destructive user-impact issue pauses rollout.

Production Stages

After a go decision is approved, a company communication would go out informing all employees that their applications will be updated on an ongoing basis and that they will be notified of the 5-day update timeline. Production computers would be scoped and monitored first. Once deemed successful, the executive rollout would begin, with a war room contact made available. Conference room updates would be scheduled with staff for manual deployment every Thursday at an agreed after-hours time. IT will connect to Conference Room devices via SSH and invoke sudo jamf policy -id <POLICY_ID> for the corresponding Update - [App] - Conference Room policy. Updates to Installomator and swiftDialog versions on Conference Room devices will also be handled manually.

Executive and Conference Room

Deferral timing is managed by the application update script. Standard application policies pass $8Deferral_profile:standard, and Executive policies pass $8Deferral_profile:executive. The script records when it first observes the update and calculates the appropriate Available, 48-hour, 24-hour, or Required stage based on elapsed time.

7 Day Deadline Plan

The deferral period for standard production devices is limited to 5 days, leaving a 2-day remediation buffer to reach at least 95% compliance within the 7-day requirement. Executive devices receive the additional 48-hour deferral, making their final required stage day 7.

Rollback Steps

Pause and containment: Pause and containment can be handled by removing scope from the affected application update policy. This prevents additional devices from running the policy and limits the impact of an identified failure.

Rollback: An Installomator rollback can be performed by updating the approved version and SHA-256 in the deployment policy to the previously approved release. This will not roll back devices that have already received the newer Installomator version, but it prevents additional devices from receiving the impacted version. Application rollback would require uninstalling the impacted application and reinstalling the appropriate version.

Recovery: Application recovery would require uninstalling and reinstalling the application. If the updater itself is impacted, Installomator can be run in DEBUG=2 to troubleshoot and validate the issue before remediation and production scope are restored.

02

User Display Comms & Decision Notes

User Display Comms

No message appears when an application is closed; the update runs silently. The messages below apply only to the open-application path.

Update First Available

Hello! A [Application] app update is now available. Select Update Now to close [Application] and complete the update. Select Defer to delay the update for up to 5 days.

Compliance Deadline Approaching

48 hours: Hello! An [Application] update is available and must be completed within 48 hours. Select Update Now to complete the update or Defer to complete it later.

24 hours: Hello! An [Application] update is available and must be completed within 24 hours. Please select Update Now to complete this update.

Required: Hello! [Application] requires an update. Please select Update Now to close [Application] and complete the update.

Application Must Close

Hello! [Application] requires an update. [Application] must be closed to complete the update. Please select Update Now to close [Application] and complete the update.

Update Completed

[Application] has completed updating. Displayed only for the interactive/open-application workflow. Closed applications update silently.

Update Failed

Title: [Application] Update Failed

[Application] has failed to update. Error: [specific error]. Please reach out to Hillman IT in #ask-hillman-IT on Slack for assistance.

Decision Notes

Open-Application Behavior and Deferral Deadline

I chose a 5-day deferral deadline to provide a 2-day buffer and increase the probability of reaching 95% compliance within the 7-day requirement. Open applications receive increased messaging before becoming required to reduce work interruption. I rejected a full 7-day deferral because it leaves no remediation buffer. The failure mode I wanted to avoid was devices remaining non-compliant at the end of the reporting window because users deferred too long or had applications open.

Release Selection and Keeping Untested Releases Out of Production

Jamf Patch Management identifies when an application is outdated, and Installomator is trusted to obtain and validate the latest vendor release. Updates are first validated against the pilot cohort before broader production rollout. An approved-version gate inside the updater was considered but not implemented to avoid adding unnecessary complexity to the workflow. The failure mode I wanted to avoid was an untested vendor release reaching broad production before the update path had been validated on the pilot Macs.

Updater Maintenance and Replacing a Reviewed Version

I chose to keep production on the reviewed Installomator release/stable version while limiting the main version to pilot devices. Once the main version is tested and approved, the production policy is updated with the approved version and SHA-256. I rejected automatically updating production to the latest Installomator version. The failure mode I wanted to avoid was an untested updater change reaching production and causing application update or validation failures across the fleet.

Assumptions

1. The approved Installomator beta (main) version is 11.0, and the approved production (release) version is 10.9. | 2. Jamf Pro v11.32 is used for this case. | 3. Installomator is deployed at /usr/local/Installomator/Installomator.sh. Standard production and Executive Macs use the approved release build (10.9); Patch Pilot - Managed Apps uses the approved main build (11.0); Conference Room Macs are assumed to already have the approved release build and use the manual repair policy (3.23) if needed [3]. | 4. Homebrew has already been installed and is updated via a Jamf script policy that installs once and checks for updates (out of scope). | 5. ChatGPT Classic is the preferred application (keeps Codex separate). | 6. swiftDialog 3.1.0 or later is assumed to already be available at /usr/local/bin/dialog and is used only for end-user messaging. The existing deployment policy (3.5) is reused for managed production devices, while Conference Room Devices use the manual fallback policy (3.24) only if swiftDialog needs repair or redeployment. | 7. Cohort device groups are created as Static Groups: Executive Devices, Conference Room Devices. | 8. Patch Management software titles have been added and configured for Google Chrome, ChatGPT Classic, OpenAI ChatGPT Codex, and Slack (Computers > Patch Management > +) [4]. | 9. Jamf objects are defined as Configuration Profiles, Extension Attributes, Mac Apps, Packages, Patch Policies, and Policies [5]. Static Groups, Smart Groups, and Scripts are assumed to be Jamf objects as well. | 10. Based on the available Jamf Patch Management titles and OpenAI's current desktop-app transition, “ChatGPT” in the exercise refers to OpenAI ChatGPT Classic, while “Codex” refers to the newer ChatGPT/Codex desktop application. They are treated as separate installed applications for reporting, scoping, and remediation. | 11. Patch Pilot - Managed Apps is a Smart group populated by the Department inventory attribute | 12. Executive & Conference Cohort Devices are a Static Group | 13. Existing Google Chrome and Slack packages are associated with versions in their Patch Management software-title definitions and are used by the legacy Google Chrome and Slack Patch Policies [7][8]. | 14. Computer Inventory Collection settings have been enabled

03

Handoff & Reporting

Installomator Maintenance

Pinned

Uses the Deploy - Installomator Release policy (3.1) with policy parameters specifying the approved version, approved SHA-256, and release channel. The downloaded script must match both the approved version and SHA-256 before replacing the installed copy. A change to the upstream release branch cannot install an unapproved updater version.

Tested

Deploy - Installomator - Main (3.2) puts the 10-device Patch Pilot - Managed Apps Smart Group on the approved main build while production stays on the reviewed release build. The pilot is excluded from the production app-update policies so the newer updater can be tested in isolation. After 3.2 runs, IT manually exercises the existing HillmanPackageFree_UpdatorFinal.sh wrapper (5.3) against the applications already installed on those pilot Macs, using the same app parameters production will use. A go decision means each pilot Mac completes all applicable installed-app updates without unintended installation, destructive user impact, or security-validation failure. Main is only promoted to production after that validation is complete.

Versioned

Jamf inventory determines update eligibility using Patch Management or Extension Attribute data. Once the policy runs, the update script reads the installed application's version before and after Installomator remediation and logs the result. Jamf may continue to report the previous version until inventory refreshes.

Refreshed

The Installomator Installed Version (1.1), Channel (1.2), and SHA256 (1.3) Extension Attributes report the installed updater state into Jamf inventory. Installomator - Outdated Release (2.2) identifies release-channel Macs below the approved 10.9 release. Update - Installomator - Release (3.15) runs ongoing against that group and uses the approved version, SHA-256, and release-channel parameters before replacing the installed updater. Patch Pilot - Managed Apps is excluded because those devices remain on main for testing. After inventory refresh, compliant Macs automatically leave the outdated group.

Handoff

Operational Documentation

A Package-Free Application Management runbook should be documented during rollout and maintained post-rollout for Service Desk and IT Engineering.

The runbook will document the Installomator and swiftDialog dependencies | how to verify approved Installomator versions and SHA-256 hashes | application labels | Jamf policy parameters | how to manage application reporting and maintain the Jamf Dashboard | expected logs | common failure conditions | troubleshooting procedures | rollback/recovery steps | the process for testing, approving, and promoting new Installomator versions.

Service Desk: Inventory Refresh and Safe Retry

Service Desk first runs sudo jamf recon to refresh inventory, then confirms the Mac is still in the applicable Update Eligible - [App] Smart Group and is not in the [App] - Absent exclusion group. If the application is still installed and eligible, Service Desk can safely retry the corresponding Update - [App] policy by policy ID. The updater script performs an installed-only check before remediation, so the retry does not install an absent application.

Reporting

Latest Vendor Release and Approved Version

The latest vendor release is visible in the app’s Jamf Patch Management title, or the Wispr Flow latest-version Extension Attribute. After the release passes the pilot, that same version becomes the approved production version. Production is therefore approved to remediate to the current vendor latest stable release rather than to a separately pinned application version.

Compliant, Outdated, Unknown, Pending, or Failed

Add the update policies to the Jamf Dashboard to monitor execution and failures. Add the per-app Current Smart Groups (2.4, 2.9, 2.13, 2.17, 2.25), Outdated groups (2.6, 2.11, 2.15, 2.19, 2.26), and Unknown groups (2.7, 2.36–2.39) to monitor version state after inventory.

Version Handling

The update script reads CFBundleShortVersionString before and after remediation. Missing version values fail safely. Installomator determines whether an update is required; if the installed version is unchanged after a successful Installomator run, the wrapper logs that result for review rather than automatically treating it as a failure. Version verification occurs against the live application on the Mac, while Jamf reporting depends on inventory, so stale inventory may temporarily show an already-remediated device as outdated until inventory refreshes.

95% Compliance

Use the Current, Outdated, Unknown, Installed, and Update Eligible Smart Groups on the Jamf Dashboard to validate the population. Policy Logs and computer history show remediation attempts and failures. If inventory is stale, run sudo jamf recon, confirm Smart Group membership refreshes, and safely retry the applicable Update - [App] policy only if the app is still installed and eligible.

Legacy Chrome and Slack Patch Policies

For the legacy Chrome and Slack workflows, first remove the associated package from the relevant Patch Management software-title definition (Items 6.1 and 6.2), then delete the old Patch Policies (Items 3.17 and 3.18). Jamf documents enable/disable for standard Policies [10], but the Patch Policy documentation does not document an equivalent disable control; the package-based Patch Policy workflow requires the package association [7][8].

04

Troubleshooting and Scope Check

Troubleshooting

First three pieces of evidence inspected, in order, before changing the configuration.

#2: A Mac belongs to the production scope but never runs the update policy.

1. Verify the Mac is a member of the applicable Update Eligible - [App] Smart Group and is not in Conference Room Devices, Patch Pilot - Managed Apps, Executive Devices, or the matching [App] - Absent exclusion.

2. Verify the Mac has checked in and its inventory is current; run sudo jamf recon -verbose if the inventory may be stale.

3. Review the Jamf Policy Log for the applicable Update - [App] policy. If scope is correct and the policy has not run, manually invoke it with sudo jamf policy -id <POLICY_ID>.

#3: The updater reports success, but Jamf inventory still shows the older version.

1. Run sudo jamf recon or sudo jamf recon -verbose to force a fresh inventory update.

2. Verify the computer is still managed and that its Jamf computer record is receiving check-in and inventory updates.

3. Review the update policy’s Jamf Policy Log to confirm the policy ran successfully and compare its timestamp and actions against the last inventory update.

#1: One of the applications is unexpectedly installed on a Mac that did not previously have it.

1. Review the Mac’s current and previous inventory to confirm whether the application was truly absent before the event and identify when it first appeared.

2. Review the applicable Update - [App] policy scope and Policy Log to confirm whether the Mac was in the [App] - Absent exclusion group at the time and whether the new workflow actually ran.

3. Review Jamf policy and installation history to identify the actual deployment path. The new Update - [App] policies exclude the matching [App] - Absent Smart Group, and HillmanPackageFree_UpdatorFinal.sh also exits when the target app is not installed, so evidence that this workflow installed the app would indicate a scope or guardrail failure.

Scope Check

ApplicationTotal Fleet InstalledPilot Installed-EligibleExecutive InstalledConference Room InstalledStandard Production Installed-Eligible
Google Chrome80105461
ChatGPT5584043
Codex3063021
Slack92106472
Wispr Flow3563026

Classification and Absent Apps

Jamf classifies an installed Mac as Current, Outdated, or Unknown after inventory. Chrome, ChatGPT, Codex, and Slack use the corresponding Patch Reporting software title plus Application Version; Wispr Flow uses Application Version compared with the Wispr Flow - Latest Version Extension Attribute (1.4). All application update policies also exclude the matching [App] - Absent Smart Group, and the updater script verifies the application is installed before continuing with remediation.

Sources

  1. [1] https://github.com/Installomator/Installomator/wiki/Goals (accessed 9/24/2026) - Installomator function
  2. [2] https://help.openai.com/en/articles/20001276-moving-to-the-new-chatgpt-desktop-app (accessed 9/24/2026) - identify how ChatGPT and Codex were integrated
  3. [3] https://github.com/Installomator/Installomator (accessed 9/23/2026) - general branch info for Installomator
  4. [4] https://learn.jamf.com/r/en-US/jamf-app-catalog/Patch_Management_Software_Titles (accessed 9/24/2026) - info about patch management
  5. [5] https://learn.jamf.com/r/en-US/jamf-pro-documentation-current/Jamf_Pro_Objects (accessed 9/26/2026) - establish objects and assumptions
  6. [6] https://learn.jamf.com/r/en-US/jamf-pro-documentation-11.22.0/Policy_Management (accessed 9/27/2026) - policy configuration and management behavior
  7. [7] https://learn.jamf.com/r/en-US/jamf-pro-documentation-11.17.0/Adding_a_Package_to_a_Patch_Management_Software_Title (accessed 9/27/2026) - patch policy package association
  8. [8] https://learn.jamf.com/r/en-US/jamf-pro-documentation-11.17.0/Patch_Policy_Workflow (accessed 9/27/2026) - confirms the package-based Patch Policy workflow and required package association.
  9. [9] https://learn.jamf.com/r/en-US/jamf-pro-documentation-11.17.0/Patch_Policies (accessed 9/27/2026) - Patch Policy behavior, eligibility, and deployment model.
  10. [10] https://learn.jamf.com/r/en-US/jamf-pro-documentation-current/Policy_Payload_Reference (accessed 9/27/2026) - confirms enable/disable is a standard Policy setting; a comparable Patch Policy disable setting is not documented.
  11. [11] https://learn.jamf.com/r/en-US/jamf-pro-documentation-11.22.0/Manually_Running_a_Policy (accessed 9/27/2026) - manual execution of custom-trigger policies with the jamf binary.
  12. [12] https://learn.jamf.com/r/en-US/jamf-pro-documentation-current/Viewing_and_Flushing_Logs_for_a_Policy (accessed 9/27/2026) - Jamf Policy Log evidence.
  13. [13] https://learn.jamf.com/r/en-US/jamf-pro-documentation-current/Viewing_Logs_for_a_Patch_Policy (accessed 9/27/2026) - Patch Policy Log evidence.
  14. [14] https://learn.jamf.com/r/en-US/jamf-pro-documentation-current/Computer_Extension_Attributes (accessed 9/27/2026) - Extension Attribute inventory behavior.
  15. [15] https://learn.jamf.com/r/en-US/jamf-pro-documentation-current/Computer_Inventory_and_Criteria_Reference (accessed 9/27/2026) - inventory fields and Smart Group criteria.
  16. [16] https://learn.jamf.com/r/en-US/jamf-pro-documentation-current/Creating_a_Smart_Group (accessed 9/27/2026) - Smart Group criteria and dynamic membership.
  17. [17] https://learn.jamf.com/r/en-US/jamf-pro-documentation-current/Computer_Reports (accessed 9/27/2026) - computer inventory/reporting support.
  18. [18] https://learn.jamf.com/r/en-US/jamf-pro-documentation-current/Event_Logs (accessed 9/27/2026) - Jamf event/log evidence used during support and troubleshooting.
  19. [19] https://versionhistory.googleapis.com/v1/chrome/platforms/mac/channels/stable/versions/all/releases (accessed 9/27/2026) - Google Chrome latest stable version source.
  20. [20] https://persistent.oaistatic.com/sidekick/public/sparkle_public_appcast.xml (accessed 9/27/2026) - OpenAI ChatGPT Classic latest stable version source.
  21. [21] https://persistent.oaistatic.com/codex-app-prod/appcast.xml (accessed 9/27/2026) - OpenAI ChatGPT Codex latest stable version source.
  22. [22] https://slack.com/api/desktop.latestRelease?redirect=1&variant=pkg&arch=universal (accessed 9/27/2026) - Slack latest stable macOS version source.
  23. [23] https://dl.wisprflow.ai/mac-apple/latest (accessed 9/27/2026) - Wispr Flow latest stable macOS version source.
05

Configuration Worksheet

One row per Jamf object created, changed, disabled, or reused. Item numbers match the references above. CSV on GitHub

Showing 73 of 73 rows

Item No.Jamf Object nameJamf Object TypeActionSmart Group CriteriaTriggerFrequencyScope TargetScope ExclusionsScript ParamatersApproved Target VersionInstalled Version FieldExpected ResultLog/EvidenceLatest Stable Version Source
1.1Installomator - Installed VersionExtension AttributeCreate10.9 11.0 Not Installed UnknownExtension Attribute value returned during Jamf inventory collection: <result>10.9</result>
1.2Installomator - ChannelExtension AttributeCreaterelease main Not Installed UnknownExtension Attribute value returned during Jamf inventory collection: <result>release</result>
1.3Installomator - SHA256Extension AttributeCreate4f0f9ae3e2550faa0f8973dbdad83011146bdd0b4632d96ebb7a7826b3daec43 9c4db47976da5ea64335c9afeea42d994b0e68a95e2cd13847c77d67c9d0a9cf Not Installed UnknownExtension Attribute value returned during Jamf inventory collection: <result>4f0f9ae3e2550faa0f8973dbdad83011146bdd0b4632d96ebb7a7826b3daec43</result>
1.4Wispr Flow - Latest VersionExtension AttributeCreate1.6.957 UnknownExtension Attribute value returned during Jamf inventory collection <result>1.6.957</result>
2.8ChatGPT - InstalledSmart GroupCreateApplication Title has ChatGPT.app55 devicesComputer inventory information and Smart Computer Group membership after inventory update.
2.35Update Eligible - Wispr FlowSmart GroupCreateComputer Group member of Wispr Flow - OutdatedDevices meeting the Wispr Flow Outdated criteria. Device count cannot be determined from supplied data.Computer inventory information and Smart Computer Group membership after inventory update.
3.19Update - ChatGPT - Conference RoomPolicyCreateCustom TriggerOngoingConference Room DevicesChatGPT - Absent$4Installomator_label:chatgpt $5App_name:ChatGPT $6App_path:/Applications/ChatGPT.app $7Process_name:ChatGPT $8Deferral_profile:standard $9Debug_mode:01.2026.184Application VersionManual custom-trigger policy updates ChatGPT on Conference Room Devices only when IT invokes the policy. The installed-only guardrail prevents installation where ChatGPT is absent.Jamf Pro Policy Logs: date/time, status, and actions logged.https://persistent.oaistatic.com/sidekick/public/sparkle_public_appcast.xml
3.20Update - Codex - Conference RoomPolicyCreateCustom TriggerOngoingConference Room DevicesCodex - Absent$4Installomator_label:codex $5App_name:Codex $6App_path:/Applications/Codex.app $7Process_name:Codex $8Deferral_profile:standard $9Debug_mode:026.924.22138Application VersionManual custom-trigger policy updates Codex on Conference Room Devices only when IT invokes the policy. The installed-only guardrail prevents installation where Codex is absent.Jamf Pro Policy Logs: date/time, status, and actions logged.https://persistent.oaistatic.com/codex-app-prod/appcast.xml
3.22Update - Wispr Flow - Conference RoomPolicyCreateCustom TriggerOngoingConference Room DevicesWispr Flow - Absent$4Installomator_label:wisprflow $5App_name:Wispr Flow $6App_path:/Applications/Wispr Flow.app $7Process_name:Wispr Flow $8Deferral_profile:standard $9Debug_mode:01.6.957Application VersionManual custom-trigger policy updates Wispr Flow on Conference Room Devices only when IT invokes the policy. The installed-only guardrail prevents installation where Wispr Flow is absent.Jamf Pro Policy Logs: date/time, status, and actions logged.https://dl.wisprflow.ai/mac-apple/latest
5.3HillmanPackageFree_UpdatorFinal.shScriptCreateReusable updater is attached to Update - [App] policies, updates installed applications only, applies standard or executive deferral behavior, and logs remediation results.Can be run locally with DEBUG=1 or DEBUG=2; local validation is written to /var/log/hillman-app-updates.log when run as root.
5.1Installomator-Deployv2.shScriptReuseReusable Installomator deployment script validates the approved version, SHA-256, and channel used by Installomator deployment and update policies.Can be run locally with the same policy parameters and stdout/stderr captured for validation.
5.2Deploy-swiftDialog.shScriptReuseReusable swiftDialog deployment script installs or updates swiftDialog and verifies /usr/local/bin/dialog is available.Can be run locally and stdout/stderr captured for validation.
2.22Update Eligible - CodexSmart GroupCreateComputer Group member of Codex - OutdatedDevices meeting the application's Outdated criteria. Device count cannot be determined from supplied data.Computer inventory information and Smart Computer Group membership after inventory update.
2.23Update Eligible - Google ChromeSmart GroupCreateComputer Group member of Google Chrome - OutdatedDevices meeting the application's Outdated criteria. Device count cannot be determined from supplied data.Computer inventory information and Smart Computer Group membership after inventory update.
2.27Wispr Flow - InstalledSmart GroupCreateApplication Title has Wispr Flow.app35 devicesComputer inventory information and Smart Computer Group membership after inventory update.
2.1Google Chrome - InstalledSmart GroupCreateApplication Title has Google Chrome.app80 devicesComputer inventory information and Smart Computer Group membership after inventory update.
2.10ChatGPT - AbsentSmart GroupCreateApplication Title does not have ChatGPT.app45 devicesComputer inventory information and Smart Computer Group membership after inventory update.
2.11ChatGPT - OutdatedSmart GroupCreateApplication Title has ChatGPT.app AND Patch Reporting: OpenAI ChatGPT Classic less than Latest VersionDevices with ChatGPT installed and Patch Reporting version less than Latest Version. Device count cannot be determined from supplied data.Computer inventory information and Smart Computer Group membership after inventory update.
2.12Codex - InstalledSmart GroupCreateApplication Title has Codex.app30 devicesComputer inventory information and Smart Computer Group membership after inventory update.
2.13Codex - CurrentSmart GroupCreateApplication Title has Codex.app AND Patch Reporting: OpenAI ChatGPT Codex greater than or equal to Latest Version26.924.22138Application VersionDevices with Codex installed and Patch Reporting version greater than or equal to Latest Version. Device count cannot be determined from supplied data.Computer inventory information and Smart Computer Group membership after inventory update.
2.14Codex - AbsentSmart GroupCreateApplication Title does not have Codex.app70 devicesComputer inventory information and Smart Computer Group membership after inventory update.
2.15Codex - OutdatedSmart GroupCreateApplication Title has Codex.app AND Patch Reporting: OpenAI ChatGPT Codex less than Latest VersionDevices with Codex installed and Patch Reporting version less than Latest Version. Device count cannot be determined from supplied data.Computer inventory information and Smart Computer Group membership after inventory update.
2.16Slack - InstalledSmart GroupCreateApplication Title has Slack.appApplication Version92 devicesComputer inventory information and Smart Computer Group membership after inventory update.
2.17Slack - CurrentSmart GroupCreateApplication Title has Slack.app AND Patch Reporting: Slack greater than or equal to Latest Version4.52.162Application VersionDevices with Slack installed and Patch Reporting version greater than or equal to Latest Version. Device count cannot be determined from supplied data.Computer inventory information and Smart Computer Group membership after inventory update.
2.18Slack - AbsentSmart GroupCreateApplication Title does not have Slack.app8 devicesComputer inventory information and Smart Computer Group membership after inventory update.
2.19Slack - OutdatedSmart GroupCreateApplication Title has Slack.app AND Patch Reporting: Slack less than Latest VersionApplication VersionDevices with Slack installed and Patch Reporting version less than Latest Version. Device count cannot be determined from supplied data.Computer inventory information and Smart Computer Group membership after inventory update.
2.2Installomator - Outdated ReleaseSmart GroupCreateInstallomator - Channel is release AND Installomator - Installed Version is less than 10.9Devices with Installomator installed and version less than 10.9 (current approved release version).Installomator - Installed Version EA is less than 10.9
3.6Update - ChatGPT - ProdPolicyCreateRecurring Check-InOngoingUpdate Eligible - ChatGPTConference Room Devices, Patch Pilot - Managed Apps, Executive Devices, ChatGPT - Absent$4Installomator_label:chatgpt $5App_name:ChatGPT $6App_path:/Applications/ChatGPT.app $7Process_name:ChatGPT $8Deferral_profile:standard $9Debug_mode:01.2026.184Application VersionEligible ChatGPT devices run HillmanPackageFree_UpdatorFinal.sh. Installed-only guardrail prevents new installation; standard deferral profile is applied.Local script validation can be captured in /var/log/hillman-app-updates.log; Jamf Policy Log requires an active Jamf instance.https://persistent.oaistatic.com/sidekick/public/sparkle_public_appcast.xml
2.20Update Eligible - ChatGPTSmart GroupCreateComputer Group member of ChatGPT - OutdatedDevices meeting the application's Outdated criteria. Device count cannot be determined from supplied data.Computer inventory information and Smart Computer Group membership after inventory update.
2.21Update Eligible - SlackSmart GroupCreateComputer Group member of Slack - OutdatedDevices meeting the application's Outdated criteria. Device count cannot be determined from supplied data.Computer inventory information and Smart Computer Group membership after inventory update.
2.25 Wispr Flow - CurrentSmart GroupCreateApplication Title has Wispr Flow.app AND Application Version is greater than or equal to Wispr Flow - Latest Version1.6.957Application VersionDevices with Wispr Flow installed and Application Version greater than or equal to Wispr Flow - Latest Version. Device count cannot be determined from supplied data.Computer inventory information and Smart Computer Group membership after inventory update.
2.26Wispr Flow - OutdatedSmart GroupCreateApplication Title has Wispr Flow.app AND Application Version is less than Wispr Flow - Latest VersionApplication VersionDevices with Wispr Flow installed and Application Version less than Wispr Flow - Latest Version. Device count cannot be determined from supplied data.Computer inventory information and Smart Computer Group membership after inventory update.
2.28Wispr Flow - AbsentSmart GroupCreateApplication Title does not have Wispr Flow.app65 devicesComputer inventory information and Smart Computer Group membership after inventory update.
2.29Update Eligible - ChatGPT - ExecSmart GroupCreateComputer Group member of Executive Devices AND Computer Group member of Update Eligible - ChatGPTExecutive devices meeting the ChatGPT Outdated criteria. Device count cannot be determined from supplied data.Computer inventory information and Smart Computer Group membership after inventory update.
3.1Deploy - Installomator - ReleasePolicyReuseRecurring Check-InOnce per computerAll Managed ComputersConference Room Devices, Patch Pilot - Managed Apps $4APPROVED_VERSION:10.9 $5APPROVED_SHA256:4f0f9ae3e2550faa0f8973dbdad83011146bdd0b4632d96ebb7a7826b3daec43 $6CHANNEL:release10.9Approved Installomator release version is deployed to the scoped computers once per computer using the documented version, SHA-256, and release channel parameters.Local validation can be performed with Installomator-Deployv2.sh using the documented $4-$6 values; Jamf Policy Log requires an active Jamf instance.
3.10Update - ChatGPT - ExecutivePolicyCreateRecurring Check-InOngoingUpdate Eligible - ChatGPT - ExecChatGPT - Absent$4Installomator_label:chatgpt $5App_name:ChatGPT $6App_path:/Applications/ChatGPT.app $7Process_name:ChatGPT $8Deferral_profile:executive $9Debug_mode:01.2026.184Application VersionEligible executive ChatGPT devices run HillmanPackageFree_UpdatorFinal.sh with the executive deferral profile.Local script validation can be captured in /var/log/hillman-app-updates.log; Jamf Policy Log requires an active Jamf instance.https://persistent.oaistatic.com/sidekick/public/sparkle_public_appcast.xml
3.11Update - Codex - ExecutivePolicyCreateRecurring Check-InOngoingUpdate Eligible - Codex - ExecCodex - Absent$4Installomator_label:codex $5App_name:Codex $6App_path:/Applications/Codex.app $7Process_name:Codex $8Deferral_profile:executive $9Debug_mode:026.924.22138Application VersionEligible executive Codex devices run HillmanPackageFree_UpdatorFinal.sh with the executive deferral profile.Local script validation can be captured in /var/log/hillman-app-updates.log; Jamf Policy Log requires an active Jamf instance.https://persistent.oaistatic.com/codex-app-prod/appcast.xml
3.12Update - Slack - ExecutivePolicyCreateRecurring Check-InOngoingUpdate Eligible - Slack - ExecSlack - Absent$4Installomator_label:slack $5App_name:Slack $6App_path:/Applications/Slack.app $7Process_name:Slack $8Deferral_profile:executive $9Debug_mode:04.52.162Application VersionEligible executive Slack devices run HillmanPackageFree_UpdatorFinal.sh with the executive deferral profile.Local script validation can be captured in /var/log/hillman-app-updates.log; Jamf Policy Log requires an active Jamf instance.https://slack.com/api/desktop.latestRelease?redirect=1&variant=pkg&arch=universal
3.13Update - Wispr Flow - ExecutivePolicyCreateRecurring Check-InOngoingUpdate Eligible - Wispr Flow - ExecWispr Flow - Absent$4Installomator_label:wisprflow $5App_name:Wispr Flow $6App_path:/Applications/Wispr Flow.app $7Process_name:Wispr Flow $8Deferral_profile:executive $9Debug_mode:01.6.957Application VersionEligible executive Wispr Flow devices run HillmanPackageFree_UpdatorFinal.sh with the executive deferral profile.Local script validation can be captured in /var/log/hillman-app-updates.log; Jamf Policy Log requires an active Jamf instance.https://dl.wisprflow.ai/mac-apple/latest
3.14Update - Wispr Flow - ProdPolicyCreateRecurring Check-InOngoingUpdate Eligible - Wispr FlowConference Room Devices, Patch Pilot - Managed Apps, Executive Devices, Wispr Flow - Absent$4Installomator_label:wisprflow $5App_name:Wispr Flow $6App_path:/Applications/Wispr Flow.app $7Process_name:Wispr Flow $8Deferral_profile:standard $9Debug_mode:01.6.957Application VersionEligible Wispr Flow devices run HillmanPackageFree_UpdatorFinal.sh. Installed-only guardrail prevents new installation; standard deferral profile is applied.Local script validation can be captured in /var/log/hillman-app-updates.log; Jamf Policy Log requires an active Jamf instance.https://dl.wisprflow.ai/mac-apple/latest
3.2Deploy - Installomator - MainPolicyCreateCustom TriggerOnce per computerPatch Pilot - Managed Apps Conference Room Devices, Executive Devices$4APPROVED_VERSION:11.0 $5APPROVED_SHA256:9c4db47976da5ea64335c9afeea42d994b0e68a95e2cd13847c77d67c9d0a9cf $6CHANNEL:main11.0Approved Installomator main build is deployed to Patch Pilot - Managed Apps once per computer using the documented version, SHA-256, and main channel parameters.Local validation can be performed with Installomator-Deployv2.sh using the documented $4-$6 values; Jamf Policy Log requires an active Jamf instance.
3.3Update - Google Chrome - Conference RoomPolicyCreateCustom TriggerOngoingConference Room DevicesGoogle Chrome - Absent$4Installomator_label:googlechromepkg $5App_name:Google Chrome $6App_path:/Applications/Google Chrome.app $7Process_name:Google Chrome $8Deferral_profile:standard $9Debug_mode:0154.0.8037.58Application VersionManual custom-trigger policy updates Google Chrome on Conference Room Devices only when IT invokes the policy. The installed-only guardrail prevents installation where Google Chrome is absent.Jamf Pro Policy Logs: date/time, status, and actions logged.https://versionhistory.googleapis.com/v1/chrome/platforms/mac/channels/stable/versions/all/releases
3.4Update - Google Chrome - ProdPolicyCreateRecurring Check-InOngoingUpdate Eligible - Google ChromeConference Room Devices, Patch Pilot - Managed Apps, Executive Devices, Google Chrome - Absent$4Installomator_label:googlechromepkg $5App_name:Google Chrome $6App_path:/Applications/Google Chrome.app $7Process_name:Google Chrome $8Deferral_profile:standard $9Debug_mode:0154.0.8037.58Application VersionEligible Google Chrome devices run HillmanPackageFree_UpdatorFinal.sh. Installed-only guardrail prevents new installation; standard deferral profile is applied.Local script validation can be captured in /var/log/hillman-app-updates.log; Jamf Policy Log requires an active Jamf instance.https://versionhistory.googleapis.com/v1/chrome/platforms/mac/channels/stable/versions/all/releases
3.5Deploy - swiftDialogPolicyReuseRecurring Check-InOnce per computerAll Managed ComputersConference Room DevicesswiftDialog is deployed to scoped managed computers once per computer for user-notification workflows.Jamf Pro Policy Logs: date/time, status, and actions logged.
3.7Update - Codex - ProdPolicyCreateRecurring Check-InOngoingUpdate Eligible - CodexConference Room Devices, Patch Pilot - Managed Apps, Executive Devices, Codex - Absent$4Installomator_label:codex $5App_name:Codex $6App_path:/Applications/Codex.app $7Process_name:Codex $8Deferral_profile:standard $9Debug_mode:026.924.22138Application VersionEligible Codex devices run HillmanPackageFree_UpdatorFinal.sh. Installed-only guardrail prevents new installation; standard deferral profile is applied.Local script validation can be captured in /var/log/hillman-app-updates.log; Jamf Policy Log requires an active Jamf instance.https://persistent.oaistatic.com/codex-app-prod/appcast.xml
3.8Update - Slack - ProdPolicyCreateRecurring Check-InOngoingUpdate Eligible - SlackConference Room Devices, Patch Pilot - Managed Apps, Executive Devices, Slack - Absent$4Installomator_label:slack $5App_name:Slack $6App_path:/Applications/Slack.app $7Process_name:Slack $8Deferral_profile:standard $9Debug_mode:04.52.162Application VersionEligible Slack devices run HillmanPackageFree_UpdatorFinal.sh. Installed-only guardrail prevents new installation; standard deferral profile is applied.Local script validation can be captured in /var/log/hillman-app-updates.log; Jamf Policy Log requires an active Jamf instance.https://slack.com/api/desktop.latestRelease?redirect=1&variant=pkg&arch=universal
3.9Update - Google Chrome - ExecutivePolicyCreateRecurring Check-InOngoingUpdate Eligible - Google Chrome - ExecGoogle Chrome - Absent$4Installomator_label:googlechromepkg $5App_name:Google Chrome $6App_path:/Applications/Google Chrome.app $7Process_name:Google Chrome $8Deferral_profile:executive $9Debug_mode:0154.0.8037.58Application VersionEligible executive Google Chrome devices run HillmanPackageFree_UpdatorFinal.sh with the executive deferral profile.Local script validation can be captured in /var/log/hillman-app-updates.log; Jamf Policy Log requires an active Jamf instance.https://versionhistory.googleapis.com/v1/chrome/platforms/mac/channels/stable/versions/all/releases
2.3Installomator - Not InstalledSmart GroupCreateInstallomator - Installed Version is Not InstalledDevices where Installomator - Installed Version returns Not Installed. Device count cannot be determined from supplied data.Computer inventory information and Smart Computer Group membership after inventory update.
2.30Update Eligible - Slack - ExecSmart GroupCreateComputer Group member of Executive Devices AND Computer Group member of Update Eligible - SlackExecutive devices meeting the Slack Outdated criteria. Device count cannot be determined from supplied data.Computer inventory information and Smart Computer Group membership after inventory update.
2.31Update Eligible - Codex - ExecSmart GroupCreateComputer Group member of Executive Devices AND Computer Group member of Update Eligible - CodexApplication VersionExecutive devices meeting the Codex Outdated criteria. Device count cannot be determined from supplied data.Computer inventory information and Smart Computer Group membership after inventory update.
3.15Update - Installomator - ReleasePolicyCreateRecurring Check-InOngoingInstallomator - Outdated ReleaseConference Room Devices, Patch Pilot - Managed Apps$4APPROVED_VERSION:10.9 $5APPROVED_SHA256:4f0f9ae3e2550faa0f8973dbdad83011146bdd0b4632d96ebb7a7826b3daec43 $6CHANNEL:release10.9Devices in Installomator - Outdated Release are remediated using the approved release version, SHA-256, and release channel parameters.Local validation can be performed with Installomator-Deployv2.sh; Jamf Policy Log requires an active Jamf instance.
2.32Update Eligible - Google Chrome - ExecSmart GroupCreateComputer Group member of Executive Devices AND Computer Group member of Update Eligible - Google ChromeApplication VersionExecutive devices meeting the Google Chrome Outdated criteria. Device count cannot be determined from supplied data.Computer inventory information and Smart Computer Group membership after inventory update.
2.33Update Eligible - Wispr Flow - ExecSmart GroupCreateComputer Group member of Executive Devices AND Computer Group member of Update Eligible - Wispr FlowApplication VersionExecutive devices meeting the Wispr Flow Outdated criteria. Device count cannot be determined from supplied data.Computer inventory information and Smart Computer Group membership after inventory update.
2.4Google Chrome - CurrentSmart GroupCreateApplication Title has Google Chrome.app AND Patch Reporting: Google Chrome greater than or equal to Latest Version154.0.8037.58Application VersionDevices with Google Chrome installed and Patch Reporting version greater than or equal to the current Latest Version (154.0.8037.58). Device count cannot be determined from supplied data.Computer inventory information and Smart Computer Group membership after inventory update.
2.5Google Chrome - AbsentSmart GroupCreateApplication Title does not have Google Chrome.appApplication Version20 devicesComputer inventory information and Smart Computer Group membership after inventory update.
3.16Update - Installomator - MainPolicyCreateCustom TriggerOngoingPatch Pilot - Managed Apps$4APPROVED_VERSION:11.0 $5APPROVED_SHA256:9c4db47976da5ea64335c9afeea42d994b0e68a95e2cd13847c77d67c9d0a9cf $6CHANNEL:main11.0Approved Installomator main build is manually refreshed on Patch Pilot - Managed Apps using the documented version, SHA-256, and main channel parameters.Jamf Pro Policy Logs: date/time, status, and actions logged.
3.21Update - Slack - Conference RoomPolicyCreateCustom TriggerOngoingConference Room DevicesSlack - Absent$4Installomator_label:slack $5App_name:Slack $6App_path:/Applications/Slack.app $7Process_name:Slack $8Deferral_profile:standard $9Debug_mode:04.52.162Application VersionManual custom-trigger policy updates Slack on Conference Room Devices only when IT invokes the policy. The installed-only guardrail prevents installation where Slack is absent.Jamf Pro Policy Logs: date/time, status, and actions logged.https://slack.com/api/desktop.latestRelease?redirect=1&variant=pkg&arch=universal
2.6Google Chrome - OutdatedSmart GroupCreateApplication Title has Google Chrome.app AND Patch Reporting: Google Chrome less than Latest VersionApplication VersionDevices with Google Chrome installed and Patch Reporting version less than Latest Version. Device count cannot be determined from supplied data.Computer inventory information and Smart Computer Group membership after inventory update.
2.9ChatGPT - CurrentSmart GroupCreateApplication Title has ChatGPT.app AND Patch Reporting: OpenAI ChatGPT Classic greater than or equal to Latest VersionApplication VersionDevices with ChatGPT installed and Patch Reporting version greater than or equal to Latest Version. Device count cannot be determined from supplied data.Computer inventory information and Smart Computer Group membership after inventory update.
2.36ChatGPT - UnknownSmart GroupCreateApplication Title has ChatGPT.app AND Application Version is UnknownApplication VersionDevices with ChatGPT installed where Application Version is Unknown. Device count cannot be determined from supplied data.Computer inventory information and Smart Computer Group membership after inventory update.
2.37Codex - UnknownSmart GroupCreateApplication Title has Codex.app AND Application Version is UnknownApplication VersionDevices with Codex installed where Application Version is Unknown. Device count cannot be determined from supplied data.Computer inventory information and Smart Computer Group membership after inventory update.
2.38Slack - UnknownSmart GroupCreateApplication Title has Slack.app AND Application Version is UnknownApplication VersionDevices with Slack installed where Application Version is Unknown. Device count cannot be determined from supplied data.Computer inventory information and Smart Computer Group membership after inventory update.
2.39Wispr Flow - UnknownSmart GroupCreateApplication Title has Wispr Flow.app AND Application Version is UnknownApplication VersionDevices with Wispr Flow installed where Application Version is Unknown. Device count cannot be determined from supplied data.Computer inventory information and Smart Computer Group membership after inventory update.
2.7Google Chrome - UnknownSmart GroupCreateApplication Title has Google Chrome.app AND Application Version is UnknownApplication VersionDevices with Google Chrome installed where Application Version is Unknown. Device count cannot be determined from supplied data.Computer inventory information and Smart Computer Group membership after inventory update.
2.34Patch Pilot - Managed Apps Smart GroupReuseDepartment is IT10 devicesComputer inventory information and Smart Computer Group membership after inventory update.
6.1Google ChromePatch Management Software TitleChangeRemove the Google Chrome package association from the Patch Management software title definition so the title remains available for reporting but no package-based deployment path remains.Jamf Pro Patch Management software title definition shows no package associated with the target version.
6.2SlackPatch Management Software TitleChangeRemove the Slack package association from the Patch Management software title definition so the title remains available for reporting but no package-based deployment path remains.Jamf Pro Patch Management software title definition shows no package associated with the target version.
4.1Executive DevicesStatic GroupReuse6 devicesStatic Computer Group membership in Jamf Pro.
4.3Conference Room DevicesStatic GroupReuse4 devicesStatic Computer Group membership in Jamf Pro.
3.17Google Chrome - Patch PolicyPatch PolicyDisableAfter the Chrome package association is removed from its Patch Management software title, delete the legacy Google Chrome Patch Policy so the package-based deployment workflow can no longer run.Patch Policy no longer appears under the Google Chrome Patch Management software title; patch reporting remains available.
3.18Slack - Patch PolicyPatch PolicyDisableAfter the Slack package association is removed from its Patch Management software title, delete the legacy Slack Patch Policy so the package-based deployment workflow can no longer run.Patch Policy no longer appears under the Slack Patch Management software title; patch reporting remains available.
3.23Deploy - Installomator - Conference RoomPolicyCreateCustom TriggerOngoingConference Room Devices$4APPROVED_VERSION:10.9 $5APPROVED_SHA256:4f0f9ae3e2550faa0f8973dbdad83011146bdd0b4632d96ebb7a7826b3daec43 $6CHANNEL:release10.9Manual fallback policy installs or repairs the approved Installomator release on Conference Room Devices when IT invokes it. Assumes Installomator is normally already present.Jamf Pro Policy Logs: date/time, status, and actions logged.
3.24Deploy - swiftDialog - Conference RoomPolicyCreateCustom TriggerOngoingConference Room DevicesManual fallback policy installs or repairs swiftDialog on Conference Room Devices when IT invokes it. Assumes swiftDialog is normally already present.Jamf Pro Policy Logs: date/time, status, and actions logged.
06

Scripts

Next project

davisthetech.bio

Web / AI-assisted