# Codex/MCP page-script development smoke

Date: **2026-09-23**. This is one visible synthetic attempt per entry, not a held-out or repeated claim of product superiority. The same native `codex exec` agent (`codex-cli 0.155.0-alpha.9.2`, `gpt-6-astra`, `ultra`) used the same resettable authenticated-response task and 300 s outer deadline. Browser Use was pinned to `d8110c5ff87ccba887aaa726cdb780f2f84bef8d`; its Harness dependency was pinned to `afbcc381b963040c19627d788e40c7e7663171ee`. The task starts with a cross-origin authorization popup. The receipt reference is only in a JSON response, and the independent service accepts exactly one correct submission in the original app tab.

| Direct MCP entry | Independent business judge | Codex process | Input / output tokens | Server records |
| --- | --- | ---: | ---: | --- |
| Tablaze `--page-script` | **Pass** | 198.359 s | 317,115 / 1,557 | 1 authorization, 1 receipt GET, 1 correct write, 0 duplicates |
| Browser Use `--cli-mcp` | **Pass** | 239.400 s | 340,202 / 2,461 | 1 authorization, 2 receipt GETs, 1 correct write, 0 duplicates |

Both Codex processes exited 0 before the deadline. The Tablaze trace contains four completed `tab_script` calls, including page-source inspection and authenticated response access; the model did not merely ignore the new tool. One intermediate `tab_verify` failed, then later verification succeeded. Browser Use used twelve completed `browser_exec` calls and three screenshots. The business judge uses server state, not the final agent statement.

The Codex-process clock includes model inference, MCP calls and automatic review; it excludes fixture/Chrome setup, judging and teardown. **Browser setup differs:** Tablaze launched its own isolated Chrome through `--channel chrome` because page scripts deliberately reject external CDP; Browser Use CLI-MCP attached to a prestarted isolated Chrome. Tablaze's browser launch was inside the Codex-process clock while Browser Use's launch was before it. The observed 41.041 s difference is therefore only a sample, not a controlled speed advantage. The task checks one network workflow, not host Python execution, raw CDP, files, production OAuth or general reliability.

The tested Tablaze source commit was `11e817e1c4730a6557fe2ef2cd19c0c464d433bb`. SHA-256: `src/page-script.ts` `c2b69111b6b214e52be7c3c06af103f41a7267b851f736ed88dc1429eaa5bdf4`, built `dist/page-script.js` `68eacf387f1315f34cc9aa34302bdb0756a79c9e767ea73e1b0b04ce69223878`, runner `bf6745c7bcd931548ecd2395ee35e92ee16e206b58708503e48258bf073b6889`. The runner's `TABLAZE_MCP_PAGE_SCRIPT=1` switch was added after that source commit and selected Tablaze's owned-browser path, without changing the task service or judge. [Raw report](evidence/native-mcp-page-script-v1.json) records settings, command arguments, exact accepted-write counts and per-arm hashes; [Tablaze trace](evidence/native-mcp-page-script-v1.json.tablaze.jsonl) and [Browser Use trace](evidence/native-mcp-page-script-v1.json.browser-use-cli-mcp.jsonl) preserve the complete model-visible events. Their SHA-256 values are respectively `63c78c95e9db46ff752589e981bd6f293b5064be88ef288a40d2c52fa728098d`, `e4dbe1056518e8d660091eab3379bebda18e646d3caacd9b42812613249673ec`, and `626552f5de92998766bf9658e147a2558d926c147e89d482fc1f137139ec13ba`.

The opt-in feature and its limits are documented in [the page-script contract](PAGE_SCRIPT.md). Earlier network-journal attempts used a different Tablaze interface and are retained separately in [the response-journal smoke](CODEX_NETWORK_RECEIPT_SMOKE.md); these attempts must not be pooled into a success rate.
