Repository navigation
[Bug]: Doesn't work with Claude models via LiteLLM #1225
Description
Activity
- addedbugSomething is broken or behaving incorrectly.Something is broken or behaving incorrectly.needs-triageIssue needs maintainer review and initial categorization.Issue needs maintainer review and initial categorization.
on Mar 20, 2026 Root Cause Analysis (v0.0.23)
Same issue here with a self-hosted LiteLLM proxy. Did some source diving and found the two code paths causing this.
1. Auth probe returns "warning" for proxy setups
ClaudeProvider.tsrunsprobeClaudeCapabilities()which spawns a lightweight Claude Agent SDK session to read account metadata (email, subscription type). With a proxy like LiteLLM, the CLI initializes but can't return valid account info since there's no Anthropic OAuth session -- it's usingANTHROPIC_API_KEYauth via env vars instead.When capabilities come back
undefined, the provider status is set to"warning"withauth: { status: "unknown" }(~line 640). This is the "Could not verify Claude authentication status from initialization result" message.2. Model picker filters out non-"ready" providers
ModelPickerContent.tsx(~line 172) builds areadyInstanceSetthat only includes providers withstatus === "ready". Since the proxy-authenticated Claude instance hasstatus: "warning", its models are completely hidden from the picker -- even though the models are properly configured and the provider works fine for actual conversations.Minimal fixes
Show models from warning-status providers (
ModelPickerContent.tsx~line 172):// Before: if (entry.status === "ready") { // After: if (entry.status === "ready" || entry.status === "warning") {
Suppress the per-conversation warning banner (
ProviderStatusBanner.tsx~line 12):// Before: if (!status || status.status === "ready" || status.status === "disabled") { // After: if (!status || status.status === "ready" || status.status === "disabled" || status.status === "warning") {
With these two changes, Claude works perfectly through a LiteLLM proxy -- tools, streaming, 1M context, everything. The Settings page still shows "Limited" (cosmetic), but the provider is fully functional.
Environment
- T3 Code v0.0.23 (built from source, arm64 macOS)
- Claude Code v2.1.140
- LiteLLM proxy with
ANTHROPIC_BASE_URLandANTHROPIC_API_KEYset as per-instance environment variables in provider settings
Reacted by KamilChecked again in
0.0.27 (a3422a9bb51d)versionNow I added these two env vars into the Claude provider config:
ANTHROPIC_BASE_URL:http://localhost:36253ANTHROPIC_AUTH_TOKEN:REDACTED
And get a new error:
API Error: 400 {"type":"error","error":{"type":"invalid_request_error","message":"Unexpected value(s) `advanced-tool-use-2025-11-20`, `prompt-caching-scope-2026-01-05`, `thinking-token-count-2026-05-13` for the `anthropic-beta` header. Please consult our documentation at docs.anthropic.com or try again without the header."},"request_id":"req_vrtx_011CcNP7WkvNVEbBD1xrTpLx"}. Received Model Group=claude-sonnet-4-6 Available Model Group Fallbacks=None
For reference, here's what I have as a response of my LiteLLM proxy's
http://localhost:36253/v1/modelsResponse
{ "data": [ { "created": 1761865200, "id": "gpt-5-codex-high", "object": "model", "owned_by": "openai" }, { "created": 1761865200, "id": "gpt-5-codex-medium", "object": "model", "owned_by": "openai" }, { "created": 1761865200, "id": "gpt-5-1-high", "object": "model", "owned_by": "openai" }, { "created": 1761865200, "id": "gpt-5-4-nano-high", "object": "model", "owned_by": "openai" }, { "created": 1761865200, "id": "gemini-2-5-pro", "object": "model", "owned_by": "openai" }, { "created": 1761865200, "id": "gpt-5-2-high", "object": "model", "owned_by": "openai" }, { "created": 1761865200, "id": "gemini-3-flash-preview", "object": "model", "owned_by": "openai" }, { "created": 1761865200, "id": "claude-opus-4-6", "object": "model", "owned_by": "openai" }, { "created": 1761865200, "id": "gpt-5-3-codex-medium", "object": "model", "owned_by": "openai" }, { "created": 1761865200, "id": "gpt-5-4-mini-high", "object": "model", "owned_by": "openai" }, { "created": 1761865200, "id": "gpt-5.4", "object": "model", "owned_by": "openai" }, { "created": 1761865200, "id": "gpt-4o-mini", "object": "model", "owned_by": "openai" }, { "created": 1761865200, "id": "gpt-5-low", "object": "model", "owned_by": "openai" }, { "created": 1761865200, "id": "gemini-embedding-001", "object": "model", "owned_by": "openai" }, { "created": 1761865200, "id": "claude-sonnet-4-6", "object": "model", "owned_by": "openai" }, { "created": 1761865200, "id": "gpt-5-codex-low", "object": "model", "owned_by": "openai" }, { "created": 1761865200, "id": "gpt-5.3-codex", "object": "model", "owned_by": "openai" }, { "created": 1761865200, "id": "claude-haiku-4-5-20251001", "object": "model", "owned_by": "openai" }, { "created": 1761865200, "id": "gemini-2-5-flash", "object": "model", "owned_by": "openai" }, { "created": 1761865200, "id": "gpt-5-2-medium", "object": "model", "owned_by": "openai" }, { "created": 1761865200, "id": "gpt-5-codex", "object": "model", "owned_by": "openai" }, { "created": 1761865200, "id": "gpt-5", "object": "model", "owned_by": "openai" }, { "created": 1761865200, "id": "claude-sonnet-4-5-20250929", "object": "model", "owned_by": "openai" }, { "created": 1761865200, "id": "gpt-5-1-medium", "object": "model", "owned_by": "openai" }, { "created": 1761865200, "id": "gpt-5.2", "object": "model", "owned_by": "openai" }, { "created": 1761865200, "id": "gpt-5-4-nano-medium", "object": "model", "owned_by": "openai" }, { "created": 1761865200, "id": "gpt-5-5-low", "object": "model", "owned_by": "openai" }, { "created": 1761865200, "id": "gpt-5-5-medium", "object": "model", "owned_by": "openai" }, { "created": 1761865200, "id": "gpt-5-1-codex-medium", "object": "model", "owned_by": "openai" }, { "created": 1761865200, "id": "gpt-5-4-low", "object": "model", "owned_by": "openai" }, { "created": 1761865200, "id": "gpt-5-1-low", "object": "model", "owned_by": "openai" }, { "created": 1761865200, "id": "gpt-5.1-codex", "object": "model", "owned_by": "openai" }, { "created": 1761865200, "id": "gpt-5-1-codex-low", "object": "model", "owned_by": "openai" }, { "created": 1761865200, "id": "claude-sonnet-4-20250514", "object": "model", "owned_by": "openai" }, { "created": 1761865200, "id": "gpt-5-3-codex-high", "object": "model", "owned_by": "openai" }, { "created": 1761865200, "id": "claude-3-5-haiku-20241022", "object": "model", "owned_by": "openai" }, { "created": 1761865200, "id": "gpt-5-4-mini-medium", "object": "model", "owned_by": "openai" }, { "created": 1761865200, "id": "claude-3-7-sonnet-20250219", "object": "model", "owned_by": "openai" }, { "created": 1761865200, "id": "gpt-5.4-nano", "object": "model", "owned_by": "openai" }, { "created": 1761865200, "id": "gpt-5-1-codex-high", "object": "model", "owned_by": "openai" }, { "created": 1761865200, "id": "gpt-5-medium", "object": "model", "owned_by": "openai" }, { "created": 1761865200, "id": "gpt-5.1", "object": "model", "owned_by": "openai" }, { "created": 1761865200, "id": "claude-opus-4-1-20250805", "object": "model", "owned_by": "openai" }, { "created": 1761865200, "id": "gpt-5-mini", "object": "model", "owned_by": "openai" }, { "created": 1761865200, "id": "gpt-5-3-codex-low", "object": "model", "owned_by": "openai" }, { "created": 1761865200, "id": "gpt-5-high", "object": "model", "owned_by": "openai" }, { "created": 1761865200, "id": "claude-opus-4-5-20251101", "object": "model", "owned_by": "openai" }, { "created": 1761865200, "id": "gemini-3-pro-preview", "object": "model", "owned_by": "openai" }, { "created": 1761865200, "id": "gpt-5-2-low", "object": "model", "owned_by": "openai" }, { "created": 1761865200, "id": "gpt-5.5", "object": "model", "owned_by": "openai" }, { "created": 1761865200, "id": "gpt-5.4-mini", "object": "model", "owned_by": "openai" }, { "created": 1761865200, "id": "claude-opus-4-8", "object": "model", "owned_by": "openai" }, { "created": 1761865200, "id": "claude-opus-4-20250514", "object": "model", "owned_by": "openai" }, { "created": 1761865200, "id": "gemini-3-5-flash", "object": "model", "owned_by": "openai" }, { "created": 1761865200, "id": "claude-opus-4-7", "object": "model", "owned_by": "openai" }, { "created": 1761865200, "id": "gpt-5-4-medium", "object": "model", "owned_by": "openai" }, { "created": 1761865200, "id": "gpt-5-5-high", "object": "model", "owned_by": "openai" }, { "created": 1761865200, "id": "gpt-5-4-high", "object": "model", "owned_by": "openai" }, { "created": 1761865200, "id": "gemini-3-1-pro-preview", "object": "model", "owned_by": "openai" } ], "object": "list" }Checked again in
0.0.27 (a3422a9bb51d)versionNow I added these two env vars into the Claude provider config:
ANTHROPIC_BASE_URL:http://localhost:36253ANTHROPIC_AUTH_TOKEN:REDACTED
And get a new error:
API Error: 400 {"type":"error","error":{"type":"invalid_request_error","message":"Unexpected value(s) `advanced-tool-use-2025-11-20`, `prompt-caching-scope-2026-01-05`, `thinking-token-count-2026-05-13` for the `anthropic-beta` header. Please consult our documentation at docs.anthropic.com or try again without the header."},"request_id":"req_vrtx_011CcNP7WkvNVEbBD1xrTpLx"}. Received Model Group=claude-sonnet-4-6 Available Model Group Fallbacks=None
For reference, here's what I have as a response of my LiteLLM proxy's `http://localhost:36253/v1/models`
Response
You'll probably need to set this var as well on the provider:
CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS="1"You'll probably need to set this var as well on the provider: CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS="1"
Now it seems to work. Thank you!

Before submitting
Area
apps/web
Steps to reproduce
Another way (since LiteLLM uses OpenAI-compatible API):
claude-opus-4-6claude-opus-4-6Provider turn start failed - Error: Provider adapter request failed (claudeAgent) for thread.turn.start: Thread '89e787be-e659-46bf-b18b-935b6c49...Expected behavior
All would work like it works in the Claude CLI tool - with no issues and no auth required
Actual behavior
Requires a login or shows an error
Impact
Blocks work completely
Version or commit
0.0.13 (2a237c2)
Environment
macOS 15.7.4 (24G517)
Logs or stack traces
Our company uses LiteLLM to provide access to different models via the "Google Vertex AI Platform".
I have an internal tool running on
http://localhost:36253(this is a local LiteLLM proxy, I assume).I just have these envs set in my
~/.zshrc, and Claude Code CLI works without any login requests:Here's additional metadata about available LiteLLM models (from internal tool API call):
{ "data": [ { "id": "gpt-5-mini", "object": "model", "created": 1761865200, "owned_by": "openai" }, { "id": "gpt-5-2-medium", "object": "model", "created": 1761865200, "owned_by": "openai" }, { "id": "gpt-5-codex-medium", "object": "model", "created": 1761865200, "owned_by": "openai" }, { "id": "claude-opus-4-5-20251101", "object": "model", "created": 1761865200, "owned_by": "openai" }, { "id": "claude-opus-4-6", "object": "model", "created": 1761865200, "owned_by": "openai" }, { "id": "gemini-3-flash-preview", "object": "model", "created": 1761865200, "owned_by": "openai" }, { "id": "gpt-5-1-low", "object": "model", "created": 1761865200, "owned_by": "openai" }, { "id": "gemini-3-pro-preview", "object": "model", "created": 1761865200, "owned_by": "openai" }, { "id": "gemini-embedding-001", "object": "model", "created": 1761865200, "owned_by": "openai" }, { "id": "gpt-5-1-high", "object": "model", "created": 1761865200, "owned_by": "openai" }, { "id": "gpt-5-high", "object": "model", "created": 1761865200, "owned_by": "openai" }, { "id": "gpt-5-codex-low", "object": "model", "created": 1761865200, "owned_by": "openai" }, { "id": "gpt-5-1-codex-high", "object": "model", "created": 1761865200, "owned_by": "openai" }, { "id": "gpt-5-4-low", "object": "model", "created": 1761865200, "owned_by": "openai" }, { "id": "claude-3-5-haiku-20241022", "object": "model", "created": 1761865200, "owned_by": "openai" }, { "id": "gpt-5-1-medium", "object": "model", "created": 1761865200, "owned_by": "openai" }, { "id": "gpt-5-1-codex-low", "object": "model", "created": 1761865200, "owned_by": "openai" }, { "id": "gemini-2-5-pro", "object": "model", "created": 1761865200, "owned_by": "openai" }, { "id": "gpt-5-low", "object": "model", "created": 1761865200, "owned_by": "openai" }, { "id": "gpt-5-4-high", "object": "model", "created": 1761865200, "owned_by": "openai" }, { "id": "claude-3-7-sonnet-20250219", "object": "model", "created": 1761865200, "owned_by": "openai" }, { "id": "claude-opus-4-1-20250805", "object": "model", "created": 1761865200, "owned_by": "openai" }, { "id": "gpt-5-1-codex-medium", "object": "model", "created": 1761865200, "owned_by": "openai" }, { "id": "gpt-5-3-codex-low", "object": "model", "created": 1761865200, "owned_by": "openai" }, { "id": "claude-haiku-4-5-20251001", "object": "model", "created": 1761865200, "owned_by": "openai" }, { "id": "gemini-3-1-pro-preview", "object": "model", "created": 1761865200, "owned_by": "openai" }, { "id": "claude-opus-4-20250514", "object": "model", "created": 1761865200, "owned_by": "openai" }, { "id": "claude-sonnet-4-5-20250929", "object": "model", "created": 1761865200, "owned_by": "openai" }, { "id": "gpt-5-medium", "object": "model", "created": 1761865200, "owned_by": "openai" }, { "id": "gpt-5-2-high", "object": "model", "created": 1761865200, "owned_by": "openai" }, { "id": "claude-sonnet-4-6", "object": "model", "created": 1761865200, "owned_by": "openai" }, { "id": "gpt-5-3-codex-high", "object": "model", "created": 1761865200, "owned_by": "openai" }, { "id": "gpt-4o-mini", "object": "model", "created": 1761865200, "owned_by": "openai" }, { "id": "gpt-5-4-medium", "object": "model", "created": 1761865200, "owned_by": "openai" }, { "id": "gpt-5-2-low", "object": "model", "created": 1761865200, "owned_by": "openai" }, { "id": "gpt-5-3-codex-medium", "object": "model", "created": 1761865200, "owned_by": "openai" }, { "id": "gemini-2-5-flash", "object": "model", "created": 1761865200, "owned_by": "openai" }, { "id": "gpt-5-codex-high", "object": "model", "created": 1761865200, "owned_by": "openai" }, { "id": "claude-sonnet-4-20250514", "object": "model", "created": 1761865200, "owned_by": "openai" } ], "object": "list" }Here's an example of
opencode.jsonconfig that works just fine as well:{ "$schema": "https://opencode.ai/config.json", "mcp": { "devinfra": { "type": "local", "command": ["dp-devinfra", "mcp"], "enabled": true } }, "provider": { "litellm-proxy": { "npm": "@ai-sdk/openai-compatible", "name": "LiteLLM Proxy", "options": { "baseURL": "http://localhost:36253/v1", "apiKey": "cloudflare" }, "models": { "claude-opus-4-6": { "name": "Claude Opus 4.6 (via LiteLLM)", "limit": { "context": 200000, "output": 32768 } }, "claude-sonnet-4-6": { "name": "Claude Sonnet 4.6 (via LiteLLM)", "limit": { "context": 200000, "output": 64000 } }, "claude-haiku-4-5-20251001": { "name": "Claude Haiku 4.5 (via LiteLLM)", "limit": { "context": 200000, "output": 8192 } }, "gpt-5-2-high": { "name": "GPT-5.2 High (via LiteLLM)", "limit": { "context": 272000, "output": 128000 } }, "gpt-5-high": { "name": "GPT-5 High (via LiteLLM)", "limit": { "context": 272000, "output": 128000 } }, "gpt-5-mini": { "name": "GPT-5 Mini (via LiteLLM)", "limit": { "context": 272000, "output": 128000 } }, "gemini-3-1-pro-preview": { "name": "Gemini 3.1 Pro (via LiteLLM)", "limit": { "context": 1048576, "output": 65535 } }, "gemini-2-5-flash": { "name": "Gemini 2.5 Flash (via LiteLLM)", "limit": { "context": 1048576, "output": 65535 } } } } } }Screenshots, recordings, or supporting files
Workaround
No response