Skip to content

[FEATURE]: Allow overriding model input limits for OpenAI long-context models #16298

Closed

Description

@ykswang

Feature hasn't been suggested before.

  • I have verified this feature I'm about to request hasn't been suggested before.

Describe the enhancement you want to request

I would like opencode to support user-overridable input limits for OpenAI models such as gpt-5.4, or otherwise align its effective limits more closely with the official OpenAI model documentation.
Background
OpenAI documents gpt-5.4 as having a 1,050,000 token context window and 128,000 max output tokens.
In opencode, openai:gpt-5.4 currently appears to be loaded with:

  • context: 1,050,000
  • input: 272,000
  • output: 128,000
    Because opencode's compaction logic prefers model.limit.input when it is present, long conversations may be compacted much earlier than users would expect from the official GPT-5.4 context window.
    Requested enhancement
    Please consider one of the following:
  1. Allow provider.models.<model>.limit.input to be overridden in user config, and make sure that override is respected at runtime.
  2. Add an explicit advanced setting to opt into the full documented long-context budget for supported models/providers.
  3. Revisit the metadata source used for OpenAI GPT-5.x models so opencode does not enforce a much smaller effective input budget unless there is a confirmed upstream reason.
    Why this would help
  • It would let advanced users fully use the long-context models they are already paying for.
  • It would reduce unnecessary early compaction and summarization.
  • It would make model behavior more predictable and closer to official provider documentation.
  • It would improve parity with OpenAI's own tooling, where client-side context budget is configurable.
    Additional note
    This request is not asking opencode to bypass any upstream provider limits. It is only asking for either:
  • more accurate defaults, or
  • a user-visible override for the client-side/model-metadata limit that opencode uses for compaction decisions.
    If the current 272,000 input limit is intentional because of a known upstream constraint, documenting that clearly would also be very helpful.

Activity

  1. added
    discussionUsed for feature requests, proposals, ideas, etc. Open discussion
    on Mar 6, 2026
  2. added
    coreAnything pertaining to core functionality of the application (opencode server stuff)
    on Mar 6, 2026
  3. github-actions commented on Mar 6, 2026

    @github-actions
    Contributor

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

    Please review these issues to see if your request is already covered or can be addressed as part of an existing discussion.

  4. ykswang commented on Mar 6, 2026

    @ykswang
    ContributorAuthor

    I originally opened this as a feature request, but after tracing the implementation this looks more like a bug in the existing model override behavior.
    Specifically, provider.models.<model>.limit.input is currently ignored in two places:

    1. config validation does not allow partial limit overrides such as:
      {
        "provider": {
          "anthropic": {
            "models": {
              "claude-sonnet-4-20250514": {
                "limit": { "input": 123456 }
              }
            }
          }
        }
      }
    2. during provider model merging, limit.input is not preserved/applied at runtime.
      This means model-level input limit overrides are ineffective even though model overrides already exist for other fields.
      I'm preparing a small fix that:
    • allows partial limit overrides in config
    • preserves and applies limit.input at runtime
    • adds regression tests
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

coreAnything pertaining to core functionality of the application (opencode server stuff)discussionUsed for feature requests, proposals, ideas, etc. Open discussion

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions