Skip to content

snapshot_ui 'No translation object returned' persists across reboots on iOS 26.5 — root cause is a wedged host CoreSimulatorBridge; kill -9 fixes it #458

Description

@pullely-samuel

Summary

snapshot_ui / axe describe-ui returns Error: No translation object returned for simulator. This means you have likely specified a point onscreen that is invalid or invisible due to a fullscreen dialog on every call, for ~40 minutes across multiple shutdown+boot cycles, on a booted iOS 26.5 simulator where the app and SpringBoard are visibly healthy (screenshots work fine the whole time).

The documented recovery in the AXe skill / #290 (shutdown+boot, wait past the ~5–30s AX-daemon warmup window, use a fresh simulator) did not help. The actual root cause turned out to be a wedged host CoreSimulatorBridge process, and the fix is to kill it so it respawns:

pgrep -f "/usr/libexec/CoreSimulatorBridge" | xargs kill -9
sleep 2
axe describe-ui --udid <UDID>   # immediately returns a full tree again

After the kill -9, describe-ui / snapshot_ui returned a correct hierarchy on the very next call and stayed reliable for the rest of a long session (hundreds of subsequent taps/snapshots). No reboot, no data wipe, no fresh simulator needed.

This looks like the "different bug" the maintainer explicitly invited a reproduction of in #290:

If you ever see the empty hierarchy persist longer than ~30 s on a freshly-booted sim, that would be a different bug than the one #312 was trying to address; we'd be interested in a reproduction.

One nuance vs #290: the symptom here is the point-only error string (No translation object returned…), i.e. describe-ui errors out — not the CGRectZero + children: [] empty-AXApplication tree that #290 describes. Both appear to stem from the CoreSimulator XPC translation path, but this one is the host broker (CoreSimulatorBridge) being stuck rather than the in-sim AX daemon not being ready yet.

Reproduction / diagnosis notes

  • It began after heavy host CPU contention (an unrelated mediaanalysisd inside the sim runtime was pegged >500% CPU on first boot). Reboots did not clear the wedged bridge.
  • Reproduced across host reboots of the simulator (shutdown+boot), across a wait well beyond 30s, and it failed identically in Apple's own Settings.app on the same sim (confirming host/sim-wide, not app-specific) — matching describe-ui returns empty hierarchy on iOS 26+ simulators — auto-enable accessibility defaults #290's triage steps.
  • pgrep -f CoreSimulatorBridge showed a long-lived bridge PID; kill -9-ing it (it auto-respawns via launchd) fixed AX translation instantly.

Suggestion

When describe-ui returns No translation object returned… (or the CGRectZero/empty-children tree) and a reboot hasn't cleared it, consider detecting/kill-ing a stale CoreSimulatorBridge as a remediation step (or at least surfacing it in the error's recovery hint), since shutdown+boot alone does not always restart/rebind that host broker.

Environment

  • XcodeBuildMCP: 2.6.2 (bundled AXe 1.7.1)
  • Xcode: 26.5 (17F42)
  • macOS: 26.5.1 (25F80), Apple Silicon
  • Simulator: iPhone 17 Pro, iOS 26.5 (23F77)
  • Client: Claude Code (agent-driven snapshot_ui/tap)

Related: #290, #408

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions