BlogNarzędzia
Claude Code, GitHub Copilot i Cursor za własną bramą LLM
Agentów kodujących da się już dziś puścić przez bramę LLM (LLM gateway), ale według stanu na 7 listopada 2026 trzy popularne narzędzia obsługują to w bardzo różnym stopniu. Claude Code jest do tego przygotowany: ustawiasz ANTHROPIC_BASE_URL na adres bramy, każdy programista dostaje własne poświadczenie, a ustawienie zarządzane może odrzucić każdy inny cel. Enterprise BYOK w GitHub Copilot, wciąż w public preview, dodaje do Chatu, CLI i IDE modele twojego dostawcy albo endpointu zgodnego z OpenAI. Cursor przyjmuje twoje klucze dostawców, ale każde zapytanie nadal idzie przez jego serwery, a Tab dalej działa na modelach Cursora.
Po co w ogóle kierować agentów kodujących przez bramę
Brama daje jeden punkt kontroli nad ruchem, który inaczej idzie prosto z laptopa każdego programisty do dostawcy modelu. Dokumentacja Claude Code od Anthropic wymienia te same korzyści, o które chodzi większości zespołów platformowych:
- Wydatki na zespół: każdy programista ma własne poświadczenie do bramy, więc użycie jest przypisane do osoby i zespołu bez względu na to, który dostawca obsłużył zapytanie
- Lista dozwolonych modeli: brama udostępnia tylko modele, które zatwierdziłeś i wyceniłeś
- Unieważnianie w jednym miejscu: klucz dostawcy zostaje na serwerze, a odejście pracownika oznacza unieważnienie jednego poświadczenia do bramy
- Wybór dostawcy i regionu: brama może przekazywać ruch do Claude na Amazon Bedrock, Google Cloud lub Microsoft Foundry na twoim własnym koncie chmurowym, a zmiana nie wymaga rekonfiguracji komputerów programistów
- Dziennik audytowy zapytań do modeli, jeśli wymagają go twoje zasady
Zmiana dostawcy bez ruszania laptopów działa tylko wtedy, gdy brama wystawia jeden endpoint w formacie Anthropic, niezależnie od tego, co stoi za nią. Ceną jest to, że brama staje się infrastrukturą, którą sam utrzymujesz. Anthropic ostrzega, że Claude Code z każdym wydaniem dostaje nowe możliwości, a brama, która ich nie przekazuje, psuje te funkcje, więc ktoś musi ją aktualizować. Naszym zdaniem jeden zespół z jednym dostawcą i bez wymogu audytu często poradzi sobie z osobnymi workspace'ami lub kluczami u dostawcy. Brama zaczyna się opłacać, gdy w grę wchodzi kilka zespołów, kilka narzędzi albo wymóg co do miejsca przetwarzania danych.
Którzy agenci kodujący obsługują bramę, stan na 7 listopada 2026
Tylko Claude Code pozwala wysłać cały ruch do modeli przez twoją bramę i wymusić to centralnie. GitHub Copilot i Cursor pozwalają podpiąć klucze dostawców lub endpointy dla części produktu, a w pozostałej części nadal działają ich własne modele.
| Narzędzie | Jak się łączy | Czy da się to wymusić | Co zostaje poza twoją bramą |
|---|---|---|---|
| Claude Code | ANTHROPIC_BASE_URL plus poświadczenie do bramy albo zmienne w formacie dostawcy dla Bedrock, Google Cloud i Foundry | Tak, przez allowedProviders ustawione na customEndpoint w ustawieniach zarządzanych, od Claude Code v2.1.285 | Telemetria i kilka sprawdzeń wysyłanych bezpośrednio do Anthropic; Claude Code w Slacku i sesje w chmurze |
| GitHub Copilot, enterprise BYOK (public preview) | Właściciele dodają klucze do Anthropic, AWS Bedrock, Google AI Studio, Microsoft Foundry, OpenAI, dostawców zgodnych z OpenAI lub xAI | Częściowo: własne modele trafiają do wyboru modeli obok modeli GitHuba | Wbudowane modele GitHuba; dokumentacja wymienia jako miejsca użycia tylko Chat, Copilot CLI i IDE |
| GitHub Copilot, lokalny BYOK | Każdy użytkownik dodaje klucz dostawcy w VS Code, IDE JetBrains, Xcode, Copilot CLI i innych klientach | Nie, ale właściciele planów Business i Enterprise mogą go wyłączyć polityką | Uzupełnianie kodu w VS Code, według ogłoszenia GitHuba z kwietnia 2026 |
| Cursor | Własne klucze do OpenAI, Anthropic, Google, Azure OpenAI i AWS Bedrock | Brak udokumentowanego centralnego wymuszenia | Uzupełnianie Tab; każde zapytanie przechodzi przez serwery Cursora, gdzie budowany jest prompt |
GitHub Copilot z własnym kluczem
GitHub ma dwa mechanizmy. Enterprise BYOK dla Copilot Business i Copilot Enterprise, wciąż w public preview, pozwala właścicielom enterprise lub organizacji dodać klucze. Modele z tych kluczy każdy użytkownik widzi potem na dole listy wyboru modeli. W styczniu 2026 GitHub dodał AWS Bedrock, Google AI Studio i dowolnego dostawcę zgodnego z OpenAI, a także modele z Responses API, maksymalne okno kontekstu i streaming. Przez opcję zgodną z OpenAI podłączysz endpoint LiteLLM. Klucze lokalnego BYOK zostają na komputerze użytkownika. Według ogłoszenia GitHuba dla VS Code z kwietnia 2026 użycie rozlicza twój dostawca, nie wlicza się ono do limitów zapytań Copilota i nie obejmuje uzupełniania kodu.
GitHub opisuje enterprise BYOK jako obsługiwany po stronie serwera, przez Copilot API, i nie dokumentuje ścieżki danych. Rozumiemy to tak, że zapytania do twojego endpointu wychodzą wtedy od GitHuba, a nie z laptopa programisty. Zanim zaplanujesz bramę dostępną tylko wewnętrznie, potwierdź więc wymagania sieciowe z GitHubem.
Cursor z własnymi kluczami API
Strona pomocy Cursora o kluczach API wymienia OpenAI, Anthropic, Google, Azure OpenAI i AWS Bedrock, przy czym Bedrock podłączasz kluczami w IDE albo rolami IAM ustawionymi w panelu Cursora. Własne klucze działają tylko z modelami czatu, a uzupełnianie Tab nadal korzysta z wbudowanych modeli Cursora. Zapytania przechodzą przez serwery Cursora, gdzie powstaje ostateczny prompt. Klucz jest wysyłany z każdym zapytaniem i nie jest przechowywany. Polityka Zero Data Retention Cursora nie obowiązuje przy własnych kluczach, a w planach Teams i Enterprise Cursor pobiera za zapytania z własnym kluczem dodatkową opłatę oprócz opłat dostawcy. Strona nie dokumentuje własnego bazowego adresu URL. W praktyce własne klucze pozwalają rozliczać użycie przez twoje konto Azure lub Bedrock, ale ruch i tak wychodzi poza twoją sieć.
Konfiguracja Claude Code z LiteLLM lub inną bramą
Claude Code potrzebuje bazowego adresu URL i poświadczenia. ANTHROPIC_BASE_URL wskazuje bramę, która obsługuje format Anthropic Messages pod /v1/messages. LiteLLM to potrafi. Poświadczenie trafia do ANTHROPIC_AUTH_TOKEN, jeśli brama czyta token bearer z nagłówka Authorization, a tak właśnie przekazuje się wirtualne klucze LiteLLM, albo do ANTHROPIC_API_KEY, jeśli czyta x-api-key. Dla kluczy, które rotują albo pochodzą z sejfu, polecenie apiKeyHelper wypisuje poświadczenie, a Claude Code wysyła je w obu nagłówkach. Wynik jest domyślnie trzymany w pamięci przez pięć minut, co zmienisz przez CLAUDE_CODE_API_KEY_HELPER_TTL_MS.
Rozprowadzaj jedno i drugie przez ustawienia zarządzane i narzędzia do sekretów, nigdy przez repozytorium. Anthropic ostrzega przed wpisywaniem poświadczenia do .claude/settings.json projektu, bo ten plik trafia do commita. Żeby zarządzany komputer mógł łączyć się tylko z bramą, plik ustawień zarządzanych ustawia razem allowedProviders i bazowy adres URL:
{
"allowedProviders": ["customEndpoint"],
"env": {
"ANTHROPIC_BASE_URL": "https://llm-gateway.example.com"
}
}Claude Code odrzuca wtedy każdą sesję skierowaną gdzie indziej, także bezpośrednio do Anthropic albo do prywatnego proxy programisty. Jeśli brama mówi natywnymi formatami Amazon Bedrock albo Agent Platform w Google Cloud, wcześniej Vertex AI, użyj ANTHROPIC_BEDROCK_BASE_URL z CLAUDE_CODE_USE_BEDROCK=1 i CLAUDE_CODE_SKIP_BEDROCK_AUTH=1 albo odpowiedników z VERTEX. Claude Code wysyła wtedy tylko funkcje, które ci dostawcy akceptują. Microsoft Foundry używa ANTHROPIC_FOUNDRY_BASE_URL z CLAUDE_CODE_USE_FOUNDRY=1.
Trzy szczegóły regularnie zaskakują zespoły. Poświadczenie do bramy zastępuje w tych zapytaniach subskrypcję claude.ai programisty, więc za ruch płaci za tokeny właściciel klucza u dostawcy. Samo ustawienie bazowego adresu URL zostawia w użyciu logowanie do subskrypcji. Rozszerzenie VS Code czyta zmienne bramy z claudeCode.environmentVariables, a aplikacja desktopowa z własnej konfiguracji inferencji zewnętrznej, nie z ANTHROPIC_BASE_URL. Do tego Anthropic nie wspiera kierowania Claude Code do modeli innych niż Claude przez jakąkolwiek bramę, nawet jeśli brama technicznie to umożliwia.
Co widzi brama, co logować, a czego nie przechowywać
Brama widzi wszystko, co agent wysyła do modelu: prompt systemowy, rozmowę, kod źródłowy i zawartość plików, które agent przeczytał, wyniki poleceń i narzędzi. Sekret w pliku, który agent otworzy, może więc przez nią przejść. Claude Code wysyła też nagłówki pomocne w przypisywaniu: x-claude-code-session-id grupuje zapytania jednej sesji, a x-claude-code-agent-id oznacza zapytania od subagentów. Anthropic zaznacza, że identyfikator agenta wskazuje tylko agenta, nie osobę ani urządzenie.
Do rozliczania kosztów i utrzymania wystarczą metadane. Przydatny rekord dla każdego zapytania zawiera:
- Klucz do bramy oraz zespół i programistę, do których należy
- Model, o który poproszono, i model, który odpowiedział, łącznie z fallbackami
- Tokeny wejściowe, wyjściowe, odczytu i zapisu cache oraz wyliczony koszt
- Kod statusu, opóźnienie i czas do pierwszego tokenu
- Identyfikatory sesji i agenta z nagłówków zapytania
Nie przechowuj treści zapytań i odpowiedzi, chyba że wymaga tego spisany cel. Według dokumentacji LiteLLM domyślnie nie zapisuje treści zapytań i odpowiedzi. store_prompts_in_spend_logs to włącza, a administrator może też zmienić to w interfejsie, gdzie ustawienie ma pierwszeństwo przed plikiem konfiguracyjnym. maximum_spend_logs_retention_period usuwa stare logi wydatków, a turn_off_message_logging trzyma wiadomości z dala od zewnętrznych callbacków logowania, przy czym wydatki nadal są liczone. Dane o użyciu dla każdego programisty to dane osobowe, więc przed startem uzgodnij ich cel i okres przechowywania z osobą odpowiedzialną za ochronę danych, a jeśli w firmie działa rada zakładowa, także z nią.
Nie każde zapytanie przechodzi przez bramę. Nawet gdy ANTHROPIC_BASE_URL na nią wskazuje, Claude Code wysyła telemetrię do Anthropic, bez twojego poświadczenia do bramy, a sprawdzenie bezpieczeństwa domen w WebFetch wywołuje api.anthropic.com bezpośrednio. CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 wyłącza ruch, który nie jest niezbędny, ale wyłącza też automatyczne aktualizacje, więc zaplanuj inną ścieżkę aktualizacji.
Budżety i limity zapytań dla zespołów bez spowalniania programistów
Twardy limit ustaw na zespół, a limity dla pojedynczych programistów trzymaj na hojnym poziomie. Sesje agentów generują skoki ruchu: jedno zadanie może uruchomić równolegle kilku subagentów, z których każdy wysyła duży prompt. Ciasny limit zapytań na minutę na kluczu zablokuje więc normalną pracę na długo przed tym, zanim ochroni budżet. To nasza własna ocena, wynikająca z kształtu tego ruchu. W LiteLLM masz do dyspozycji:
- Na zespół: max_budget z budget_duration do regularnego resetu oraz team_member_budget jako domyślny budżet każdego członka
- Na klucz: max_budget, budget_duration, rpm_limit, tpm_limit i max_parallel_requests, a do tego budget_limits dla kilku okien na jednym kluczu, na przykład limitu dziennego i miesięcznego
- Na model: model_max_budget, które dokumentacja oznacza jako funkcję wersji Enterprise
O tym, czy limity działają, decydują dwa szczegóły operacyjne. Budżety są w ogóle egzekwowane tylko z bazą Postgres. Przy więcej niż jednym workerze lub replice LiteLLM zdecydowanie zaleca Redis. Bez niego limity zapytań są liczone osobno na każdym workerze, budżety mogą zostać przekroczone, a unieważniony klucz działa dalej na workerach, które nie przetworzyły unieważnienia, dopóki nie wygaśnie ich wpis w cache. Potem ustal, co programista zobaczy po dojściu do limitu. Niewyjaśniony błąd w środku zadania kosztuje więcej czasu pracy, niż oszczędza tokenów, więc ostrzegaj zespół poniżej twardego limitu i opublikuj, kto może podnieść budżet.
Typowe awarie i jak je rozpoznać
Większość problemów bierze się z bramy, która po drodze zmienia zapytanie lub odpowiedź. Dokumentacja protokołu bram i tabela rozwiązywania problemów od Anthropic opisują między innymi takie przypadki:
| Objaw | Przyczyna | Rozwiązanie |
|---|---|---|
| Błąd nieprawidłowej nazwy modelu po wyborze modelu w /model | Identyfikator modelu wysyłany przez Claude Code nie jest model_name w konfiguracji LiteLLM | Dodaj dokładne identyfikatory do model_list, przypnij ANTHROPIC_MODEL albo włącz CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY=1 |
| Sesje się zawieszają albo przerywają przy długich przerwach na myślenie | Brama buforuje strumień albo usuwa zdarzenia SSE ping; Claude Code domyślnie przerywa strumień po 300 sekundach ciszy | Przekazuj strumień na bieżąco i przepuszczaj zdarzenia ping |
| Błędy 400 wskazujące pola schematów narzędzi lub context_management, często z Extra inputs are not permitted | Nagłówek beta został usunięty, a pole w treści przeszło, albo treść w formacie Anthropic trafiła do Bedrock | Przekazuj anthropic-beta i pola treści bez zmian albo ustaw CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1 |
| Brak błędu, ale dużo tokenów wejściowych i niewielka aktywność cache | Znaczniki cache_control zostały usunięte albo treść systemowa spłaszczona do zwykłego tekstu | Przekazuj cache_control wszędzie tam, gdzie występuje, i zachowaj treść w formie bloków |
| 403 z treścią HTML i brak zapytania w logach bramy | Reguły WAF przeciw cross-site scripting w treści zapytań reagują na kod źródłowy w promptach | Wyłącz ścieżkę /v1/messages z inspekcji treści zapytań |
| Claude Code przestaje sam obchodzić odrzucone funkcje | Brama opakowuje błędy dostawcy we własny format i logika ponowień przestaje je rozpoznawać | Przekazuj treść błędów od dostawcy bez zmian |
Prompt caching sprawdź osobno, bo zepsuty cache kosztuje pieniądze, nie zgłaszając błędu. Porównaj tokeny odczytu cache na sesję przed wprowadzeniem bramy i po nim. W wersjach Claude Code sprzed v2.1.181 blok atrybucji zmieniający się przy każdym zapytaniu dodatkowo psuł cache oparte na treści zapytania. Dokumentacja protokołu od Anthropic opisuje na ten przypadek CLAUDE_CODE_ATTRIBUTION_HEADER=0.
Krótka lista kontrolna wdrożenia
Wdrażaj w tej kolejności i sprawdzaj każdy krok prawdziwą sesją agenta, a nie pojedynczym zapytaniem curl:
- 1
Ustal zakres
Wypisz, które narzędzia i miejsca użycia muszą korzystać z bramy. CLI Claude Code, rozszerzenie VS Code i aplikacja desktopowa to potrafią. Claude Code w Slacku i sesje w chmurze nie, a Copilot i Cursor tylko częściowo. Nie włączaj niczego, co nie może omijać bramy.
- 2
Uruchom i zabezpiecz bramę
Przypnij wersję bramy, uruchom Postgres dla budżetów i Redis dla więcej niż jednego workera, a okres przechowywania logów ustaw przed pierwszym zapytaniem.
- 3
Zdefiniuj modele i nazwy
Opublikuj listę dozwolonych modeli z dokładnymi identyfikatorami, które wysyła każde narzędzie, i zmapuj je w bramie.
- 4
Wydaj jedno poświadczenie na programistę
Przypisz każdy klucz do zespołu, ustaw budżety zespołów i hojne limity na klucz, a unieważnienie przetestuj na każdej replice.
- 5
Rozprowadź konfigurację centralnie
Rozprowadź bazowy adres URL, mechanizm poświadczeń i allowedProviders przez ustawienia zarządzane Claude Code, a polityki BYOK dla Copilota ustaw w ustawieniach enterprise lub organizacji na GitHubie.
- 6
Przeprowadź sesję odbiorczą
Zanim zaprosisz wszystkich, sprawdź z zespołem testowym streaming, wywołania narzędzi, subagentów, odczyty cache i przekroczenie budżetu, a każdy programista niech potwierdzi adres bramy w /status.
- 7
Testuj ponownie przy każdej aktualizacji
Claude Code z każdym wydaniem zmienia to, co wysyła, więc powtarzaj sesję odbiorczą przed aktualizacją bramy i przed dopuszczeniem nowej wersji klienta.
Cloudsail konfiguruje i utrzymuje bramy LiteLLM dla zespołów inżynierskich oraz wdraża na nich Claude Code, łącznie z ustawieniami zarządzanymi, budżetami zespołów i opisaną wyżej sesją odbiorczą.
Brama LiteLLM: wdrożenie i utrzymanieOptymalizacja kosztów LLMClaude Code: uprawnienia i wdrożenie
Pytania
Czy Claude Code może używać modeli GPT lub open-weight przez LiteLLM?
Brama potrafi tłumaczyć zapytania, a LiteLLM dokumentuje, jak to zrobić. Anthropic stwierdza jednak, że nie wspiera kierowania Claude Code do modeli innych niż Claude przez jakąkolwiek bramę, więc funkcje mogą się psuć między wydaniami, a to ryzyko bierzesz na siebie.
Czy klucz do bramy nadal korzysta z naszej subskrypcji Claude?
Nie. Dopóki aktywne jest poświadczenie do bramy albo apiKeyHelper, zapytania niosą to poświadczenie zamiast logowania claude.ai, limity subskrypcji nie obowiązują, a ruch jest rozliczany za tokeny na rzecz właściciela klucza u dostawcy. Samo ustawienie ANTHROPIC_BASE_URL zostawia w użyciu logowanie do subskrypcji.
Czy brama może zostać w naszej sieci wewnętrznej?
W przypadku Claude Code tak: zapytania idą z komputera programisty do bramy, więc wystarczy VPN albo wewnętrzna nazwa DNS. Cursor kieruje zapytania przez własne serwery, a GitHub obsługuje enterprise BYOK po stronie serwera, więc endpoint dla któregokolwiek z nich musiałby być osiągalny od strony dostawcy. Zanim zaplanujesz prywatny endpoint, potwierdź wymagania sieciowe z dostawcą.
Czy LiteLLM przechowuje nasze prompty i kod źródłowy?
W logach wydatków domyślnie nie: według dokumentacji treść zapytań i odpowiedzi jest zapisywana tylko po włączeniu store_prompts_in_spend_logs. Zewnętrzne callbacki logowania to osobna ścieżka, którą obejmuje turn_off_message_logging. Sprawdź oba ustawienia w każdym środowisku, bo administrator może zmienić ustawienie logów wydatków w interfejsie.
Powiązane usługi
Brama LiteLLM
Budżety i zasady dostępu do AI dla każdego zespołu, przez bramę LiteLLM, która jest zabezpieczona, podłączona do dostawcy tożsamości i aktualna.
Optymalizacja kosztów LLM
Wydatki na agentów rozbite na zespoły i zadania, a potem obniżone dzięki ustawieniom domyślnym, budżetom i routingowi, które twój zespół platformowy może sam utrzymywać.
Konsulting i wdrożenie Claude Code
Claude Code dopasowany do twojej bazy kodu, uprawnień i procesu review, na początek w jednym zespole pilotażowym.
Więcej z bloga
Alokacja kosztów LLM
Jak wyjaśnić rachunek za LLM według zespołu, zadania i zaakceptowanego wyniku: oznaczaj zapytania w bramce, wyceniaj je tak, jak wystawiana jest faktura, rozdzielaj koszty wspólne według jawnej reguły i co miesiąc uzgadniaj wynik z finansami.
Bezpieczeństwo agentów AI
Bezpieczeństwo agentów AI do programowania i zarządzanie nimi w praktyce: prompt injection, sekrety, uprawnienia, sandboxing, uruchomienia bez nadzoru i podział odpowiedzialności.
Sekrety i poświadczenia agentów
Gdzie powinny być przechowywane poświadczenia agentów i integracji z modelami, jak dać każdemu agentowi własną tożsamość, jak rotować je bez psucia trwających procesów i co zrobić po wycieku.
Agenci kodujący dla zespołów w porównaniu
Claude Code, Cursor, GitHub Copilot i OpenAI Codex obok siebie: plany, rozliczanie użycia, modele, pliki instrukcji, dane i kiedy które narzędzie pasuje.
Źródła
- Dokumentacja Claude Code: Other LLM gateways
- Dokumentacja Claude Code: Connect Claude Code to an LLM gateway
- Dokumentacja Claude Code: Gateway protocol reference
- GitHub Docs: Bring your own key for GitHub Copilot
- GitHub Docs: włączanie własnych modeli dla enterprise
- GitHub Changelog, 15 stycznia 2026: GitHub Copilot bring your own key (BYOK) enhancements
- GitHub Changelog, 22 kwietnia 2026: Bring your own language model key in VS Code now available
- Pomoc Cursora: API keys
- Dokumentacja LiteLLM: łączenie Claude Code z LiteLLM
- Dokumentacja LiteLLM: budżety i limity zapytań
- Dokumentacja LiteLLM: Redis requirements
- Dokumentacja LiteLLM: Getting started with UI logs
- Dokumentacja LiteLLM: Logging
Porozmawiaj z inżynierem
Przyjdź z jednym zadaniem, które chcesz usprawnić. Rozmowa trwa 30 minut i nie wymaga dostępu do twoich systemów ani danych.
Rezerwacja odbywa się w Kalendarzu Google.
Wolisz najpierw napisać? Zostaw adres e-mail i kilka zdań, a odpowiemy, proponując terminy.
Sprawdź wersję roboczą w swoim programie pocztowym
Wyślij ją stamtąd, a inżynier odpowie ci osobiście, proponując terminy 30-minutowej rozmowy. Jeśli wersja robocza się nie otworzyła, napisz do nas na adres miki@cloudsail.com.