Skip to main content
xcrun devicectl device install app exits with code 1 and prints the failure in two parts. The first line is devicectl’s wrapper, CoreDeviceError 3002. The line under the dashes says why:
Xcode shows the same failure as Failed to install the app on the device. with Domain: com.apple.dt.CoreDeviceError Code: 3002. mobster phone install and the MCP tool install_app install a build on an iPhone with this command. mobster phone install shows devicectl’s lines while it works, then reports the failure and its fix in one sentence, such as mobster phone: The build isn't signed for this iPhone. Sign it with a development profile that includes this iPhone (Xcode › Signing & Capabilities), build it for a device, then try again.

Why it happens

Error 3002 is devicectl’s wrapper for a failed install. The reason under it usually comes from the iPhone, which checks the app’s signature, its profile and its entitlements before it installs it. The error can also come from the Mac, such as when devicectl can’t read a folder.

Fix

  1. Find the reason below the dashes or in the first line of the error. Look it up in Reasons and apply the fix.
  2. If the first line is ERROR: The specified device was not found. (CoreDeviceError 1000) instead, the --device value matched no phone. Copy the Identifier from xcrun devicectl list devices.
  3. To see what a build is signed for, read its profile and its entitlements:
    The first command prints the UDIDs under ProvisionedDevices, if the profile has that list. Look for your iPhone’s UDID there. The second prints the entitlements the app was signed with, to compare with the profile’s Entitlements.
  4. Install again with the same command.
For scripts, add --json-output <file>. devicectl writes the error’s code, domain and userInfo there. Its help calls that file the only supported interface for programs.

Reasons

Check it worked

devicectl exits with 0, and the app is on the phone:
Output
mobster phone install prints Installed com.example.yourapp on <phone> in <seconds> s. Checked 5 Nov 2026 against Mobster 0.4.0. The commands were checked with devicectl 518.27 (Xcode 26.4). Back to Troubleshooting.