Spent a few hours last week debugging a CI failure that had no right to be as subtle as it was. The build archived fine, but exportArchive kept dying with: error: exportArchive: requires a provisioning profile with the App Groups feature. Enter fullscreen mode Exit fullscreen mode The frustrating part: the AppStore provisioning profile was correct. I had just renewed it, decrypted it on the runner, and confirmed the App Group entitlement was in there. The keychain had it. So why was xcodebuild not finding it? The Trap The Fastlane gym action accepts export_options: in two forms: A path to an existing .plist file A Hash of options it will write to a temp plist I was passing a Hash — and inside that Hash I had a plist: key pointing to my own plist file, thinking gym would merge or defer to it. It does not. When you pass a Hash, gym writes that Hash to a temp plist and hands it directly to xcodebuild.…