Skip to content

[Bug]: reasoningEfforts missing from live catalog for newer opencode-go models (same model has them under other providers) #2410

Closed

Description

@garysassano

Client or integration

Codex CLI

Area

Catalog / models

Summary

ocx models live --json and the proxy's own /v1/models omit reasoningEfforts entirely for several opencode-go models, while the same model id exposes a full effort list under other providers. The pattern looks like a static metadata table that lags newly added models.

Effort still appears to be forwarded and honoured at request time, so the impact is on discovery and tooling, not on inference. Tooling that reads the catalog to pick a model or validate an effort before dispatch concludes these models support no reasoning efforts at all, and either skips them or omits the flag. Agent harnesses that select a model programmatically are the main casualty.

Reproduction

  1. Ensure the proxy is running and the opencode-go provider is configured:

    ocx status
    jq -r '.providers | keys | join(", ")' ~/.opencodex/config.json
  2. Query the proxy's model catalog directly and compare the same model across providers:

    P=$(jq -r .port ~/.opencodex/runtime-port.json)
    curl -s localhost:$P/v1/models -H 'authorization: Bearer probe' \
      | jq -r '.data[]? | select(.id|test("luna|glm-5.3|qwen3.8")) | "\(.id)  \(.reasoningEfforts // "no-effort-field")"'

    Observed:

    gpt-5.6-luna              [low, medium(default), high, xhigh, max]
    kiro/gpt-5.6-luna         [low, medium(default), high, xhigh, max]
    zai-plan/glm-5.3          [low, high, max(default)]
    opencode-go/gpt-5.6-luna  no-effort-field
    opencode-go/glm-5.3       no-effort-field
    opencode-go/qwen3.8-max   no-effort-field
    

    glm-5.3 is the clearest case: identical model id, populated under zai-plan, empty under opencode-go.

  3. List every opencode-go model to see that populated and empty rows are interleaved, skewing toward recent additions:

    ocx models live --json \
      | jq -r '.[] | select(.provider=="opencode-go") | "\(.id)\t[\(.reasoningEfforts // [] | join(","))]"'
    glm-5, glm-5.1, glm-5.2      [low,medium,high,xhigh,max]
    glm-5.3                      []            <-- newest in family
    qwen3.5-plus … qwen3.7-plus  [low,medium,high,xhigh,max]
    qwen3.8-max                  []            <-- newest in family
    deepseek-v4-flash, -pro      [high,xhigh,max]
    kimi-k3                      [low,high,max]
    kimi-k2.5 / k2.6 / k2.7-code []
    gpt-5.6-luna                 []
    grok-4.5 / 4.6, hy3          []
    minimax-m2.5 / m2.7 / m3     []
    
  4. Confirm the effort parameter is still forwarded despite the missing metadata:

    P=$(jq -r .port ~/.opencodex/runtime-port.json)
    for eff in low max; do
      curl -s -X POST localhost:$P/v1/responses \
        -H 'content-type: application/json' -H 'authorization: Bearer probe' \
        -d "{\"model\":\"opencode-go/gpt-5.6-luna\",\"input\":\"Think carefully: how many ways can 8 non-attacking rooks be placed on an 8x8 board? Answer with just the number.\",\"stream\":false,\"reasoning\":{\"effort\":\"$eff\"}}" \
        | jq -r '"'"'effort: reasoning_tokens=\(.usage.output_tokens_details.reasoning_tokens)'"'"'
    done
    low -> reasoning_tokens=31
    max -> reasoning_tokens=42
    

    One sample each, so this is not a claim about how well max is honoured — only that the parameter is not dropped. The metadata gap therefore looks cosmetic rather than functional.

Expected: reasoningEfforts is populated for opencode-go models that accept a reasoning effort, consistently with the same model under zai-plan / kiro / native.

Actual: the field is absent for those rows.

Version

opencodex 2.29.0

Operating system

Ubuntu 24.04.4 LTS (WSL2, kernel 6.18.33.2-microsoft-standard-WSL2)

Provider and model

opencode-go / gpt-5.6-luna, opencode-go / glm-5.3, opencode-go / qwen3.8-max (compared against zai-plan / glm-5.3, kiro / gpt-5.6-luna, native gpt-5.6-luna)

Logs or error output

No error is emitted; the field is silently absent from /v1/models and from ocx models live --json. Sample output is inline in Reproduction above.

Related but distinct: #962 (custom model rows dropping provider reasoning metadata) concerns custom rows, whereas this is live rows for a registry provider. #2406 looks like the same class of gap for image capabilities.

Activity

  1. added
    bugSomething isn't working
    catalogModel catalog, slugs, visibility, routed entries
    on Aug 22, 2026
  2. lidge-jun commented on Aug 22, 2026

    @lidge-jun
    Owner

    리뷰 · 우선순위 44 / 80

    설명: 이 이슈는 오픈코드 고 새 모델의 노력 칸이 목록에 비어 있다고 한다. 같은 모델 이름은 다른 제공자에서는 칸이 있다. 지금 CURRENT dev HEAD 는 4f41a8e93 이다. 이번 시간에 origin/dev 는 46d4150 에서 한 커밋이 와서 여기까지 왔다. 착지는 2396 사용량 CLI 오늘 비용이다. package.json 은 2.27.0 이다. src/config.ts 는 3975줄이다. src/runtime 폴더는 지금 HEAD 에 없다. 지금 HEAD 의 src/providers/registry.ts 1361줄 opencode-go modelReasoningEfforts 는 glm-5.3 에 ZAI_GLM_53_REASONING_EFFORTS 곧 low, high, max 가 있다. 작성자가 2.29.0 에서 본 빈 glm-5.3 은 지금 origin/dev 표와 다르다. gpt-5.6-luna 는 그 표에 없다. 1346줄은 루나 와이어만 responses 로 둔다. 노력 칸은 안 넣는다. qwen3.8-max 도 없다. OPENCODE_GO_THINKING_BUDGET_MODELS 는 qwen3.5-plus 부터 qwen3.7-plus 까지다. 3.8 은 알리바바 표에만 있다. 작성자는 요청 때 effort 가 실제로 간다고 적었다. 목록만 비다. src/server/index.ts 1197줄 공개 목록은 m.reasoningEfforts 가 있을 때만 칸을 붙인다. 표가 비면 칸이 빠진다. 작성자 버전은 2.29.0 이다. 지금 origin/dev 패키지는 2.27.0 이다. PR 이 아직 없다. bug, catalog 라벨이 있다. 2406 은 이미지 칸이다. 사용자 길이로는 목록이 노력을 못 고르게 하는 표 구멍이라서 44. 호출 자체는 된다. 카탈로그 팁은 Ox Alpha x-preview-f-free + deepseek-v4-flash-vision-exp. Cursor 정적 카탈로그는 opus-4-8-fast / opus-5-fast. 2334 CursorCredentialRouter 는 여전히 src/providers/cursor-pool.ts 모듈+테스트만 있고 어댑터에 연결되지 않았다. 2332 H2 는 discovery 전용. 2320 overflow + 2342 는 이미 dev. 2188 사이드카는 이미 dev. 2382 데스크톱 앱 재시작은 이미 dev. 2292 는 아직 연다.

    src/providers/registry.ts 라인 1361 - 지금 HEAD 의 opencode-go 노력 표. glm-5.3 은 이미 low, high, max. luna 와 qwen3.8-max 는 없다
    src/providers/registry.ts 라인 444 - OPENCODE_GO_THINKING_TOGGLE_MODELS 는 mimo-v2.5, glm-5, glm-5.1 이다. glm-5.3 은 여기가 아니라 1362줄 단독이다
    src/providers/registry.ts 라인 468 - OPENCODE_GO_THINKING_BUDGET_MODELS 는 qwen3.7-plus 에서 끝난다. qwen3.8-max 는 없다
    src/providers/registry.ts 라인 1346 - luna 는 와이어만 responses 다. 노력 칸은 안 넣는다
    src/server/index.ts 라인 1197 - 공개 목록은 reasoningEfforts 가 있을 때만 칸을 붙인다. 표가 비면 칸이 빠진다
    이슈 본문 2.29.0 - 작성자가 본 glm-5.3 빈 칸은 지금 HEAD 표와 다르다. luna 와 qwen3.8-max 구멍은 지금 HEAD 에도 있다

    메인테이너의 판단이 필요한 지점

    • luna 와 qwen3.8-max 만 표에 넣을지. glm-5.3 은 지금 HEAD 에 이미 있다
    • 라이브 목록이 빈 칸을 덮어 쓰는지. 고는 발견이 권위라고 적혀 있다
    • 2406 이미지 칸과 한 PR 로 묶지 말지. 제공자가 다르다

    너의 추천
    호출 길을 건드리지 말고, 증거가 있는 모델만 opencode-go 노력 표에 넣는 작은 PR 을 받는다. glm-5.3 은 지금 HEAD 에 있으니 다시 넣지 말 것. 이슈는 열어 둔다. 라벨은 그대로 둔다. 프리뷰 배포가 아니다.

    이 댓글은 grok-bot이 작성했습니다

  3. lidge-jun commented on Aug 25, 2026

    @lidge-jun
    Owner

    Fixed on dev by #2630 (squash 324c1aa87).

    Your suspicion was right: a static table lagging newly added models. gpt-5.6-luna and qwen3.8-max were missing from opencode-go's registry map while the same model ids carried full ladders under OpenAI API and Alibaba Token Plan — which is exactly the asymmetry you described.

    Your impact analysis was also right and is why this was worth fixing properly: support is inferred from a non-empty catalog ladder (src/server/management/shared.ts:260), so a harness selecting programmatically concludes these models support no efforts at all.

    I did not want to just fill today's holes, because the same gap would reappear with the next model. So this also adds a cross-provider parity check: a same-model ladder mismatch now fails a test instead of waiting for a report. The generated-metadata pipeline can't cover this — it discards source thinking ladders and keeps only a boolean reasoning flag — so the registry stays the source of truth, but the asymmetry is now detectable.

    Thanks for noting that inference still worked; that framing made it clear this was a discovery defect and kept the fix narrow.

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

    bugSomething isn't workingcatalogModel catalog, slugs, visibility, routed entries

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions