Skip to content

Desktop codex_app MCP tools break strict Responses providers (Meta): Recursive JSON schemas not supported #44144

Open

Description

@mykhailoyermolenko

What

On ChatGPT/Codex Desktop (Windows, app 26.903.8094.0, bundled codex 0.153.4), any request with model routed to Meta's Responses API via OpenCode Go (muse-spark-1.3-contributor, https://opencode.ai/zen/[go/v1/responses](https://www.golinks.io/v1/responses?trackSource=github)) fails immediately, before any tool executes:

Error from provider (Console Go): Upstream request failed: [invalid_request_error] Recursive JSON schemas are not currently supported

Meta documents that recursive schemas return HTTP 400 (https://ai.developer.meta.com/docs/features/structured-output). GPT models accept the same request fine.

Desktop-only

Same machine, same codex version (bundled 0.153.4 binary), same config/model/provider: codex exec succeeds (PROVIDER_OK). Only Desktop fails. The delta between CLI and Desktop is the Desktop-injected mcp_servers.codex_app (automation_update, create_thread, send_message_to_thread, fork_thread, handoff_thread) plus Desktop-managed node_repl. All user MCP servers disabled, all [plugins] identical in the passing CLI run. By elimination the recursive $ref comes from the Desktop-only app tools (nested message/thread content shapes are the classic pattern).

Ask

Either sanitize recursive $refs in tool schemas before sending (inline local refs / replace cycles with permissive object, cf. anomalyco/opencode#29295 / #16910), or support user-side disabling of codex_app tools. Currently a user-side [mcp_servers.codex_app] table without full transport is rejected (invalid transport), and the table is injected via -c so it can't be overridden from config.toml.

Repro

  1. Provider with wire_api=responses pointing at a strict Meta endpoint, model muse-spark-1.3-contributor + model_catalog_json entry.
  2. Desktop: send anything (even 'yo') -> instant invalid_request_error.
  3. Same binary CLI exec -> works.

Activity

  1. added
    bugSomething isn't working
    appIssues related to the Codex desktop app
    windows-osIssues related to Codex on Windows systems
    mcpIssues related to the use of model context protocol (MCP) servers
    custom-modelIssues related to custom model providers (including local models)
    on Sep 9, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    appIssues related to the Codex desktop appbugSomething isn't workingcustom-modelIssues related to custom model providers (including local models)mcpIssues related to the use of model context protocol (MCP) serverswindows-osIssues related to Codex on Windows systems

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions