Codex Desktop: spawned subagents with Computer Use receive image omitted while parent thread receives screenshots

Open 💬 1 comment Opened May 14, 2026 by aleksei666777

Environment

  • App: Codex Desktop for macOS
  • Codex version: 26.506.31421
  • Codex build: 2620
  • Computer Use app version shown in tool output: 780
  • macOS: 26.3.1 (a), build 25D771280a
  • Architecture: Apple Silicon / arm64
  • Subscription: ChatGPT Pro
  • Target app: iPhone Mirroring / com.apple.ScreenContinuity
  • Also tested: Finder / com.apple.finder

Summary

When using Computer Use directly from the parent Codex thread, get_app_state("com.apple.ScreenContinuity") returns a visible screenshot of the iPhone Mirroring window.

However, when the same Computer Use call is made from a spawned subagent (gpt-5.3-codex-spark, high reasoning), the subagent receives:

<image content omitted because you do not support image input>

This happens even though:

  • macOS Screen Recording and Accessibility permissions are granted for Codex.app and Codex Computer Use.app;
  • Codex app-level approval is granted for the target app;
  • list_apps works in the subagent;
  • get_app_state works in the subagent at the accessibility-tree level.

The result is that subagents can operate only from macOS Accessibility metadata, not screenshots. This is especially blocking for apps like iPhone Mirroring, where the iOS screen content is not exposed as a useful macOS accessibility tree.

Steps to reproduce

  1. Open Codex Desktop on macOS.
  2. Ensure Computer Use is installed and enabled.
  3. Grant macOS permissions:
  • Privacy & Security -> Screen Recording / Screen & System Audio Recording
  • Privacy & Security -> Accessibility

for both Codex.app and Codex Computer Use.app.

  1. Open iPhone Mirroring (com.apple.ScreenContinuity) and connect to an iPhone.
  2. In the parent Codex thread, call Computer Use: get_app_state("com.apple.ScreenContinuity").
  3. Observe that the parent thread receives a visible screenshot of the iPhone Mirroring window.
  4. Spawn a subagent, for example:
  • model: gpt-5.3-codex-spark
  • reasoning effort: high
  1. Ask the subagent to use only Computer Use:
  • list_apps
  • get_app_state("com.apple.ScreenContinuity")
  • optionally get_app_state("com.apple.finder")
  1. Observe that the subagent receives accessibility state, but the image is omitted.

Actual behavior

In the parent thread:

  • get_app_state("com.apple.ScreenContinuity") includes a screenshot.
  • The model can visually inspect the iPhone Mirroring window.

In the spawned subagent:

  • list_apps finds com.apple.ScreenContinuity.
  • get_app_state("com.apple.ScreenContinuity") returns only the top-level macOS window/menu accessibility tree.
  • The image is omitted with:

<image content omitted because you do not support image input>

For Finder, the same image omission happens, but Finder still provides enough accessibility metadata to identify the desktop/window. For iPhone Mirroring, the accessibility tree contains only the wrapper window and menu, not the iOS app content.

Expected behavior

A spawned subagent with Computer Use should receive the same screenshot/image context as the parent thread when calling get_app_state for an approved target app.

If screenshots are intentionally unsupported for certain subagent models, the app should fail clearly before the task starts or document that Computer Use in subagents is accessibility-tree-only.

Why this matters

The official Computer Use flow depends on screenshots being returned to the model. Without screenshots, subagents cannot visually inspect many real desktop workflows.

This is especially problematic for:

  • iPhone Mirroring / com.apple.ScreenContinuity
  • remote desktop / streamed UI windows
  • apps that do not expose rich accessibility trees
  • any pixel-only or canvas-like app UI

Related observations

Impact

This blocks using Spark subagents for visual Computer Use workflows. In the parent thread, Computer Use can see the target app. In the subagent, the same app becomes effectively unreadable if the accessibility tree is not enough.

View original on GitHub ↗

This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