Fixing 'xcrun: error: unable to find utility "simctl"' on macOS

beginner🍎 macOS2026-04-03| macOS (any version), Xcode 12+, Command Line Tools

Error Message

xcrun: error: unable to find utility "simctl", not a developer tool or in PATH
#macos#xcode#simctl#ios

The Frustration of a Broken simctl

I was halfway through a React Native build today when I tried to boot a simulator. Instead of the usual device list, the terminal spat out this annoying error:

xcrun: error: unable to find utility "simctl", not a developer tool or in PATH

You'll typically see this after an Xcode update or when jumping between Stable and Beta versions (like moving from Xcode 15 to Xcode 16). It's a classic configuration mismatch. If you rely on the command line for your iOS workflow, this error is a total showstopper. It blocks you from booting simulators, installing builds, or even listing available devices.

Why is this happening?

The issue isn't that simctl is missing from your Mac. The real culprit is xcrun—the helper that finds developer tools—losing track of your active Xcode directory.

Most systems default to the standalone Command Line Tools path at /Library/Developer/CommandLineTools. These are fine for basic git or C++ tasks, but they don't include simctl. That specific utility lives exclusively inside the full Xcode.app bundle. If your path points to the standalone tools, xcrun comes up empty-handed and throws the error.

The Quick Fix: Point to Xcode.app

The 30-second fix is to manually point xcode-select to your main Xcode installation. Since most devs keep Xcode in the Applications folder, run this command:

sudo xcode-select -s /Applications/Xcode.app/Contents/Developer

Type in your Mac's password when prompted. Once that's done, test if simctl is back online:

xcrun simctl list devices

If a list of simulators appears, you've solved it.

Permanent Fix via Xcode Settings

Rather use the mouse? You can also toggle this setting inside Xcode’s UI to ensure it sticks after a reboot or a system update.

  • Open Xcode.
  • Press Cmd + , to open Settings.
  • Click the Locations tab.
  • Find the Command Line Tools dropdown at the bottom.
  • Select your actual Xcode version (e.g., "Xcode 15.4 (15F31d)").

Selecting the version here does the exact same thing as the sudo command, but it's a great way to confirm Xcode actually recognizes your installation.

Working with Multiple Xcode Versions

Mobile devs often juggle multiple versions, like Xcode-16-Beta.app and the stable Xcode.app. Every time you swap, your command-line path might lose its way. It’s a common headache.

I save time by adding these aliases to my .zshrc file. No more typing long paths every time a new Beta drops:

alias use-xcode-stable='sudo xcode-select -s /Applications/Xcode.app/Contents/Developer'
alias use-xcode-beta='sudo xcode-select -s /Applications/Xcode-beta.app/Contents/Developer'

Now, whenever I switch projects, I just type use-xcode-stable and my tools are instantly aligned.

Verifying the Fix

Run these three checks to confirm your setup is solid:

  • Check the path: Run xcode-select -p. It should return /Applications/Xcode.app/Contents/Developer.
  • Test simctl: Run xcrun simctl help. You should see the documentation, not an error.
  • Check the version: Run xcodebuild -version to make sure you're using the version you expect.

Still not working?

Sometimes xcrun is just stubborn, especially if you recently moved Xcode.app into a subfolder or renamed it. Try resetting the path entirely and then setting it again:

sudo xcode-select --reset
sudo xcode-select -s /Applications/Xcode.app/Contents/Developer

Finally, check if a DEVELOPER_DIR environment variable is overriding your settings. Run echo $DEVELOPER_DIR. If a path pops up, delete that line from your .zshrc or .bash_profile. It’s better to let xcode-select handle the heavy lifting naturally.

Related Error Notes