Browser skill is mounted in CLI TUI even when no in-app browser backend is available
What issue are you seeing?
When using the Codex CLI TUI directly, the bundled Browser / in-app browser skill is still mounted and advertised even though there is no Codex desktop app in-app browser backend available for the session.
This makes @Browser / $browser look usable in the CLI TUI, but the Browser runtime cannot discover any browser backend:
agent.browsers.list() => []
agent.browsers.get("iab") => Browser is not available: iab
The confusing part is that the skill itself is present and its browser-client.mjs can be loaded, so the agent spends time trying the Browser bootstrap path before discovering that no iab backend exists. In a pure CLI TUI session, there is no in-app browser pane for the skill to attach to.
Environment
- Codex CLI:
codex-cli 0.135.0 - Platform: macOS 26.5 / Darwin 25.5.0 arm64
- Session type: CLI TUI launched directly from a terminal, not the Codex desktop app
- Browser plugin cache exists locally under
~/.codex/plugins/cache/openai-bundled/browser/...
Steps to reproduce
- Launch
codexas the CLI TUI directly from a terminal. - Ask Codex to use
$browser/@Browserfor a quick in-app browser check. - Observe that the Browser skill is mounted and the agent attempts to use the Browser plugin.
- The runtime reports no available browser backend, e.g.
agent.browsers.list()returns[]andagent.browsers.get("iab")fails.
Expected behavior
For CLI TUI sessions that are not attached to a Codex desktop app in-app browser backend, either:
- do not mount/advertise the in-app Browser skill at all, or
- expose it as unavailable with a clear immediate message such as:
The in-app browser requires the Codex desktop app and is unavailable in CLI TUI sessions.
Actual behavior
The Browser skill is mounted and looks available, but no usable browser backend exists. This makes the failure look like a broken Browser plugin, missing extension, or IAB discovery regression, when the real issue is that the CLI TUI has no in-app browser surface.
Why this matters
It causes avoidable confusion between three separate cases:
- Codex desktop app in-app browser (
iabbackend) - Codex Chrome extension / real browser control
- CLI TUI with no browser backend
For users who explicitly do not want the Chrome extension and only want the in-app browser, the current CLI TUI behavior suggests that in-app browser support should work when it cannot.
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