Przejdź do głównej zawartości

Korporacyjna kontrola kosztów

Korporacyjna kontrola kosztów obejmuje śledzenie i ograniczanie wydatków na Claude Code: widoczność per sesja i per zespół przez /cost, /stats, /context i metryki OpenTelemetry, twarde barierki dla automatyzacji (--max-budget-usd, --max-turns) oraz routing modeli rezerwujący Opusa 5 dla trudnej pracy, a codzienne zadania kierujący do Sonneta 5 i Haiku 4.5. Koszt rośnie wraz z rozmiarem kontekstu i długością rozmowy.

Rachunek zespołu za API Claude Code potroił się w tym miesiącu, finanse chcą twardego limitu do piątku, a nikt nie potrafi powiedzieć, które projekty czy osoby generują ten koszt. Do tego bezpieczeństwo prosi o logi audytowe. Odruch podpowiada, żeby zbudować własny gateway mierzący każde żądanie — tyle że Claude Code ma potrzebną widoczność i barierki w standardzie.

Bez telemetrii to zgadywanie. Z telemetrią jeden dashboard odpowiada na wszystkie pytania finansów, inżynierii i bezpieczeństwa.

  • Podgląd zużycia tokenów per sesja i per zespół przez /cost, /stats, /context i status line — bez pisania własnej telemetrii
  • Eksport OpenTelemetry, który wpycha claude_code.cost.usage i claude_code.token.usage do dashboardu w podziale na zespół i model, plus pełny katalog metryk i zdarzeń do budowy paneli
  • Twarde barierki budżetowe dla automatyzacji: --max-budget-usd, --max-turns i model: haiku na poziomie subagenta
  • Politykę routingu modeli, która rezerwuje Opusa 5 dla pracy faktycznie tego wymagającej, a codzienne zadania spycha na Sonneta 5 i Haiku 4.5
  • Wytyczne do limitów przepustowości skalujące się z wielkością zespołu
  • Prompty copy-paste do audytu rozdętej sesji, postawienia eksportera OTel i spisania polityki schodzenia na tańszy model

Koszt Claude Code skaluje się z rozmiarem kontekstu i długością rozmowy. Każda wiadomość wysyła od nowa prompt systemowy, twój CLAUDE.md, definicje narzędzi MCP i całą dotychczasową rozmowę.

Trzy największe i najłatwiejsze do opanowania czynniki:

  • Nieświeży kontekst — pliki i rozmowa z poprzedniego zadania, których nigdy nie wyczyściłeś
  • Definicje narzędzi MCP — każdy podpięty serwer dokłada do kontekstu schematy narzędzi, nawet gdy nic nie robi
  • Wybór modelu — Opus 5 do formatowania i poprawek lintera, które Haiku 4.5 załatwia za ułamek ceny

Punkt odniesienia opublikowany przez Anthropic, przydatny do porównania z własnym dashboardem:

MetrykaWartość
Średni koszt na dewelopera dziennie$6
90. percentyl kosztu dziennego$12
Średnia miesięczna (Sonnet)$100-200/dewelopera
Średnia miesięczna (dużo Opusa)$300-500/dewelopera

Automatyzacja, długie sesje i przerośnięty kontekst przebijają te liczby błyskawicznie — dlatego barierki opisane niżej znaczą więcej niż same średnie.

Nie da się zarządzać tym, czego się nie widzi, a Claude Code pokazuje zużycie na czterech poziomach.

  1. Sprawdź bieżącą sesję. Wpisz /cost w REPL-u, żeby zobaczyć zużycie tokenów i koszt API tej sesji (użytkownicy API), albo /stats dla wzorców zużycia na Max/Pro:

    Total cost: $0.55
    Total duration (API): 6m 19.7s
    Total duration (wall): 6h 33m 10.2s
    Total code changes: 42 lines added, 18 lines removed
  2. Zobacz, co zjada kontekst. /context rozbija dokładnie to, co zajmuje okno — prompt systemowy, CLAUDE.md, definicje narzędzi MCP i historię rozmowy. Tak się znajduje serwer MCP, którego zapomniałeś wyłączyć.

  3. Trzymaj zużycie stale na oku. Skonfiguruj status line tak, by pokazywał zajętość okna kontekstu, a presję tokenów zobaczysz przy każdej wiadomości, zamiast odkrywać ją przy fakturze.

  4. Zsumuj to dla całego zespołu. Dla workspace’ów API ustaw limity wydatków workspace’u i czytaj raporty kosztów i zużycia w konsoli Anthropic. Workspace “Claude Code” powstaje automatycznie przy pierwszym uwierzytelnieniu i zbiera śledzenie z całej organizacji.

