Skip to content

[Compatibility] grok-4.6 xhigh reasoning effort is clamped to high #1592

Description

@olddonkey

Client or integration

Codex App / Codex CLI / Direct HTTP

Provider or upstream service

xAI (xai/grok-4.6)

OpenCodex version

dev at c306fb53c (also reproduces on published 2.14.0 static seed behavior)

Endpoint or capability

/v1/responses and /v1/chat/completions reasoning effort mapping / Codex catalog picker

Current behaviour

Selecting Codex xhigh for xai/grok-4.6 is clamped to upstream high.

dev already seeds grok-4.6, but the xAI registry still advertises the Grok 4.5 ladder:

modelReasoningEfforts: { "grok-4.6": ["low", "medium", "high"], "grok-4.5": ["low", "medium", "high"] }

mapReasoningEffort() then snaps any higher Codex tier, including xhigh, down to high. That also hides the real xhigh rung from the Codex picker for the static/fallback catalog. Live discovery cannot repair this: applyProviderConfigHints() overwrites discovered efforts with the configured registry ladder.

This is separate from #1549. That tracker is about OAuth entitlement / exposing the model. This issue is about the already-seeded grok-4.6 row advertising and sending the wrong reasoning ladder.

Expected behaviour

For grok-4.6 and later, OpenCodex should advertise and forward xAI's documented ladder:

  • low
  • medium
  • high (upstream default)
  • xhigh

A Codex xhigh request should stay xhigh on the wire. grok-4.5 should keep clamping xhigh to high.

Minimal redacted request or reproduction

  1. Use xai/grok-4.6 in Codex App/CLI, or send:
curl http://127.0.0.1:10100/v1/responses \
  -H "Content-Type: application/json" \
  -d '{
    "model": "xai/grok-4.6",
    "reasoning": { "effort": "xhigh" },
    "input": "say hi"
  }'
  1. Inspect the upstream request. reasoning.effort / reasoning_effort is high, not xhigh.

Actual response or error

No hard error. The request succeeds, but the extra Grok 4.6 reasoning depth never leaves the proxy.

Upstream documentation

Suggested mapping

Update the xAI registry seed to:

modelReasoningEfforts: {
  "grok-4.6": ["low", "medium", "high", "xhigh"],
  "grok-4.5": ["low", "medium", "high"]
}

Keep grok-4.5 unchanged. Do not invent Cursor xhigh wire slugs unless Cursor live discovery actually exposes them.

Checks

  • I searched existing provider and compatibility issues.
  • The request and response were redacted.
  • The expected behaviour is based on an upstream specification or a concrete client requirement.

Metadata

Metadata

Assignees

No one assigned

    Labels

    account-poolOAuth, credentials, Codex pool, quota, failover, plansproviderProvider adapters, OpenAI-compat presets, upstream API quirksprovider-compatibilityProvider compatibility reports

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions