Verify historical Keychain access groups of an existing iOS development installation

I am preparing a data-preserving, same-bundle-identifier update of my own development-signed iOS/iPadOS app (Target Keeper). Existing installations contain records that must be preserved. No update has been attempted, and no Keychain loss or entitlement incompatibility has been demonstrated.

Environment: iOS/iPadOS 27.0.1 and Xcode 27.1. The original signed packages/archives for the installed older builds are no longer available. The proposed update has a valid Development signature and a profile covering the test devices. Its signed application identifier, Team identifier and Keychain groups have been inspected locally.

The current and a retained later source snapshot use a bundle-derived service and a generic-password query without an explicit kSecAttrAccessGroup, with kSecAttrSynchronizable false and WhenUnlockedThisDeviceOnly accessibility. However, those source snapshots are not authenticated as the source used to produce the older installed binaries. I am therefore not assuming they prove the older effective groups or App ID prefix.

I have read Sharing access to keychain items among a collection of apps, TN2415, QA1726, TN2311, and SecItem: Pitfalls and Best Practices:
https://developer.apple.com/documentation/security/sharing-access-to-keychain-items-among-a-collection-of-apps
https://developer.apple.com/library/archive/technotes/tn2415/_index.html
https://developer.apple.com/library/archive/qa/qa1726/_index.html
https://developer.apple.com/library/archive/technotes/tn2311/_index.html
https://developer.apple.com/forums/thread/724013

These explain the access-group rules, first-group default and service/query distinctions. My remaining question is how to obtain authoritative evidence for the already-installed older app when its original signed package is missing.

  1. Is there a supported Xcode, Device Hub, devicectl or other Apple workflow to read/authenticate the effective application-identifier, Team and keychain-access-groups (including relevant App Groups) of an existing development installation without replacing it or extracting any Keychain values?
  2. If a local provisioning/install receipt can help, what establishes that it belongs to the installed binary rather than merely showing what a candidate profile permits?
  3. If no supported read-only method exists, what minimal controlled diagnostic does Apple recommend to qualify same-app Keychain continuity while preserving the original installation? Please distinguish methods requiring app launch/debugger attachment from genuinely read-only device-management inspection.

Available app metadata and an exported app-data container have not supplied a signed entitlement list in the checks performed. Matching the candidate Team and bundle ID alone is not being treated as proof. A cross-bundle shipping migration is a separate problem and is not being attempted here.

I am not asking to bypass code-signing or Keychain access controls, broaden access groups, uninstall the old app, or dump credentials. No passwords, certificates/private keys, device identifiers, backup files or application records are attached.

So, you have a set of test devices with a development build of your app installed but you don’t have:

  • Trustworthy source code for that build,
  • An .ipa for that build,
  • Or an Xcode archive for that build.

Is that right?

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

Yes, that is correct, with one distinction: we retain current and later source snapshots, but cannot authenticate them as the exact source used for those older installed development builds. We have not located the original signed IPA packages or Xcode archives for those installations. The original apps remain installed and have not been updated or uninstalled.
We do have current development source and a separately built, signed candidate whose entitlements and provisioning profile we can inspect. We also retain exported app-data containers and backup evidence, but are not treating those as proof of the older binaries’ signed entitlements. Separate disposable QA installations do not establish continuity for the originals.
Given that situation, is there an Apple-supported way to establish the installed originals’ effective application-identifier/App ID prefix and Keychain access groups, including default-group ordering, without replacing the apps or extracting Keychain values? If no supported read-only method exists, what minimal controlled diagnostic would you recommend to qualify a same-bundle-identifier update while preserving the original installation and its Keychain access?

Well, that’s a very odd situation you’ve found yourself in.

Sadly, I don’t see way to get the info you need. It’s easy to get the app’s provisioning profile off the device but, as you’re aware, that’s just tells what what keychain access groups it’s allowed to claim access to, not the ones that it did claim access to.

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