Zgłoszenie opublikowane 5 listopada o 22:13 UTC w repozytorium Claude Code opisuje przypadek, w którym narzędzie Anthropicu do pracy w terminalu wypuściło na zewnątrz adres e-mail zalogowanego konta. Model wkładał go do nagłówka User-Agent w poleceniach, które sam pisał i wykonywał, między innymi przy przeszukiwaniu sieci, a autor zgłoszenia opisuje dziesiątki scam-maili dziennie. Wątek na Hacker News urosł w moim odczycie z rana 6 listopada do 897 punktów, a Anthropic odpowiedział dwukrotnie: od wersji 2.1.317 dołączył wbudowany dodatek, który odmawia wykonania takiego polecenia, i zapowiedział usunięcie adresu z kontekstu modelu w kolejnym wydaniu. Ten tekst porządkuje, jak do tego doszło, co jest już naprawione, czego nadal brakuje i jak sprawdzić własną instalację. Przypadek dotyczy Claude Code, czyli narzędzia wiersza poleceń, które dostaje dostęp do powłoki i sieci, żeby pracować nad kodem.
- Najważniejsze informacje
- Jak adres z konta trafił do nagłówka User-Agent
- Od bloku userEmail do skrzynki pełnej scamów
- Czy jest wyłącznik
- Jak sprawdzić u siebie
- Odpowiedź Anthropicu i wcześniejsze sygnały
- Co z tego wynika w Polsce
- Najczęstsze pytania
Najważniejsze informacje
| Co | Szczegóły |
|---|---|
| Zgłoszenie | Issue #107757 w repo anthropics/claude-code, 5.11.2026, 22:13 UTC, tytuł „Privacy violation in User-Agent header”; stan open (odczyt 6.11); 326 reakcji, 44 komentarze |
| Co przecieka | Adres e-mail konta zalogowanego; wg odpowiedzi zespołu siedział w kontekście modelu i bywał wstawiany jako kontakt do nagłówka User-Agent w poleceniach pisanych przez model |
| Wersje | Zgłaszający: 2.1.318 na macOS; wg oświadczenia Anthropicu z 5.11 kanał stabilny to nadal 2.1.311, czyli bez łaty tymczasowej |
| Łata tymczasowa | Od 2.1.317 wbudowany mod cc-plugin-privacy odmawia wykonania polecenia powłoki z adresem i nazwanym User-Agent; README moda wylicza luki, w tym niesprawdzane WebFetch, WebSearch i narzędzia MCP |
| Naprawa właściwa | Usunięcie adresu z kontekstu modelu, zapowiedziane „early next week” 5.11; w changelogu odczytanym 6.11 (najnowsza wersja 2.1.318) wpisu jeszcze nie ma |
| HN | „Claude Code sends your email address to websites”, 897 pkt (odczyt 6.11), 5-6.11 |
| Prasa PL | Zero odnotowanych reakcji: RSS Google News po frazie „claude code” zwrócił 6.11 82 tytuły, żaden o tym temacie |
Jak adres z konta trafił do nagłówka User-Agent
Mechanizm wyjaśniła lydia_hallie z zespołu Claude Code w wątku HN. Adres nie był stałą częścią żadnego nagłówka dodawanego przez aplikację. Siedział w kontekście, który Claude Code przekazuje modelowi u wszystkich zalogowanych użytkowników: model miał przestać wymyślać nazwiska w tagach @author, więc zespół podał mu prawdziwy adres konta jako źródło informacji o właścicielu. Kiedy model pisał własne polecenia, jak wywołanie curl, czasem używał tego adresu jako danych kontaktowych w User-Agent. Wg autorki komentarza część stron prosi agentów o kontakt i model spełniał taką prośbę, bo adres miał pod ręką.
Że to nie tylko teoria, potwierdza zgłoszenie z lipca, #81138. Jego autor zdekompilował paczkę narzędzia (wersja 2.1.220) i zacytował fragment, który buduje blok kontekstu: „The user’s email address is
Pomysł, żeby w ogóle podawać kontakt w User-Agent, model brał z praktyki niektórych serwisów. Wikipedia w polityce dla klientów skryptowych prosi o identyfikację z adresem kontaktowym, a dokumentacja EDGAR, interfejsu danych amerykańskiej komisji papierów wartościowych, pokazuje wprost przykładowy nagłówek z polem AdminContact. Sprawdziłem tę stronę 6 listopada i ten fragment jest tam dosłownie. Komentujący na HN pod pseudonimem varenc pokazał na żywo, że API SEC odrzuca gołe wywołanie curl kodem 403, a przyjmuje wywołanie z mailem w User-Agent; dopisał też, że wg jego testu SEC przyjmie większość nagłówków innych niż domyślny curl, więc o maila tak naprawdę nie chodzi. Model widział takie wymagania i rozwiązywał problem tak, jak mu pokazano.
Od bloku userEmail do skrzynki pełnej scamów
Skutki opisują sami użytkownicy; od razu zastrzegam, że to relacje, nie pomiar. Zgłaszający pisze o dziesiątkach scam-maili dziennie, a jego zapowiedź przeprowadzki firmy na Pi z OpenRouterem najlepiej pokazuje, ile zaufania przepadło. Inny komentujący relacjonuje nagłe zalanie skrzynki spamem na bardzo starym, cichym adresie, kolejny łączy dziwnie konkretne maile o jednym ze swoich projektów z pracą narzędzia, a następny napisał wprost, że logi potwierdziły mu wysłanie adresu do innych domen. Każdą z tych obserwacji traktuj jako głos zainteresowanego, nie zweryfikowany fakt, choć wszystkie brzmią zgodnie.
Nagłówek User-Agent trafia do logów każdego serwera, który obsłużył żądanie, i tam zwykle zostaje na miesiące. Adres e-mail w tym polu jest dla operatora gotowym identyfikatorem, który nie wymaga żadnej analizy, bo mówi, do kogo pisać, a firmowa domena często zdradza też pracodawcę. Komentujący InvisibleUp przypomniał też drugą stronę, czyli eksperymentalną, później usuniętą łatkę do antybotowego Anubisa, która po wykryciu User-Agenta Claude Code zastawiała na odwiedzającego agenta pułapkę na dane (honeypot). Świadomy sysadmin albo po prostu oszust może na tym polu łowić celnie, bo narzędzie samo się przedstawia.
Czy jest wyłącznik
Dokumentacja, którą odczytałem 6 listopada (strony data usage i settings), nie wspomina ani o User-Agent, ani o dołączaniu adresu konta do kontekstu modelu. Zapisuję to wprost: brak udokumentowanego wyłącznika, odczyt z 6.11. To drugi taki przypadek w tym narzędziu na naszych oczach, po status line, który wysyłał pełny transkrypt rozmowy do modelu bez możliwości wyłączenia, o czym pisaliśmy w osobnym tekście o ukrytych kosztach.
Doraźnym zabezpieczeniem jest mod cc-plugin-privacy, obecny od 2.1.317 i domyślnie włączony. Kod jest dostępny w repozytorium, więc można sprawdzić, co robi: jeden hook sprawdza polecenia powłoki i odmawia wykonania, gdy wejście zawiera adres konta oraz nazwany User-Agent, bez pytania użytkownika. README moda mówi o nim wprost: „This is a courtesy, not a boundary”, czyli uprzejmość, nie granica. WebFetch i WebSearch nie są sprawdzane, narzędzia MCP też nie; adres w URL-u, w treści żądania albo w nagłówku From przechodzi; przechodzi też wartość obliczona w trakcie, jak wywołanie git config user.email, i skrypt, który trzyma adres w środku. Oświadczenie zespołu z HN mówiło szeroko o „web tool call”, ale kod sprawdza wyłącznie polecenia powłoki, więc między zapowiedzią a implementacją jest luka większa, niż sugerował komentarz.
Trzy rzeczy psują temu zabezpieczeniu obraz pełnej ochrony. Po pierwsze, użytkownicy na wersji 2.1.318 pisali w zgłoszeniu, że w listingu /plugins nie widzą cc-plugin-privacy, choć mają nowszą wersję niż deklarowana w komunikacie. Po drugie, jeden z komentujących przetestował mod zgodnie z jego opisem i odmowy nie dostał, choć wg README powinien, a mod widniał w systemie jako włączony. Po trzecie, mod da się wyłączyć poleceniem /plugin disable albo ustawieniem, a hook innego dodatku może jego odmowę nadpisać. Naprawa właściwa, usunięcie adresu z kontekstu modelu, ma przyjść „early next week” wg zapowiedzi z 5.11. W changelogu odczytanym 6.11 jej jeszcze nie ma.
Jak sprawdzić u siebie
Wersję sprawdzisz poleceniem claude --version, a dokumentacja CLI wymienia je wprost, razem z claude update do aktualizacji. To ważne, bo wersje rozjeżdżają się między kanałami: wydanie 2.1.318 to obecnie szczyt changelogu, a kanał stabilny wg zespołu stał wciąż na 2.1.311, czyli bez łaty tymczasowej. Jeśli masz 2.1.317 lub nowszą, mod privacy powinien być na liście /plugins w sekcji zainstalowanych; jeśli go tam nie ma, trafiłeś na przypadek opisany w komentarzach do zgłoszenia i zgłoszenie tej obserwacji Anthropicowi ma sens jako kolejne potwierdzenie. Nie wyłączaj tego moda, bo nie ma niczego, co zastąpiłoby jego kontrolę.
Przeczytaj też README moda, jeśli chcesz wiedzieć, czego ochrona nie obejmuje; to kilka akapitów źródła, nie dokumentacji marketingowej. Do czasu wydania, które usunie adres z kontekstu, dane konta pozostają w tym, co narzędzie przekazuje modelowi, więc rozsądną higieną jest ograniczenie dostępu do sieci agentom pracującym na prywatnych projektach i przyjrzenie się temu, jakie żądania wychodzą z maszyny podczas sesji. Pojawienie się spamu o treści łączącej się z ostatnimi zadaniami agenta traktuj jak sygnał, nie jak przypadek.
Odpowiedź Anthropicu i wcześniejsze sygnały
Firma odpowiadała na dwóch kanałach. W zgłoszeniu, 23:31 UTC 5.11, współpracownik repo o pseudonimie poteat potwierdził wprowadzenie moda i zapowiedział udostępnienie jego źródeł, które rzeczywiście trafiły potem do repozytorium. W wątku HN lydia_hallie z zespołu wyjaśniła genezę problemu i napisała wprost: „Again, this should not have happened, and we should’ve caught this behavior earlier”, czyli „to nie powinno się wydarzyć, a powinniśmy wyłapać takie zachowanie wcześniej”. Przyznała też, że łata tymczasowa nie domyka wszystkich ścieżek, bo model może zapisać skrypt z adresem i uruchomić go bez wywołania, które hook rozpozna.
Problem nie pojawił się wczoraj. Na początku maja zgłoszono wstrzykiwanie adresu konta do kontekstu modelu bez możliwości rezygnacji (#55743), pod koniec lipca autor #81138 pokazał blok userEmail z dekompilacji, 11 sierpnia Hacker News opisał wyciek adresu w User-Agent przy poleceniach curl (wątek zebrał 38 punktów), a w połowie października padły dwa kolejne zgłoszenia: o subagencie wysyłającym adres z kontekstu sesji i o adresie widocznym w żądaniach do Wikipedii. Komentujący pod zgłoszeniem z listopada wytykają zespołowi pięć miesięcy na reakcję i zauważają, że sortowanie zgłoszeń według reakcji samo wyprowadziłoby zespół do tego tematu. Każdy element tej układanki był publiczny od miesięcy.
Co z tego wynika w Polsce
Polski internet na razie temat przespał, i to dobra wiadomość dla tego wpisu, nie zła. W odczycie RSS Google News z 6 listopada po frazie „claude code” wyszły 82 tytuły, wszystkie o innych sprawach: o backdoorze w Cursor Marketplace, o ograniczeniu klonowania gier, o Revolucie przechodzącym na otwarte modele. Autocomplet Google po frazach „claude code prywatnosc” i „claude code adres email” zwraca pustkę, a żyją dopiero „claude code wyciek danych” i „claude code spam”. Rodzina „claude code email” też jest zajęta, tylko przez zupełnie inne intencje: ludzie szukają agentów do poczty i zmiany adresu konta, nie informacji o wycieku.
Dotyczy to w pierwszej kolejności programistów i zespołów, które używają Claude Code lokalnie na kontach firmowych, bo adres firmowy na listach spamerów to inna klasa problemu niż prywatny. To kolejny tekst z naszej serii o ryzykach wokół tego narzędzia: backdoor w Cursor Marketplace pokazał ryzyko dystrybucji przez zewnętrzny rejestr, wtyczki wgrywane przez Postmana ryzyko łańcucha dostaw w integracjach, a dziś adres konta w nagłówku HTTP. We wszystkich trzech przypadkach powierzchnia zaufania okazała się większa, niż wynika z okna terminala. Pełny spis materiałów o tym narzędziu masz w hubie Claude.
Najczęstsze pytania
Claude code wyciek danych?
Dotyczy adresu e-mail konta zalogowanego, który siedzi w kontekście przekazywanym modelowi; model czasem wstawiał go jako kontakt do nagłówka User-Agent w poleceniach, które sam pisał i wykonywał. Od 2.1.317 działa łata tymczasowa odmawiająca wykonania takich poleceń powłoki, a usunięcie adresu z kontekstu zapowiedziano na kolejne wydanie. Stan na 6 listopada: naprawa właściwa jeszcze nie wyszła.
Claude code user agent header?
To nagłówek HTTP, w którym klient przedstawia się serwerowi. Część serwisów, jak Wikipedia w polityce dla skryptów albo EDGAR komisji SEC, prosi o kontakt w tym nagłówku, i to wystarczyło, żeby model czasem podstawił adres e-mail z konta. Dokładnego formatu nagłówka używanego przez Claude Code nie potwierdzono w żadnym źródle, więc go nie podajemy.
Claude code webfetch user agent?
Wbudowany mod ochronny sprawdza wyłącznie polecenia powłoki. WebFetch i WebSearch nie przechodzą przez tę kontrolę, podobnie jak narzędzia MCP, i README moda mówi to wprost. Skuteczną ochronę przed wysłaniem adresu tymi kanałami da dopiero usunięcie adresu z kontekstu modelu, zapowiedziane na kolejne wydanie.
Claude code spam?
Fale spamu w skrzynce to najczęściej opisywany skutek: część użytkowników łączy je z pracą agenta, bo adres z konta trafił do logów serwerów trzecich. To relacje komentujących, nie pomiar, ale kilka z nich opisuje to samo. Realne ograniczenie ryzyka dziś to aktualizacja do 2.1.317 lub nowszej i pozostawienie moda włączonego do czasu wydania, które usunie adres z kontekstu.
Źródła
- Issue #107757 „Privacy violation in User-Agent header” w repo anthropics/claude-code (odczyt 6.11.2026)
- Wątek Hacker News „Claude Code sends your email address to websites” (897 pkt, odczyt 6.11.2026)
- Komentarz lydia_hallie z zespołu Claude Code w wątku HN (odczyt 6.11.2026)
- Komentarz mpoteat o modzie cc-plugin-privacy w wątku HN (odczyt 6.11.2026)
- Kod moda privacy: README i hook tool.check w repo anthropics/claude-code (odczyt 6.11.2026)
- Issue #81138 z 25 lipca: adres konta wstrzykiwany do promptu systemowego (odczyt 6.11.2026)
- Issue #102577: adres e-mail w nagłówku User-Agent przy żądaniach do Wikipedii (odczyt 6.11.2026)
- Issue #101659: subagent wysłał adres z kontekstu sesji w nagłówku User-Agent (odczyt 6.11.2026)
- Wcześniejsza relacja HN z 11 sierpnia 2026 o wycieku adresu w User-Agent (38 pkt, odczyt 6.11.2026)
- Dokumentacja EDGAR (SEC) z przykładowym nagłówkiem User-Agent zawierającym pole AdminContact (odczyt 6.11.2026; strona odrzuca automatyczne żądania HEAD kodem 403, treść odczytana przeglądarkowym UA z kontaktem, brak snapshotu w Wayback)
