Codex App renders generated image as broken image placeholder
What version of the Codex App are you using (From “About Codex” dialog)?
Version 26.601.21317 • Released 02.06.2026. CLI visible in the same environment: codex-cli 0.136.0.
What subscription do you have?
ChatGPT Pro, described by the reporter as the highest available private/consumer subscription (possibly referred to as "Pro x20").
What platform is your computer?
Windows Codex App with a WSL workspace.
Observed WSL environment from the reporting workspace:
Linux SimonRy9 6.6.87.2-microsoft-standard-WSL2 x86_64 GNU/Linux
What issue are you seeing?
Generated images sometimes do not render correctly in the Codex App conversation. Instead of showing the generated bitmap inline, the chat displays a broken image icon and the localized alt text Generiertes Bild 1.
In the attached/reported screenshot, the assistant message says it created a new concept screen, but the image area below only shows the small broken-image indicator plus Generiertes Bild 1. The rest of the chat remains usable, so this appears to be an image rendering/asset resolution issue rather than a full session crash.
This looks related to, but slightly different from, openai/codex#19027. In openai/codex#19027 the generated images were not automatically embedded. Here the UI appears to attempt rendering an image entry, but the rendered result is broken and only the fallback alt text is visible.
What steps can reproduce the bug?
- Use the Codex App on Windows with a WSL-backed workspace.
- Ask Codex to generate a visual concept/mockup/image.
- Wait for the image generation response to complete.
- Observe the generated image area in the conversation.
- Sometimes the image is not displayed; only a broken image icon and text such as
Generiertes Bild 1are shown.
What is the expected behavior?
Generated images should render inline in the Codex App chat once generation completes. If the image file cannot be resolved or loaded, the UI should expose a clear error or file/path diagnostic instead of silently falling back to a broken image placeholder.
Additional information
Screenshot context from the report:
- Codex App UI language: German.
- The visible failed image label is
Generiertes Bild 1. - The workspace shown in the app is
sanctum-os. - The active thread was generating a website concept/mockup.
- The right environment panel shows a local workspace and branch
main.
I do not have the exact generated image file path from the screenshot, so this report is based on the visible app behavior rather than a specific local file inspection.
4 Comments
<img width="2170" height="1327" alt="Image" src="https://github.com/user-attachments/assets/682b655f-d07f-4a58-88e0-03a02dca11c2" />
Same: 019e8f3f-d88b-7702-8ad0-24a71deded42
<img width="225" height="105" alt="Image" src="https://github.com/user-attachments/assets/99c5c3ae-f782-415d-9c3e-91af1e79d111" />
For one image 30 minutes?
<img width="343" height="50" alt="Image" src="https://github.com/user-attachments/assets/69d66658-66a3-4a2b-9aa6-e0d71dc448ab" />
For anyone landing here with a blank/broken image box on recent builds: the image data usually did arrive intact (check the task JSONL for a ~3M-char
image_generation_call.result). The render/persist regression is tracked in #32153; until then you can recover the actual file locally with https://github.com/jianxunzhang1101/recover-codex-images (read-only, no regeneration).Still reproduces on the current Windows Store build.
Environment:
26.820.7780.010.0.26200, build262002.7.12.0, kernel6.18.33.2-2I captured the renderer failure in the desktop log:
The generated output is a valid PNG and opens normally in Windows Explorer. Its ACL grants the Windows user full access and
CodexSandboxUsersread/execute access. The same file renders inline if the assistant explicitly embeds its absolute WSL path, for example.This makes an elevation or filesystem-permissions problem unlikely. It looks like the generated-image result reaches the desktop renderer with empty attachment metadata, causing the request to
/files/download/without an ID.This also appears distinct from #34801: that report has a populated
sediment://pointer followed by a403, while this case has an empty pointer and file ID followed by a422.Minimal reproduction:
/mnt/c/...pngpath also works.