simctl commands not responding or hanging

xcrun simctl commands (list, boot, shutdown, spawn) hang indefinitely and never return — even simple ones like simctl list.

Strong fit Likely class: CoreSimulatorService unresponsive / simctl IPC stall · Updated

Symptom

A simctl command that should return almost instantly — often xcrun simctl list — just hangs. No output, no error, no prompt. Boot and shutdown commands stall the same way, and Ctrl-C may or may not get your shell back.

What it usually looks like

Why it happens / likely failure classes

simctl is a thin client. The real work happens in com.apple.CoreSimulator.CoreSimulatorService, a per-user daemon. When simctl hangs, it is almost always blocked waiting on that service:

Quick checks

# Is the service running, and is it the version you expect?
pgrep -lf CoreSimulatorService

# Which Xcode is selected? A mismatch here is a classic cause.
xcode-select -p
xcrun --find simctl

# Does a bounded call return, or truly hang?
#   (run in a fresh terminal; if THIS hangs, the service is the problem)
xcrun simctl list devices

If xcode-select -p points at a different Xcode than the one whose Simulator is running, that mismatch alone can explain the stall.

Manual mitigations

Escalate gently — try the least destructive step first.

  1. Shut everything down cleanly (if it responds):

    xcrun simctl shutdown all
  2. Restart the CoreSimulator service. This is the most common fix when simctl itself is hung. Quit Simulator.app first, then:

    killall -9 com.apple.CoreSimulator.CoreSimulatorService 2>/dev/null || true
    # launchd relaunches it on the next simctl call
    xcrun simctl list devices
  3. Make sure the selected Xcode matches the running service:

    sudo xcode-select -s /Applications/Xcode.app
  4. Clear stale devices once the service responds again:

    xcrun simctl delete unavailable
  5. Last resort: log out and back in (the daemon is per-user) or reboot.

When XCSteward may help

This is squarely the kind of operational fragility XCSteward targets. It can:

Worth testing against this class of failure, especially if it happens under concurrent or agent-driven workloads.

When XCSteward probably will not help

Common questions

What does "simctl commands not responding or hanging" usually mean?
It usually points to CoreSimulatorService unresponsive / simctl IPC stall. xcrun simctl commands (list, boot, shutdown, spawn) hang indefinitely and never return — even simple ones like simctl list. Start by checking simulator readiness, destination selection, CoreSimulator/simctl responsiveness, and whether another xcodebuild, simctl, or Simulator process is already active before treating it as a test-code failure.
Can XCSteward help with "simctl commands not responding or hanging"?
This is a strong fit when the failure is operational: simulator readiness, destination resolution, CoreSimulator responsiveness, cleanup, timeouts, or local concurrency. XCSteward may help by making those phases bounded, serialized, and easier to inspect. It will not fix broken tests, code signing, missing runtimes, or vendor image bugs.
What should I check first?
Check whether xcrun simctl commands return promptly, whether xcodebuild can resolve a concrete simulator destination, whether the device is truly ready rather than merely Booted, and whether concurrent agents, scripts, or manual runs are touching the same simulator subsystem.