How I got Computer Use and Browser Use running with Codex in E2B A developer documented a custom integration that runs OpenAI's first-party Computer Use and Browser Use runtimes inside an E2B sandbox, pairing the Codex CLI with a virtual Linux desktop built from Xvfb, Openbox, and Chromium. The setup extracts runtime artifacts from a pinned ChatGPT Linux package, registers cua_repl and node_repl as MCP servers, and relies on persistent kernels and installed skills to drive screenshots, OS input, and browser automation. The developer noted that Browser Use spawns a separate native Codex child for authentication that cannot inherit the main process's in-memory credentials. I wanted my background coding agent to use the app it was building. Open Chromium, inspect the page, click through a flow, and see whether it actually works. I got it running with codex app-server , OpenAI’s first-party computer/browser runtimes, and a Linux desktop inside E2B. Here’s how I put it together, including the auth issues that took me a while to figure out. My E2B image runs: Xvfb :99 └─ Openbox └─ Chromium + OpenAI's Chrome extension Xvfb provides a virtual screen. Openbox manages the windows. Chromium runs as a desktop application on that screen. The desktop and tool runtimes share: DISPLAY=:99 I didn’t need XFCE or the ChatGPT Electron UI. The agent can capture screenshots and interact with the desktop without a human streaming it. Installing the Codex CLI alone doesn’t give you the computer/browser stack. I extracted the runtime artifacts from a pinned Linux ChatGPT package: - the bundled Node runtime and node repl - the chrome and unified-computer-use plugins - the native messaging host - the first-party skills, including the Linux Sky instructions I installed the matching Chrome extension separately and preserved its extension ID. The combination I tested: | Artifact | Version | |---|---| | ChatGPT Linux package | 26.901.51231 | | Codex CLI | 0.153.4 | | Chrome extension | 1.26.901.11451 | I verified the download hashes and checked that the bundled and canonical Codex versions matched. This is a custom integration using the packaged runtime, not an official standalone installation recipe. I keep the images private; the runtime artifacts are proprietary. codex app-server │ ├─ cua repl │ └─ Linux Sky helper │ └─ screenshots + keyboard/mouse input │ └─ node repl └─ first-party browser service └─ native messaging host └─ Chrome extension └─ Chromium Computer Use works through screenshots and operating-system input. Browser Use provides browser-specific APIs through the extension. I also installed Playwright CLI as a separate tool. It isn’t Playwright MCP, and it doesn’t replace either first-party runtime. I registered cua repl and node repl as MCP servers in the image’s Codex configuration. The important settings are: Computer Use: DISPLAY=:99 CUA REPL ENABLED SURFACES=computer Browser Use: DISPLAY=:99 BROWSER USE AVAILABLE BACKENDS=chrome NODE REPL TRUSTED SERVICES={"browser":"