Repository navigation
macOS Desktop: Browser/node_repl tools are not provisioned to Remote SSH tasks #34263
Description
Summary
The bundled Browser works from a Local Codex task in the macOS desktop app, but tasks running on Linux hosts through the desktop app's Remote SSH connection are not provisioned with the Browser runtime or the required node_repl/js tool.
The right-side in-app browser can be opened manually and its ambient URL is visible to the remote task, but the remote task cannot navigate, inspect, click, scroll, or read the page.
Environment
- Desktop client: macOS ChatGPT/Codex desktop app
- Browser bundle observed in a working Local task:
openai-bundled/browser/26.715.21425 - Remote Codex CLI:
codex-cli 0.144.6 - Remote OS: Ubuntu Linux 6.8 x86_64
- Reproduced on two separate Linux Remote SSH hosts
- Same desktop app, account, and authenticated built-in Browser profile in all tests
Reproduction
- In the macOS desktop app, enable/install the bundled Browser plugin and sign in to a website in the built-in browser.
- Start a Local Codex task.
- Ask Codex to use the built-in browser.
- The Local task exposes
node_repl/js, importsbrowser-client.mjs, connects withagent.browsers.get("iab"), and can navigate/read the page. - Start a task on a saved Linux Remote SSH host in the same desktop app.
- Open the right-side built-in browser and ask the remote task to inspect or navigate it.
- Tool discovery in the remote task exposes no
node_repl/jsand no Browser control tool. The remote filesystem also has no bundled Browser client. - Starting a fresh Remote SSH task does not change the result.
The Local task can use the authenticated Browser profile successfully. The Remote SSH task can only see ambient UI state such as the current URL and cannot control the page.
Expected behavior
A Remote SSH task opened from the desktop app should receive a bridge to the desktop app's local built-in Browser while its shell and filesystem operations continue to run on the remote host.
If Browser control is intentionally unsupported for Remote SSH tasks, the app and Browser documentation should state that clearly and the task should report a specific unsupported-surface error.
Actual behavior
The Browser pane is visible to the user and ambient browser state is supplied to the remote task, which implies integration, but the execution bridge required to act on that state is absent. The failure is silent: the model simply has no Browser or node_repl tool.
Workaround
Delegate the browser-only step to a separate Local task, then relay extracted data back to the Remote SSH task. This works but is fragile for scheduled workflows, durable state, approvals, and task continuity.
Related issues
This appears to be the macOS Remote SSH equivalent of the tool-provisioning failures reported in:
- Windows Codex App: Browser Use unavailable because Node REPL tool is not exposed #19365
- Browser Use not available on Windows 11 WSL: no node_repl tool or browser-use socket #21575
Those reports involve Windows/WSL, but the key symptom is the same: Browser is installed/enabled while the active non-local task does not receive node_repl/js or the IAB bridge.
Activity
github-actions commentedon Jul 20, 2026
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
Powered by Codex Action
antonincohen commentedon Jul 20, 2026
Reviewed the suggested duplicates:
node_replto ordinary new/local tasks. In this report, Local tasks work reliably.I also searched the repository for Remote SSH + Browser/
node_replreports. #26560 is remote-control related, but it has a different failure mode:node_replis attached and launches with the wrong controller-side environment. Here, Remote SSH tasks receive no Browser/node_repltool at all, while a Local task in the same macOS Desktop app works.Keeping this issue open because the Remote SSH boundary is the distinguishing and reproducible trigger.
nepfaff commentedon Aug 25, 2026
Reproduced on a newer release with an SSH-backed Linux devcontainer.
Environment:
26.820.609400.149.1codex app-serveris launched inside an existing Docker devcontainer@BrowsersuccessfullyRemote-task results:
@Browseris unavailable.node_repl/jsor Browser-control tool is provisioned.browser@openai-bundledorchrome@openai-bundled.browser_use,in_app_browser,computer_use, and full-CDP feature flags are enabled.codex doctorreports the app-server, configuration, authentication, and WebSocket connection as healthy.Since this also occurs on ordinary Remote SSH hosts, Docker does not appear to be the root cause. The devcontainer setup confirms that redirecting the remote app-server through
docker execdoes not receive a bridge to the Mac session-owned IAB backend.Expected behavior remains either:
@Browseras unsupported and avoid injecting ambient browser state that the task cannot act upon.linonetwo commentedon Aug 27, 2026
Additional reproduction on a newer Remote SSH task, with one product/security detail that seems important for the expected fix.
Environment
codex-cli 0.150.0-alpha.8Reproduction
codex_app__open_in_codex. That tool can show/open a URL or target a tab in the Codex UI, but explicitly is not an inspection or interaction interface.node_repl/browser-client tool.This matches the Remote SSH provisioning boundary described in this issue. It reproduces on Windows Desktop + Debian remote as well as the macOS + Linux configurations already reported.
Impact / workaround
For browser-based acceptance testing, the remote task must separately download and run Playwright/Chromium on the remote host. That is slow, consumes remote storage, and creates a different browser profile/session from the authenticated tab the user is watching. It does not satisfy workflows where the user wants to observe and review actions in the existing Codex Browser tab.
Expected security and UX contract
Please provide a controlled, auditable bridge for the current user-authorized tab while shell/filesystem work remains remote. At minimum it should support page read/DOM or accessibility inspection, screenshot, click, type/fill, and navigation on the explicitly authorized tab.
Sensitive values typed into forms should be passed as protected tool arguments, not embedded in URLs, model-visible logs, or diagnostic output. Agent actions and their resulting page state should remain visible to the user in that same Codex Browser tab.
If bridging the Desktop-owned tab into Remote SSH tasks is intentionally unsupported, the app should clearly say so and should not imply controllability merely by supplying ambient tab state plus
open_in_codex.linonetwo commentedon Aug 28, 2026
Reproduced again on 2026-08-28 in a real browser-acceptance workflow. This is a product capability gap, not a security-vulnerability report.
Environment
codex-cli 0.150.0-alpha.8Latest reproduction and impact
Suggested authorization and UX boundary
A Desktop-to-Remote bridge should be explicitly opt-in and scoped to a user-authorized task and tab:
If this bridge is intentionally unsupported for Remote SSH, the composer and ambient browser context should clearly say that the tab is view-only for the remote task rather than implying that Browser Use is available.
linonetwo commentedon Aug 29, 2026
Additional real-world reproduction from Codex Desktop with a managed Remote SSH workspace (2026-08-29): the desktop user had an in-app browser tab open on a deployed trial site, and the remote task received ambient tab URL/title context, but the remote agent had no browser/node_repl tool capable of controlling that existing tab. Codex CLI 0.150.0-alpha.8 on the remote Linux host could run terminal-based API checks, and a separately downloaded Playwright Chromium could test the site headlessly, but neither path could drive the user-visible Codex App tab or show those interactions to the desktop user. This creates an important acceptance/audit gap: the user explicitly asked to watch the agent test the already-open tab, yet the agent could only provide off-screen screenshots and logs. Expected: a consent-gated bridge exposing the selected App browser tab to the remote task, with visible focus/action indicators and a clear read/write audit trail. Related symptom/overlap: #22844.
antonincohen commentedon Sep 2, 2026
Reproduced again on 2026-09-02 in a current real-world authenticated admin workflow.
Environment
codex-cli 0.151.06.17.0-1018-azure, x86_64Current result
node_repl/js, or equivalent IAB bridge.This prevented the Remote SSH task from inspecting configuration in an authenticated third-party admin portal that was visibly open in the Codex Browser pane. No private URL, page content, credentials, or customer data are included here.
Documentation discrepancy
The current official help article says that with the built-in browser, “You and ChatGPT can see the same page,” and instructs the user to ask ChatGPT to use the current page:
https://help.openai.com/en/articles/20001277-using-the-built-in-browser-in-the-chatgpt-desktop-app
The article does not identify Remote SSH as unsupported. Because the Desktop UI still exposes the Browser and sends ambient tab context into the remote task, the present behavior looks like a silent provisioning/bridge failure rather than an intentional, clearly communicated limitation.
Expected remains: forward a consent-gated controller for the selected Desktop tab into the Remote SSH task, or explicitly mark the Browser pane as view-only/unsupported for that task and do not imply that the agent can use it.
Crokily commentedon Sep 9, 2026
Additional reproduction on 2026-09-09.
Reproduced a similar symptom with the macOS Codex desktop app 26.901.51231 (Build 8109) connected to a remote Linux ARM64 host over SSH (remote Codex CLI 0.153.4).
Observed:
Additional isolation:
The failure appears to be in availability of the browser interaction tools for this remote task; I have not established the underlying cause.
Is browser interaction from SSH-backed tasks currently supported? If so, which diagnostics would help distinguish runtime provisioning from the app-to-remote control bridge?
Clauber commentedon Oct 3, 2026
I’m also experiencing this with the Mac desktop app connected to a Linux host through Remote SSH. This same workflow worked for me until last week, so this appears to be a regression. I haven’t identified the exact update or change that triggered it.
Environment
26.930.31730(build12947)codex-cli 0.160.0x86_646.17.13-2-pveObserved behavior
The in-app Browser loads pages normally, and the chat receives ambient browser context, including the current URL. However, the remote chat no longer has native browser-control tools available to inspect the page, click, or type. Explicitly requesting
@Browserand retrying did not expose those tools.The remote host’s bundled plugin cache contains only
visualize, while the browser-related plugins are present on the Mac. No nativenode_replorcua_replbrowser-control tools appear in the remote chat’s available tool inventory.This seems consistent with the desktop browser-control runtime no longer being provisioned or bridged into the remote session. I haven’t yet tested a local Mac chat as a comparison.
Is there a known recent regression affecting browser control in Remote SSH chats, or a recommended recovery procedure? Happy to provide targeted, sanitized diagnostics.