/cost działa w obrębie sesji. Po widok na poziomie finansów, obejmujący wszystkich deweloperów, wyeksportuj metryki OpenTelemetry Claude Code do swojego stacku obserwowalności.

Cała konfiguracja to zmienne środowiskowe — bez pisania kodu:

Okno terminala
# Turn on telemetry and pick your exporters
export CLAUDE_CODE_ENABLE_TELEMETRY=1
export OTEL_METRICS_EXPORTER=otlp # otlp, prometheus, or console
export OTEL_LOGS_EXPORTER=otlp
# Point at your OTLP collector
export OTEL_EXPORTER_OTLP_PROTOCOL=grpc
export OTEL_EXPORTER_OTLP_ENDPOINT=http://collector.company.com:4317
export OTEL_EXPORTER_OTLP_HEADERS="Authorization=Bearer ${OTEL_TOKEN}"

Żeby przypisać wydatki do zespołów, oznacz każdą sesję atrybutem zasobu:

Okno terminala
export OTEL_RESOURCE_ATTRIBUTES="department=payments,team=checkout"

Od tej chwili claude_code.cost.usage i claude_code.token.usage trafiają do backendu w podziale na department, team, model i user.account_uuid, więc jeden panel w Grafanie odpowiada na pytanie “który zespół wydał ile i na jakim modelu”.

Przy wdrożeniu w całej organizacji rozdaj te ustawienia plikiem managed settings, zamiast prosić każdego dewelopera o ustawianie zmiennych środowiskowych:

{
"env": {
"CLAUDE_CODE_ENABLE_TELEMETRY": "1",
"OTEL_METRICS_EXPORTER": "otlp",
"OTEL_LOGS_EXPORTER": "otlp",
"OTEL_EXPORTER_OTLP_PROTOCOL": "grpc",
"OTEL_EXPORTER_OTLP_ENDPOINT": "http://collector.company.com:4317",
"OTEL_EXPORTER_OTLP_HEADERS": "Authorization=Bearer company-token"
}
}

Wszystkie nazwy metryk i zdarzeń noszą przestrzeń nazw claude_code. — w zapytaniach do dashboardu używaj pełnej nazwy, inaczej filtry nie trafią.

MetrykaTypCo śledzi
claude_code.session.countLicznikRozpoczęte sesje
claude_code.lines_of_code.countLicznikLinie dodane/usunięte przez Claude
claude_code.pull_request.countLicznikUtworzone PR-y
claude_code.commit.countLicznikWykonane commity
claude_code.cost.usageLicznikKoszt wywołań API w dolarach
claude_code.token.usageLicznikTokeny wejściowe i wyjściowe
claude_code.code_edit_tool.decisionLicznikDecyzje zgody/odmowy dla narzędzia edycji
claude_code.active_time.totalLicznikCzas aktywnej sesji w sekundach

Koszt siedzi w claude_code.cost.usage, a reszta zamienia wykres wydatków w wykres ROI, bo lines_of_code.count, pull_request.count i commit.count to strona wynikowa tego samego ułamka.

ZdarzenieCo rejestruje
claude_code.user_promptMoment wysłania promptu (treść opcjonalnie przez OTEL_LOG_USER_PROMPTS=1)
claude_code.tool_resultWyniki i skutki wywołań narzędzi
claude_code.api_requestSzczegóły wywołań API (model, tokeny, opóźnienie)
claude_code.api_errorBłędy API i limity przepustowości
claude_code.tool_decisionDecyzje o uprawnieniach dla wywołań narzędzi

O api_error zespoły bezpieczeństwa i platformy pytają najpierw: to tam widać odrzucenia z powodu limitów, zanim ktokolwiek zgłosi zgłoszenie, że Claude “działa wolno”.

Sesje interaktywne same się korygują — deweloper widzi rozbieganą pętlę i wciska Escape. Przebiegi headless i CI nie mają takiej możliwości. Przy każdym nieinteraktywnym wywołaniu claude -p ogranicz zasięg rażenia flagami trybu print:

Okno terminala
# Stop spending past $5 on this run, and never exceed 8 agentic turns
claude -p "Triage failing tests in src/ and propose fixes" \
--max-budget-usd 5.00 \
--max-turns 8 \
--model sonnet

--max-budget-usd zatrzymuje przebieg, gdy wydatek na API przekroczy limit, a --max-turns kończy go błędem po N turach agenta, żeby rozbiegana pętla nie spaliła budżetu bez nadzoru. Obie flagi działają wyłącznie w trybie print (-p).

Największą dźwignią kosztową nie jest pomiar, tylko wybór modelu. W cenniku startowym Sonneta 5, obowiązującym do 31 sierpnia, token kosztuje dwie piąte tego co u Opusa 5, a potem trzy piąte. Haiku 4.5 jest jeszcze tańsze — około jednej piątej Opusa — i nadaje się do pracy mechanicznej.

ModelOrientacyjna cena (wejście / wyjście za Mtok)Sięgaj po niego, gdy
Claude Fable 5~$10 / ~$50Planowanie w Plan Mode, złożone refaktory wieloplikowe, budowa od zera i końcowa weryfikacja przy najtrudniejszych zadaniach (2x Opus)
Claude Opus 5~$5 / ~$25Decyzje architektoniczne, wieloetapowe rozumowanie, paskudny debugging, audyty bezpieczeństwa
Claude Sonnet 5$2 / $10 do 31 sierpnia, potem $3 / $15Codzienne kodowanie, code review, większość poprawek błędów, refaktory, pisanie testów
Claude Haiku 4.5~$1 / ~$5Formatowanie, poprawki lintera, komentarze, masowe edycje mechaniczne, trywialni subagenci

Pełny cennik znajdziesz w porównaniu modeli. Claude Fable 5 stoi o poziom wyżej niż Opus 5 i kosztuje dokładnie dwa razy tyle. Przy ograniczonym budżecie traktuj go jak klamrę, a nie domyślny wybór — eskaluj do Fable 5 (/model fable) przy planowaniu i końcowej weryfikacji, a implementację prowadź na Sonnecie 5 albo Opusie 5. Jeśli ustawisz Fable jako domyślny, przypnij tańsze modele subagentom wprost; inaczej dziedziczą zgodnie ze swoją konfiguracją, a nie schodzą automatycznie na tańsze poziomy.

Model zmienisz w trakcie sesji przez /model, a domyślny ustawisz w /config.

Koszt tokenów jest wprost funkcją rozmiaru kontekstu. Claude Code sam kompaktuje przy limicie i cache’uje prompt systemowy, ale tanie zwycięstwa biorą się z nawyków.

Czyszczenie, kompaktowanie i miejsce na reguły kompaktowania

Dział zatytułowany „Czyszczenie, kompaktowanie i miejsce na reguły kompaktowania”
  • /clear między niepowiązanymi zadaniami. Za nieświeży kontekst płacisz przy każdej kolejnej wiadomości. Użyj /rename przed czyszczeniem, żeby móc później wrócić przez /resume.

  • Steruj kompaktowaniem. /compact Keep test output and code changes. Summarize discussion. mówi Claude, co zachować przy streszczaniu.

  • Zapisz regułę kompaktowania raz. Wpisz ją do CLAUDE.md, żeby nie przeklepywać jej w każdej sesji:

    # Compact instructions
    When compacting, preserve test output, error traces, and file paths. Summarize discussion and reasoning.
  • Zrzuć robotę na hooki. Hook PreToolUse potrafi przegrepować dziesięciotysięczny log do samych pasujących błędów, zanim Claude go w ogóle przeczyta — dziesiątki tysięcy tokenów zamieniają się w setki.

  • Przenieś instrukcje procesowe z CLAUDE.md do skilli. CLAUDE.md ładuje się na starcie sesji i jest rozliczany nawet przy niepowiązanej pracy, a skille wczytują się na żądanie. Trzymaj CLAUDE.md poniżej ~500 linii.

  • Zainstaluj wtyczki code intelligence dla języków typowanych. Dają Claude precyzyjną nawigację po symbolach zamiast grepowania i czytania wielu plików, co ścina koszt eksploracji w bazach TypeScriptu, Go, Rusta i pokrewnych.

  • Dostrój rozumowanie adaptacyjne. Przy prostych zadaniach obniż poziom wysiłku komendą /effort albo suwakiem w /model. Dodatni limit MAX_THINKING_TOKENS działa dopiero po włączeniu trybu stałego budżetu na Opusie/Sonnecie 4.6, a myślenia Fable 5 wyłączyć się nie da. Tokeny myślenia rozliczają się jak wyjściowe.

Każdy podpięty serwer MCP dokłada do kontekstu definicje narzędzi i zjada tokeny nawet wtedy, gdy nic nie robi:

  • Uruchom /context, żeby zobaczyć, co zajmuje miejsce, a potem /mcp, żeby wyłączyć nieużywane serwery
  • Tam, gdzie się da, wybieraj narzędzia CLI (gh, aws, gcloud, sentry-cli) zamiast serwerów MCP — nie dokładają trwałych definicji do kontekstu
  • Ustaw ENABLE_TOOL_SEARCH=auto:5, żeby wyszukiwanie narzędzi MCP włączało się, gdy definicje przekroczą 5% okna kontekstu (domyślny próg to 10%). Odroczone narzędzia wchodzą do kontekstu dopiero przy użyciu, więc niższy próg wycina bezczynne definicje

Subagenci mają własne okna kontekstu i to właśnie czyni z nich dźwignię kosztową, a nie tylko porządkową. Używaj ich do operacji gadatliwych (czytanie wielu plików, uruchamianie zestawów testów), do pracy równoległej, która inaczej rozdęłaby główny kontekst, i do powtarzalnych edycji w wielu plikach.

Oszczędność pojawia się dopiero wtedy, gdy przypniesz model. Dla trywialnych subagentów użyj model: haiku, a dla tych wymagających prawdziwego rozumowania model: sonnet:

---
name: test-runner
description: Runs the test suite and returns only failures
tools: [Bash, Read]
model: haiku
---
You run the project's test command, then summarize only failing tests and their
error messages. Never paste full passing output.

Limity przepustowości dopasowane do wielkości zespołu

Dział zatytułowany „Limity przepustowości dopasowane do wielkości zespołu”

W workspace’ach API limity na użytkownika powinny spadać wraz ze wzrostem zespołu, bo nie wszyscy pracują jednocześnie:

Wielkość zespołuTPM na użytkownikaRPM na użytkownika
1-5200k-300k5-7
5-20100k-150k2.5-3.5
20-5050k-75k1.25-1.75
50-10025k-35k0.62-0.87
100-50015k-20k0.37-0.47

Traktuj to jako punkty wyjścia i obserwuj claude_code.api_error pod kątem odrzuceń limitowych, zamiast czekać na skargi.

  • /cost pokazuje grosze, a rachunek jest ogromny. Albo jesteś na abonamencie, gdzie /cost nie jest fakturą, albo wydatek generują klucze CI, które nigdy nie wywołują /cost interaktywnie. Uzgadniaj to z raportami workspace’u w konsoli i zużyciem per klucz, nie z wyjściem sesji.
  • Dane telemetryczne w ogóle się nie pojawiają. Sprawdź, czy CLAUDE_CODE_ENABLE_TELEMETRY=1 jest faktycznie ustawione i czy endpoint OTLP jest osiągalny z maszyn deweloperów. Metryki eksportują się domyślnie co 60 sekund, więc odczekaj przynajmniej tyle, zanim zaczniesz szukać głębiej.
  • Dashboard OTel jest pusty na Bedrocku/Vertexie/Foundry. Claude Code nie wysyła metryk kosztowych przez dostawców chmury. Śledź przez rozliczenia dostawcy albo gateway LiteLLM z wydatkiem per klucz; zobacz LLM Gateway.
  • --max-budget-usd nie zatrzymał rozbieganego zadania. Działa wyłącznie w trybie print i egzekwuje wyłącznie rozliczenie kluczem API. Przy abonamentach i sesjach interaktywnych nie ma licznika w dolarach — zostają limity wydatków workspace’u i --max-turns.
  • Telemetria się opóźnia albo zalewa backend. Metryki lecą domyślnie co 60 s, logi co 5 s. Dostrój OTEL_METRIC_EXPORT_INTERVAL i użyj kontroli kardynalności OTEL_METRICS_INCLUDE_*, żeby zbić koszty składowania — eksplozja metryk per identyfikator sesji potrafi kosztować więcej niż zużycie Claude, które mierzysz.
  • Limity gryzą podczas onboardingu albo szkolenia. Wytyczne na użytkownika zakładają średnią równoczesność. Na tydzień, w którym wszyscy siedzą w narzędziu naraz, podnieś limity tymczasowo albo rozłóż sesje w czasie.
  • Koszty są wyższe, niż powinny, i nie widać winowajcy. Uruchom /context: duże konfiguracje MCP i rozdęte pliki auto-pamięci pompują każde pojedyncze żądanie, a nigdy niewyczyszczona sesja wciąż nalicza pracę, którą skończyłeś wczoraj.
  • Zejście na tańszy model zabija jakość. Cięcia kosztów, które produkują zepsuty kod, nie są oszczędnością. Zostaw Opusa 5 dostępnego dla trudnych 10% i mierz poprawki, nie tylko zużycie tokenów.
  • Zostawienie Fable 5 jako domyślnego bez budżetu na kredyty zużycia. Od 20 lipca 2026 jest na stałe wliczony w Max i Team Premium do 50% tygodniowych limitów zużycia, ale na Pro i Team Standard rozlicza kredyty w stawce 2x Opus. Zawęź go z powrotem do planowania i końcowej weryfikacji, chyba że ten dodatkowy wydatek jest świadomą decyzją.

Skuteczna kontrola kosztów to kwestia równowagi: maksymalizuj wartość, wycinaj marnotrawstwo. Najpierw widoczność przez /cost, /stats i OTel, potem routing modeli i barierki. Większość zespołów ścina 30-50% bez straty tempa — samym czyszczeniem kontekstu, dobieraniem modeli i wyłączaniem serwerów MCP, o których zapomniała.