Przejdź do głównej zawartości

Kontrola kosztów Claude Code w zespole

Kontrola kosztów Claude Code to trzy warstwy: widoczność (/usage dla sesji, OpenTelemetry dla osoby i zespołu), twarde limity (seat allowance w planie, limity wydatków na usage credits, limity workspace’u w Console, --max-budget-usd dla przebiegów nienadzorowanych) oraz zarządzana polityka modeli i effortu. Wydatki rosną z kontekstem, modelem, effortem i liczbą agentów, więc limity bez widoczności tylko przesuwają niespodziankę.

Ta strona jest dla tech leada lub właściciela platformy, którego dział finansów właśnie zapytał, dlaczego pozycja „Claude Code” się podwoiła, a on nie umie wskazać zespołu, repozytorium ani pipeline’u, który za tym stoi. Jeśli chcesz obniżyć zużycie tokenów we własnej sesji, zacznij od optymalizacji wydajności; metoda budżetowania na poziomie organizacji jest w zarządzaniu kosztami AI.

  • Odpowiedź dla jednej sesji w /usage i /context oraz odpowiedź dla osoby, zespołu i repozytorium we własnym backendzie metryk dzięki OpenTelemetry
  • Właściwy limit dla sposobu, w jaki płaci twoja organizacja: przydział seata i limity usage credits, limity workspace’u w Console albo budżety u dostawcy chmury
  • Sufit w dolarach dla każdego zadania claude -p w CI, z kosztem przebiegu w wyjściu JSON
  • Politykę w managed settings, która przypina dozwolone modele i poziomy effort, zamiast strony w wiki, której nikt nie czyta
  • Sposób, by pokazać, że oszczędności nie kosztowały jakości: wydatek na zaakceptowaną zmianę, a nie sam wydatek

Każde żądanie wysyła rozmowę od nowa: prompt systemowy, CLAUDE.md, definicje narzędzi i każdą wcześniejszą wiadomość oraz wynik narzędzia. Prompt caching sprawia, że ponowne czytanie tej historii jest tańsze, ale nie darmowe. Rachunek przesuwają cztery rzeczy:

  • Rozmiar kontekstu. Sesja, której nikt nie wyczyścił, nalicza wczorajszą pracę przy każdej turze. Po przerwie dłuższej niż czas życia cache’u następna wiadomość przetwarza cały kontekst w pełnej cenie.
  • Model i effort. Tokeny myślenia są liczone jak tokeny wyjściowe, a wyższy poziom effort kupuje więcej myślenia przy każdym żądaniu.
  • Agenci, na których nie patrzysz. Każdy subagent, agent dynamicznego workflow i każdy członek zespołu agentów (agent teams) wysyła własne żądania. Zadania cykliczne (/loop), sprawdzenia celu i wiadomości między sesjami uruchamiają nowe tury, gdy sesja stoi bezczynnie, i każda niesie pełny kontekst. Dokumentacja kosztów Anthropic podaje, że agent teams zużywają „approximately 7x more tokens than standard sessions when teammates run in plan mode”.
  • Automatyzacja. W CI nikt nie wciśnie Escape, gdy pętla pójdzie w złą stronę.

Jako punkt odniesienia dokumentacja kosztów Anthropic (sprawdzone 2026-09-26) podaje, że we wdrożeniach firmowych średnia to „around $13 per developer per active day and $150-250 per developer per month, with costs remaining below $30 per active day for 90% of users”. Porównuj z tym zakresem własne liczby po pilotażu, nie przed nim.

Które mechanizmy kontroli kosztów Claude Code dotyczą twojej konfiguracji?

Dział zatytułowany „Które mechanizmy kontroli kosztów Claude Code dotyczą twojej konfiguracji?”

To, jak płaci organizacja, decyduje, gdzie widzisz wydatki i gdzie je ograniczasz. Wybierz swój wiersz, zanim cokolwiek skonfigurujesz:

Twoja konfiguracjaGdzie widać wydatkiJak je ograniczyćLiczby per osoba
Claude for Teams lub EnterpriseSpend report w analityce organizacji (tylko wydatki na usage credits; zużycie w ramach przydziału seata nie jest liczone w dolarach)Przydział seata, a potem limity wydatków na usage credits dla organizacji, grupy lub członka w Admin settings > UsageCSV ze spend reportu; Enterprise Analytics API w planie Enterprise
Claude Console (API)Strona usage w Console i tworzony automatycznie workspace „Claude Code”Limit wydatków workspace’u plus limit szybkości zapytań (rate limit) workspace’uDashboard w Console; Claude Code Analytics API
Amazon Bedrock, Google Cloud’s Agent Platform (dawniej Vertex AI), Microsoft FoundryKonsola rozliczeń chmuryBudżety u dostawcy chmury albo limity wydatków per osoba w samodzielnie hostowanej bramce Claude appsOpenTelemetry, bramka Claude apps albo bramka LLM, na przykład LiteLLM
Indywidualny Pro lub MaxPaski zużycia planu w /usageMiesięczny limit wydatków na usage creditsNie dotyczy

