Skip to content

Codex app cannot run design-interview's visual choice flow: file:// board is blocked and no interactive choice tool is available #33

Description

@devswha

Summary

Running the design-interview skill inside Codex Desktop exposes two related integration failures:

  1. The skill generates an option-board URL as file://..., but Codex Browser rejects file:// navigation with the Browser Use URL policy, leaving the in-app browser on about:blank.
  2. The skill expects a host interactive question tool (AskUserQuestion / request_user_input) for selecting one of the board options, but in Codex Desktop Default mode that choice UI is not usable, so the user must type numbers manually.

Together these break the intended "show the board, then ask one multiple-choice question" flow.

Environment

  • OS: Windows, Codex Desktop
  • Workspace: C:\Users\devsw\OneDrive\문서\design-interview
  • Skill: design-interview@0.1.0 from C:\Users\devsw\.claude\skills\design-interview
  • OMO plugin: @sisyphuslabs/omo-codex-plugin@4.11.1
  • Browser plugin path: C:\Users\devsw\.codex\plugins\cache\openai-bundled\browser\26.609.41114
  • Codex version: unable to query locally; codex --version failed with Access is denied
  • Bundled Node used for skill CLI: C:\Users\devsw\.cache\codex-runtimes\codex-primary-runtime\dependencies\node\bin\node.exe

Repository Decision

  • Target repository: current design-interview repo, or the Codex/LazyCodex integration repo that owns skill-host adapters.
  • Why this belongs there: the failure is at the boundary between a bundled/installed skill contract and Codex Desktop host capabilities.
  • LazyCodex / skill evidence:
    • design-interview/src/cli.js:240-241 prints res.url with the comment file:// 링크 — 호스트 브라우저로 바로 열 수 있는 보드 링크.
    • design-interview/src/board.js:349-350 returns pathToFileURL(out).href.
    • design-interview/core/interview.md:68-69 documents that Codex app should open the file:// option-board URL and that the board answer should be received through AskUserQuestion.
  • Codex Browser evidence:
    • Browser skill docs at control-in-app-browser/SKILL.md:3 say local targets include file://.
    • Runtime rejected the generated board URL with: Browser Use cannot visit the requested page because its URL is blocked by the Browser Use URL policy.
    • Serving the same HTML through http://127.0.0.1:8787/design-interview/design-interview-option-board.html rendered correctly in the in-app browser.

Reproduction

  1. In Codex Desktop, run the design-interview skill on an HTML file.
  2. Generate an option board:
    & '...\node.exe' '...\design-interview\src\cli.js' board '.\design-interview-round1-options.json' --out '.\design-interview-option-board.html'
  3. Observe that the command returns a file:///.../design-interview-option-board.html URL.
  4. Attempt to open that file:// URL in the Codex in-app Browser.
  5. Observe that the browser remains on about:blank and the runtime rejects the navigation.
  6. Continue the interview round in Default mode.
  7. Observe that no Codex App multiple-choice picker is available; the user must type 1, 2, 3, etc. in chat.

Expected Behavior

  • The option board should open visibly inside Codex Desktop without requiring a manual workaround.
  • The user should be able to select a choice through the host interactive question UI, or the skill should clearly and automatically fall back to typed-number chat.

Actual Behavior

  • file:// board navigation is blocked by Browser Use URL policy.
  • The board does not appear until the agent starts a local static server and opens a http://127.0.0.1:<port>/... URL.
  • The intended interactive choice tool is unavailable in Codex Desktop Default mode, so the experience degrades into manual number entry.

Evidence

  • Browser rejection:
    Browser Use rejected this action due to browser security policy.
    Reason: Browser Use cannot visit the requested page because its URL is blocked by the Browser Use URL policy.
    
  • Working workaround:
    http://127.0.0.1:8787/design-interview/design-interview-option-board.html
    
    The in-app browser rendered option cards 1-5 after this localhost fallback.
  • Source evidence:
    design-interview/src/cli.js:241 console.log(res.url); // file:// ...
    design-interview/src/board.js:350 return { path: out, url: pathToFileURL(out).href, ... }
    design-interview/core/interview.md:62 answers are expected through AskUserQuestion
    design-interview/core/interview.md:68 openBoard(url) receives a file:// link
    

Root Cause

The skill contract assumes file:// option-board URLs are valid Codex Browser targets and that Codex exposes a working interactive choice tool for skill interviews. In the observed Codex Desktop runtime:

  • file:// is blocked by Browser Use URL policy.
  • The available interactive choice tool is not usable in Default mode for this skill flow.

The generated HTML itself is not the problem: the same board rendered correctly once served over 127.0.0.1.

Proposed Fix

  • Add a Codex-specific openBoard adapter:
    • Prefer http://127.0.0.1:<free-port>/... for generated board files in Codex Desktop.
    • Keep file:// only for hosts where it is actually supported.
    • If Browser policy rejects a URL, surface a structured fallback reason and automatically retry through the localhost adapter.
  • Update Browser plugin docs or policy:
    • Either allow safe file:// navigation for generated workspace artifacts, or remove file:// from the supported-local-target wording.
  • Fix the choice tool surface:
    • Expose AskUserQuestion / request_user_input for skill-driven multiple-choice rounds in Codex Desktop Default mode, or
    • Update the skill adapter to declare that Codex Desktop uses typed-number fallback and never imply that clickable choices will appear.

Verification Plan

  • Generate a board with node src/cli.js board ... --out ....
  • In Codex Desktop, verify the board opens without a security rejection.
  • Verify the browser URL is either an allowed file:// URL or an automatically started http://127.0.0.1:<port>/... URL.
  • Run a full design-interview round and verify the user can select one of 3-5 options through the intended Codex UI or a clearly labeled typed fallback.
  • Regression check: confirm GJC/Claude hosts that already support file:// are not broken.

This issue or PR was generated by LazyCodex.
Tag: lazycodex-generated

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions