Computer Use 1.0.1000366: SkyComputerUseService SIGTRAP on exact-path SwiftUI accessibility capture
Summary
On ChatGPT Desktop 26.707.41301 with bundled Computer Use plugin 1.0.1000366, SkyComputerUseService reproducibly crashes with EXC_BREAKPOINT / SIGTRAP when get_app_state targets an exact-path SwiftUI macOS app. Finder capture succeeds immediately beforehand. The failure occurs while the sole live helper is the Desktop-managed runtime with matching signed identity; no plugin-cache fallback or DYLD compatibility failure is involved.
This appears related to #28933, but this reproduction additionally isolates helper routing and duplicate target-app installations.
Environment
- macOS 26.5.2 (25F84)
- ChatGPT Desktop 26.707.41301 (5103)
- bundled Computer Use plugin 1.0.1000366
SkyComputerUseService26.708.1000366 (1000366)- helper Team ID:
2DC432GLL2 - target: Vocello / QwenVoice, SwiftUI macOS app
Controlled reproduction
- Restart ChatGPT Desktop and open a fresh Codex task.
- Enable the bundled Computer Use plugin and Node REPL.
- Load the plugin-owned
computer-use-client.mjswrapper. - Call
sky.list_apps(). - Verify exactly one
SkyComputerUseServiceprocess is running from:
$HOME/.codex/computer-use/Codex Computer Use.app/Contents/MacOS/SkyComputerUseService
- Verify the Desktop-managed runtime, ChatGPT-bundled source, and installed plugin-cache source match on bundle ID, version/build, signing team, designated requirement, code-sign validity, and executable SHA-256.
- Call:
``js``
await sky.get_app_state({
app: "/System/Library/CoreServices/Finder.app",
disableDiff: true
})
Finder returns accessibility text and a screenshot.
- Call exactly once:
``js``
await sky.get_app_state({
app: "<repo>/build/Vocello.app",
disableDiff: true
})
Expected
The exact-path app returns accessibility text and a screenshot while the same Desktop-managed helper remains alive.
Actual
The call fails after several seconds with:
Sky Computer Use native pipe closed before response
A new SkyComputerUseService-*.ips report is generated. The helper exits and becomes an unreaped Desktop child. Exactly one target app process was launched from the requested absolute path; it was stopped afterward. No display-name or bundle-ID fallback was attempted.
The crash report contains:
EXC_BREAKPOINTSIGTRAP- faulting queue:
com.apple.root.user-initiated-qos.cooperative - multiple
AXNotificationObserverthreads, including observers for the exact target PID - no
OS_REASON_DYLD - no missing
_swift_task_addPriorityEscalationHandlersymbol
The latest crash frame is in the helper binary and is not symbolicated in the report.
Routing and identity evidence
At the start of the reproduction:
- service process count: 1
- routing status: expected
- Desktop-managed runtime running: true
- plugin-cache fallback running: false
- duplicate runtime detected: false
- unknown service path: false
- stale client set: false
- zombie children: 0
- source/runtime identity match: true
- executable SHA-256:
b47f564a5dee10fc8f21f6c8b2aee934b30ad04feee33746053253b3661df4e0
The Node REPL configuration exposes the versioned plugin-cache app through SKY_CUA_SERVICE_PATH, while this Desktop build runs the live managed helper from $HOME/.codex/computer-use. This reproduction did not use the plugin-cache fallback route.
Duplicate-app isolation
The machine originally had three Vocello products sharing com.qwenvoice.app: an installed release, a DerivedData release product, and the exact build/Vocello.app target.
For the second controlled reproduction:
- The installed and DerivedData bundles were physically moved into a hidden quarantine without deletion.
build/Vocello.appwas the only physical target left.- Computer Use's
list_apps()still returned three cached entries. - Finder capture passed.
- The first exact-path Vocello observation crashed the Desktop-managed helper with the same signature.
The quarantined apps were restored afterward. This shows that duplicate physical installations are not required to trigger the crash.
Additional observations
- Repeated authorization prompts were previously observed even though Accessibility and Screen & System Audio Recording were enabled.
- Two earlier plugin-cache launches produced the same
EXC_BREAKPOINT / SIGTRAPclass, but the controlled Desktop-managed reproduction shows fallback routing is not a necessary cause. - Raw crash reports are not attached because they contain local paths. A sanitized excerpt or full report can be provided if requested.
Requested behavior
Please investigate the accessibility-capture crash and expose it as a specific error rather than the generic inactive/native-pipe failure. It would also help to clarify:
- Whether exact-path targeting is expected to isolate multiple cached entries sharing a bundle identifier.
- The supported ownership contract between the plugin-cache source and the Desktop-managed runtime copy.
- Whether a symbolicated helper build or diagnostic mode can be provided for this crash class.
2 Comments
Additional crash differential and bounds-trap evidence
I compared all four local
SkyComputerUseServicecrash reports and their corresponding unified logs. They share one deterministic fingerprint:26.708.1000366(1000366)61C0B615-7F27-3A07-8D97-77ABC71392362DC432GLL2b47f564a5dee10fc8f21f6c8b2aee934b30ad04feee33746053253b3661df4e0EXC_BREAKPOINT / SIGTRAPcom.apple.root.user-initiated-qos.cooperativeThe normalized 20-frame helper stack is identical in all four reports:
Disassembly around the first frame shows a deterministic bounds check:
Every report has:
The surrounding code checks uniqueness, validates the index, decrements the count, moves an element, shifts the tail, and stores the new count. It is consistent with a specialized Swift collection-removal path. At minimum, the immediate failure is certain: the helper traps because it attempts an operation at index 5 while the collection count is 4.
There is also a direct thread correlation between the crash reports and AccessibilitySupport logs. In every reproduction, the
.ipsfaulting thread ID equals the unified-log TID that emitted:immediately before termination:
In the latest controlled run, AccessibilitySupport finished its settle wait and returned a new tree, ScreenCaptureKit began enumerating windows on another thread, the faulting AX worker emitted another
TransformedUIElement Code=0, and then hit the bounds trap. This supports an accessibility-tree transformation/invalidation defect rather than a screenshot or permission failure.The target app's persisted initial screen was also identified. Both its production and debug preferences restored Settings during every cold capture. That SwiftUI screen contains:
Formwith multipleSectioncontainers;Toggle, segmentedPicker, and two complexLabeledContentrows;.accessibilityElement(children: .contain)groups;This overlaps with the minimal
Form/Toggle/LabeledContentreproduction in #28933. It is not yet proof that this particular subtree is the root trigger, but it is a strong candidate for an AX-tree mutation or unsupported-topology bisect.Could OpenAI provide one of the following?
61C0…9236.brk #0x1.The same fingerprint occurred through both the former plugin-cache route and the Desktop-managed runtime, including after duplicate physical target bundles were removed from the test environment. Routing and duplicate installations therefore do not appear necessary for this bounds failure.
Fresh-task differential from the same Vocello investigation:
Interpretation: a prelaunched, settled History surface is transformable by helper 1000366. This narrows the reproduction but does not clear the helper or prove the app-side candidate. The four prior failures cold-restored Settings; this run changed both attachment timing and initial surface. The Settings focus-reset removal still needs a one-observation A/B in a separate fresh helper session. No model inspection, action, generation, suite, or benchmark was attempted.