Claude Code ma w panelu agentów status line, gdzie każda praca w tle jest opisana trzema do pięciu słowami. Brzmi jak detal, a pod spodem siedzi pętla, która co 30 sekund bierze pełny transkrypt danego agenta, wysyła go do modelu i prosi o nowy opis. Firma Flamerix AI zmierzyła w tygodniu testowym, że te podsumowania zjadły 16,4% całego wydatku na tokeny, nieco więcej niż sama główna rozmowa (15,7%). Wątek o tym wylądował na Hacker News 29 października nad ranem i rośnie dalej, na 378 punktów, gdy pisałem ten tekst.
- Najważniejsze informacje
- Co dokładnie dzieje się co 30 sekund
- Skąd wiadomo, ile to kosztuje
- Dlaczego nie wyłączysz tego ustawieniem
- Jak to wyłączyć dziś
- Co z tego wynika dla kogoś, kto płaci w złotówkach
- FAQ
Najdziwniejsze jest to, że odpowiedź modelu nigdzie nie trafia poza panel. Nie wraca do rozmowy, nie wpływa na kod, nie pomaga agentowi. Istnieje wyłącznie po to, żeby w interfejsie świeżył się napis. I od wersji 2.1.232 z sierpnia 2026 działa domyślnie, bez ustawienia, które pozwala to wyłączyć.
Najważniejsze informacje
| Co | Szczegóły |
|---|---|
| Problem | Co ok. 30 sekund pełny transkrypt agenta w tle idzie do modelu, tylko po to, by odświeżyć opis 3-5 słów w panelu |
| Odkąd domyślnie | Wersja 2.1.232 Claude Code, 13 sierpnia 2026 |
| Pomiar Flamerix | 16,4% tygodniowego wydatku (główna rozmowa: 15,7%), 19,7% wszystkich zapytań API, 96% z tego na Opusie |
| Niezależne pomiary | Cztery zgłoszenia 18-26% w issue #86879 na GitHubie |
| Stosunek tokenów | Około 9 000 tokenów wejścia na 1 token wyjścia |
| Gdzie to widać | Tylko w eksporcie OpenTelemetry; logi sesji na dysku tych zapytań nie notują |
| Oficjalne wyłączenie | Nie istnieje; obejście to hook BUN_OPTIONS=--preload od Flamerix (MIT) |
| Wyłączanie kosztem funkcji | CLAUDE_CODE_FORK_SUBAGENT=0 albo CLAUDE_CODE_DISABLE_BACKGROUND_TASKS=1 zabijają też same agentów w tle |
Co dokładnie dzieje się co 30 sekund
Mechanizm jest opisany w badaniu Flamerix i potwierdzony w kodzie. Gdy uruchamiasz agenta w tle, Claude Code nastawia timer. Timer wybucha, bierze dotychczasowy transkrypt agenta i pyta model (zwykle Opusa) o zdanie w stylu „edytuje plik konfiguracji”. Ta odpowiedź lądowałaby w panelu Agent View, po czym pętla rusza od nowa. Interwał nie należy do klienta: przychodzi z flagi serwerowej per rodzina modeli i jest zaciśnięty do zakresu 30-240 sekund, a domyślna wartość to już minimum.
Flamerix zastrzega w badaniu, że koszt liczyli po własnym szacunku Claude Code (cost_usd w eksporcie OpenTelemetry), a nie po fakturze. Na abonamencie Pro albo Max nie płacisz per token, więc realnie tracisz coś innego: limit. Każde takie podsumowanie wchodzi w ten sam licznik zużycia, przez który tygodniowe okna Claude Code kończą się wcześniej, niż powinny. Stąd pytania w rodzaju „dlaczego limity w Claude Code kończą się tak szybko”, które ludzie realnie wpisują w wyszukiwarkę.
Jest też argument „przecież cache zrobi swoje”. Zrobił: około 98% tych zapytań czyta transkrypt z pamięci podręcznej. Ale 2%, które trafiają na zimny cache, ponosi ponad jedną trzecią jego kosztu, a nawet cache hit nie jest darmowy, tylko tańszy. Na HN jeden z komentujących policzył to tak: „Nawet przy trafieniu w cache palisz prawie input razy 0,10 za kontekst, wielokrotnie. Dziesięć razy i masz koszt całego świeżego prefillu sesji” („even at cache hit you are burning almost input * 0.10 * context amount of tokens multiple times”). Inny ujął to spokojniej: „Kosztuje tyle, co jedno dodatkowe wywołanie narzędzia w rozmowie. Dziwne jest robienie tego timera, co trochę nadwyręża »tylko wywołanie«” („It costs as much as one additional tool call in the conversation. It’s a bit weird to do it on a timer, which inflates a bit over »just a tool call«”).
Skąd wiadomo, ile to kosztuje
Anomalię wyłapał system DRIM od Flamerix na własnych danych telemetrycznych: po zgrupowaniu zapytań claude_code.api_request według źródła okazało się, że źródło agent_summary kosztuje więcej niż cała główna rozmowa. Po wdrożeniu poprawki udział spadł do zera, co działa jak kontrola, że pomiar nie złapał czegoś innego. W issue #86879 na GitHubie zebrały się cztery niezależne pomiary od innych użytkowników, wszędzie 18-26% wydatku.
Warto znać skalę czasu, bo problem rósł po cichu. Sam kod podsumowań pojawił się w wersji 2.1.32 z 5 lutego, martwy w publicznych buildach. W marcu stał się osiągalny przez opcję SDK, w kwietniu dotarł do interaktywnego CLI, a 13 sierpnia (2.1.232) włączył się domyślnie dla agentów w tle. 14 października (2.1.300) interwał przejął serwer, 23 października (2.1.310) dołączył tańszy tryb short, około 2 tysięcy tokenów notatek zamiast pełnego transkryptu. Domyślnie pozostaje wyłączony i tylko flagi serwera mogą go włączyć.
Sama dokumentacja tego nie ujawnia. Agent View jest opisany jako panel odświeżany przez model klasy Haiku co kilka minut, a w praktyce badanie pokazuje pełny transkrypt i zwykle Opusa. Tych zapytań nie ma też w logach sesji na dysku, więc narzędzia do liczenia kosztów czytające transkrypty nic nie zobaczą; jedynym oknem jest eksport OpenTelemetry. To zostawia użytkownika z limitami, które kończą się bez widocznego powodu. To zostawia użytkownika z limitami, które kończą się bez widocznego powodu.
Dlaczego nie wyłączysz tego ustawieniem
Szukałem w badaniu odpowiedzi na pytanie, które pada w każdym takim wątku: przecież jest przełącznik? Nie ma. Opcja SDK agentProgressSummaries ma domyślnie wartość false, ale w kodzie jest tylko jednym członem alternatywy, a każda ścieżka, która ją zapisuje, ustawia true. Zmienna środowiskowa CLAUDE_CODE_AGENT_PROGRESS_SUMMARIES też może tylko włączać podsumowania. Z kolei DISABLE_NON_ESSENTIAL_MODEL_CALLS, które niektórzy pakiety distributorów ustawiają, w binarnym pliku nie występuje wcale.
Dwie zmienne jednak działają: CLAUDE_CODE_FORK_SUBAGENT=0 i CLAUDE_CODE_DISABLE_BACKGROUND_TASKS=1. Tyle że wyłączają przy okazji fork subagentów albo całe agenty w tle, czyli to, po co wielu ludziom Claude Code. Przypomina to sytuację z innych narzędzi agentowych, którą opisywałem przy tekście o bezpieczeństwie agentów AI: domyślne zachowanie działa, a przełącznik istnieje tylko w jedną stronę. Jeśli chcesz zobaczyć, jak praca z agentami AI wygląda od strony praktyki, pisaliśmy o tym osobno w jak stworzyć agenta AI.
Jak to wyłączyć dziś
Flamerix opublikowało hook, około 80 linii JavaScript, który podłącza się przez mechanizm preload środowiska Bun i neutralizuje dokładnie ten jeden timer. Binarka Claude Code pozostaje nietknięta; hook czyta źródło każdej funkcji przekazywanej do setTimeout i setInterval, rozpoznaje po znaku charakterystycznym callback podsumowania i zwraca nieruchomy timer zamiast uzbrojonego. W teście wersji 2.1.257 do 2.1.312 działało to na każdej z nich: 5 forków podsumowania bez hooka, 0 z włączonym.
Instalacja w wersji minimalnej wygląda tak:
curl -fsSL https://gist.githubusercontent.com/flamerix-ai/c3905705cc4205e5de3011fa2e74efce/raw/no-agent-summary.js -o ~/.local/share/no-agent-summary.js
claude daemon stop --any
BUN_OPTIONS="${BUN_OPTIONS:+$BUN_OPTIONS }--preload $HOME/.local/share/no-agent-summary.js" claude
Na stałe dodajesz BUN_OPTIONS z --preload do profilu powłoki albo używasz wrappera na PATH, a potem restartujesz demona (claude daemon stop --any), bo procesy w tle dziedziczą środowisko z tego, kto demona uruchomił. Test autorski hooka: claude --version z logiem pokazuje linię preload active mode=off, a po minucie pracy agenta w tle log notuje summary timer #1 suppressed (setTimeout, delay=30000). Flamerix przestrzega uczciwie o dwóch rzeczach. Po pierwsze, rozpoznanie idzie po tekście źródłowym funkcji, więc aktualizacja Claude Code może po cichu przenieść ten znak i podsumowania wrócą; weryfikację trzeba powtarzać po każdej aktualizacji. Po drugie, zmiana zachowania klienta może kolidować z warunkami usługi, co każdemu zostawili do sprawdzenia we własnym zakresie. Przetestowane na Linuksie; macOS i Windows bez testów, na Windows bramka /$bunfs/ najpewniej w ogóle nie zainstaluje hooka.
Co z tego wynika dla kogoś, kto płaci w złotówkach
Trzy grupy czytelników, trzy różne skutki. Jeśli siedzisz na abonamencie, twoim kosztem jest limit: status line po cichu podjada go nawet wtedy, gdy nie dotykasz klawiatury, a agent pracuje w tle. Jeśli płacisz za API, koszt jest wprost w rachunku i przy intensywnym użyciu agentów może dochodzić do jednej piątej zapytań. Jeśli korzystasz z Claude Code okazjonalnie w pojedynczej sesji bez agentów w tle, ten problem praktycznie cię nie dotyka, bo timer chodzi per agent w tle.
Ustawienie jest też dobrym testem zaufania do narzędzi agentowych w ogóle. Nie chodzi o to, że trzy słowa w panelu są warte 16% rachunku, choć są. Chodzi o to, że zapytań nie widać w logach sesji, dokumentacja opisuje je jako tańszy model klasy Haiku, a wyłącznik nie istnieje. Bez zewnętrznego eksportu telemetrycznego nikt by tego nie zmierzył, i to jest lekcja, która wychodzi z tego wątku mocniejsza niż sama poprawka.
FAQ
Jakie limity ma Claude Code?
Zależą od planu (Pro, Max albo API) i modelu, a dokumentacja nie podaje ich jako twardych liczb w jednym miejscu, więc nie podam ich bez świeżego odczytu. Sedno tego wpisu jest inne: część twojego limitu zużywa coś, czego nie zobaczysz w logach sesji, bo zapytania podsumowań agent_summary lądują tylko w eksporcie OpenTelemetry.
Ile tokenów zużywa status line agentów?
W pomiarze Flamerix AI tydzień pracy dał 16,4% całego wydatku na tokeny i 19,7% zapytań API, przy około 9 000 tokenów wejścia na 1 token wyjścia. Cztery niezależne pomiary w issue #86879 na GitHubie wskazują zakres 18-26%. Po włączeniu hooka udział spadł do zera.
Czy da się to wyłączyć oficjalnym ustawieniem?
Nie. Opcja agentProgressSummaries w SDK jest zapisywana jako włączona przez każdą ścieżkę kodu, zmienna CLAUDE_CODE_AGENT_PROGRESS_SUMMARIES też tylko włącza podsumowania, a tańszy tryb short z wersji 2.1.310 domyślnie śpi i włącza go tylko flaga serwera. Jedyna droga na dziś to hook przez BUN_OPTIONS=--preload opisany wyżej albo wyłączenie agentów w tle razem z podsumowaniami.
Źródła
- Badanie Flamerix AI z tabelami pomiarów i instrukcją hooka, https://gist.github.com/flamerix-ai/c3905705cc4205e5de3011fa2e74efce (odczyt 29.10.2026)
- Wątek Hacker News, 378 punktów i 130 komentarzy, https://news.ycombinator.com/item?id=50284255 (odczyt 29.10.2026)
- Zbiór niezależnych pomiarów użytkowników, https://github.com/anthropics/claude-code/issues/86879 (odczyt 29.10.2026, licznik z gist)
Aktualizacja, 30 października: rozszerzenie Claude Code miało dziś swój incydent bezpieczeństwa. Zainfekowana wersja 2.1.313 w Marketplace Cursora instalowała ofiarom backdoor SSH; sprawdzenie maszyny jedną komendą opisujemy w tekście o backdoorze w Claude Code.
