Visualize skill over-triggers on standalone HTML requests and leaks inline layout constraints
What version of the Codex App are you using?
26.707.72221 (build 5307)
What platform is your computer?
macOS 15.7.7 (24G720), arm64
Visualize plugin version
1.0.11 (visualize@openai-bundled)
What issue are you seeing?
The bundled Visualize skill can be implicitly selected for requests whose intended deliverable is ordinary HTML, such as a standalone page, website, app component, or project dashboard. Prompts involving comparisons, scenarios, charts, dashboards, or interactive content overlap with the skill's broad description even when the user did not invoke $visualize or @Visualize and did not ask for an in-conversation visualization.
Once selected, the skill's conversation-specific HTML contract leaks into the unrelated HTML deliverable. That contract includes fragment-only markup, thread-scoped visualization files, the inline response directive, host theme and utility classes, and a layout designed for 736px with support down to 320px. As a result, HTML intended for a normal browser or application can be unnecessarily narrow and structured like a single-use Codex conversation embed.
The skill does say to use the open project for a site, app page, component, or project change. However, its later composition, layout, typography, color, and design-system requirements are not explicitly scoped to inline conversation output, so those rules can still influence the generated project HTML.
What steps can reproduce the bug?
Skill selection is model-dependent, but prompts of this form expose the routing overlap:
- Install and enable
visualize@openai-bundled. - Start a new Codex app task without selecting or naming Visualize.
- Ask:
Create a standalone HTML dashboard in the project that compares three deployment options. Make it appropriate for a desktop browser. - Observe whether the Visualize skill is selected implicitly or its inline design constraints appear in the generated HTML.
- Inspect the output for fragment-only structure, host-specific classes or theme variables, a narrow 736px-oriented composition, or other inline-conversation constraints.
This also occurs with other requests to generate HTML for a website, app UI, component, dashboard, or prototype when the wording overlaps with the skill's comparison, scenario, chart, or exploration triggers.
What is the expected behavior?
- Visualize should activate only when explicitly invoked, or when the requested deliverable is clearly a visualization rendered inside the current Codex conversation.
- Standalone HTML, websites, app pages, components, dashboards, email HTML, and project files should follow their destination and project layout requirements.
- Inline fragment, host design-system, response-directive, CSP, and 736px-to-320px constraints should be strictly scoped to the in-conversation visualization destination.
- Exporting an existing inline visualization may adapt that visual for another destination, but unrelated standalone HTML should not be built through the inline contract first.
Suggested fix
- Set
policy.allow_implicit_invocation: falsefor this specialized rendering surface, or substantially narrow the skill description and add explicit negative triggers for standalone/project HTML. - Add a destination-scope gate at the top of the skill so host-specific constraints apply only to inline conversation output.
- Make direct standalone/site/app requests build for their destination rather than first creating an inline fragment.
Additional information
A global ~/.codex/AGENTS.md instruction can mitigate the output behavior, but it cannot override the skill's machine-level implicit-invocation policy. A personal fork can change that policy, but then duplicates the skill source and becomes stale when the bundled plugin updates. This needs an upstream metadata and scope fix to avoid either tradeoff.