Summary
When building WDA against an iOS 26.4.2 real device on Xcode 26, even when
xcodebuild is invoked with a correct command-line override
CODE_SIGN_IDENTITY=Apple Development, xcodebuild errors out with:
error: No signing certificate "iOS Development" found: No "iOS Development" signing certificate matching team ID "<TEAM_ID>" with a private key was found. (in target 'WebDriverAgentLib' from project 'WebDriverAgent')
The WebDriverAgentLib target in WebDriverAgent.xcodeproj still references
the long-deprecated "iOS Development" identity name at the target level
(not as "$(CODE_SIGN_IDENTITY)" or "Apple Development"). Apple renamed
this signing identity to "Apple Development" years ago and the keychain
on a fresh Mac with a current Apple Developer enrollment only has the
"Apple Development" form. Command-line CODE_SIGN_IDENTITY=Apple Development
correctly overrides the project's other targets, but WebDriverAgentLib's
target-level setting takes precedence and fails the build.
Related: appium/appium-remote-debugger#497 (separate
upstream gap, iOS 26 inspector protocol).
Environment
| Component |
Version |
appium-webdriveragent (from xcuitest@11.7.1's nested deps) |
13.x |
| Xcode |
26 (SDK iphoneos26.5) |
| macOS host |
Apple Silicon, current 2026-05 release |
| Device |
iPhone14,7 |
| Device iOS |
26.4.2 (build 23E261) |
| xcodebuild driver |
appium-xcuitest-driver 11.7.1 |
Keychain identity confirmed:
$ security find-identity -v -p codesigning
1) <hash> "Apple Development: <user>@example.com (<TEAM_ID>)"
No "iOS Development" identity exists, and Apple has not issued new "iOS
Development" certificates for years.
Steps to Reproduce
- Fresh Mac with Xcode 26 and a valid current "Apple Development" signing
identity in the keychain.
- Run xcodebuild against
appium-webdriveragent/WebDriverAgent.xcodeproj
on an iOS 26.4.2 real device, supplying CODE_SIGN_IDENTITY=Apple Development
on the command line (this is what appium-xcuitest-driver 11.7.1 does
when given appium:xcodeSigningId: 'Apple Development'):
xcodebuild build-for-testing test-without-building \
-project .../appium-webdriveragent/WebDriverAgent.xcodeproj \
-scheme WebDriverAgentRunner \
-derivedDataPath ... \
-destination id=<UDID> \
IPHONEOS_DEPLOYMENT_TARGET=26.0 \
DEVELOPMENT_TEAM=<TEAM_ID> \
"CODE_SIGN_IDENTITY=Apple Development" \
-allowProvisioningUpdates
(-allowProvisioningUpdates is added here in case the
xcuitest-side gap on this flag is separately fixed; the underlying
WebDriverAgentLib-target issue still surfaces independent of that.)
Expected Behavior
The command-line CODE_SIGN_IDENTITY=Apple Development override applies to
all targets (Lib + Runner). Build proceeds without the "iOS Development"
identity error.
Actual Behavior
WebDriverAgentLib target's project-level signing identity setting is
iOS Development, which the command-line override does not propagate to.
xcodebuild then looks for an "iOS Development" certificate that does not
exist and fails:
[Xcode] /.../WebDriverAgent.xcodeproj: error: No signing certificate
"iOS Development" found: No "iOS Development" signing certificate
matching team ID "<TEAM_ID>" with a private key was found.
(in target 'WebDriverAgentLib' from project 'WebDriverAgent')
[Xcode] ** TEST BUILD FAILED **
[Xcode] xcodebuild exited with code '65'
This error is independent of the WebDriverAgentRunner target's signing setup,
which xcuitest's xcodeOrgId + xcodeSigningId capabilities (correctly)
override.
Proposed Fix
Update WebDriverAgent.xcodeproj/project.pbxproj so that the
WebDriverAgentLib target's signing identity uses the variable form so
it inherits from the command-line override:
CODE_SIGN_IDENTITY = "$(CODE_SIGN_IDENTITY)";
(or simply update it to "Apple Development" if the variable form turns out
problematic; both are forward-compatible with Apple's current and future
identity naming).
This single change unblocks all command-line-driven WDA builds on machines
that only have the modern "Apple Development" identity (which is now every
new Mac with an Apple Developer enrollment).
Workaround in the Meantime
Open WebDriverAgent.xcodeproj in Xcode (e.g. via
appium driver run xcuitest open-wda), select the WebDriverAgentLib
target → Signing & Capabilities → manually set signing identity to "Apple
Development" or enable Automatic signing. Commit / preserve the change
locally so subsequent npm install / driver-update flows don't overwrite
it.
Note: this workaround is fragile — any reinstall of appium-xcuitest-driver
overwrites the local change because the nested appium-webdriveragent is
shipped as a transitive dep with the original xcodeproj.
Related
Summary
When building WDA against an iOS 26.4.2 real device on Xcode 26, even when
xcodebuild is invoked with a correct command-line override
CODE_SIGN_IDENTITY=Apple Development, xcodebuild errors out with:The
WebDriverAgentLibtarget inWebDriverAgent.xcodeprojstill referencesthe long-deprecated "iOS Development" identity name at the target level
(not as
"$(CODE_SIGN_IDENTITY)"or"Apple Development"). Apple renamedthis signing identity to "Apple Development" years ago and the keychain
on a fresh Mac with a current Apple Developer enrollment only has the
"Apple Development" form. Command-line
CODE_SIGN_IDENTITY=Apple Developmentcorrectly overrides the project's other targets, but
WebDriverAgentLib'starget-level setting takes precedence and fails the build.
Related: appium/appium-remote-debugger#497 (separate
upstream gap, iOS 26 inspector protocol).
Environment
appium-webdriveragent(from xcuitest@11.7.1's nested deps)iphoneos26.5)appium-xcuitest-driver11.7.1Keychain identity confirmed:
No "iOS Development" identity exists, and Apple has not issued new "iOS
Development" certificates for years.
Steps to Reproduce
identity in the keychain.
appium-webdriveragent/WebDriverAgent.xcodeprojon an iOS 26.4.2 real device, supplying
CODE_SIGN_IDENTITY=Apple Developmenton the command line (this is what
appium-xcuitest-driver11.7.1 doeswhen given
appium:xcodeSigningId: 'Apple Development'):(
-allowProvisioningUpdatesis added here in case thexcuitest-side gap on this flag is separately fixed; the underlying
WebDriverAgentLib-target issue still surfaces independent of that.)
Expected Behavior
The command-line
CODE_SIGN_IDENTITY=Apple Developmentoverride applies toall targets (Lib + Runner). Build proceeds without the "iOS Development"
identity error.
Actual Behavior
WebDriverAgentLibtarget's project-level signing identity setting isiOS Development, which the command-line override does not propagate to.xcodebuild then looks for an "iOS Development" certificate that does not
exist and fails:
This error is independent of the WebDriverAgentRunner target's signing setup,
which
xcuitest'sxcodeOrgId+xcodeSigningIdcapabilities (correctly)override.
Proposed Fix
Update
WebDriverAgent.xcodeproj/project.pbxprojso that theWebDriverAgentLibtarget's signing identity uses the variable form soit inherits from the command-line override:
(or simply update it to
"Apple Development"if the variable form turns outproblematic; both are forward-compatible with Apple's current and future
identity naming).
This single change unblocks all command-line-driven WDA builds on machines
that only have the modern "Apple Development" identity (which is now every
new Mac with an Apple Developer enrollment).
Workaround in the Meantime
Open
WebDriverAgent.xcodeprojin Xcode (e.g. viaappium driver run xcuitest open-wda), select theWebDriverAgentLibtarget → Signing & Capabilities → manually set signing identity to "Apple
Development" or enable Automatic signing. Commit / preserve the change
locally so subsequent
npm install/ driver-update flows don't overwriteit.
Note: this workaround is fragile — any reinstall of
appium-xcuitest-driveroverwrites the local change because the nested
appium-webdriveragentisshipped as a transitive dep with the original xcodeproj.
Related
appium/appium-xcuitest-driverissue:xcodebuild for WDA on Xcode 26 fails: -allowProvisioningUpdates not passed by default, auto-provisioning gate refuses to generate WebDriverAgentRunner profile(filed separately). Together these two fix the WDA real-device build path
on Xcode 26 / iOS 26.
Inspector.enable / Runtime.enable silently dropped by iOS 26.4.2 over com.apple.webinspector.shim.remote — Target.targetCreated never emitted, selectPage hangs appium-remote-debugger#497