iOS Simulator tool: touch/tap injection silently no-ops after Xcode 27 upgrade (Simulator.app replaced by headless DeviceHub)
Preflight Checklist
- [x] I have searched existing issues and this hasn't been reported yet
- [x] This is a single bug report (please file separate reports for different bugs)
- [x] I am using the latest version of Claude Code
What's Wrong?
The iOS Simulator control tool's tap, swipe, and hardware button(non-Home) actions report success with no error, but never register in the running app — the UI never changes in response to any tap. screenshot correctly reflects live state, and coordinate-independent actions (simctl launch, Home button press) work fine. Only synthetic touch injection into app content is affected.
This makes the tool unusable for any interactive QA — you can look at a running app, but can't tap through it.
What Should Happen?
What Should Happen?
A tap action should register with the running app the same way it did before the Xcode 27 upgrade (and the same way simctl launch/Home-button actions already do post-upgrade) — i.e., actually manipulate the app's UI, not silently no-op while reporting success.
Error Messages/Logs
None — that's part of the bug. Every tap/swipe call returns a normal success response ("Tapped at (x, y) on...") with no error, so there's no signal that anything failed short of comparing before/after screenshots.
Steps to Reproduce
On a Mac with Xcode 27.0 installed (confirm via find /Applications/Xcode.app -iname "Simulator.app" — returns nothing; the classic standalone Simulator.app has been replaced by a headless DeviceHub.app agent process with no window of its own).
Boot any iOS simulator through the iOS Simulator tool (attach/boot succeeds normally).
Take a screenshot — renders correctly and reflects live state.
Send a tap at valid, verified on-screen coordinates (e.g., a visible button).
Take another screenshot — UI is unchanged; the tap had no effect.
For comparison, send a button action for Home — this works and returns to the home screen, confirming some synthetic input reaches the device.
Repeated across 3 different simulator devices (iPhone 18 Pro, iPhone 17 Pro, iPad Pro 13" M5) and 2 different iOS runtimes (27.0, 26.5) — identical failure every time.
Ruled out as the cause: coordinate-space math, device/runtime specifics, concurrent resource contention (killed a competing Android emulator, no change), stale CoreSimulator state (killall CoreSimulatorService + clean reboot, no change), full machine restart (no change), and launch method (identical failure via deep link, simctl launch, and Xcode's own Run button with LLDB attached).
Claude Model
Sonnet (default)
Is this a regression?
Yes, this worked in a previous version
Last Working Version
Unknown — the Xcode 27 upgrade happened mid-session on this machine, so I don't have a clean before/after on the same Claude Code version. Worth noting for triage rather than treating as confirmed.
Claude Code Version
2.1.260 (Claude Code)
Platform
Anthropic API
Operating System
macOS
Terminal/Shell
Terminal.app (macOS)
Additional Information
Root-cause hypothesis: Xcode 27 removed the standalone Simulator.app GUI entirely (confirmed via filesystem search — it doesn't exist anywhere on the system, not even inside the Xcode bundle) in favor of a headless DeviceHub.app agent process. Confirmed via direct inspection (Claude's own computer-use tooling) that DeviceHub exposes no window and no menu bar ("agent process"), and that running the app via Xcode's own Run button (debugger attached) also produces no visible simulator window anywhere. The entire simulator display pipeline on this OS/Xcode combination appears to be stream/headless-only now, with no GUI window fallback anywhere on the system. The iOS Simulator tool's touch-injection path likely calls into an API surface that assumed the old Simulator.app-based architecture and hasn't been updated for the new headless-only model — while screenshot (a read/stream operation) and control-plane calls continue to work because they don't depend on that same path.
3 Comments
UI action returned success while the app UI never changed — silent no-op green.
pip install coherence-check && coherence audit --demoSnapshot $297: https://buy.stripe.com/3cI00jelW56U1Tk7lFdIA0n
+1, this still reproduces and it blocks our iOS QA (osperry/cu-ai#55). On Xcode 27, where Simulator.app is replaced by the headless DeviceHub, the iOS Simulator tool reports taps and swipes as successful, but the app never receives them. Screenshots, boot/launch and Home still work. Android through adb is fine. Could someone from the team triage this or suggest a workaround, such as an idb/simctl-based input path? Thanks!
Reproduces here too, with one extra data point: the Home button press also does nothing in our case (the original report says Home still worked).
Environment
/Applications/Xcode.app/Contents/ApplicationscontainsDeviceHub.app, noSimulator.appanywhere on diskDeviceHub.appmanually — no change)What works:
attach,open_url(Safari loads a PWA at https://hearthold-hitester.web.app),screenshot(live and correct).What silently no-ops:
tapon a web page button (DOM<button>),tapon a<canvas>with pointer-event handlers,swipeon the canvas,tapon Safari's own address bar (native UI, so it is not a web-content issue), andbutton: HOME. Every call returnsTapped at (x, y) on …/Pressed HOME on …with no error; before/after screenshots are identical. The target page's event listeners (pointerdown/pointerup/clicklogged viajavascript_toolin a browser session) never fire.Workaround we used: none on the simulator; we fell back to Chromium phone-viewport emulation in the built-in browser pane for logic/layout checks and a real iPad for touch.
Happy to run any diagnostic build or log collection on this machine.