Skip to content
Latchkey

simctl "Unable to boot device" simulator failure in CI

CoreSimulator could not bring the simulator to a usable state. The device may already be in a half-booted state, the CoreSimulator service may be wedged, or the runtime is missing, so tests cannot run.

What this error means

A test job fails with "Unable to boot device in current state: Booted", "An error was encountered processing the command ... failed to boot", or "Simulator device failed to boot".

simctl
Unable to boot device in current state: Booted
The operation couldn't be completed.
(com.apple.CoreSimulator.SimError error 405.)

Common causes

A wedged CoreSimulator state or stale device

A previous run left the device in a bad state, or the CoreSimulator service is stuck, so a new boot cannot complete.

Resource pressure or a missing runtime on the runner

Low memory or a runtime that is not installed prevents the simulator from booting cleanly.

How to fix it

Shut down, erase, and boot a fresh device

  1. Shut down all simulators and erase stale state.
  2. Create or select a known device for an installed runtime.
  3. Boot it explicitly and wait until it is ready before running tests.
Terminal
xcrun simctl shutdown all
xcrun simctl erase all
xcrun simctl boot "iPhone 16"
xcrun simctl bootstatus "iPhone 16" -b

Restart CoreSimulator if it is wedged

Kill the CoreSimulator service so the next boot starts from a clean daemon.

Terminal
sudo killall -9 com.apple.CoreSimulator.CoreSimulatorService || true

How to prevent it

  • Erase simulators at job start so each run boots from a clean state.
  • Pin to a device and runtime the image actually ships.
  • Use simctl bootstatus to wait for readiness before running tests.

Related guides

Tired of flaky CI? Latchkey auto-heals failed jobs and retries them for you. Start free →