Skip to content

gpt-5.3-codex-spark fails on official OpenAI path with unsupported reasoning.summary #18791

Closed as not planned

Description

@50sotero

Description

Using the official OpenAI provider path in OpenCode, selecting openai/gpt-5.3-codex-spark fails with:

Unsupported parameter: 'reasoning.summary' is not supported with the 'gpt-5.3-codex-spark' model.

This does not look like a local-config-only problem, and it does not appear to have been introduced specifically by v1.3.0.

What I verified:

  1. Exact repro on current OpenCode 1.3.0

    • Command used:
      opencode --model openai/gpt-5.3-codex-spark --prompt "Reply with the single word pong."
    • OpenCode displayed the exact error above in the session UI.
  2. Not caused by my local routing config

    • My active ~/.config/opencode/oh-my-opencode.json is currently routed to gpt-5.4 / gpt-5.4-mini, not Spark.
    • With a clean temporary home and only minimal config:
      OPENCODE_CONFIG_CONTENT='{"provider":{"openai":{}}}' HOME="$tmpdir" XDG_CONFIG_HOME="$tmpdir/.config" opencode models openai --verbose
      stock OpenCode still lists openai/gpt-5.3-codex-spark and its variants still include reasoningSummary.
  3. The relevant behavior predates 1.3.0

    • packages/opencode/src/provider/transform.ts in v1.2.24, v1.2.27, and v1.3.0 all auto-set GPT-5 defaults including:
      • reasoningEffort = "medium"
      • reasoningSummary = "auto"
    • packages/opencode/src/provider/sdk/copilot/responses/openai-responses-language-model.ts in v1.2.27 and v1.3.0 maps reasoningSummary into the Responses API request body as:
      "reasoning": { "summary": ... }
  4. Related external evidence

    • OpenAI Codex issue: openai/codex#13009
    • That issue reports the same official-model failure:
      Unsupported parameter: 'reasoning.summary' is not supported with the 'gpt-5.3-codex-spark' model.
      

Why this seems actionable in OpenCode

Even if the backend/model metadata is inconsistent upstream, OpenCode currently advertises/uses Spark with reasoningSummary defaults that lead to an immediate request failure.

So from an OpenCode user perspective, the model is selectable but broken on the official OpenAI path.

Expected behavior

At least one of:

  1. Do not send reasoning.summary for gpt-5.3-codex-spark.
  2. Hide/disable Spark variants/settings that imply reasoning summaries if the model rejects them.
  3. Gate reasoningSummary based on model-specific compatibility rather than broad GPT-5 defaults.
  4. Surface a clearer compatibility warning before request submission.

Existing near-matches I found

These seem related but not exact matches for this specific failure mode:

  • #13469 — Spark unsupported with ChatGPT account
  • #17309 — Spark unsupported / Codex issues after upgrade
  • #16154 — reasoning parameter mismatch on @ai-sdk/openai-compatible custom providers

This report is specifically about the official OpenAI provider path returning unsupported_parameter for reasoning.summary on gpt-5.3-codex-spark.

Plugins

OhMyOpenCode 3.12.3

OpenCode version

v1.3.0

Steps to reproduce

  1. Authenticate with OpenAI / Codex OAuth path.
  2. Run:
    opencode --model openai/gpt-5.3-codex-spark --prompt "Reply with the single word pong."
  3. Observe request failure with:
    Unsupported parameter: 'reasoning.summary' is not supported with the 'gpt-5.3-codex-spark' model.
    

Screenshot and/or share link

No share link. Reproduced locally and confirmed with source/tag comparison.

Operating System

WSL2 / Linux

Terminal

OpenCode CLI / Windows Terminal

