Skip to content

[Provider compatibility] Baseten catalog advertises unsupported Responses text.verbosity #4630

Closed

Description

@atinseau

Client or integration

Codex App

Provider or upstream service

Baseten Model APIs (baseten)

OpenCodex version

Reproduced with @bitkyc08/opencodex 2.42.0. The Baseten registry entry still lacks a verbosity opt-out on current main / package version 2.55.0.

Endpoint or capability

Inbound /v1/responses conversion to Baseten /v1/chat/completions; text.verbosity capability metadata.

Current behaviour

The generated Codex catalog advertises verbosity support for baseten/deepseek-ai-DeepSeek-V4.1-Flash:

{
  "slug": "baseten/deepseek-ai-DeepSeek-V4.1-Flash",
  "support_verbosity": true,
  "default_verbosity": "low"
}

Codex consequently includes text.verbosity in its Responses request. OpenCodex rejects the request while converting it to the Baseten Chat Completions route, before any model output is produced.

The selected high value is the reasoning effort and is unrelated to the rejected verbosity field.

Expected behaviour

Baseten documents its Model APIs as OpenAI Chat Completions compatible. The routed catalog should therefore not advertise the Responses-only text.verbosity capability unless OpenCodex can translate it. The request should omit that field and proceed normally.

Minimal redacted request or reproduction

# OpenCodeX 2.42.0; Baseten provider configured with a valid redacted API key.
ocx sync

# In Codex App:
# 1. Select baseten/deepseek-ai-DeepSeek-V4.1-Flash.
# 2. Select reasoning effort "high".
# 3. Start a turn with: Reply with OK.

# Relevant request shape produced by Codex from the generated catalog:
POST /v1/responses
{
  "model": "baseten/deepseek-ai-DeepSeek-V4.1-Flash",
  "input": "Reply with OK.",
  "reasoning": { "effort": "high" },
  "text": { "verbosity": "low" }
}

Actual response or error

HTTP 400

{
  "error": {
    "code": "400",
    "message": "Validation: Failed to convert responses request: `text.verbosity` is not supported",
    "type": "Bad Request"
  }
}

Upstream documentation

Baseten Model APIs overview: https://docs.baseten.co/inference/model-apis/overview

Baseten Chat Completions reference: https://docs.baseten.co/reference/inference-api/chat-completions

These pages specify OpenAI Chat Completions compatibility. I found no public Baseten specification for the OpenAI Responses API or its text.verbosity field.

Suggested mapping or implementation notes

Declare the capability on the Baseten provider registry entry:

{
  id: "baseten",
  // ...
  supportsVerbosity: false,
}

The generated entry should then contain "support_verbosity": false and omit default_verbosity. A focused catalog regression test for a live-discovered Baseten model would cover the provider-wide fallback.

Additional context and attachments

Environment: macOS 26.6.2, codex-cli 0.154.0. Current main version 2.55.0 still has no supportsVerbosity declaration in the Baseten registry entry. Existing issues were searched for Baseten, text.verbosity, and this model ID; no duplicate was found.

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.

