Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions src/ucode/agents/claude.py
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,13 @@ def render_overlay(
"ANTHROPIC_BASE_URL": base_url,
"ANTHROPIC_CUSTOM_HEADERS": custom_headers,
"CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS": "1",
# Suppress Claude Code's client-side `thinking.type=enabled` field.
# The Databricks AI Gateway rejects it for adaptive-only models (Opus 4.7
# family) which require `thinking.type=adaptive` + `output_config.effort`.
# Claude Code's model detection doesn't recognize the `databricks-` prefix
# on gateway model ids, so it sends the legacy shape and the request 400s.
# The gateway still applies adaptive reasoning server-side where required.
"CLAUDE_CODE_DISABLE_THINKING": "1",
"CLAUDE_CODE_API_KEY_HELPER_TTL_MS": "900000",
}
if claude_models:
Expand Down
12 changes: 12 additions & 0 deletions tests/test_agent_claude.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,18 @@ def test_disables_experimental_betas(self):
overlay, _ = claude.render_overlay(WS, "s4")
assert overlay["env"]["CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS"] == "1"

def test_disables_thinking(self):
# Claude Code's `thinking.type=enabled` field is rejected by the
# Databricks AI Gateway for adaptive-only models (Opus 4.7 family).
# The gateway applies adaptive reasoning server-side regardless, so
# ucode disables Claude Code's client-side thinking unconditionally.
overlay, _ = claude.render_overlay(WS, "s4")
assert overlay["env"]["CLAUDE_CODE_DISABLE_THINKING"] == "1"

def test_disable_thinking_is_managed(self):
_, keys = claude.render_overlay(WS, "s4")
assert ["env", "CLAUDE_CODE_DISABLE_THINKING"] in keys

def test_sets_api_key_helper(self):
overlay, _ = claude.render_overlay(WS, "s4")
assert "apiKeyHelper" in overlay
Expand Down