OpenTelemetry działa w każdym wierszu i jako jedyne strumieniuje koszt per osoba do twojego własnego stosu niemal w czasie rzeczywistym. W wierszu dostawców chmury dashboardy analityczne Anthropic i Claude Code Analytics API w ogóle nie widzą zużycia, więc telemetria albo bramka to jedyny widok per osoba.

Najpierw widoczność kosztów Claude Code, potem limity

Dział zatytułowany „Najpierw widoczność kosztów Claude Code, potem limity”
  1. Odczytaj jedną sesję przez /usage. Poleceniem jest /usage; /cost i /stats to jego aliasy. Blok Session pokazuje kwotę za sesję, podział tokenów na modele i linię Prompt cache (main) z udziałem wejścia obsłużonego z cache’u oraz liczbą chybień. W planach Pro, Max, Team i Enterprise ten sam ekran przypisuje ostatnie zużycie do skills, subagentów, pluginów, serwerów MCP i ciężkich pętli oraz oznacza każde zachowanie, na przykład długi kontekst albo chybienia cache’u, które odpowiada za co najmniej 10% zużycia. Klawiszami d i w przełączasz ostatnie 24 godziny i ostatnie 7 dni.

    Ważne są dwa ograniczenia. Kwota jest liczona lokalnie po cenie cennikowej, więc w subskrypcji nie jest twoim rachunkiem. Podział obejmuje tylko tę maszynę, a nie inne urządzenia ani claude.ai.

  2. Sprawdź, co wypełnia kontekst. /context pokazuje podział na prompt systemowy, CLAUDE.md, narzędzia i rozmowę. Skonfiguruj status line, by przy każdej turze pokazywała zużycie kontekstu i koszt, a /insights generuje raport HTML o tym, gdzie ostatnie sesje poszły źle (sama analiza też zużywa limit lub budżet).

  3. Eksportuj OpenTelemetry dla widoku zespołowego. Cała konfiguracja to zmienne środowiskowe. Wypchnij je przez managed settings (zobacz integrację w firmie), żeby nikt nie mógł o nich zapomnieć:

    {
    "env": {
    "CLAUDE_CODE_ENABLE_TELEMETRY": "1",
    "OTEL_METRICS_EXPORTER": "otlp",
    "OTEL_LOGS_EXPORTER": "otlp",
    "OTEL_EXPORTER_OTLP_PROTOCOL": "grpc",
    "OTEL_EXPORTER_OTLP_ENDPOINT": "http://otel-collector.internal:4317",
    "OTEL_RESOURCE_ATTRIBUTES": "department=payments,team.id=checkout,cost_center=eng-123",
    "OTEL_METRICS_INCLUDE_REPOSITORY": "true"
    }
    }

    Ustaw OTEL_EXPORTER_OTLP_PROTOCOL jawnie, bo Claude Code nie ma domyślnego protokołu. Każdy klucz z OTEL_RESOURCE_ATTRIBUTES staje się etykietą każdej metryki, więc claude_code.cost.usage przychodzi w podziale na dział, zespół i model. OTEL_METRICS_INCLUDE_REPOSITORY (v2.1.269 lub nowsza) dodaje etykiety repozytorium vcs.*, które odpowiadają na pytanie „które repozytorium wygenerowało wydatek”. Jeśli kolektor jest osiągalny spoza zaufanej sieci, dodaj OTEL_EXPORTER_OTLP_HEADERS z tokenem z magazynu sekretów, nigdy jako literał w pliku.

  4. Zbuduj wykresy serii, które odpowiadają na pytania działu finansów. Każda nazwa ma prefiks claude_code.; bez niego filtr w zapytaniu nic nie znajdzie.

    Metryka lub zdarzenieCo daje
    claude_code.cost.usageSzacowany koszt w USD według modelu i twoich atrybutów zasobu
    claude_code.token.usageTokeny wejściowe, wyjściowe i cache’u: to, co napędza koszt
    claude_code.pull_request.count, claude_code.commit.count, claude_code.lines_of_code.countStrona „efektów” w tym ilorazie
    claude_code.api_error (zdarzenie)Błędy API i przekroczenia limitów zapytań, jako zdarzenia w logach: wczesne ostrzeżenie, zanim ktoś zgłosi, że Claude „zwalnia”

    Pełny katalog, razem ze śladami (traces), jest na stronie o obserwowalności agentów.

  5. Raportuj w stawkach z umowy. Każda kwota, którą pokazuje Claude Code (/usage, status line, OpenTelemetry i limit --max-budget-usd), jest liczona po cenie cennikowej, chyba że managed setting modelPricing mówi inaczej. Ustaw multiplier poniżej 1 dla stałego rabatu (powyżej 1 dla wewnętrznej marży przy refakturowaniu, od v2.1.271) albo overrides per model ze stawek z umowy. Claude Code nie pobiera tych stawek z Console, więc aktualizuj ustawienie przy każdej zmianie umowy; poza managed settings klucz jest ignorowany. Gdy działa, linia Total cost w /usage ma dopisek at your organization's configured rates. Kwoty nadal są szacunkiem, nie fakturą.

  6. Ustaw limit dla swojego wiersza. W Teams i Enterprise domyślnym sufitem jest przydział seata; usage credits włączaj tylko razem z limitem wydatków na poziomie organizacji, grupy lub członka. W Console ustaw limit wydatków na workspace „Claude Code” i limit zapytań workspace’u, żeby Claude Code nie zagłodził produkcyjnego ruchu do API. U dostawców chmury użyj alertów budżetowych albo bramki, która egzekwuje limity per osoba. Niezależnie od wiersza powiedz developerom, który komunikat oznacza który sufit: „You’ve hit your weekly limit” to przydział seata, a „You’ve hit your individual spend limit” to limit usage credits, który administrator podnosi w Admin settings > Usage.

Aby sprawdzić telemetrię przed wdrożeniem, uruchom claude z OTEL_METRICS_EXPORTER=console i OTEL_METRIC_EXPORT_INTERVAL=10000, zadaj dowolne pytanie i poczekaj na punkt danych claude_code.session.count w terminalu. Potem wróć do otlp i poszukaj tej samej serii w backendzie.

Jak ograniczyć wydatki przebiegów Claude Code bez nadzoru

Dział zatytułowany „Jak ograniczyć wydatki przebiegów Claude Code bez nadzoru”

Sesje interaktywne same się korygują, bo człowiek zauważa zapętlenie. Przebiegi headless nie. Daj każdemu wywołaniu claude -p sufit w dolarach i odczytuj koszt z wyjścia:

Okno terminala
# Krok CI: triaż tylko do odczytu z twardym limitem kwoty i liczby tur.
# RUN_ID to nieudany przebieg workflow; jego log błędów trafia na wejście.
gh run view "$RUN_ID" --log-failed | \
claude -p "Triage these failing tests and propose fixes. Do not edit files." \
--tools "Read,Grep,Glob" \
--max-budget-usd 5.00 \
--max-turns 12 \
--output-format json > triage.json
jq '{cost: .total_cost_usd, basis: [.modelUsage[].costBasis], budget_refusals: .subagent_stats.refused.budget}' triage.json

--max-budget-usd zatrzymuje przebieg, gdy wydatek dojdzie do limitu, a wydatki subagentów wliczają się do niego. Od v2.1.217 osiągnięcie limitu blokuje też nowe subagenty i zatrzymuje wciąż działające subagenty w tle. --max-turns kończy przebieg błędem po zadanej liczbie tur agentowych; opisuje go dokumentacja CLI i v2.1.283 go akceptuje, choć claude --help w v2.1.283 go nie wymienia (sprawdzone 2026-09-26). Obie flagi działają tylko w trybie print. Z --output-format json wynik zawiera total_cost_usd, wpis modelUsage dla każdego modelu, którego pole costBasis mówi, czy liczono po cenie cennikowej, czy po stawkach z modelPricing, oraz subagent_stats.refused.budget, czyli liczbę subagentów zablokowanych przez limit. Loguj wszystkie trzy dla każdego zadania.

Ustal politykę modeli i poziomu effort dla Claude Code

Dział zatytułowany „Ustal politykę modeli i poziomu effort dla Claude Code”

Model i effort to największe dźwignie, jakie masz, i liczy się kolejność, w jakiej ich używasz. Zasada tego serwisu: zacznij od domyślnego modelu narzędzia, dostrój effort, zanim zmienisz model, i zmieniaj model dopiero wtedy, gdy każą ci to twoje własne ewaluacje.

  • Praca domyślna. Na kanale wydań latest (v2.1.280 i nowsze) Claude Code domyślnie używa Claude Opus 5.5 z effortem medium w planach Pro, Max, Team i Enterprise, w Anthropic API, w Claude Platform on AWS, w Bedrock i w Google Cloud’s Agent Platform. Wyjątkiem jest Microsoft Foundry, gdzie domyślny jest Claude Sonnet 4.5. Według samego Anthropic Opus 5.5 na medium „matches or exceeds Opus 5 at high”. Kanał stable (v2.1.274 w dniu 2026-09-26) wciąż ma starsze ustawienia domyślne, więc sprawdź /model, zanim zbudujesz wokół nich politykę.
  • Gdy decyduje koszt. Claude Sonnet 5 do codziennej pracy i Claude Haiku 4.5 do mechanicznych subagentów o dużym wolumenie. Ceny są w hubie modeli, nie tutaj.
  • Świadomie, ręcznie. Claude Fable 5.1 (/model fable) do rozumowania o najdłuższym horyzoncie. Nigdy nie jest domyślny, ma własny tygodniowy limit w /usage i zależnie od planu i typu miejsca może być rozliczany z usage credits.

Egzekwuj politykę w managed settings, zamiast prosić ludzi, żeby o niej pamiętali:

{
"availableModels": ["opus", "sonnet", "haiku"],
"enforceAvailableModels": true,
"maxEffortLevel": "high",
"env": {
"CLAUDE_CODE_SUBAGENT_MODEL": "sonnet"
}
}
  • availableModels ogranicza, które modele można wybrać, także we frontmatterze subagentów i w CLAUDE_CODE_SUBAGENT_MODEL. Ten przykład pomija Fable; dodaj "fable" dla zespołów, którym uzasadniają go ewaluacje. W Foundry alias opus wskazuje Opus 4.6, więc tam przypinaj pełne identyfikatory modeli.
  • enforceAvailableModels (v2.1.175 lub nowsza) sprawia, że opcja Default też przestrzega listy. Bez tego wybór Default nadal prowadzi do domyślnego modelu konta.
  • maxEffortLevel (v2.1.267 lub nowsza) ogranicza effort u każdego dostawcy, także w Bedrock, Google Cloud i Foundry. Limit poniżej xhigh wyłącza ultracode, co dla większości zespołów jest celem, a dla nielicznych realną stratą.
  • CLAUDE_CODE_SUBAGENT_MODEL ustawia model dla subagentów i agentów workflow, którym nikt nie przypisał go inaczej. Pole model w definicji nadal wygrywa, więc przypnij model: haiku w własnych subagentach, które tylko uruchamiają testy albo streszczają logi.
  • deniedModels i availableModelsMatch: "exact" (oba od v2.1.283, kanał latest) wstrzymują konkretne nowe wydanie, które wpis na liście dozwolonych przepuściłby automatycznie.

Wdrażaj te klucze razem, w źródle managed settings o najwyższym priorytecie, którego używasz. Domyślnie Claude Code czyta tylko to źródło, więc lista dozwolonych w pliku managed-settings.json jest ignorowana, gdy konsola administracyjna też dostarcza ustawienia.

Taktyki na poziomie tokenów są w optymalizacji wydajności. Te działają w skali całego zespołu:

  • /clear między niezwiązanymi zadaniami. Nic nie kosztuje i zeruje licznik sesji. /compact to samo w sobie duże żądanie, bo czyta całą streszczaną rozmowę; używaj go, gdy potrzebujesz ciągłości, a nie odruchowo.
  • Nie wyłączaj wyszukiwania narzędzi MCP. Narzędzia MCP są domyślnie odraczane, więc do kontekstu trafiają tylko ich nazwy, dopóki Claude któregoś nie użyje. ENABLE_TOOL_SEARCH=false ładuje z góry wszystkie definicje, a próg auto:N ładuje je z góry, dopóki zajmują mniej niż N% okna kontekstu. Tam, gdzie istnieje CLI, na przykład gh, wybieraj je zamiast serwera MCP: nie dodaje żadnej listy narzędzi.
  • Filtruj rozwlekłe wyjście hookiem. Hook PreToolUse, który przepisuje npm test tak, by zwracał tylko błędy, zamienia dziesiątki tysięcy tokenów w setki.
  • Przenieś instrukcje workflow z CLAUDE.md do skills, które ładują się dopiero przy wywołaniu.
  • Zatrzymaj bezczynnych konsumentów. Przejrzyj wiersze Loops w /usage i anuluj zadania cykliczne, których wyników nikt nie czyta.

Jak udowodnić, że oszczędności nie kosztowały jakości?

Dział zatytułowany „Jak udowodnić, że oszczędności nie kosztowały jakości?”

Tańszy model, który produkuje kod odrzucany przez testy, nie jest oszczędnością: przenosi koszt do review i poprawek. Mierz iloraz, nie sam licznik:

  1. Śledź koszt zaakceptowanej zmiany. Podziel claude_code.cost.usage przez scalone, niewycofane pull requesty tego samego zespołu w tym samym okresie. Metoda i szablon arkusza są na stronie o ekonomii oprogramowania budowanego przez agentów.
  2. Nie ruszaj bramek. Zmiana modelu lub effortu na tańszy wchodzi tylko wtedy, gdy te same bramki CI (testy, sprawdzanie typów, lint, agenci review) przechodzą równie często. Najpierw uruchom zmianę przez dwa tygodnie w jednym zespole pilotażowym i porównaj jego odsetek wycofań i nieudanych buildów CI z poprzednim okresem.
  3. Powtórz ewaluacje przed zmianą polityki. Gdy wychodzi nowy model albo obniżasz maxEffortLevel, postępuj według planu oceny nowego modelu, zamiast przełączać się na podstawie cennika.
  4. Nazwij właścicieli. Tech lead odpowiada za politykę modeli i effortu oraz za porównanie z pilotażu. Dział finansów odpowiada za limity wydatków. Zespół platformowy odpowiada za pipeline telemetrii i plik managed settings.
  • /usage pokazuje grosze, a faktura tysiące. W subskrypcji kwota sesji nie jest twoim rachunkiem. W API wydatki to często klucze CI, które nigdy nie działają interaktywnie, albo inne maszyny, których /usage nie widzi. Uzgadniaj z raportami workspace’u w Console albo ze spend reportem organizacji, per klucz i per osoba.
  • Kwoty nie zgadzają się z umową. Claude Code raportuje ceny cennikowe. Ustaw modelPricing w managed settings i sprawdź dopisek at your organization's configured rates w /usage.
  • Telemetria nie dociera. Sprawdź, czy ustawione są zarówno CLAUDE_CODE_ENABLE_TELEMETRY=1, jak i eksporter, oraz czy każdy eksporter otlp ma protokół. Metryki są domyślnie eksportowane co 60 sekund. Uruchom claude z --debug-file ./otel.log i poszukaj w logu [3P telemetry].
  • Dashboardy Anthropic są puste na Bedrock, Google Cloud lub Foundry. Tak ma być: Claude Code nie odsyła do Anthropic danych o zużyciu u dostawców chmury. Użyj OpenTelemetry albo bramki.
  • Rachunek za metryki przewyższa rachunek za Claude. Każdy atrybut zasobu oraz domyślne etykiety session.id i konta mnożą liczbę serii. Ustaw OTEL_METRICS_INCLUDE_SESSION_ID=false, trzymaj atrybuty o niskiej kardynalności albo ustaw OTEL_METRICS_INCLUDE_RESOURCE_ATTRIBUTES=false, by nie trafiały do etykiet punktów danych.
  • Kontekst MCP skoczył po przejściu na bramkę. Gdy ANTHROPIC_BASE_URL wskazuje host inny niż Anthropic, Claude Code wraca do ładowania narzędzi MCP z góry. Jeśli twoja bramka przekazuje bloki tool_reference, ustaw ENABLE_TOOL_SEARCH=true.
  • Lista dozwolonych modeli nic nie robi. Leży w źródle managed settings o niższym priorytecie niż to, które czyta Claude Code, albo brakuje enforceAvailableModels i ludzie wybierają Default. /status pokaże, które źródło ustawień zadziałało.
  • Sesja wydaje pieniądze, choć nikt nie pisze. /loop, cel czekający na pracę w tle albo wiadomość z innej sesji uruchamiają nowe tury z pełnym kontekstem. Anuluj pętlę albo ustaw crossSessionInbound na hold.
  • Limity zapytań uderzają w dniu szkoleniowym. Rekomendacje Anthropic dotyczące limitów zapytań (sprawdzone 2026-09-26) zakładają normalną współbieżność: 15k–20k tokenów na minutę na osobę przy 100–500 osobach, więcej dla małych zespołów. Podnieś limit organizacji na czas wydarzenia albo rozłóż sesje w czasie.
  • Tańszy model po cichu zwiększył liczbę poprawek. Koszt zaakceptowanej zmiany wzrósł, choć wydatki spadły. Wycofaj politykę dla tego zespołu i powtórz ewaluacje, zanim spróbujesz ponownie.