From 159c477c18f938d1864cf7dd30b0d657adfe3250 Mon Sep 17 00:00:00 2001 From: Sameer Kankute Date: Fri, 6 Mar 2026 12:56:30 +0530 Subject: [PATCH] feat(proxy): client-side provider API key precedence for Anthropic /v1/messages - Add forward_llm_provider_auth_headers support from litellm_settings - When enabled, client x-api-key takes precedence over deployment keys - Forward x-api-key when x-litellm-api-key or Authorization used for auth - Fix duplicate patch lines in test_byok_oauth_endpoints.py - Add Claude Code BYOK documentation with /login and ANTHROPIC_CUSTOM_HEADERS - Add unit tests for clean_headers x-api-key forwarding logic - Sync model_prices backup (pre-commit hook) Made-with: Cursor --- .../docs/proxy/forward_client_headers.md | 2 + .../docs/tutorials/claude_code_byok.md | 123 ++++++++++++++++++ .../img/claude_code_byok_screenshot.png | Bin 0 -> 101599 bytes docs/my-website/sidebars.js | 1 + litellm/proxy/litellm_pre_call_utils.py | 43 ++++++ .../anthropic/test_anthropic_common_utils.py | 123 ++++++++++++++++++ .../mcp_server/test_byok_oauth_endpoints.py | 2 - 7 files changed, 292 insertions(+), 2 deletions(-) create mode 100644 docs/my-website/docs/tutorials/claude_code_byok.md create mode 100644 docs/my-website/img/claude_code_byok_screenshot.png diff --git a/docs/my-website/docs/proxy/forward_client_headers.md b/docs/my-website/docs/proxy/forward_client_headers.md index 17f813eabee..cf34d4f1074 100644 --- a/docs/my-website/docs/proxy/forward_client_headers.md +++ b/docs/my-website/docs/proxy/forward_client_headers.md @@ -112,6 +112,8 @@ general_settings: forward_llm_provider_auth_headers: true # Enable BYOK ``` +For **Claude Code** with `/login` and your own Anthropic key, see [Claude Code BYOK](../tutorials/claude_code_byok.md). Use `ANTHROPIC_CUSTOM_HEADERS="x-litellm-api-key: sk-12345"` to pass your LiteLLM key while your Anthropic key (from `/login`) is forwarded as `x-api-key`. + Client request: ```bash curl -X POST "http://localhost:4000/v1/messages" \ diff --git a/docs/my-website/docs/tutorials/claude_code_byok.md b/docs/my-website/docs/tutorials/claude_code_byok.md new file mode 100644 index 00000000000..e1deac623bb --- /dev/null +++ b/docs/my-website/docs/tutorials/claude_code_byok.md @@ -0,0 +1,123 @@ +# Claude Code with Bring Your Own Key (BYOK) + +Use Claude Code with your own Anthropic API key through the LiteLLM proxy. When you use Claude's `/login` with your Anthropic account, your API key is sent as `x-api-key`. With BYOK enabled, LiteLLM forwards your key to Anthropic instead of using proxy-configured keys — so you pay Anthropic directly while still benefiting from LiteLLM's routing, logging, and guardrails. + +## How It Works + +1. **Claude Code `/login`** — You sign in with your Anthropic account; Claude Code sends your Anthropic API key as `x-api-key`. +2. **LiteLLM authentication** — You pass your LiteLLM proxy key via `ANTHROPIC_CUSTOM_HEADERS` so the proxy can authenticate and track your usage. +3. **Key forwarding** — With `forward_llm_provider_auth_headers: true`, LiteLLM forwards your `x-api-key` to Anthropic, giving it precedence over any proxy-configured keys. + +## Prerequisites + +- [Claude Code](https://docs.anthropic.com/en/docs/claude-code/overview) installed +- Anthropic API key (from [console.anthropic.com](https://console.anthropic.com)) +- LiteLLM proxy with a virtual key for authentication + +## Step 1: Configure LiteLLM Proxy + +Enable forwarding of LLM provider auth headers so your Anthropic key takes precedence: + +```yaml title="config.yaml" +model_list: + - model_name: claude-sonnet-4-5 + litellm_params: + model: anthropic/claude-sonnet-4-5 + # No api_key needed — client's key will be used + +litellm_settings: + forward_llm_provider_auth_headers: true # Required for BYOK +``` + +:::info Why `forward_llm_provider_auth_headers`? + +By default, LiteLLM strips `x-api-key` from client requests for security. Setting this to `true` allows client-provided provider keys (like your Anthropic key from `/login`) to be forwarded to Anthropic, overriding any proxy-configured keys. + +::: + +## Step 2: Create a LiteLLM Virtual Key + +Create a virtual key in the LiteLLM UI or via API. +```bash +# Example: Create key via API +curl -X POST "http://localhost:4000/key/generate" \ + -H "Authorization: Bearer sk-your-master-key" \ + -H "Content-Type: application/json" \ + -d '{"key_alias": "claude-code-byok", "models": ["claude-sonnet-4-5"]}' +``` + +## Step 3: Configure Claude Code + +Set environment variables so Claude Code uses LiteLLM and sends your LiteLLM key for proxy auth: + +```bash +# Point Claude Code to your LiteLLM proxy +export ANTHROPIC_BASE_URL="http://localhost:4000" + +# Model name from your config +export ANTHROPIC_MODEL="claude-sonnet-4-5" + +# LiteLLM proxy auth — this is added to every request +# Use x-litellm-api-key so the proxy authenticates you; your Anthropic key goes via x-api-key from /login +export ANTHROPIC_CUSTOM_HEADERS="x-litellm-api-key: sk-12345" +``` + +Replace `sk-12345` with your actual LiteLLM virtual key. + +:::tip Multiple headers + +For multiple headers, use newline-separated values: + +```bash +export ANTHROPIC_CUSTOM_HEADERS="x-litellm-api-key: sk-12345 +x-litellm-user-id: my-user-id" +``` + +::: + +## Step 4: Sign In with Claude Code + +1. Launch Claude Code: + + ```bash + claude + ``` + +2. Use **`/login`** and sign in with your Anthropic account (or use your API key directly). + +3. Claude Code will send: + - `x-api-key`: Your Anthropic API key (from `/login`) + - `x-litellm-api-key`: Your LiteLLM key (from `ANTHROPIC_CUSTOM_HEADERS`) + +4. LiteLLM authenticates you via `x-litellm-api-key`, then forwards `x-api-key` to Anthropic. Your Anthropic key takes precedence over any proxy-configured key. + +## Summary + +| Header | Source | Purpose | +|--------|--------|---------| +| `x-api-key` | Claude Code `/login` (Anthropic key) | Sent to Anthropic for API calls | +| `x-litellm-api-key` | `ANTHROPIC_CUSTOM_HEADERS` | Proxy authentication, tracking, rate limits | + +## Troubleshooting + +### Requests fail with "invalid x-api-key" + +- Ensure `forward_llm_provider_auth_headers: true` is set in `litellm_settings` (or `general_settings`). +- Restart the LiteLLM proxy after changing the config. +- Verify you completed `/login` in Claude Code so your Anthropic key is being sent. + +### Proxy returns 401 + +- Check that `ANTHROPIC_CUSTOM_HEADERS` includes `x-litellm-api-key: `. +- Ensure the LiteLLM key is valid and has access to the model. + +### Proxy key is used instead of my Anthropic key + +- Confirm `forward_llm_provider_auth_headers: true` is in your config. +- The setting can be in `litellm_settings` or `general_settings` depending on your config structure. +- Enable debug logging: `LITELLM_LOG=DEBUG` to see which key is being forwarded. + +## Related + +- [Forward Client Headers](./../proxy/forward_client_headers.md) — Full BYOK and header forwarding docs +- [Claude Code Max Subscription](./claude_code_max_subscription.md) — Using Claude Code with OAuth/Max subscription through LiteLLM diff --git a/docs/my-website/img/claude_code_byok_screenshot.png b/docs/my-website/img/claude_code_byok_screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..2788df95c49d28b053f40ff7840d3e4994d9e50e GIT binary patch literal 101599 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%0AFI^p*atOqk^@RiLch=?_JmGf2a*I6> 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 Q3h;M9>#}BvhIROV0KJVB1^@s6 literal 0 HcmV?d00001 diff --git a/docs/my-website/sidebars.js b/docs/my-website/sidebars.js index c8ebb110c59..1cc743943e0 100644 --- a/docs/my-website/sidebars.js +++ b/docs/my-website/sidebars.js @@ -154,6 +154,7 @@ const sidebars = { items: [ "tutorials/claude_responses_api", "tutorials/claude_code_max_subscription", + "tutorials/claude_code_byok", "tutorials/claude_code_customer_tracking", "tutorials/claude_code_prompt_cache_routing", "tutorials/claude_code_websearch", diff --git a/litellm/proxy/litellm_pre_call_utils.py b/litellm/proxy/litellm_pre_call_utils.py index 2b6723a6bba..fc89aef4bb2 100644 --- a/litellm/proxy/litellm_pre_call_utils.py +++ b/litellm/proxy/litellm_pre_call_utils.py @@ -258,9 +258,20 @@ def clean_headers( headers: Headers, litellm_key_header_name: Optional[str] = None, forward_llm_provider_auth_headers: bool = False, + authenticated_with_header: Optional[str] = None, ) -> dict: """ Removes litellm api key from headers + + Args: + headers: Request headers + litellm_key_header_name: Custom header name for LiteLLM API key + forward_llm_provider_auth_headers: Whether to forward provider auth headers + authenticated_with_header: Which header was used for LiteLLM authentication + (e.g., "x-litellm-api-key", "authorization", "x-api-key") + + Returns: + Cleaned headers dict """ from litellm.llms.anthropic.common_utils import is_anthropic_oauth_key @@ -273,6 +284,13 @@ def clean_headers( if header_lower == "authorization" and is_anthropic_oauth_key(value): clean_headers[header] = value + # Special handling for x-api-key: forward it based on authenticated_with_header + elif header_lower == "x-api-key": + if ( + forward_llm_provider_auth_headers + and (authenticated_with_header is None or authenticated_with_header.lower() != "x-api-key") + ): + clean_headers[header] = value elif ( forward_llm_provider_auth_headers and header_lower in _SPECIAL_HEADERS_CACHE ): @@ -280,6 +298,9 @@ def clean_headers( continue if header_lower == "authorization": continue + # Never forward x-litellm-api-key (it's for proxy auth only) + if header_lower == "x-litellm-api-key": + continue clean_headers[header] = value # Check if header should be excluded: either in special headers cache or matches custom litellm key elif header_lower not in _SPECIAL_HEADERS_CACHE and ( @@ -868,6 +889,20 @@ async def add_litellm_data_to_request( # noqa: PLR0915 forward_llm_auth = general_settings.get( "forward_llm_provider_auth_headers", False ) + if not forward_llm_auth: + forward_llm_auth = getattr(litellm, "forward_llm_provider_auth_headers", False) + # Determine which header was used for authentication + # This enables forwarding provider keys (e.g., x-api-key) when they weren't used for LiteLLM auth + authenticated_with_header = None + if "x-litellm-api-key" in request.headers: + # If x-litellm-api-key is present, it was used for auth + authenticated_with_header = "x-litellm-api-key" + elif "authorization" in request.headers: + # Authorization header was used for auth + authenticated_with_header = "authorization" + else: + # x-api-key or another header was used for auth + authenticated_with_header = "x-api-key" _headers: Dict[str, str] = clean_headers( request.headers, @@ -877,10 +912,18 @@ async def add_litellm_data_to_request( # noqa: PLR0915 else None ), forward_llm_provider_auth_headers=forward_llm_auth, + authenticated_with_header=authenticated_with_header, ) verbose_proxy_logger.debug(f"Request Headers: {_headers}") verbose_proxy_logger.debug(f"Raw Headers: {_raw_headers}") + + if forward_llm_auth and "x-api-key" in _headers: + data["api_key"] = _headers["x-api-key"] + verbose_proxy_logger.debug( + "Setting client-provided x-api-key as api_key parameter (will override deployment key)" + ) + ########################################################## # Init - Proxy Server Request # we do this as soon as entering so we track the original request diff --git a/tests/test_litellm/llms/anthropic/test_anthropic_common_utils.py b/tests/test_litellm/llms/anthropic/test_anthropic_common_utils.py index 3729e67f0da..2b3a185e710 100644 --- a/tests/test_litellm/llms/anthropic/test_anthropic_common_utils.py +++ b/tests/test_litellm/llms/anthropic/test_anthropic_common_utils.py @@ -503,3 +503,126 @@ class TestProxyOAuthHeaderForwarding: psh = data["provider_specific_header"] assert psh["extra_headers"]["authorization"] == f"Bearer {FAKE_OAUTH_TOKEN}" assert psh["extra_headers"]["anthropic-beta"] == "oauth-2025-04-20" + + def test_clean_headers_forwards_x_api_key_when_authenticated_with_litellm_key(self): + """clean_headers should forward x-api-key when user authenticated with x-litellm-api-key and forward_llm_provider_auth_headers=True.""" + from starlette.datastructures import Headers + + from litellm.proxy.litellm_pre_call_utils import clean_headers + + raw_headers = Headers( + raw=[ + (b"x-litellm-api-key", b"sk-litellm-proxy-key"), + (b"x-api-key", b"sk-ant-api03-client-key"), + (b"content-type", b"application/json"), + ] + ) + cleaned = clean_headers( + raw_headers, + forward_llm_provider_auth_headers=True, + authenticated_with_header="x-litellm-api-key", + ) + + # x-api-key should be forwarded (it's a provider key, not used for auth) + assert "x-api-key" in cleaned + assert cleaned["x-api-key"] == "sk-ant-api03-client-key" + # x-litellm-api-key should be excluded (special header) + assert "x-litellm-api-key" not in cleaned + assert cleaned["content-type"] == "application/json" + + def test_clean_headers_excludes_x_api_key_when_used_for_auth(self): + """clean_headers should exclude x-api-key when it was used for LiteLLM authentication.""" + from starlette.datastructures import Headers + + from litellm.proxy.litellm_pre_call_utils import clean_headers + + raw_headers = Headers( + raw=[ + (b"x-api-key", b"sk-litellm-proxy-key"), + (b"content-type", b"application/json"), + ] + ) + cleaned = clean_headers(raw_headers, authenticated_with_header="x-api-key") + + # x-api-key should be excluded (was used for LiteLLM auth) + assert "x-api-key" not in cleaned + assert cleaned["content-type"] == "application/json" + + def test_clean_headers_forwards_x_api_key_when_authenticated_with_authorization( + self, + ): + """clean_headers should forward x-api-key when user authenticated with Authorization header and forward_llm_provider_auth_headers=True.""" + from starlette.datastructures import Headers + + from litellm.proxy.litellm_pre_call_utils import clean_headers + + raw_headers = Headers( + raw=[ + (b"authorization", b"Bearer sk-litellm-proxy-key"), + (b"x-api-key", b"sk-ant-api03-client-key"), + (b"content-type", b"application/json"), + ] + ) + cleaned = clean_headers( + raw_headers, + forward_llm_provider_auth_headers=True, + authenticated_with_header="authorization", + ) + + # x-api-key should be forwarded (it's a provider key, not used for auth) + assert "x-api-key" in cleaned + assert cleaned["x-api-key"] == "sk-ant-api03-client-key" + # authorization should be excluded (was used for auth, not OAuth) + assert "authorization" not in cleaned + assert cleaned["content-type"] == "application/json" + + def test_clean_headers_x_api_key_without_authenticated_header_param(self): + """clean_headers should exclude x-api-key when authenticated_with_header is None.""" + from starlette.datastructures import Headers + + from litellm.proxy.litellm_pre_call_utils import clean_headers + + raw_headers = Headers( + raw=[ + (b"x-api-key", b"sk-ant-api03-key"), + (b"content-type", b"application/json"), + ] + ) + cleaned = clean_headers(raw_headers, authenticated_with_header=None) + + # x-api-key should be excluded (no authenticated_with_header means we can't determine) + assert "x-api-key" not in cleaned + assert cleaned["content-type"] == "application/json" + + def test_clean_headers_forwards_x_api_key_with_forward_flag_and_litellm_auth( + self, + ): + """clean_headers should forward x-api-key when both forward_llm_provider_auth_headers=True + and authenticated_with_header indicates different header was used for auth.""" + from starlette.datastructures import Headers + + from litellm.proxy.litellm_pre_call_utils import clean_headers + + raw_headers = Headers( + raw=[ + (b"x-litellm-api-key", b"sk-litellm-proxy-key"), + (b"x-api-key", b"sk-ant-api03-client-key"), + (b"x-goog-api-key", b"google-key-123"), + (b"content-type", b"application/json"), + ] + ) + cleaned = clean_headers( + raw_headers, + forward_llm_provider_auth_headers=True, + authenticated_with_header="x-litellm-api-key", + ) + + # x-api-key should be forwarded (provider key, not used for auth) + assert "x-api-key" in cleaned + assert cleaned["x-api-key"] == "sk-ant-api03-client-key" + # x-goog-api-key should also be forwarded (forward flag is True) + assert "x-goog-api-key" in cleaned + assert cleaned["x-goog-api-key"] == "google-key-123" + # x-litellm-api-key should be excluded (special header) + assert "x-litellm-api-key" not in cleaned + assert cleaned["content-type"] == "application/json" diff --git a/tests/test_litellm/proxy/_experimental/mcp_server/test_byok_oauth_endpoints.py b/tests/test_litellm/proxy/_experimental/mcp_server/test_byok_oauth_endpoints.py index a7391666cda..abda3b1b250 100644 --- a/tests/test_litellm/proxy/_experimental/mcp_server/test_byok_oauth_endpoints.py +++ b/tests/test_litellm/proxy/_experimental/mcp_server/test_byok_oauth_endpoints.py @@ -477,7 +477,6 @@ async def test_check_byok_credential_missing_credential(): with patch( "litellm.proxy._experimental.mcp_server.db.get_user_credential", new=AsyncMock(return_value=None), - ), patch("litellm.proxy.proxy_server.prisma_client", mock_prisma): ), patch("litellm.proxy.proxy_server.prisma_client", mock_prisma): with pytest.raises(HTTPException) as exc_info: await _check_byok_credential(server, user_auth) @@ -511,7 +510,6 @@ async def test_check_byok_credential_has_credential(): with patch( "litellm.proxy._experimental.mcp_server.db.get_user_credential", new=AsyncMock(return_value="some-credential-value"), - ), patch("litellm.proxy.proxy_server.prisma_client", mock_prisma): ), patch("litellm.proxy.proxy_server.prisma_client", mock_prisma): # Should not raise await _check_byok_credential(server, user_auth)