Skip to content

Commit ce764db

Browse files
committed
codex: route OSS models through responses, not chat
Codex CLI dropped support for `wire_api = "chat"` (openai/codex discussion 7782), so the OSS chat-completions route added for kimi/glm now fails to load with "`wire_api = "chat"` is no longer supported". Route every codex-harness model — including OSS families — through the Responses gateway, matching what all other codex models already use. Co-authored-by: Isaac
1 parent 9e722d5 commit ce764db

2 files changed

Lines changed: 4 additions & 33 deletions

File tree

src/ucode/agents/codex.py

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,8 @@
1717
)
1818
from ucode.databricks import (
1919
build_auth_token_argv,
20-
build_oss_base_url,
2120
build_tool_base_url,
2221
get_databricks_token,
23-
is_oss_model,
2422
)
2523
from ucode.launcher import exec_or_spawn
2624
from ucode.state import mark_tool_managed, save_state
@@ -109,14 +107,9 @@ def _provider_block(
109107
databricks_profile: str | None,
110108
use_pat: bool = False,
111109
provider: str | None = None,
112-
model: str | None = None,
113110
) -> dict:
114111
auth_argv = build_auth_token_argv(workspace, databricks_profile, use_pat=use_pat)
115-
# OSS chat models (kimi/glm) don't speak the Responses API — they're served
116-
# by the OpenAI-compatible MLflow chat-completions gateway. Route them there
117-
# with `wire_api = "chat"`; everything else uses the codex Responses route.
118-
oss = is_oss_model(model)
119-
base_url = build_oss_base_url(workspace) if oss else build_tool_base_url("codex", workspace)
112+
base_url = build_tool_base_url("codex", workspace)
120113
http_headers = {
121114
"User-Agent": f"ucode/{ucode_version()} codex/{agent_version('codex')}",
122115
}
@@ -127,7 +120,7 @@ def _provider_block(
127120
return {
128121
"name": "Databricks AI Gateway",
129122
"base_url": base_url,
130-
"wire_api": "chat" if oss else "responses",
123+
"wire_api": "responses",
131124
"http_headers": http_headers,
132125
# Run the `ucode auth-token` executable directly (not via `sh -c`) so the
133126
# helper works on Windows, where there is no POSIX shell (issue #116).
@@ -152,7 +145,7 @@ def render_overlay(
152145
overlay["model"] = model
153146
overlay["model_providers"] = {
154147
CODEX_MODEL_PROVIDER_NAME: _provider_block(
155-
workspace, databricks_profile, use_pat, provider, model
148+
workspace, databricks_profile, use_pat, provider
156149
),
157150
}
158151
return overlay
@@ -178,7 +171,7 @@ def render_legacy_overlay(
178171
"profiles": {CODEX_PROFILE_NAME: profile_block},
179172
"model_providers": {
180173
CODEX_MODEL_PROVIDER_NAME: _provider_block(
181-
workspace, databricks_profile, use_pat, provider, model
174+
workspace, databricks_profile, use_pat, provider
182175
),
183176
},
184177
}

tests/test_agent_codex.py

Lines changed: 0 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -45,28 +45,6 @@ def test_provider_wire_api(self):
4545
provider = overlay["model_providers"]["ucode-databricks"]
4646
assert provider["wire_api"] == "responses"
4747

48-
def test_oss_model_routes_to_mlflow_chat(self):
49-
overlay = codex.render_overlay(WS, "system.ai.kimi-k2")
50-
provider = overlay["model_providers"]["ucode-databricks"]
51-
assert provider["base_url"] == f"{WS}/ai-gateway/mlflow/v1"
52-
assert provider["wire_api"] == "chat"
53-
54-
def test_oss_glm_model_routes_to_mlflow_chat(self):
55-
overlay = codex.render_overlay(WS, "system.ai.glm-4-6")
56-
provider = overlay["model_providers"]["ucode-databricks"]
57-
assert provider["base_url"] == f"{WS}/ai-gateway/mlflow/v1"
58-
assert provider["wire_api"] == "chat"
59-
60-
def test_oss_model_pinned_verbatim(self):
61-
overlay = codex.render_overlay(WS, "system.ai.kimi-k2")
62-
assert overlay["model"] == "system.ai.kimi-k2"
63-
64-
def test_gpt_model_still_uses_responses_route(self):
65-
overlay = codex.render_overlay(WS, "system.ai.gpt-5")
66-
provider = overlay["model_providers"]["ucode-databricks"]
67-
assert provider["base_url"] == f"{WS}/ai-gateway/codex/v1"
68-
assert provider["wire_api"] == "responses"
69-
7048
def test_auth_runs_ucode_auth_token(self):
7149
# The auth command runs the `ucode auth-token` executable directly
7250
# (not `sh -c`), so it works on Windows where there is no POSIX shell.

0 commit comments

Comments
 (0)