[Desktop][Browser] Closing an in-app tab leaves media running
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 125k
- Forks
- 19.4k
- PR merge metrics
- PR metrics pending
Description
Summary
Clicking Close on a Codex Desktop in-app browser tab removed it from the visible tab list, but a YouTube video inside it continued playing audio. The hidden tab remained accessible through the “tabs playing audio” control.
Reproduction
- Open a YouTube video in the in-app browser.
- Start playback.
- Click Close on the browser tab.
- The tab disappears, but its audio continues.
- Open “tabs playing audio”: the supposedly closed tab is still present.
- Reopen it, pause, and close again; audio stops.
Observed once; repeatability is not yet confirmed.
Expected
Close should destroy the page and release its renderer, frames, media, timers, network activity, CPU, and memory.
If keeping tabs alive is intentional, it should be explicit/configurable—e.g. Hide / Keep alive—and separate from Close.
Why this matters
The Codex browser is developer-facing tooling. Developers expect visible lifecycle actions to match actual process/resource state. Hidden execution creates invisible behavior, resource usage, and debugging uncertainty.
Evidence
- In-app browser API reported zero open/controlled tabs.
- MPRIS still exposed a Chromium media session owned by the main ChatGPT process.
- Residual metadata:
MeshCentral - Assistant, duration725.721 s, position665.192 s. playerctl stopchanged it toStopped; PipeWire then showed no ChatGPT audio output.- The MPRIS title may identify the parent browser surface, not the embedded YouTube video.
Environment
- ChatGPT/Codex Desktop
26.820.60940 - Embedded Chromium
151.0.7922.170 - Arch Linux
7.1.3-arch1-3, i3/X11 - PipeWire
1.6.8 chatgpt-desktop 26.820.60940-1, repackaged from the official binary- Developer mode was not intentionally enabled
Related
Possibly shares lifecycle/cleanup causes with #28352, but this case is distinct: an embedded visible tab is closed while its media session remains alive, rather than leaked headless Playwright workers after a task/session closes.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reproducing the in-app browser tab-close flow with a playing YouTube video, then trace the close lifecycle and renderer/media cleanup entry points. Verify the fix by checking that the tab disappears from the audio-tabs control, MPRIS reports no remaining session, and PipeWire has no ChatGPT audio output.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- desktop
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 43/100