Activity

  1. added
    catalogModel catalog, slugs, visibility, routed entries
    providerProvider adapters, OpenAI-compat presets, upstream API quirks
    on Sep 14, 2026
  2. github-actions commented on Sep 14, 2026

    @github-actions
    Contributor

    Issue reopened

    The report now contains the information required by the automated check. Thanks for updating it.

  3. lidge-jun commented on Sep 14, 2026

    @lidge-jun
    Owner

    리뷰 · 우선순위 56 / 80

    이 이슈는 Baseten Model APIs(baseten)로 라우트된 모델이 Codex 카탈로그에서 support_verbosity: true / default_verbosity: "low"처럼 보이기 때문에, Codex App이 Responses 요청에 text.verbosity를 넣고, OpenCodex가 Chat Completions로 바꿀 때 text.verbosity` is not supported로 400을 내는 호환 버그다. 재현 모델은 baseten/deepseek-ai-DeepSeek-V4.1-Flash이고, 사용자가 고른 reasoning effort high와는 무관하다.

    현재 dev HEAD 00f1762d0(2.56.0)의 src/providers/registry.ts baseten 엔트리(대략 id "baseten", adapter: "openai-chat", baseUrl: "https://inference.baseten.co/v1")를 보면 parallelToolCalls, reasoningEfforts: [], modelReasoningEfforts / vision 힌트(BASETEN_MODEL_*)는 있다. 하지만 supportsVerbosity: false는 없다. 같은 파일에서 xAI 계열과 Ollama는 이미 provider-wide로 supportsVerbosity: false를 박아 두고, 주석도 “Responses 전용 text.verbosity가 문서 API에 없다 / live discovery로 나중에 오는 id도 같이 opt-out”이라고 설명한다. Baseten만 그 패턴이 빠져 있다.

    카탈로그 쪽 경로는 이미 준비되어 있다. src/providers/derive.ts의 applyVerbosityDefaults가 레지스트리 supportsVerbosity / modelSupportsVerbosity를 provider config에 심고, src/codex/catalog/provider-fetch.ts의 configuredVerbositySupport → 모델 객체 supportsVerbosity, src/codex/catalog/effort.ts가 entry.support_verbosity로 내린다. 즉 이슈에 적힌 한 줄

    { id: "baseten", supportsVerbosity: false }

    을 baseten 엔트리에 넣으면, live discovery로 새 슬러그가 와도 provider-wide opt-out이 따라가고 Codex는 verbosity를 광고하지 않아야 한다. Baseten 공식 문서도 Chat Completions 호환이지 Responses/text.verbosity 스펙이 아니다(이슈에 링크됨).

    우선순위 56인 이유: 첫 턴이 모델 출력 전에 400으로 막히므로 체감은 크지만, 수정면은 레지스트리 플래그 + 카탈로그 회귀 테스트 수준이고 #4546 cost-guard나 Astra reasoning.summary 누락(#4628)보다 범위가 좁다. 중복 이슈 검색 결과도 보고자 기준으로 없다. types.ts/config.ts 분할 캠페인과도 무관해서 close-don't-rebase 대상이 아니다.

    경로/src/providers/registry.ts baseten 엔트리 - supportsVerbosity 필드 자체가 없어 Codex 템플릿 기본(verbosity 지원처럼 보임)을 물려받는다.
    경로/src/providers/derive.ts applyVerbosityDefaults - supportsVerbosity === undefined이면 early return이라, 레지스트리에 명시하지 않으면 opt-out이 절대 안 심어진다.
    경로/src/codex/catalog/effort.ts - support_verbosity는 모델 boolean이 있을 때만 쓴다. false를 안 내리면 클라이언트 쪽이 기본 true처럼 동작할 수 있다.
    심볼/BASETEN_MODEL_REASONING_EFFORTS - reasoning 힌트는 slug별로 보수적으로 관리하는데 verbosity만 provider-wide 기본이 비어 있어 정책이 비대칭이다.
    경로/테스트 - live-discovered Baseten 모델에 대한 support_verbosity: false 카탈로그 회귀가 이슈 제안대로 아직 없다(현 checkout 기준 이 이슈 전용 테스트 없음).

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

    • Baseten을 xAI/Ollama처럼 provider-wide supportsVerbosity: false로 갈지, 특정 slug만 modelSupportsVerbosity로 막을지(문서상 Chat Completions면 provider-wide가 맞음)
    • 변환기에서 verbosity를 strip하고 통과시키는 완화책을 병행할지, 카탈로그 광고만 고쳐 Codex가 필드를 안 보내게 할지(권장: 카탈로그 정합)
    • 2.55.0 릴리즈 노트/카탈로그 sync 안내를 이 수정에 묶을지

    너의 추천

    • src/providers/registry.ts baseten 블록에 supportsVerbosity: false를 추가하고, xAI/Ollama 주석과 같은 “Responses 전용 필드, live discovery 상속” 한 줄을 남긴다. live-discovered baseten 모델 한 건에 support_verbosity === false인 카탈로그 스냅샷/유닛 테스트를 붙인 좁은 PR이면 충분하다. 이 이슈는 열어 두고 그 PR에 Fixes #4630을 연결한다. 지금은 중복이 아니므로 close하지 않는다.

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

  4. added 2 commits that reference this issue on Sep 15, 2026
    a55404a
    9c466d9
  5. added a commit that references this issue on Sep 15, 2026
    a6cc5e2
  6. Ingwannu commented on Sep 15, 2026

    @Ingwannu
    Owner

    Fixed on dev by #4660, merge commit a6cc5e2cd23c5181846880936f1c1cbd4b620411. Baseten now has a provider-wide supportsVerbosity: false, so both static and newly live-discovered rows stop advertising the Responses-only control and omit default_verbosity. Exact-head cross-platform CI passed before merge. This landed after the 2.56.0 promotion, so users need the next release from the 2.57.0 development line; 2.56.0 does not contain this fix.

  7. added a commit that references this issue on Sep 17, 2026
    5441c23
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

    catalogModel catalog, slugs, visibility, routed entriesproviderProvider 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