Describe the bug
On a clean macOS CI runner, tauri ios build --export-method app-store-connect with IOS_CERTIFICATE, IOS_CERTIFICATE_PASSWORD and IOS_MOBILE_PROVISION fails at signing: xcodebuild cannot resolve the imported identity. It works on dev machines whenever the same certificate also sits in the login keychain, which hides the bug.
Correction (2026-07-28): this report originally claimed Keychain::with_certificate never runs security list-keychains -s. That's wrong. with_certificate_file captures the user search list before creating the keychain (keychain.rs L73–L79) and re-sets it with the new keychain appended after import (L160–L181), and the call is status-checked, so a failure would abort the build before xcodebuild runs. Same code at the 2.11.4 tag. The symptom stands; the root cause is open.
Note for anyone investigating: Keychain's Drop deletes the ephemeral keychain when the CLI exits, so post-mortem diagnostics in a later workflow step show a clean search list. You have to inspect while the build is alive.
Reproduction
On a clean macOS runner (no cert in the login keychain), set IOS_CERTIFICATE, IOS_CERTIFICATE_PASSWORD and IOS_MOBILE_PROVISION and run tauri ios build --export-method app-store-connect.
Expected behavior
The imported identity is visible to xcodebuild and manual signing succeeds.
Platform and versions
tauri-cli 2.11.4 (same code on dev at time of filing), macos-latest runners, Xcode 26.
Describe the bug
On a clean macOS CI runner,
tauri ios build --export-method app-store-connectwithIOS_CERTIFICATE,IOS_CERTIFICATE_PASSWORDandIOS_MOBILE_PROVISIONfails at signing: xcodebuild cannot resolve the imported identity. It works on dev machines whenever the same certificate also sits in the login keychain, which hides the bug.Correction (2026-07-28): this report originally claimed
Keychain::with_certificatenever runssecurity list-keychains -s. That's wrong.with_certificate_filecaptures the user search list before creating the keychain (keychain.rs L73–L79) and re-sets it with the new keychain appended after import (L160–L181), and the call is status-checked, so a failure would abort the build before xcodebuild runs. Same code at the 2.11.4 tag. The symptom stands; the root cause is open.Note for anyone investigating:
Keychain'sDropdeletes the ephemeral keychain when the CLI exits, so post-mortem diagnostics in a later workflow step show a clean search list. You have to inspect while the build is alive.Reproduction
On a clean macOS runner (no cert in the login keychain), set IOS_CERTIFICATE, IOS_CERTIFICATE_PASSWORD and IOS_MOBILE_PROVISION and run
tauri ios build --export-method app-store-connect.Expected behavior
The imported identity is visible to xcodebuild and manual signing succeeds.
Platform and versions
tauri-cli 2.11.4 (same code on dev at time of filing), macos-latest runners, Xcode 26.