Codex Security sidebar and side chat fight for ownership, causing focus loop and React #185
What version of the Codex App are you using (From "About Codex" dialog)?
Codex Desktop / ChatGPT app 26.715.31925 (build 5551), bundle ID com.openai.codex.
What subscription do you have?
ChatGPT Pro.
What platform is your computer?
- macOS
27.0(build26A5368g) - Apple Silicon / arm64
What issue are you seeing?
A completed Codex Security workspace/sidebar and an ephemeral side chat fight for ownership of the same sidebar/aside surface.
The Codex Security tab cannot be permanently closed. Returning from or closing a side chat causes the completed Security workspace to rehydrate through mcpServer/resource/read and reclaim the parent route. At the same time, the side chat repeatedly toggles active/inactive. The focus/ownership loop ends in the app-wide AppRoutes error boundary with:
Minified React error #185
The source task remains healthy at the app-server level: its JSONL is valid and thread/read returns all completed turns. This is a renderer/resource-lifecycle failure, not transcript corruption, native OOM, or an active security scan.
What steps can reproduce the bug?
- Open a local task that has launched a Codex Security workspace.
- Complete the security scan. The Security workspace remains available in the sidebar.
- Open an execution-side/side chat from that task.
- Submit work in the side chat.
- Leave or close the side chat and return to the parent task.
- Try to close or navigate away from the Codex Security tab.
- The Security resource reappears/steals focus, while the side chat repeatedly changes view activity.
- The main window enters the
AppRouteserror boundary with React#185.
This was reproduced again after recovering the source task into a fork.
What is the expected behavior?
- Closing or leaving a completed Codex Security workspace should dispose its sidebar ownership until explicitly reopened.
- A side chat and an MCP App resource must not simultaneously own or repeatedly reclaim the shared sidebar.
- Leaving a side chat should unregister its view-activity and sidebar bindings before the parent resource is rehydrated.
- If either panel fails, the failure should remain scoped to that panel and not crash the complete task view.
- Codex Security should expose a reliable close/dispose workspace lifecycle operation.
Additional information
Sanitized timeline from a reproduction:
17:24:38.737 parent task becomes active; sidebar owner sync targets parent
17:24:38.755 ephemeral side chat becomes active
17:24:38.784 mcpServer/resource/read succeeds for the parent task
17:24:38.830 ephemeral side chat becomes inactive
17:24:38.838 parent sidebar owner sync/rebind repeats
... active=true/false and owner-sync/rebind repeat dozens of times ...
17:24:39.757 AppRoutes error boundary: Minified React error #185
The component stack includes the shared aside subtree.
Diagnostics and workarounds:
- The scan was already complete, so this is not a progress-update race.
- The exposed Codex Security MCP surface has open/reopen operations but no close/dispose workspace operation.
- Archiving the ephemeral side chat does not clear already-bound renderer state.
- Forking the parent preserves the historical Security workspace/tool record and remains susceptible.
- Creating a clean normal project task with the recovered prompt, without inheriting the Security workspace record, avoids the collision.
- No macOS native crash report is produced.
Related but distinct: #32151 reports a generic side-dialog/browser-sidebar rebind loop and was said to be fixed in a subsequent release. This report identifies a remaining plugin-specific lifecycle conflict on the newer 26.715.31925 build: a persistent completed Codex Security MCP resource competes with an ephemeral side chat and cannot be disposed.
Supporting reproduction comments on #32151:
- https://github.com/openai/codex/issues/32151#issuecomment-5016677748
- https://github.com/openai/codex/issues/32151#issuecomment-5016714444
Raw task IDs and full logs are intentionally omitted because the affected task contains security-review material. Targeted sanitized excerpts can be provided if maintainers need more detail.
This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