Skip to content

[Bug]: Doesn't work with Claude models via LiteLLM #1225

Closed

Description

@MrModest

Before submitting

  • I searched existing issues and did not find a duplicate.
  • I included enough detail to reproduce or investigate the problem.

Area

apps/web

Steps to reproduce

  1. Start the app
  2. Start a new thread for an existing project
  3. Select "Claude" -> "Claude Opus 4.6"
  4. T3 Code requires a login (although via Claude Code CLI, all works without any login requirements)
    • "Not logged in · Please run /login"

Another way (since LiteLLM uses OpenAI-compatible API):

  1. Start the app
  2. Go to Settings -> Models -> Codex -> Custom model slug -> claude-opus-4-6
  3. Start a new thread for an existing project
  4. Select "Codex" -> claude-opus-4-6
  5. Error: Provider 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:

// Claude Code
export ANTHROPIC_BASE_URL="http://localhost:36253"
export ANTHROPIC_AUTH_TOKEN="REDACTED"
export CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS="1"
export DISABLE_TELEMETRY="1"
export DISABLE_ERROR_REPORTING="1"

// Codex CLI
export OPENAI_BASE_URL="http://localhost:36253"
export OPENAI_API_KEY="REDACTED" // same as for `ANTHROPIC_AUTH_TOKEN`

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.json config 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

Image Image

Workaround

No response

Activity

  1. added
    bugSomething is broken or behaving incorrectly.
    needs-triageIssue needs maintainer review and initial categorization.
    on Mar 20, 2026
  2. rodaddy commented on May 14, 2026

    @rodaddy

    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.ts runs probeClaudeCapabilities() 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 using ANTHROPIC_API_KEY auth via env vars instead.

    When capabilities come back undefined, the provider status is set to "warning" with auth: { 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 a readyInstanceSet that only includes providers with status === "ready". Since the proxy-authenticated Claude instance has status: "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_URL and ANTHROPIC_API_KEY set as per-instance environment variables in provider settings
  3. MrModest commented on Jun 24, 2026

    @MrModest
    Author

    Checked again in 0.0.27 (a3422a9bb51d) version

    Now I added these two env vars into the Claude provider config:

    • ANTHROPIC_BASE_URL: http://localhost:36253
    • ANTHROPIC_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
    
    Image

    For reference, here's what I have as a response of my LiteLLM proxy's http://localhost:36253/v1/models

    Response

    {
      "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"
    }

  4. MrModest commented on Jun 24, 2026

    @MrModest
    Author

    To give you and additional context, if I use Claude's model via OpenCode provider, it works even in the T3 Code.
    But it would be great to make it work via Claude Code since I don't really use OpenCode.

    Image
  5. juliusmarminge commented on Jun 24, 2026

    @juliusmarminge
    Member

    Checked again in 0.0.27 (a3422a9bb51d) version

    Now I added these two env vars into the Claude provider config:

    • ANTHROPIC_BASE_URL: http://localhost:36253
    • ANTHROPIC_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
    
    Image 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"

  6. MrModest commented on Jun 29, 2026

    @MrModest
    Author

    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!

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 is broken or behaving incorrectly.needs-triageIssue needs maintainer review and initial categorization.

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions