[macOS 26.5.2][26.721.41059] Appshot creates PNGs but fails attachment with completed_without_screenshot
Summary
Appshots in ChatGPT/Codex Desktop consistently fail with the toast Unable to attach appshot.
The capture itself succeeds: the Computer Use helper creates valid PNG files in the expected per-user temporary directory and Accessibility text is returned. However, Codex reports hadScreenshot=false and the PNGs disappear before they become an attachment.
This has persisted through many complete app restarts and multiple app updates.
Environment
- Product: ChatGPT desktop app, Codex view
- ChatGPT/Codex Desktop:
26.721.41059(build5848) - Computer Use helper:
com.openai.sky.CUAService, build1000502 - macOS:
26.5.2(build25F84) - Architecture: Apple Silicon /
arm64 - Reproduced against Google Chrome (
com.google.Chrome) - Invocation: Double Command hotkey
Reproduction
- Open any Codex task in the ChatGPT desktop app.
- Bring a Google Chrome window to the front.
- Press both Command keys to invoke Appshot.
- Observe
Unable to attach appshot. - No Appshot is added to the composer.
Controlled reproduction evidence
A read-only filesystem watcher monitored the Computer Use temporary directory during a reproduction.
The helper created two PNG files in the expected $TMPDIR/com.openai.sky.CUAService directory:
- First PNG: 144,199 bytes
- Second PNG: 43,974 bytes
Both files disappeared within approximately one second.
The desktop log sequence was:
Appshot hotkey pressed hotkey=DoubleCommand
target found bundleIdentifier=com.google.Chrome
capture start request finished hasResponse=true
updateType=metadata
updateType=screenshot
updateType=axText
updateType=completed
Appshot capture settled failureReason=completed_without_screenshot hadAxText=true hadScreenshot=false status=failed
The corresponding local logs are under ~/Library/Logs/com.openai.codex/. No raw log or screenshot is attached to this public issue because those files may contain unrelated private task content.
Permissions and local causes checked
- Screen & System Audio Recording is enabled for ChatGPT and Codex Computer Use.
- Accessibility is enabled for ChatGPT and Codex Computer Use.
- Automation access from ChatGPT to Chrome and System Events is enabled.
- The helper starts successfully and returns Accessibility text.
- The PNG files are created under the correct temporary directory.
- Both files are far below the 25 MB validation limit.
- Disk space is ample.
- Full Disk Access is not required for this capture path.
- The Appshot importer accepts PNG, JPG, and JPEG.
Expected behavior
The PNG produced by the Computer Use helper should be read into the Appshot attachment, combined with the available Accessibility text, and added to the active Codex composer.
Actual behavior
The helper creates the PNGs and Codex receives a screenshot update, but the renderer never receives usable screenshot data. The capture finishes with completed_without_screenshot, and the temporary PNGs are then absent.
Likely failure layer
This appears to be a lifecycle or path-conversion race between temporary screenshot cleanup and the desktop worker reading or converting the screenshot into a data URL. Another possibility is that the screenshot update contains a path or file URL that the worker rejects even though the underlying PNG exists.
Requested investigation
Please inspect the Appshot screenshot handoff and cleanup ordering on macOS. It would also help if the worker logged why a screenshot update produced no usable data URL, including whether the URL was absent, malformed, outside the allowed temporary root, already deleted, unreadable, or rejected by validation.
1 Comment
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
Powered by Codex Action