Codex Desktop lacks stable local HTML render/export path in projectless threads
Summary
In Codex Desktop on Windows, a projectless thread could create a local HTML/CSS deliverable but could not use a stable Codex browser/local preview path to render or export it as a PNG. The workflow degraded into shell-based browser discovery and failed to produce the image artifact.
Short version: Codex successfully built the cake, decorated the cake, put the cake in outputs, then discovered it had no reliable way to photograph the cake. It then wandered around the Windows filesystem looking for Chrome/Edge like a very expensive flashlight.
This happened during a normal deliverable workflow:
- generate a deterministic HTML infographic/report
- preview/render it locally
- export/capture a PNG
- return the final artifact
Step 1 succeeded. Steps 2-3 failed because no reliable Codex browser/render/screenshot capability was available in the thread, and external browser fallback discovery also failed.
The user-facing failure was not "Codex cannot write HTML." It can. The failure was the last-mile visual artifact path: local HTML -> rendered preview -> screenshot/export.
Environment
- Product: Codex Desktop
- Session originator:
Codex Desktop - Session source:
vscode - Codex CLI version recorded in session metadata:
0.142.5 - Session id:
019f213d-e8d6-7fb2-aabd-ec029c3fcb76 - Model provider:
openai - OS: Windows
- Shell: Windows PowerShell
5.1.19041.6456 - Node:
v22.19.0 - npm:
10.9.3 - GitHub CLI:
gh version 2.93.0 (2026-05-27) - Thread type: projectless Codex thread
- Workspace cwd:
C:\Users\Lawrence\Documents\Codex\2026-07-01\are- Output artifact created successfully:
C:\Users\Lawrence\Documents\Codex\2026-07-01\are\outputs\codex-technical-breakdown.html- file size:
10666bytes
Session metadata was read from:
C:\Users\Lawrence\.codex\sessions\2026\07\01\rollout-2026-07-01T22-12-13-019f213d-e8d6-7fb2-aabd-ec029c3fcb76.jsonl
Reproduction
- In a projectless Codex Desktop thread on Windows, ask Codex to generate a technical infographic/report from local Codex session history.
- Codex writes a local HTML/CSS deliverable under the workspace
outputsfolder. - Ask/expect Codex to export the local HTML deliverable to a PNG.
- Codex attempts to find a browser/render/screenshot path.
User-visible timeline
All times below are from the local session log for 019f213d-e8d6-7fb2-aabd-ec029c3fcb76.
2026-07-02T05:12:32Z User asks for an infographic from Codex conversation/work history.
2026-07-02T05:13:04Z User clarifies: use everything Codex has done since installation.
2026-07-02T05:15:34Z Image generation completes for an initial poster-style infographic.
2026-07-02T05:16:59Z User rejects it as not technical enough.
2026-07-02T05:17:39Z Codex classifies local session history into technical categories.
2026-07-02T05:18:39Z Codex writes deterministic HTML/CSS technical breakdown.
2026-07-02T05:18:46Z Codex attempts to export HTML to PNG.
2026-07-02T05:19:00Z Codex reports Node is available but no browser binary was found.
2026-07-02T05:19:10Z Codex returns HTML only, not PNG.
2026-07-02T05:20:13Z User: "wow codex browser is so broken. send a bug report to devs"
2026-07-02T05:20:30Z Codex incorrectly stops at "no direct feedback tool" and offers a pasteable report.
2026-07-02T05:20:51Z User points out GitHub via gh is available.
2026-07-02T05:21:33Z Codex files this issue via gh.
2026-07-02T05:23:11Z User asks for more debug info.
2026-07-02T05:24:27Z Codex updates issue with concrete environment/debug details.
There are two bugs or product gaps in that timeline:
- The main bug: the Codex Desktop local browser/render/export path was not available or not callable in this projectless context.
- The secondary agent-behavior bug: Codex initially failed to use the obvious
ghpath for reporting even though GitHub CLI was authenticated and available. The user had to point at the sign that said "GitHub." Not ideal.
Expected behavior
Codex Desktop should expose a stable local browser/render/screenshot tool in this context, or provide an equivalent built-in export path for local HTML files.
Expected loop:
- Write local HTML/CSS file.
- Render the local file, ideally without relying on system Chrome/Edge installation discovery.
- Capture/export PNG or PDF.
- Return the final artifact path.
Actual behavior
No usable Codex browser automation/export path was available to the agent in the thread. The agent then attempted shell fallbacks to discover external browser binaries, but those also failed. The final deliverable was HTML only, despite the user wanting an infographic-style artifact.
Tooling checks performed
Codex/browser capability discovery
The agent previously attempted tool discovery for bug-report/feedback routing. The available dynamically exposed tools after that search included GitHub, Codex thread-management tools, and multi-agent tools, but no usable local browser render/screenshot/export tool for this workflow.
The session did have an available skill named browser:control-in-app-browser, but the relevant browser-control tools were not exposed as callable tools in the active turn. From the agent's perspective, this left no stable app-native way to open a local file and screenshot it.
That matters because this was exactly the kind of task where the app-native browser should be the reliable path. A local HTML report is not exotic. It is the "hello world" of visual deliverables with deterministic text.
Shell browser discovery
Command:
Get-Command msedge,chrome,chromium,chromium-browser,playwright -ErrorAction SilentlyContinue |
Select-Object Name,Source,Version
Observed result:
<no output>
Command:
$paths = @(
"$env:ProgramFiles\Google\Chrome\Application\chrome.exe",
"$env:ProgramFiles(x86)\Google\Chrome\Application\chrome.exe",
"$env:ProgramFiles\Microsoft\Edge\Application\msedge.exe",
"$env:ProgramFiles(x86)\Microsoft\Edge\Application\msedge.exe",
"$env:LOCALAPPDATA\Google\Chrome\Application\chrome.exe",
"$env:LOCALAPPDATA\Microsoft\Edge\Application\msedge.exe"
)
foreach ($p in $paths) {
[pscustomobject]@{ Path=$p; Exists=(Test-Path -LiteralPath $p) }
}
Observed result:
Path Exists
---- ------
C:\Program Files\Google\Chrome\Application\chrome.exe False
C:\Program Files(x86)\Google\Chrome\Application\chrome.exe False
C:\Program Files\Microsoft\Edge\Application\msedge.exe False
C:\Program Files(x86)\Microsoft\Edge\Application\msedge.exe False
C:\Users\Lawrence\AppData\Local\Google\Chrome\Application\chrome.exe False
C:\Users\Lawrence\AppData\Local\Microsoft\Edge\Application\msedge.exe False
Runtime/tool versions
PowerShell:
PSVersion: 5.1.19041.6456
PSEdition: Desktop
BuildVersion: 10.0.19041.6456
Node/npm/gh:
node v22.19.0
npm 10.9.3
gh version 2.93.0 (2026-05-27)
Codex session metadata:
session_id: 019f213d-e8d6-7fb2-aabd-ec029c3fcb76
cwd: C:\Users\Lawrence\Documents\Codex\2026-07-01\are
originator: Codex Desktop
cli_version: 0.142.5
source: vscode
model_provider: openai
Why this is likely a Codex Desktop/browser capability issue
The agent successfully generated the deterministic HTML deliverable. The failure was specifically at the local render/export step.
For Codex Desktop, this should not depend on whether the user's system has a discoverable Chrome/Edge install on PATH or in common install locations. If the app already has an embedded/in-app browser, browser plugin, or browser session machinery, the agent needs a reliable callable surface for:
- opening
file://or workspace-local HTML - waiting for layout
- capturing a screenshot at a specified viewport
- saving PNG/PDF into the workspace
If that surface is intentionally unavailable in projectless threads, Codex should report that clearly so the agent can stop instead of attempting brittle shell fallbacks.
Right now the agent experience is ambiguous: it can see that browser-related skill guidance exists, but it cannot actually call the corresponding browser controls. That creates the worst middle state: enough signal to try, not enough tool surface to finish.
Impact
This breaks a common high-value local deliverable workflow:
- create a deterministic HTML/CSS report, infographic, diagram, or dashboard
- preview it locally
- export a shareable PNG/PDF
It also produces a poor user experience because the underlying artifact generation succeeds, but Codex cannot complete the final export step.
In this particular thread, the user saw three separate papercuts stack up:
- the first generated infographic was too generic
- the corrected technical HTML artifact could not be exported to PNG
- the first bug-report response failed to use
ghuntil the user explicitly corrected it
Individually, each is survivable. Together, they are how a simple "make me a technical breakdown" task turns into a debugging invoice.
Account credit / token reimbursement request
The user also requests that the tokens spent generating and debugging this broken browser/export path be credited back to their account.
The blunt customer version: the user is paying to use Codex, hit a basic product workflow that should work out of the box, then had to spend a large amount of additional paid model usage proving that the product path was broken. This is not speculative "I did not like the answer" usage. This is usage caused by a missing or inaccessible first-party capability in Codex Desktop.
The user expectation is straightforward: if a paid product cannot complete a basic local browser/export workflow, the customer should not be charged for the cascading debug session required to identify and report that failure.
Local session token telemetry shows the following cumulative usage checkpoints for the affected session:
Checkpoint total_tokens input_tokens cached_input output_tokens reasoning_output
After initial poster 381,297 377,870 285,952 3,427 936
After technical HTML/export fail 775,649 766,089 617,344 9,560 2,093
After first GitHub issue filing 1,219,906 1,208,209 1,034,752 11,697 2,545
After expanded debug update 1,698,456 1,683,371 1,495,168 15,085 2,700
The latest local telemetry point was 2026-07-02T05:24:38.540Z:
total_tokens: 1,698,456
input_tokens: 1,683,371
cached_input_tokens: 1,495,168
output_tokens: 15,085
reasoning_output_tokens: 2,700
model_context_window: 258,400
This should be treated as a lower bound for the total cost of debugging/reporting this failure, because additional tokens were necessarily used after that telemetry point to update this issue with the reimbursement request.
The user request is: please credit back the tokens consumed by this failed browser/export workflow, including:
- the original attempted infographic path
- the corrected HTML technical breakdown path
- the failed local browser/export investigation
- the first incomplete bug-report attempt
- the GitHub filing and subsequent debug-info updates caused by the missing/broken browser capability
The cheeky version: please return the tokens that were burned proving the browser-shaped hole in the browser workflow.
The less-cheeky version: please refund/credit the account for the paid usage consumed by a Codex product failure. The user paid for Codex to do the task, not to bankroll a debugging expedition through Codex Desktop's missing browser export path.
Suggested fixes
- Expose a stable Codex Desktop browser/render/screenshot tool in projectless threads.
- Provide a built-in local HTML export path to PNG/PDF that does not depend on external browser discovery.
- If the browser skill exists but the callable tool is unavailable, surface a clear tool/capability error to the agent.
- Consider documenting the intended fallback path for local HTML rendering in Codex Desktop on Windows.
- Add an internal "report Codex bug" affordance or make the GitHub/issue path more discoverable to the agent. The user should not have to remind Codex that
gh issue createexists.
Notes
This report was filed from the affected Codex workflow via gh. If openai/codex is not the correct tracker for Codex Desktop browser issues, please route or label it appropriately.
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