Skip to content

Codex Remote on iOS shows tool images during execution but drops them from the completed turn #35371

Open

Description

@lyrabird

Environment

  • Codex desktop app: 26.721.4979.0
  • Host OS: Windows 11 Pro, version 10.0.26200, 64-bit
  • Remote client: ChatGPT app on iPhone, Codex Remote Control
  • Subscription: ChatGPT Pro
  • Reproduced repeatedly on July 26, 2026 (Asia/Shanghai)

Issue

When Codex running on the Windows host produces or views an image, the image is successfully relayed to the ChatGPT iOS Remote Control client and is briefly visible while the turn is running. As soon as the turn completes and the mobile UI switches to the completed/final response view, the image disappears. Reopening or refreshing the completed task still shows only the final text.

This is not a basic transport failure: the same iPhone renders the actual image bytes during the live execution stream. The failure occurs at completion/replay, when the image-bearing tool item is no longer rendered or bound to the final response.

Steps to reproduce

  1. Connect the ChatGPT iOS app to a Windows Codex Desktop host using Codex Remote Control.
  2. Start a task from the phone.
  3. Have Codex invoke the local image viewer or return an image-generation result.
  4. Observe that the image appears correctly on the phone while the turn is running.
  5. Wait for the turn to complete.
  6. Observe that the completed task view contains the final text but no image.
  7. Reopen or refresh the task; the image remains absent.

The behavior was reproduced with:

  • a local image returned through the image-view/tool-output path;
  • a generated-image result;
  • an image referenced from the final response;
  • a publicly reachable HTTPS image reference.

Expected behavior

Any image successfully displayed during a turn should remain visible in the completed turn and after reopening the task. It should be retained as a persistent image/tool item or promoted to an attachment associated with the final response.

Actual behavior

The image is visible only during the live execution stream. After turn/completed, the mobile final view replays only the assistant text and drops the image.

Sanitized rollout evidence

Inspection of the local rollout JSONL for one reproduction showed:

Record Payload Image present Size
Image tool result custom_tool_call_output containing input_image / image_url Yes approximately 1,306,900 characters
Final assistant message message with content type output_text only No 468 characters

The image bytes therefore reached and were persisted in the turn record, but were not associated with the final assistant message.

This also matches the current App Server item model documented at https://learn.chatgpt.com/docs/app-server#items: agentMessage contains text, while imageView and image-bearing dynamic tool results are separate items.

Impact

This blocks visual review from Codex Remote. A user can briefly see a generated screenshot, design candidate, chart, or other image while execution is active, but cannot inspect it after completion or return to it later. External storage links are not equivalent because they require leaving the task and do not provide the expected inline final result.

Suggested fix area

One of the following would address the issue:

  1. Keep rendering completed imageView items and image-bearing dynamicToolCall.contentItems after turn/completed, including when reopening task history.
  2. Promote image tool results to a persistent attachment associated with the final answer.
  3. Add first-class image/attachment content to the final agentMessage representation.
  4. Ensure the mobile Remote client fetches and renders the full persisted item history rather than only the final text summary.

The reporter can provide redacted screenshots and additional rollout metadata if needed.

Activity

  1. added
    bugSomething isn't working
    iOSIssues related to the Codex iOS app
    app-serverIssues involving app server protocol or interfaces
    on Jul 25, 2026
  2. vanek-nutic commented on Jul 30, 2026

    @vanek-nutic

    Independent reproduction from a macOS Codex host confirms the same failure across all available image-result paths.

    Environment:

    • Codex macOS app: 26.721.41059 (build 5848)
    • Bundle ID: com.openai.codex
    • Bundled CLI: codex-cli 0.146.0-alpha.3.1
    • Mobile client: Codex Remote on a phone; exact mobile OS/app version was not captured
    • Reproduced: 2026-07-30

    Observed sequence:

    1. An image appears correctly during the live turn.
    2. Leave and reopen the same thread.
    3. The image disappears while the surrounding turn text remains.

    Independent controls all reproduced the failure:

    • view_image with a different local PNG and no MCP call;
    • JPEG bytes embedded in an image-bearing tool result;
    • the built-in first-class imageGeneration result using a neutral four-color test card.

    For the generated-image control, stored thread readback still recorded the item as type: imageGeneration, status: completed, and the generated PNG remained present and valid on the Mac host. The mobile image nevertheless disappeared after reopening the thread.

    This rules out the original image, duplicate-image reuse, MCP activity, source-file deletion, and image-generation failure. It supports the issue's suspected completion/replay or mobile thread-reconstruction boundary. I can provide the redacted thread ID and additional local metadata privately if useful.

  3. JakobSung commented on Aug 4, 2026

    @JakobSung

    Additional reproduction from a Codex mobile-app user (2026-08-04; mobile platform and app version were not captured):

    • I asked Codex to create six logo concept images.
    • Image generation completed and the assistant returned six image result blocks.
    • In the mobile app, the surrounding assistant text was visible, but none of the generated image previews rendered.
    • Re-displaying the same generated PNGs did not make them visible in the mobile app.

    Expected: generated image result blocks should render inline in the mobile app, or provide a clear artifact/download fallback.

    Actual: the image content is absent while the surrounding text remains visible.

    This appears consistent with the image-loss/replay problem described in this issue, although the exact mobile OS and app version were not captured.

  4. jhodges10 commented on Aug 8, 2026

    @jhodges10

    Additional independent reproduction on 2026-08-08:

    • Host: Codex Desktop on Windows
    • Remote client: ChatGPT/Codex Remote on an iPad
    • Content: a 2x PNG screenshot produced by Native SDK automation from a local retained-canvas timeline

    Observed three times in the same remote thread:

    1. Returning the local PNG through the normal inline image/tool-output path made the screenshot appear briefly while the turn was active.
    2. As soon as the assistant finalized the turn, the screenshot disappeared and only the text remained.
    3. Re-sending it through the image-generation-style attachment/result wrapper behaved the same way: visible briefly, then removed at completion.
    4. Repeating the original inline path reproduced the disappearance again.

    The source PNG remained present and readable on the Windows host throughout, and the host-side image viewer rendered it successfully each time. This further isolates the failure to iPad Remote completion/replay rather than image creation, file lifetime, or local decoding.

  5. lukehami55 commented on Aug 10, 2026

    @lukehami55

    Additional reproduction confirmation (August 9, 2026):

    • Host: Codex Desktop 26.803.5235.0 on Windows 11 Pro 10.0.26200, 64-bit
    • Client: ChatGPT mobile app on iPhone using Codex Remote (mobile app version not captured)
    • Content: ten local PNG concept images returned through the image-view/tool-output path

    Observed behavior:

    1. While the turn remained active, all ten images rendered correctly on the iPhone and could be opened/saved.
    2. The turn was intentionally kept active; the images continued to remain visible.
    3. Immediately after the assistant emitted the final response and the turn completed, the image previews disappeared.
    4. Reopening the completed task did not restore them.
    5. Final-response links to the Windows C:\... paths were visible but, as expected, could not be resolved by the phone.

    This strongly reproduces the completion/replay boundary described in this issue: image transport to Remote succeeds, but the completed-turn representation drops the image-bearing tool items. Preserving those items after completion—or offering a way to promote selected tool images to persistent final-response attachments—would solve the workflow.

    A redacted mobile screenshot demonstrating the gray/missing image state is available if maintainers need it. No patient or repository data is included in this report.

  6. avesus commented on Oct 3, 2026

    @avesus

    Additional user report, received October 3, 2026: this behavior persists in ChatGPT on iPhone when using Codex connected to a Windows PC.

    Observed sequence:

    1. Open ChatGPT on iPhone and access Codex on the connected Windows PC.
    2. Run a task that produces PNG images.
    3. The PNG images are visible in the conversation while the task is running.
    4. When the task finishes, the activity moves into a collapsed section.
    5. The final PNG attachment appears as a gray block and cannot be viewed.
    6. Expanding the activity section still reveals some of the earlier reports.

    The user reports that the final PNG consistently fails this way and that the problem has continued across app updates.

    Expected behavior: the final PNG should display and open on the iPhone after task completion. Reports already displayed during execution should remain accessible.

    This report adds a specific detail to the existing issue: some earlier reports remain accessible inside expanded activity, while the final PNG is present as an unviewable gray block. The user has not confirmed whether that exact final PNG opens in the Windows app. Exact app and operating-system versions, screenshots, and diagnostic logs were not collected for this report.

    These are user-reported observations; the root cause has not been verified.

  7. uk-kim commented on Oct 17, 2026

    @uk-kim

    Additional reproduction report — 2026-10-17 (Asia/Seoul).

    The affected user explicitly asked the assistant to report this. The observations below distinguish the user's mobile observations from checks performed on the host.

    Environment

    • Windows desktop host running Codex, accessed using the ChatGPT app on an iPhone through Remote.
    • Exact desktop app version, iOS version, and ChatGPT iOS app version were not collected.

    Observed sequence

    1. Generate a local PNG architecture diagram on the Windows host.
    2. Open/return that PNG using an image-view tool during execution.
    3. The user reports that the image is briefly visible on the iPhone while execution is in progress.
    4. After the turn finishes and the UI displays the completed answer, the image area remains a loading placeholder/spinner.
    5. The user reports that the corresponding image displays normally in the desktop app.
    6. A final-answer Markdown image reference to the host file also resulted in a loading placeholder on mobile. The user supplied a screenshot showing this state.

    Important distinction
    This is not "images never work on the phone": live tool-image display succeeds, while completed-turn display fails. Please investigate completion/history rendering and persistence of image-bearing items in the mobile Remote client.

    Host checks

    • The PNG exists and was successfully decoded and displayed by the host image-view tool.
    • Returning image data through the image-view path and referencing the same file in final-answer Markdown did not provide a confirmed persistent mobile preview.
    • Plain clickable file links were reported by the user to work in some cases and are the current workaround; they do not replace a persistent inline image.

    Expected behavior
    An image visible during execution should remain available after completion and when revisiting the answer. If inline persistence is unsupported, provide a reliable open/download attachment instead of an indefinite spinner. Attachment-specific final-answer markup was also visible as literal text in the user's screenshot.

    No project contents, local paths, screenshots containing unrelated conversation content, or private logs are included in this public report. Root cause is not confirmed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    app-serverIssues involving app server protocol or interfacesbugSomething isn't workingiOSIssues related to the Codex iOS appremote

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions