Skip to content

Instantly share code, notes, and snippets.

@talkingmoose
Last active September 15, 2026 02:54
Show Gist options
  • Select an option

  • Save talkingmoose/1404492cb0326395f1040af15870eeb9 to your computer and use it in GitHub Desktop.

Select an option

Save talkingmoose/1404492cb0326395f1040af15870eeb9 to your computer and use it in GitHub Desktop.
Regex identifies Mac models compatible with macOS 27 Golden Gate. May not be up-to-date with newly released models.
https://www.apple.com/os/macos/
Published Date: June 8, 2026
Updated: June 10, 2026
Verification: https://regex101.com/r/GRwi7n/3
1) Exact regex — Matches major model identifier numbers based on Apple's knowledge base article (more accurate):
^(Mac(BookPro1[78]|1[3-7]|BookAir10|mini9),\d+|iMac21,\d+)$
2) Current or higher regex — Matches model identifiers based on Apple's knowledge base article and may match higher versions before this regex is updated (more future-proof).
^(Mac(BookPro1[78]|1[3-9]|BookAir10|mini9),\d+|iMac21,\d+)$
Current or higher regexes aren't available for some models where Apple has used the same model identifier schema for multiple models.
Either regex will match any of the supported following model identifiers:
MacBook Pro
https://support.apple.com/en-us/108052
Exact regex: ^(Mac((BookPro1([78],\d))|1(4,([5679]|10)|5,([36-9]|1[01])|6,[15-8]|7,[126-9])))$
Current or higher regex: Not available
Supported:
Mac17,9
Mac17,8
Mac17,7
Mac17,6
Mac17,2
Mac17,1
Mac16,8
Mac16,7
Mac16,6
Mac16,5
Mac16,1
Mac15,11
Mac15,10
Mac15,9
Mac15,8
Mac15,7
Mac15,6
Mac15,3
Mac14,10
Mac14,9
Mac14,7
Mac14,6
Mac14,5
MacBookPro18,4
MacBookPro18,3
MacBookPro18,2
MacBookPro18,1
MacBookPro17,1
Unsupported:
MacBookPro16,4
MacBookPro16,2
MacBookPro16,1
MacBookPro16,3
MacBookPro15,4
MacBookPro15,3
MacBookPro15,2
MacBookPro15,1
MacBookPro14,3
MacBookPro14,2
MacBookPro14,1
MacBookPro13,3
MacBookPro13,2
MacBookPro13,1
MacBookPro12,1
MacBookPro11,5
MacBookPro11,4
MacBookPro11,3
MacBookPro11,2
MacBookPro11,1
MacBookPro10,2
MacBookPro10,1
MacBookPro9,2
MacBookPro9,1
MacBookPro8,3
MacBookPro8,2
MacBookPro8,1
MacBookPro7,1
MacBookPro6,2
MacBookPro6,1
MacBookPro5,5
MacBookPro5,4
MacBookPro5,3
MacBookPro5,2
MacBookPro5,1
MacBookPro4,1
MacBookPro3,1
MacBookPro2,2
MacBookPro2,1
MacBookPro1,2
MacBookPro1,1
---------------------------------------------------
MacBook Air
https://support.apple.com/en-us/102869
Exact regex: ^(Mac(1([56],1[23]|4,(2|15)|7,[34])|BookAir10,1))$
Current or higher regex: Not available
Supported:
Mac17,4
Mac17,3
Mac16,13
Mac16,12
Mac15,13
Mac15,12
Mac14,15
Mac14,2
MacBookAir10,1
Unsupported:
MacBookAir9,1
MacBookAir8,2
MacBookAir8,1
MacBookAir7,2
MacBookAir7,1
MacBookAir6,2
MacBookAir6,1
MacBookAir5,2
MacBookAir5,1
MacBookAir4,2
MacBookAir4,1
MacBookAir3,2
MacBookAir3,1
MacBookAir2,1
MacBookAir1,1
---------------------------------------------------
MacBook Neo
https://hw-model-names.services.jamfcloud.com/1/computerModels.xml
Note: MacBook Neo may not support versions of macOS Tahoe lower than 26.3.
Exact regex: ^Mac17,5$
Current or higher regex: Not available
Supported:
Mac17,5
Unsupported:
None.
---------------------------------------------------
MacBook
https://support.apple.com/en-us/103257
Supported:
None.
Unsupported:
MacBook10,1
MacBook9,1
MacBook8,1
MacBook7,1
MacBook6,1
MacBook5,2
MacBook5,1
MacBook4,1
MacBook3,1
MacBook2,1
MacBook1,1
---------------------------------------------------
iMac Pro
https://support.apple.com/en-us/HT210222
Supported
None.
Unsupported::
iMacPro1,1
---------------------------------------------------
iMac
https://support.apple.com/en-us/108054
Exact regex: ^(Mac1((6,[23]|5,[45]))|iMac(21),[12])$
Current or higher regex: Not available
Supported:
Mac16,3
Mac16,2
Mac15,5
Mac15,4
iMac21,2
iMac21,1
Unsupported:
iMac20,2
iMac20,1
iMac19,2
iMac19,1
iMac18,3
iMac18,2
iMac18,1
iMac17,1
iMac16,2
iMac16,1
iMac15,1
iMac14,4
iMac14,3
iMac14,2
iMac14,1
iMac13,2
iMac13,1
iMac12,2
iMac12,1
iMac11,3
iMac11,2
iMac11,1
iMac10,1
iMac9,1
iMac8,1
iMac7,1
iMac6,1
iMac5,2
iMac5,1
iMac4,2
iMac4,1
iMac,1
---------------------------------------------------
Mac mini
https://support.apple.com/en-us/102852
Exact regex: ^(Mac(1((6,1[015])|(4,(3|12)))|mini9,1))$
Current or higher regex: Not available
Supported:
Mac16,11
Mac16,10
Mac14,3
Mac14,12
Macmini9,1
Unsupported:
Macmini8,1
Macmini7,1
Macmini6,2
Macmini6,1
Macmini5,3
Macmini5,2
Macmini5,1
Macmini4,1
Macmini3,1
Macmini2,1
Macmini1,1
---------------------------------------------------
Mac Studio
https://support.apple.com/en-us/102231
Exact regex: ^(Mac1((3,[12])|(4,1(3|4))|5,14|6,9))$
Current or higher regex: Not available
Supported:
Mac16,9
Mac15,14
Mac14,14
Mac14,13
Mac13,2
Mac13,1
---------------------------------------------------
Mac Pro
https://support.apple.com/en-us/102887
Exact regex: ^Mac14,8$
Current or higher regex: Not available
Supported:
Mac14,8
Unsupported:
MacPro7,1
MacPro6,1
MacPro5,1
MacPro4,1
MacPro3,1
MacPro2,1
MacPro1,1
@chilcote

chilcote commented Jun 9, 2026

Copy link
Copy Markdown

MacBookPro16,1, MacBookPro16,2, and MacBookPro16,3 are Intel models, so are not supported.

@jhbush

jhbush commented Jun 9, 2026

Copy link
Copy Markdown

^Mac((BookPro1(6,4|[78],\d)|(1[3-9]|BookAir10|mini9|),\d+))|iMac21,\d+$
Seems to exclude the last 2019 Intel MBP's I have.

@talkingmoose

Copy link
Copy Markdown
Author

Thanks for the catch, @chilcote!

@talkingmoose

Copy link
Copy Markdown
Author

@jhbush According to https://www.apple.com/os/macos/, macOS Golden Gate 27 supports MacBook Pro with Apple silicon (2020 and later. It appears to end Intel support altogether.

@eithor

eithor commented Jun 10, 2026

Copy link
Copy Markdown

MacBookPro16,4 is also an Intel and should be in the unsupported list.

I have made the reverse regex (e.g. macOS 27 NON-compatible) like this:
^(MacPro[1-7],[0-9]|iMac,1|iMacPro1,1|iMac([1-9]|1[0-9]|20),[0-9]|Macmini[1-8],[0-9]|MacBookAir[1-9],[0-9]|MacBook[0-9,]+|MacBookPro([1-9]|1[0-6]),[0-9])$

I find it better to search for non-compatible to avoid issues when new models are added.

@chilcote

Copy link
Copy Markdown

I got the list by grabbing all the Board IDs from "/Volumes/Shared Support/com_apple_MobileAsset_MacSoftwareUpdate/com_apple_MobileAsset_MacSoftwareUpdate.xml" and comparing against mdm data to map the Model IDs. Supported models afaict are:

MacBookPro18,1,J316sAP
Mac16,12,J713AP
Mac16,7,J616sAP
Mac16,5,J616cAP
Macmini9,1,J274AP
Mac16,11,J773sAP
MacBookPro18,3,J314sAP
Mac14,12,J474sAP
MacBookPro18,2,J316cAP
Mac16,8,J614sAP
MacBookAir10,1,J313AP
Mac16,6,J614cAP
Mac15,12,J613AP
Mac14,2,J413AP
Mac15,7,J516sAP
Mac15,6,J514sAP
Mac15,9,J516cAP
Mac14,14,J475dAP
Mac15,8,J514cAP
Mac17,6,J716cAP
Mac13,2,J375dAP
Mac16,10,J773gAP
MacBookPro17,1,J293AP
Mac16,9,J575cAP
Mac14,9,J414sAP
Mac17,7,J714cAP
Mac16,13,J715AP
Mac14,10,J416sAP
Mac15,13,J615AP
Mac15,10,J514mAP
Mac15,11,J516mAP
Mac14,6,J416cAP
Mac14,15,J415AP
Mac14,13,J475cAP
Mac17,2,J704AP
MacBookPro18,4,J314cAP
Mac14,5,J414cAP
Mac15,14,J575dAP
Mac17,8,J716sAP
Mac17,9,J714sAP
Mac17,3,J813AP
Mac13,1,J375cAP
Mac15,3,J504AP
Mac14,8,J180dAP
Mac16,1,J604AP
Mac17,4,J815AP
Mac14,7,J493AP
Mac16,2,J623AP
Mac14,3,J473AP
Mac16,3,J624AP
Mac17,5,J700AP
iMac21,1,J456AP
iMac21,2,J457AP
Mac15,4,J433AP
Mac15,5,J434AP

@cvangorp

Copy link
Copy Markdown

@talkingmoose Love it, thank you! Can you do tvOS and ipadOS too! Please.

@uurazzle

Copy link
Copy Markdown

Hi @talkingmoose and others...

Thanks for sharing this. I tested the Board ID mapping idea against Jamf Pro inventory.

Jamf Pro does not appear to expose Board ID as a native computer inventory field. The standard hardware inventory gives Model and Model Identifier, but not the lower-level Board ID / hardware compatibility identifier. So for a fleet-wide Jamf workflow, an Extension Attribute seems to be the practical route.

On Intel Macs, the classic EFI board-id can be collected with ioreg. On Apple Silicon, board-id itself was not useful in my testing, but the first value from the device tree compatible property worked well.

For example, one Apple Silicon Mac returned:

Here is an example of the Jamf Pro Extension Attribute...

#!/bin/bash

hardware_id=""

arch="$(/usr/bin/arch)"

if [[ "$arch" == "i386" ]]; then
  hardware_id="$(/usr/sbin/ioreg -l 2>/dev/null | /usr/bin/awk -F'"' '/board-id/{print $4; exit}')"
else
  hardware_id="$(/usr/sbin/ioreg -l -p IODeviceTree 2>/dev/null | /usr/bin/awk -F'"' '/"compatible" = </ {print $4; exit}')"
fi

[[ -n "$hardware_id" ]] || hardware_id="NOT_FOUND"

echo "<result>${hardware_id}</result>"

J414cAP

from:

"compatible" = <"J414cAP","Mac14,5","AppleARM">

That gives a workable Jamf mapping path:

Apple installer metadata hardware IDs
→ Jamf Extension Attribute hardware compatibility ID
→ Jamf native Model Identifier
→ Jamf Smart Group / Advanced Search regex

So yes, your approach helps, but for Jamf Pro the missing piece is collecting that hardware compatibility ID with an Extension Attribute first.

To make this easier to repeat, I built a small script that authenticates to Jamf Pro with an API Client stored in the macOS Keychain, reads computer inventory, and exports a CSV mapping of the Extension Attribute hardware compatibility ID to Jamf’s native Model Identifier. It can also list available Extension Attribute names and export Model Identifier counts, which makes it useful for validating compatibility regexes before using them in Jamf Smart Groups or Advanced Searches.

@uurazzle

Copy link
Copy Markdown

iPadOS 27-compatible iPads
https://www.apple.com/os/ipados/

  1. Exact regex

^(iPad8,9|iPad8,10|iPad8,11|iPad8,12|iPad12,1|iPad12,2|iPad13,1|iPad13,2|iPad13,4|iPad13,5|iPad13,6|iPad13,7|iPad13,8|iPad13,9|iPad13,10|iPad13,11|iPad13,16|iPad13,17|iPad13,18|iPad13,19|iPad14,1|iPad14,2|iPad14,3|iPad14,4|iPad14,5|iPad14,6|iPad14,8|iPad14,9|iPad14,10|iPad14,11|iPad15,3|iPad15,4|iPad15,5|iPad15,6|iPad15,7|iPad15,8|iPad16,1|iPad16,2|iPad16,3|iPad16,4|iPad16,5|iPad16,6)$

Current or higher regex: Not available. iPad model identifier generation is not stable enough to safely infer future compatibility.

Supported model identifiers:

iPad8,9
iPad8,10
iPad8,11
iPad8,12
iPad12,1
iPad12,2
iPad13,1
iPad13,2
iPad13,4
iPad13,5
iPad13,6
iPad13,7
iPad13,8
iPad13,9
iPad13,10
iPad13,11
iPad13,16
iPad13,17
iPad13,18
iPad13,19
iPad14,1
iPad14,2
iPad14,3
iPad14,4
iPad14,5
iPad14,6
iPad14,8
iPad14,9
iPad14,10
iPad14,11
iPad15,3
iPad15,4
iPad15,5
iPad15,6
iPad15,7
iPad15,8
iPad16,1
iPad16,2
iPad16,3
iPad16,4
iPad16,5
iPad16,6

@uurazzle

Copy link
Copy Markdown

tvOS 27-compatible Apple TV models

  1. Exact regex

^(AppleTV11,1|AppleTV14,1)$

Current or higher regex: Not available. tvOS values should be kept under review against Apple's published compatibility details.

Supported model identifiers:

AppleTV11,1
AppleTV14,1

@cvangorp

Copy link
Copy Markdown

iPadOS 27-compatible iPads https://www.apple.com/os/ipados/

1. Exact regex

^(iPad8,9|iPad8,10|iPad8,11|iPad8,12|iPad12,1|iPad12,2|iPad13,1|iPad13,2|iPad13,4|iPad13,5|iPad13,6|iPad13,7|iPad13,8|iPad13,9|iPad13,10|iPad13,11|iPad13,16|iPad13,17|iPad13,18|iPad13,19|iPad14,1|iPad14,2|iPad14,3|iPad14,4|iPad14,5|iPad14,6|iPad14,8|iPad14,9|iPad14,10|iPad14,11|iPad15,3|iPad15,4|iPad15,5|iPad15,6|iPad15,7|iPad15,8|iPad16,1|iPad16,2|iPad16,3|iPad16,4|iPad16,5|iPad16,6)$

Current or higher regex: Not available. iPad model identifier generation is not stable enough to safely infer future compatibility.

Supported model identifiers:

iPad8,9 iPad8,10 iPad8,11 iPad8,12 iPad12,1 iPad12,2 iPad13,1 iPad13,2 iPad13,4 iPad13,5 iPad13,6 iPad13,7 iPad13,8 iPad13,9 iPad13,10 iPad13,11 iPad13,16 iPad13,17 iPad13,18 iPad13,19 iPad14,1 iPad14,2 iPad14,3 iPad14,4 iPad14,5 iPad14,6 iPad14,8 iPad14,9 iPad14,10 iPad14,11 iPad15,3 iPad15,4 iPad15,5 iPad15,6 iPad15,7 iPad15,8 iPad16,1 iPad16,2 iPad16,3 iPad16,4 iPad16,5 iPad16,6

@uurazzle Great! Thank you.

AI gave me (I believe I used Gemini)
^iPad(8,(9|1[0-2])|[1-9]\d+,\d+)$

@dstranathan

Copy link
Copy Markdown

Heres an iPhone regex I came up with

Exact (matches only currently known supported generations):

^iPhone(1[2-9]|20),\d+$

Current-or-higher (future-proof, matches 12 and above):

^iPhone([2-9][0-9]|1[2-9]),\d+$

@uurazzle

uurazzle commented Jun 17, 2026

Copy link
Copy Markdown

I created a Bash script to help automate generating Apple OS 27-compatible model identifier regexes for Jamf Pro workflows.
The script can generate regex output for macOS 27, iOS 27, iPadOS 27, and tvOS 27, including Jamf-friendly copy/paste output, documentation-style reports, supported model identifier lists, and quick model testing.

It is meant to make it easier to build smart groups, extension attributes, or documentation around OS compatibility without manually maintaining long regex strings by hand.

Example session output:

OS 27 Compatible Model Regex Generator 1.0.5

Choose platform:
  1) all
  2) macos
  3) ios
  4) ipados
  5) tvos
Platform [1]: 1

Choose output format:
  1) plain  - platform label plus regex
  2) jamf   - Jamf Pro criterion copy/paste format
  3) markdown-report - documentation-friendly report
  4) list   - supported model identifiers only
Format [2]: 3

For example...

macOS 27 Golden Gate-compatible Macs
https://www.apple.com/os/macos/

1. Exact match regex

^(Mac(BookPro1[78]|1[3-7]|BookAir10|mini9),\d+|iMac21,\d+)$

Use this when you only want to match the Mac model identifiers listed below.

2. Current and newer Mac regex

^(Mac(BookPro1[78]|1[3-9]|BookAir10|mini9),\d+|iMac21,\d+)$

Use this when you want the regex to also match newer Mac model identifiers, such as future Mac18 or Mac19 models, before this script is updated.

Supported model identifiers:

Mac13,1
Mac13,2
Mac14,2
Mac14,3
Mac14,5
Mac14,6
Mac14,7
Mac14,8
Mac14,9
Mac14,10
Mac14,12
Mac14,13
Mac14,14
Mac14,15
Mac15,3
Mac15,4
Mac15,5
Mac15,6
Mac15,7
Mac15,8
Mac15,9
Mac15,10
Mac15,11
Mac15,12
Mac15,13
Mac15,14
Mac16,1
Mac16,2
Mac16,3
Mac16,5
Mac16,6
Mac16,7
Mac16,8
Mac16,9
Mac16,10
Mac16,11
Mac16,12
Mac16,13
Mac17,1
Mac17,2
Mac17,3
Mac17,4
Mac17,5
Mac17,6
Mac17,7
Mac17,8
Mac17,9
MacBookAir10,1
MacBookPro17,1
MacBookPro18,1
MacBookPro18,2
MacBookPro18,3
MacBookPro18,4
Macmini9,1
iMac21,1
iMac21,2

---------------------------------------------------

iOS 27-compatible iPhones
https://www.apple.com/os/ios/

1. Exact match regex

^(iPhone12,1|iPhone12,3|iPhone12,5|iPhone12,8|iPhone13,1|iPhone13,2|iPhone13,3|iPhone13,4|iPhone14,2|iPhone14,3|iPhone14,4|iPhone14,5|iPhone14,6|iPhone14,7|iPhone14,8|iPhone15,2|iPhone15,3|iPhone15,4|iPhone15,5|iPhone16,1|iPhone16,2|iPhone17,1|iPhone17,2|iPhone17,3|iPhone17,4|iPhone17,5|iPhone18,1|iPhone18,2|iPhone18,3|iPhone18,4|iPhone18,5)$

Use this to match only the iPhone model identifiers listed below.

2. Short current and newer iPhone regex

^iPhone(12,(1|3|5|8)|1[3-9],\d+)$

Use this when you want a shorter regex that also matches newer iPhone model identifiers before this script is updated. This is broader than the exact match regex.

Supported model identifiers:

iPhone12,1
iPhone12,3
iPhone12,5
iPhone12,8
iPhone13,1
iPhone13,2
iPhone13,3
iPhone13,4
iPhone14,2
iPhone14,3
iPhone14,4
iPhone14,5
iPhone14,6
iPhone14,7
iPhone14,8
iPhone15,2
iPhone15,3
iPhone15,4
iPhone15,5
iPhone16,1
iPhone16,2
iPhone17,1
iPhone17,2
iPhone17,3
iPhone17,4
iPhone17,5
iPhone18,1
iPhone18,2
iPhone18,3
iPhone18,4
iPhone18,5

---------------------------------------------------

iPadOS 27-compatible iPads
https://www.apple.com/os/ipados/

1. Exact match regex

^(iPad8,9|iPad8,10|iPad8,11|iPad8,12|iPad12,1|iPad12,2|iPad13,1|iPad13,2|iPad13,4|iPad13,5|iPad13,6|iPad13,7|iPad13,8|iPad13,9|iPad13,10|iPad13,11|iPad13,16|iPad13,17|iPad13,18|iPad13,19|iPad14,1|iPad14,2|iPad14,3|iPad14,4|iPad14,5|iPad14,6|iPad14,8|iPad14,9|iPad14,10|iPad14,11|iPad15,3|iPad15,4|iPad15,5|iPad15,6|iPad15,7|iPad15,8|iPad16,1|iPad16,2|iPad16,3|iPad16,4|iPad16,5|iPad16,6)$

Use this to match only the iPad model identifiers listed below.

2. Short current and newer iPad regex

^iPad(8,(9|1[0-2])|[1-9]\d+,\d+)$

Use this when you want a shorter regex that also matches newer iPad model identifiers before this script is updated. This is broader than the exact match regex.

Supported model identifiers:

iPad8,9
iPad8,10
iPad8,11
iPad8,12
iPad12,1
iPad12,2
iPad13,1
iPad13,2
iPad13,4
iPad13,5
iPad13,6
iPad13,7
iPad13,8
iPad13,9
iPad13,10
iPad13,11
iPad13,16
iPad13,17
iPad13,18
iPad13,19
iPad14,1
iPad14,2
iPad14,3
iPad14,4
iPad14,5
iPad14,6
iPad14,8
iPad14,9
iPad14,10
iPad14,11
iPad15,3
iPad15,4
iPad15,5
iPad15,6
iPad15,7
iPad15,8
iPad16,1
iPad16,2
iPad16,3
iPad16,4
iPad16,5
iPad16,6

---------------------------------------------------

tvOS 27-compatible Apple TV models

1. Exact match regex

^(AppleTV11,1|AppleTV14,1)$

Use this to match only the Apple TV model identifiers listed below.

Current and newer Apple TV regex: Not available. Future Apple TV model numbers should be checked against Apple's published compatibility details before adding them.

Supported model identifiers:

AppleTV11,1
AppleTV14,1

If there is interest, I can clean it up and share it through a GitHub repository.

@HowardGMac

HowardGMac commented Jul 22, 2026

Copy link
Copy Markdown

Here is my reverse (not compatible with Golden Gate) regex for macOS.
Appears to satisfy everything on the unsupported model list.
^(MacPro[1-6],[0-9]|iMac([1-9]|1[0-9]|20),[0-9]|iMacPro1,1|Macmini[1-8],[0-9]|MacBookAir[1-9],[0-9]|MacBookPro([1-9]|1[0-6]),[0-9]|MacBook([1-9]|10),[0-9])$

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment