Summary
The iOS Simulator panel in the Claude desktop app cannot start its video stream on macOS 27.0 beta. The helper process claude-ios-sim (com.anthropic.claude.ios-sim, bundled at Claude.app/Contents/Helpers/Claude iOS Sim.app) crash-loops with an uncaught NSException (SIGABRT) while initializing a CoreImage CIContext, so the panel stays stuck on the "Attach a simulator so Claude can see your app" placeholder, and the MCP screenshot action fails with "Claude Code iOS Simulator is restarting after a crash."
The attach MCP action reports success and the simulator itself is healthy (apps install, launch, and screenshot fine via xcrun simctl), so this is host-side in the panel's capture/streaming pipeline.
Environment
- Claude desktop app: 1.24012.1
- macOS: 27.0 beta (build 26A5388g), Apple Silicon
- Xcode 26.6, iOS Simulator runtimes 26.5 and 27.0
- Booted device: iPhone 17 Pro (iOS 26.5)
Crash signature
lastExceptionBacktrace from ~/Library/Logs/DiagnosticReports/claude-ios-sim-*.ips (identical across ~6 crashes over one day):
CoreFoundation __exceptionPreprocess
libobjc.A.dylib objc_exception_throw
CoreFoundation -[__NSPlaceholderArray initWithObjects:count:] <- nil object inserted
CoreFoundation +[NSArray arrayWithObjects:count:]
Metal __39-[_MTLDevice recordBinaryArchiveUsage:]_block_invoke
libdispatch _dispatch_once_callout
Metal -[_MTLDevice recordBinaryArchiveUsage:]
Metal -[_MTLBinaryArchive loadFromURL:error:]
Metal -[_MTLBinaryArchive initWithOptions:device:url:error:]
CoreImage +[CIKernelLibrary(Internal) internalBinaryArchiveWithName:device:]
CoreImage CI::PrecompiledUberFunctions::PrecompiledUberFunctions(CI::MetalContext const*)
CoreImage CI::MetalContext::init(id<MTLCommandQueue>, char const*)
CoreImage +[CIContext(Internal) internalContextWithMTLCommandQueue:options:]
CoreImage -[CIContext initWithMTLDevice:options:]
Termination: EXC_CRASH (SIGABRT), abort() called, thrown from __cxa_throw via _objc_terminate.
Looks like Metal's binary-archive usage recording gets a nil while building an NSArray on this OS build — i.e. an OS-beta incompatibility — but the helper turning that into a hard crash-loop (instead of falling back to a software/non-binary-archive CI context or surfacing an error in the panel) makes the whole feature unusable.
Steps to reproduce
- macOS 27.0 beta (26A5388g), Claude desktop 1.24012.1.
- Boot any iOS simulator (
xcrun simctl boot <udid>).
- In a Claude Code session, use the iOS Simulator tool:
attach succeeds and the panel opens.
- Panel never streams (stays on the attach placeholder); any
screenshot action returns "restarting after a crash", and a new claude-ios-sim-*.ips crash report appears each time.
What I ruled out
- Simulator/app health:
xcrun simctl io <udid> screenshot and app install/launch all work.
- iOS runtime version: same behavior regardless of 26.5 vs 27.0 runtimes (crash is host-side, before any device pixels).
- Metal shader caches: deleting
$(getconf DARWIN_USER_CACHE_DIR)/com.apple.metal and com.apple.metalfe and killing the helper did not change the signature.
Intermittently, after many helper restarts, one panel window did come up streaming — but new panel instances in the same session still land on the placeholder, so recovery is unreliable.
Expected
Either the panel streams on macOS 27 beta, or the helper catches the CI/Metal init failure and shows an actionable error in the panel instead of crash-looping behind a generic "Attach a simulator" placeholder.
Happy to share full .ips files on request.
Summary
The iOS Simulator panel in the Claude desktop app cannot start its video stream on macOS 27.0 beta. The helper process
claude-ios-sim(com.anthropic.claude.ios-sim, bundled atClaude.app/Contents/Helpers/Claude iOS Sim.app) crash-loops with an uncaughtNSException(SIGABRT) while initializing a CoreImageCIContext, so the panel stays stuck on the "Attach a simulator so Claude can see your app" placeholder, and the MCPscreenshotaction fails with "Claude Code iOS Simulator is restarting after a crash."The
attachMCP action reports success and the simulator itself is healthy (apps install, launch, and screenshot fine viaxcrun simctl), so this is host-side in the panel's capture/streaming pipeline.Environment
Crash signature
lastExceptionBacktracefrom~/Library/Logs/DiagnosticReports/claude-ios-sim-*.ips(identical across ~6 crashes over one day):Termination:
EXC_CRASH (SIGABRT),abort() called, thrown from__cxa_throwvia_objc_terminate.Looks like Metal's binary-archive usage recording gets a
nilwhile building anNSArrayon this OS build — i.e. an OS-beta incompatibility — but the helper turning that into a hard crash-loop (instead of falling back to a software/non-binary-archive CI context or surfacing an error in the panel) makes the whole feature unusable.Steps to reproduce
xcrun simctl boot <udid>).attachsucceeds and the panel opens.screenshotaction returns "restarting after a crash", and a newclaude-ios-sim-*.ipscrash report appears each time.What I ruled out
xcrun simctl io <udid> screenshotand app install/launch all work.$(getconf DARWIN_USER_CACHE_DIR)/com.apple.metalandcom.apple.metalfeand killing the helper did not change the signature.Intermittently, after many helper restarts, one panel window did come up streaming — but new panel instances in the same session still land on the placeholder, so recovery is unreliable.
Expected
Either the panel streams on macOS 27 beta, or the helper catches the CI/Metal init failure and shows an actionable error in the panel instead of crash-looping behind a generic "Attach a simulator" placeholder.
Happy to share full
.ipsfiles on request.