Building macOS apps with Xcode 26 on macOS 26 VM

I'm trying to setup a macOS 26 build environment in a VM (using UTM and the virtualization framework Apple provides).

I have Xcode 26 installed and have logged into my Apple ID and verified that the team and other configuration looks fine in Xcode settings.

When trying to build the macOS app, I see errors saying the VM's device ID has not been registered. I have confirmed that the device ID is registered both in the Provisioning portal AND the downloaded .provisionprofiles (in Library > Developer > Xcode > UserData).

This problem appears on multiple targets (e.g. the main app and extensions).

If I try to manually provision the app, using the Provisioning portal, I can build the product, but it will not launch because of Gatekeeper issues.

Finally, signing to run locally doesn't work either. As the app launches, frameworks refuse to load because Team IDs don't match. With ad hoc provisioning, there are no Team IDs.

I've come to the conclusion that this just isn't possible.

Which is a shame because I need to support products with a build environment on macOS 15 and cannot move over to macOS 26 yet. I suspect many developers outside of Apple are in a similar position.

Answered by DTS Engineer in 843094022

There’s a bunch of backstory here. Let me recap…

In the beginning, Apple silicon VMs did not support Apple Accounts (or Apple IDs as they were known then). We fixed that in macOS 15, but only for macOS 15 guests running in VMs created on macOS 15. See AppleID Login failing in virtualized OS. Notably, this involved a significant change to the underlying security infrastructure in the guest.

Unfortunately this change revealed an Xcode specific problem, where you weren’t able to sign in to your developer account with Xcode. We fixed that with a Developer website change back in Feb 2025. See Xcode 16.1 can't load the Account information in VM.

However, that’s revealed another problem: The new VMs used a new provisioning UDID format, and it wasn’t possible to create a provisioning profile that included such UDIDs. See "Provisioning profile does not allow this device" on Sequoia 15.2 VM. We fixed that problem with a Developer website change in Apr 2025.

However, that revealed another problem, where the guest wasn’t accepting what would otherwise be considered a valid profile (r. 149209127).

That problem will need to be fixed in the OS itself. I just checked on the bug and it’s definitely with the right people, but that’s all I can say right now.

So, where does this leave you. The following things work:

  • You can run Xcode in a VM and use it to build and run programs that don’t require a provisioning profile.

  • You can create a VM on macOS 14, which will have a UDID in the original format, and use that to test programs that do require a provisioning profile.

However, you can’t combine these two things. The same feature that allows you to add your Apple Account to Xcode prevents you from creating a provisioning profile for the guest.

I’m hoping we fix this sooner rather than later but, again, I can’t offer any concrete predictions as to when that’ll be.

Share and Enjoy

Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"

If you build a minimal app using your development team and an automatically generated provisioning profile, it works fine.

As soon as I add the iCloud capability, I start to see the "Device XXXX isn't registered in your developer account" error.

The failure is also characterized by an "Update Signing" project build task that never completes. I see the UUID and name of the device in the JSON payload of that task.

The JSON payload is generated by IDEProvisioningRepair(ProjectName) from an endpoint on developerservices2.apple.com/services/v1/certificate

After some rebooting of the VM and restarting Xcode, I think the device provisioning was recognized. At least I was able to build and sign a sample app. Running it led to:

The app is just the standard macOS SwiftUI template (with "Hello world" in the middle of a window). I added the iCloud key/value store capability to the template.

It's hard to tell what runningboardd is doing in the Console (it spews A LOT of information). The best indicator is from Apparency https://mothersruin.com/software/Apparency/:

The signing signature (from what looks like a valid certificate) is not accepted by Gatekeeper:

I feel like we're really close here...

After some rebooting of the VM and restarting Xcode, I think the device provisioning was recognized. At least I was able to build and sign a sample app.

Could you clarify the steps to get Xcode 26 signing to start working ?

My signing certificate is indeed fine:

I'm wondering if having multiple WWDR and Developer ID certificates could be a problem.

Accepted Answer

There’s a bunch of backstory here. Let me recap…

In the beginning, Apple silicon VMs did not support Apple Accounts (or Apple IDs as they were known then). We fixed that in macOS 15, but only for macOS 15 guests running in VMs created on macOS 15. See AppleID Login failing in virtualized OS. Notably, this involved a significant change to the underlying security infrastructure in the guest.

Unfortunately this change revealed an Xcode specific problem, where you weren’t able to sign in to your developer account with Xcode. We fixed that with a Developer website change back in Feb 2025. See Xcode 16.1 can't load the Account information in VM.

However, that’s revealed another problem: The new VMs used a new provisioning UDID format, and it wasn’t possible to create a provisioning profile that included such UDIDs. See "Provisioning profile does not allow this device" on Sequoia 15.2 VM. We fixed that problem with a Developer website change in Apr 2025.

However, that revealed another problem, where the guest wasn’t accepting what would otherwise be considered a valid profile (r. 149209127).

That problem will need to be fixed in the OS itself. I just checked on the bug and it’s definitely with the right people, but that’s all I can say right now.

So, where does this leave you. The following things work:

  • You can run Xcode in a VM and use it to build and run programs that don’t require a provisioning profile.

  • You can create a VM on macOS 14, which will have a UDID in the original format, and use that to test programs that do require a provisioning profile.

However, you can’t combine these two things. The same feature that allows you to add your Apple Account to Xcode prevents you from creating a provisioning profile for the guest.

I’m hoping we fix this sooner rather than later but, again, I can’t offer any concrete predictions as to when that’ll be.

Share and Enjoy

Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"

It’s better to reply as a reply, rather than in the comments; see Quinn’s Top Ten DevForums Tips for this and other titbits.

One question I have is if it would be possible create a macOS 14 VM to get the acceptable UDID format and then upgrade the VM to macOS 26?

That’s not quite what I was angling at. Lemme explain in more detail.

When you create a VM, the format of the guest’s UDID is controlled by the host. So, if you create a guest on macOS 14, you get the old-style UDID, and if you create a guest on macOS 15 then you get the new-style UDID. This is true regardless of the macOS version running in that guest [1].

Consider this sequence:

  1. Create a macOS 15 guest on macOS 14 host. This gets the old-style UDID.

  2. Copy that to a macOS 15 host [2].

  3. On that host, run Xcode and build an app with a restricted entitlement, making sure the guest’s UDID is listed in its profile.

  4. Copy that app to the macOS 15 guest.

  5. And run it.

I did this and it works. However, this doesn’t work.

  1. Create a macOS 15 guest on macOS 15 host. This gets the new-style UDID.

  2. Repeats steps 3 through 5 above.

This doesn’t work because of the above-mentioned bug (r. 149209127).

Now, I’ve not done the equivalent with macOS 26 beta, so I can’t be 100% sure it’ll work the same way there. However, I suspect that it will.

Regardless, this doesn’t get you where you really want to be, namely, to install Xcode on the guest and test your app by choosing Product > Run. That’s because the guest has the old-style UDID, and the security improvements that allow you to sign in to your Apple Account on the guest are the very same thing that generate the new-style UDID and trip the above-mentioned bug.

Share and Enjoy

Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"

[1] Assuming its macOS 15 or later.

[2] Well, in my case I upgraded my main Mac from macOS 14 to macOS 15, but it’s the same diff.

I am also looking to do testing and other things like that on a vm. I am confused why a MacOS guest vm running under Intel could sign into icloud completely and a MacOS guest vm running under Apple Silicon can't. I know that there was a change with the implementation of the virtualization framework but not understanding why some parts were or still are locked out.

That being said the current status of the Apple ID in a MacOS guest under Apple Silicon is almost complete for my use cases. The only things missing are the ability to sign into the app store (many MacOS apps are only available there), and for nested virtualization.

If those two were fixed all of my uses would be set. I hope that these features are coming soon.

Building macOS apps with Xcode 26 on macOS 26 VM
 
 
Q