Activity

  1. added
    coreAnything pertaining to core functionality of the application (opencode server stuff)
    on Mar 23, 2026
  2. github-actions commented on Mar 23, 2026

    @github-actions
    Contributor

    This issue might be a duplicate of existing issues. Please check:

    (Note: the reporter has already reviewed these and argues this report covers a distinct failure path — the official OpenAI provider returning unsupported_parameter for reasoning.summary. Maintainers may want to consolidate or track separately.)

  3. 50sotero commented on Mar 23, 2026

    @50sotero
    Author

    Follow-up after more targeted reproduction:

    The failure is variant-specific, not a total Spark outage.

    Repro matrix on OpenCode 1.3.0 using opencode run --format json with model openai/gpt-5.3-codex-spark:

    • variant low: works
    • variant medium: works
    • variant high: fails with unsupported parameter reasoning.summary
    • variant xhigh: fails with unsupported parameter reasoning.summary

    Strong hint about the root cause:

    In local Spark variant config, low and medium use reasoningSummary = auto, while high and xhigh use reasoningSummary = detailed.

    I also tested config overrides without editing the real file:

    • forcing high to reasoningSummary = auto: works
    • forcing xhigh to reasoningSummary = auto: works
    • forcing xhigh to reasoningSummary = null: works

    So the actionable issue seems to be that gpt-5.3-codex-spark rejects the request shape produced for detailed reasoning summaries, while auto or omitted summaries still work. A practical fix may be to avoid sending detailed reasoning summaries for this model.

  4. 50sotero commented on Mar 23, 2026

    @50sotero
    Author

    I dug a bit deeper and this looks like a narrow ProviderTransform.variants() bug rather than a general Spark outage.

    Root cause

    For @ai-sdk/openai, packages/opencode/src/provider/transform.ts currently gives GPT-5 variants:

    • low / medium -> reasoningSummary: "auto"
    • high / xhigh -> reasoningSummary: "detailed"

    That works for most GPT-5 models, but gpt-5.3-codex-spark appears to reject the detailed summary path while still accepting auto.

    I verified locally:

    • gpt-5.3-codex-spark + low ✅
    • gpt-5.3-codex-spark + medium ✅
    • gpt-5.3-codex-spark + high ❌ Unsupported parameter: reasoning.summary
    • gpt-5.3-codex-spark + xhigh ❌ same error

    And forcing Spark high / xhigh to use reasoningSummary: "auto" made both variants work.

    Suggested patch

    File:

    • packages/opencode/src/provider/transform.ts

    Minimal fix in the @ai-sdk/openai branch of ProviderTransform.variants():

    const isSparkSummaryLimited = id === "gpt-5.3-codex-spark"
    
    return Object.fromEntries(
      openaiEfforts.map((effort) => [
        effort,
        {
          reasoningEffort: effort,
          reasoningSummary:
            isSparkSummaryLimited
              ? "auto"
              : effort === "high" || effort === "xhigh"
                ? "detailed"
                : "auto",
          include: ["reasoning.encrypted_content"],
        },
      ]),
    )

    This preserves reasoningEffort for Spark while avoiding the known-bad summary shape.

    Regression test

    There’s already a good home for this:

    • packages/opencode/test/provider/transform.test.ts

    Suggested test cases:

    test("gpt-5.3-codex-spark uses auto reasoningSummary for high and xhigh", () => {
      const model = createMockModel({
        id: "openai/gpt-5.3-codex-spark",
        providerID: "openai",
        api: {
          id: "gpt-5.3-codex-spark",
          url: "https://api.openai.com",
          npm: "@ai-sdk/openai",
        },
        release_date: "2026-01-01",
      })
    
      const result = ProviderTransform.variants(model)
    
      expect(result.high).toMatchObject({
        reasoningEffort: "high",
        reasoningSummary: "auto",
      })
    
      expect(result.xhigh).toMatchObject({
        reasoningEffort: "xhigh",
        reasoningSummary: "auto",
      })
    })
    
    test("gpt-5.3-codex keeps detailed reasoningSummary for high and xhigh", () => {
      const model = createMockModel({
        id: "openai/gpt-5.3-codex",
        providerID: "openai",
        api: {
          id: "gpt-5.3-codex",
          url: "https://api.openai.com",
          npm: "@ai-sdk/openai",
        },
        release_date: "2026-01-01",
      })
    
      const result = ProviderTransform.variants(model)
    
      expect(result.high?.reasoningSummary).toBe("detailed")
      expect(result.xhigh?.reasoningSummary).toBe("detailed")
    })

    Why this seems preferable

    • very small blast radius
    • no retry logic needed
    • no global GPT-5 behavior change
    • matches observed Spark compatibility exactly
  5. added a commit that references this issue on Mar 24, 2026
    14dfde0
  6. removed
    coreAnything pertaining to core functionality of the application (opencode server stuff)
    on May 3, 2026
  7. github-actions commented on Jul 3, 2026

    @github-actions
    Contributor

    To stay organized issues are automatically closed after 60 days of no activity. If the issue is still relevant please open a new one.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions