# Codex In App Browser

> Drive the Codex in-app browser (open, navigate, click, type, screenshot, read page state) through the app's own node_repl runtime. Use when the session uses a custom (non-OpenAI) model, for example deepseek-v4-flash or mimo-v2.5, and the user asks to use the in-app browser, open or navigate a page in it, test a local app in a browser, or click, type, or take a screenshot in the Codex browser panel.

- Skill: `duolahypercho/codex-in-app-browser` (Agent Skill)
- Install (CLI): `npx skillmds@latest add duolahypercho/codex-in-app-browser`
- Raw SKILL.md: https://api.skillmd.com/api/skills/duolahypercho/codex-in-app-browser/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: duolahypercho (https://skillmd.com/u/duolahypercho)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/duolahypercho/codex-in-app-browser

---


# Codex In-App Browser

The tool is `mcp__node_repl__js`. It is available in this session.

## First: read the official skill

The official skill is authoritative. Read it before any browser work:

`~/.codex/plugins/cache/openai-bundled/browser/<version>/skills/control-in-app-browser/SKILL.md`

Find the latest `<version>` directory (for example `26.803.41515`).

## Bootstrap (once per session)

Send this as ONE line through `mcp__node_repl__js`:

```js
if (globalThis.agent?.browsers == null) { const { setupBrowserRuntime } = await import("<plugin root>/scripts/browser-client.mjs"); globalThis.agent = await setupBrowserRuntime(); }
```

Replace `<plugin root>` with the browser plugin path. Then bind the
in-app browser and read its documentation:

```js
globalThis.iab = await agent.browsers.get("iab");
nodeRepl.write(await iab.documentation());
```

Read the complete documentation output before interacting with the page.

## Rules

- Send code as ONE line, or use `@file:<path>` with a trailing newline.
  The runtime fires on newline; input without a trailing newline silently
  does nothing.
- Reuse the existing `agent` and `iab` bindings on later turns. Do not
  reinitialize.
- `open_in_codex` only OPENS a tab. It cannot click, type, or read. Use
  `mcp__node_repl__js` for interaction.
- Never start your own node_repl process and never write a side-channel
  driver. Use the tool you were given.

## If the tool is missing

Stop and report that `mcp__node_repl__js` is not in the tool list. Do not
build workarounds.

