Skip to content

[Bug] OpenCode Go intermittently returns 400 [1210] "thinking cannot be disabled" and MissingSessionID when routing omen-alpha requests #47872

Closed as not planned

Description

@ZIYE-JK

Description

Description

When using omen-alpha via the OpenCode Go gateway (opencode.ai/zen/go/v1/chat/completions) from a third-party client (QwenPaw, an open-source agent framework using the OpenAI-compatible chat completions endpoint), requests intermittently fail with two distinct 400 errors returned by the "Console Go" provider:

Error 1 — [1210] thinking cannot be disabled

Error code: 400 - {'error': {'type': 'server_error', 'message': 'Error from provider (Console Go): Upstream request failed: [1210] This model always engages in thinking and cannot be disabled; please use low, high, or max'}}

Error 2 — MissingSessionID

Error code: 400 - {'type': 'error', 'error': {'type': 'MissingSessionID', 'message': 'Error from provider (Console Go): Request is missing x-opencode-session and cannot be routed efficiently. Please see https://opencode.ai/docs/go/#where-can-i-use-it'}}

Environment & Context

  • Model: omen-alpha (Go subscription, chat/completions endpoint)
  • Client: QwenPaw (open-source agent framework, uses the standard OpenAI-compatible endpoint; not yet in the Validated Clients list — it does not currently send x-opencode-session)
  • Time window: 2026-09-08, 08:46–10:07 (UTC+8); intermittent — most requests succeed, some fail
  • Observed pattern: burst failures on consecutive messages, then recovery — consistent with gateway-side routing/fallback decisions

Controlled experiment (same session, model-switched)

In the same session (identical context size, identical request pattern, rapid consecutive messages):

Model | Result -- | -- omen-alpha | 400 [1210] / MissingSessionID reproduced consistently DeepSeek v4 flash | zero failures, rapid consecutive messages all succeed

This isolates the failure to the omen-alpha routing path (not client concurrency, not channel queuing, not oversized context).

Analysis

Error 1: For the failing requests, the client does not send any thinking-related parameters (no reasoning_effort, no enable_thinking). The gateway appears to inject a "disable thinking" parameter when routing the request — but omen-alpha always engages in thinking and rejects it with [1210].

We also tried explicitly sending reasoning_effort: "low" (and "high") from the client via extra_body — the error still occurred, suggesting the gateway may override or drop client-side thinking parameters for these routed requests.

Error 2: QwenPaw does not send x-opencode-session (documented requirement: https://opencode.ai/docs/go/#where-can-i-use-it). Requests lacking the header fail when the gateway needs to make routing decisions.

Impact

In a chat/agent product this surfaces as intermittent "Internal error" replies to end users. Conversations fail in bursts (consecutive messages), then self-recover — making it hard to debug from the client side.

Workaround confirmed: switching the model from omen-alpha to deepseek-v4-flash (same session, same client, same request pattern) made all failures stop immediately — further confirming the issue is specific to the omen-alpha routing path.

Suggested remediation

  1. Gateway: preserve or forward client thinking parameters when routing omen-alpha requests, instead of injecting a "disabled" flag (omen-alpha rejects it).
  2. Gateway: make x-opencode-session degrade gracefully (log/flag) rather than hard-fail with 400, or provide a documented migration path for third-party clients.
  3. Client-side (QwenPaw): we will add x-opencode-session support in an upcoming release; tracking in our repo.

Related

Additional info (compliance)

  • OpenCode version: Go gateway API (opencode.ai/zen/go/v1/chat/completions),
    called via third-party client QwenPaw 2.2.0 (OpenAI-compatible provider)
  • Steps to reproduce:
    1. Use omen-alpha via the Go chat/completions endpoint from a third-party
      client (no x-opencode-session header)
    2. Send rapid consecutive requests (burst pattern)
    3. Observe intermittent 400 [1210] "This model always engages in thinking
      and cannot be disabled" and/or MissingSessionID
    4. Switch model to deepseek-v4-flash in the same session → failures stop
      immediately
  • Operating System: Linux (client-side server); issue is gateway-side
  • Terminal: n/a (HTTP API client)

Activity

  1. added
    needs:complianceThis means the issue will auto-close after 2 hours.
    and removed
    needs:complianceThis means the issue will auto-close after 2 hours.
    on Sep 8, 2026
  2. github-actions commented on Sep 8, 2026

    @github-actions
    Contributor

    Thanks for updating the issue! It now includes the required information — clear error messages, reproduction steps, environment details, and a controlled experiment isolating the issue to the omen-alpha routing path. The needs:compliance label has been removed.

  3. VishvakR commented on Sep 14, 2026

    @VishvakR

    had a look through the gateway code that's in this repo (packages/console/app/src/routes/zen) and it doesn't touch thinking params at all. prepareRequestBody only rewrites the model field and passes the rest of the body through, and neither MissingSessionID nor the [1210] text shows up anywhere in the repo. handler.ts just prefixes whatever the upstream sends back with "Error from provider (Console Go)".

    so both errors are coming from the Console Go inference service behind it, and which upstream omen-alpha gets routed to is in the ZEN_MODELS config, not the open code. my guess from the burst pattern is one of the fallback upstreams for omen-alpha sends thinking disabled, but i can't see that from here. i don't think it can be fixed with a PR here, it needs someone on the Go side to check the routing for that model.

    the MissingSessionID part is the documented header requirement, so once QwenPaw sends x-opencode-session that one should go away.

  4. opencodejr commented on Oct 28, 2026

    @opencodejr

    Thanks for the detailed report, @ZIYE-JK. Intermittent 400s like these are frustrating.

    This is about the OpenCode Go service itself, not the OpenCode app, and support for Go, Console and accounts isn't handled in GitHub issues. Please email help@anoma.ly with the details: the model (omen-alpha), the time window (2026-09-08, 08:46–10:07 UTC+8), the client and the exact error responses. If you've already emailed, the team will get to it, especially now that we've seen it here. Please keep account details, API keys and email addresses out of this public issue and put them only in the email.

    In the meantime, two things on the client side may help:

    • MissingSessionID: Go expects every request to carry a stable session ID in the x-opencode-session header, one per conversation. Clients that don't send it can be rejected (see Where can I use it?). QwenPaw would need to add this header; the Harnesses page shows what it should look like.
    • [1210] thinking cannot be disabled: omen-alpha always uses thinking. If QwenPaw sometimes sends a request that turns thinking off or uses an unsupported effort level, the provider rejects it. Always sending a reasoning effort of low, high or max for this model should avoid it.

    The bot will close this issue in 1 day.

  5. opencodejr commented on Oct 29, 2026

    @opencodejr

    Closing this now: support for OpenCode Go, Console and accounts is handled by email, not in GitHub issues. @ZIYE-JK, if anything is still unresolved, please email help@anoma.ly with the details (the model, the time window and the exact error responses), and keep account information out of this public thread.

    On the client side: sending a stable x-opencode-session header and always setting a reasoning effort (low, high or max) for omen-alpha should help with both errors. Thanks again for the detailed report!

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

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions