ChatGPT śledzi zakupy na innych stronach. Ciasteczko __obi łączy konto z pikselem reklamodawcy

21 września, 2026

ChatGPT wie, co przeglądasz i kupujesz na stronach reklamodawców. Niezależny badacz bezpieczeństwa publikujący pod pseudonimem Buchodi opisał 20 września mechanizm, w którym ciasteczko __obi osadzane przez OpenAI łączy konto ChatGPT z aktywnością użytkownika na sklepach i serwisach, które kupiły reklamy w chatbocie. Analiza objęła 936 pikseli reklamowych na 1029 hostach i wywołała jedną z największych dyskusji tygodnia na Hacker News (ponad 570 punktów i 300 komentarzy). OpenAI nie odpowiedziało na pytania badacza, a w polityce cookies opisuje __obi jako ciasteczko analityczne.

Kontekst: ChatGPT ma reklamy, a reklamy potrzebują pomiaru

Reklamy w ChatGPT to nie nowość. OpenAI uruchomiło sprzedaż powierzchni w lutym 2026 roku, a od końca kwietnia śledzenie marketingowe jest domyślnie włączone dla użytkowników darmowego planu. We wrześniu firma rozszerzyła ofertę o API odbiorców, atrybucję view-through i asystenta kampanii, o czym pisaliśmy w tekście o rozbudowie ChatGPT Ads. Każdy z tych elementów ma sens tylko wtedy, gdy reklamodawca może zmierzyć, czy użytkownik, który zobaczył reklamę w czacie, faktycznie coś kupił na jego stronie.

Do tego służy piksel konwersji. Meta ma Meta Pixel, Google ma Google Tag, a OpenAI ma skrypt oaiq.min.js serwowany z domeny bzrcdn.openai.com. Reklamodawca wkleja go na swojej stronie, skrypt zbiera zdarzenia (odsłona, wyszukiwanie produktu, zakup) i wysyła je do punktu końcowego bzr.openai.com/v1/sdk/events. To standardowa architektura adtechu, znana z każdej platformy reklamowej od dekady.

Nowe jest to, co odkrył Buchodi: sposób, w jaki OpenAI spina te zdarzenia z tożsamością użytkownika ChatGPT. I to właśnie ten element odróżnia sytuację od Meta czy Google, bo ChatGPT nie jest siecią społecznościową ani wyszukiwarką, tylko rozmową, w której ludzie opisują choroby, długi, problemy prawne i plany zawodowe.

Jak działa ciasteczko __obi krok po kroku

Według opisu badacza mechanizm składa się z trzech etapów, które uruchamiają się przy otwarciu chatgpt.com w przeglądarce Chrome na Androidzie.

Etap 1: tymczasowy token na 60 sekund

Przeglądarka generuje losowy ciąg znaków i wysyła go do serwera OpenAI. Serwer odsyła podpisany cyfrowo token (JWT) z terminem ważności 60 sekund. Token wiąże losowy identyfikator z kontem ChatGPT (dla zalogowanych) albo z anonimową sesją (dla niezalogowanych).

Etap 2: wymiana tokena na roczne ciasteczko

Przeglądarka przekazuje token do domeny bzr.openai.com, a serwer ustawia ciasteczko __obi w domenie .openai.com. Kluczowe są jego atrybuty: Max-Age 31536000 sekund, czyli dokładnie rok, flaga HttpOnly, flaga Secure i przede wszystkim SameSite=None. Ta ostatnia wartość jest zaprojektowana po to, by ciasteczko podróżowało z żądaniami między różnymi witrynami. Badacz zwraca uwagę, że w tej samej paczce żądań przeglądarka blokuje wszystkie inne ciasteczka OpenAI i przepuszcza tylko to jedno.

Etap 3: piksel na stronie reklamodawcy

Gdy użytkownik wchodzi na stronę firmy, która kupiła reklamy w ChatGPT, ładuje się skrypt oaiq.min.js. Skrypt wysyła do OpenAI zdarzenie razem z ciasteczkiem __obi. W ten sposób odsłona strony produktu, wpisane w wyszukiwarkę sklepu hasło albo złożone zamówienie trafiają do OpenAI z identyfikatorem, który prowadzi bezpośrednio do konta ChatGPT.

Na własnym telefonie badacz zaobserwował wysyłkę tego samego identyfikatora z 12 witryn komercyjnych. Wśród nich znalazły się Chewy, Wayfair, HelloFresh, Coursera, ThriftBooks, Eventbrite i SeatGeek.

Kluczowe fakty z analizy

ElementUstalenie badacza
Nazwa ciasteczka__obi, domena .openai.com, ważność 1 rok
AtrybutyHttpOnly, Secure, SameSite=None, Path=/
Skrypt śledzącyoaiq.min.js z bzrcdn.openai.com/sdk/
Punkt odbioru zdarzeńbzr.openai.com/v1/sdk/events
Skala badania936 pikseli reklamodawców na 1029 hostach, kilka miesięcy obserwacji
Zdekodowane tokeny932, w tym 736 powiązanych z kontem i 196 anonimowych
Dane tożsamościowee-mail, telefon i imię (hash SHA-256); kraj, region, miasto i kod pocztowy (jawnym tekstem)
Kod pocztowyprzechwycony w 100 zdarzeniach z 28 witryn
Źródło tożsamości685 zdarzeń zeskrobanych z warstw danych vs 255 przekazanych przez reklamodawcę
Użytkownicy niezalogowanianonimowy identyfikator urządzenia utrzymywany co najmniej 27 dni
Klasyfikacja w polityce OpenAIciasteczko analityczne, nie marketingowe

Najbardziej kontrowersyjny element: skrobanie warstw danych

Gdyby skrypt OpenAI odbierał tylko to, co reklamodawca świadomie mu przekazuje, sprawa byłaby bliźniaczo podobna do Meta Pixel. Buchodi ustalił jednak, że SDK samodzielnie sięga po dane, których reklamodawca wcale nie musiał mu podać. Skrypt przechwytuje wywołania window.dataLayer.push, odczytuje adobeDataLayer i parsuje parametry warstw danych Google Tag Managera, w tym takich, którym zmieniono domyślną nazwę. Z tych struktur wyciąga adresy e-mail i numery telefonów.

W ruchu, który badacz analizował, tożsamość zeskrobana z warstw danych pojawiała się częściej (685 zdarzeń) niż tożsamość przekazana przez reklamodawcę wprost (255 zdarzeń). Innymi słowy: większość identyfikatorów osobowych trafiała do OpenAI nie dlatego, że sklep tak skonfigurował piksel, tylko dlatego, że piksel sam je znalazł w kodzie strony. Do tego dochodzi aktywne odczytywanie treści formularzy, które użytkownik wypełnia, oraz tekstu wyświetlanego na stronie.

Adresy URL są wysyłane z usuniętymi parametrami wyszukiwania, ale z zachowaną ścieżką. Wśród zaobserwowanych ścieżek badacz wymienia strony z informacjami o chorobach, planami spłaty długów i rejestracją do postępowań sądowych. Kod pocztowy, miasto i kraj są przekazywane jawnym tekstem, bez haszowania.

Kogo to dotyczy, a kogo nie

Mechanizm ma wyraźne ograniczenia techniczne, które warto znać przed oceną skali problemu.

  • Chrome na Androidzie: tu badacz potwierdził działanie. Synchronizacja tokena uruchamia się mniej więcej co piąte otwarcie ChatGPT.
  • Safari i Chrome na iOS: oba działają na WebKicie i blokują ciasteczka firm trzecich przez Intelligent Tracking Prevention, więc mechanizm nie zadziała.
  • Chrome na komputerze: badacz nie przetestował tej konfiguracji, więc brak potwierdzenia w obie strony.
  • Aplikacja mobilna ChatGPT: nie uruchamia opisanego mechanizmu, bo nie dzieli ciasteczek z przeglądarką.
  • Niezalogowani: dostają anonimowy identyfikator urządzenia, który żyje minimum 27 dni. Z 932 zdekodowanych tokenów 196 należało właśnie do sesji anonimowych.

Osobny problem to ustawienia prywatności. Ciasteczko __obi jest zaklasyfikowane w kategorii analitycznej, a nie reklamowej. Oznacza to, że użytkownik, który celowo wyłączy w ustawieniach śledzenie reklamowe, nadal dostanie to ciasteczko na urządzenie. Badacz 14 września zadał OpenAI dwa pytania: dlaczego identyfikator reklamowy jest opisany jako analityczny i czy rezygnacja ze śledzenia reklamowego go obejmuje. Dział obsługi potwierdził odbiór wiadomości i zapowiedział wewnętrzną weryfikację, ale na żadne z pytań nie odpowiedział.

Co to znaczy dla marketerów i analityków

Dla osób prowadzących kampanie i wdrożenia analityczne ta historia ma trzy praktyczne wymiary.

1. Piksel OpenAI wymaga zgody, tak jak każdy inny

Skoro skrypt oaiq.min.js ustawia i odczytuje identyfikator cross-site, wysyła dane osobowe (nawet zahaszowane e-maile pozostają danymi osobowymi w rozumieniu RODO) i profiluje użytkownika pod reklamę, to w Polsce i w całej UE nie może się uruchamiać przed zgodą marketingową. Jeśli wdrażasz go w Google Tag Managerze, powinien być spięty z tą samą logiką zgód co Meta Pixel i tagi Google Ads. W praktyce oznacza to reguły wyzwalania zależne od stanu ad_storage i ad_user_data, o czym szczegółowo piszemy w poradniku o wdrożeniu Consent Mode v2 w GTM.

2. Twoja warstwa danych nie jest już prywatna

Ustalenie o skrobaniu dataLayer ma konsekwencje dla wszystkich, którzy trzymają w warstwie danych e-maile, telefony czy dane adresowe klientów na potrzeby własnego pomiaru albo enhanced conversions w Google Ads. Skrypt firmy trzeciej, który przechwytuje dataLayer.push, zobaczy te dane niezależnie od tego, czy chciałeś mu je udostępnić. Jeśli w warstwie danych masz PII, sprawdź w konsoli sieciowej, co dokładnie wychodzi do bzr.openai.com po załadowaniu piksela. Rozwiązaniem długofalowym jest przeniesienie wrażliwych danych do tagowania po stronie serwera, gdzie skrypty klienckie nie mają do nich dostępu. Opisujemy to w tekście o pomiarze bez cookies i tagowaniu server-side.

3. Reklama w ChatGPT dostaje pełną atrybucję, ale kosztem zaufania

Z perspektywy czysto reklamowej OpenAI dowozi to, czego rynek oczekuje: identyfikator deterministyczny spięty z kontem, śledzenie od ekspozycji w czacie do zakupu, atrybucję view-through. To dokładnie te funkcje, które w tym miesiącu pojawiły się w ofercie ChatGPT Ads. Problem w tym, że użytkownik ChatGPT ma inne oczekiwania niż użytkownik Facebooka. Jak ujął to sam badacz: mechanizm jest standardowym adtechem, ale bez precedensu jest uruchomienie go w produkcie czatu AI, bo ludzie mówią tym produktom rzeczy, których nie napisaliby w sieci społecznościowej.

Jak sprawdzić, czy piksel OpenAI działa na twojej stronie

Weryfikacja zajmuje kilka minut i nie wymaga żadnych narzędzi poza przeglądarką. Warto ją zrobić nawet wtedy, gdy nie pamiętasz, żeby ktoś wdrażał reklamy w ChatGPT, bo agencje i freelancerzy testujący nowe kanały często dodają tagi bez formalnej dokumentacji.

  • Otwórz narzędzia deweloperskie (F12), zakładkę Network, i przefiltruj żądania po frazie openai. Odśwież stronę i przejdź przez ścieżkę zakupową. Każde żądanie do bzrcdn.openai.com lub bzr.openai.com oznacza aktywny piksel.
  • Sprawdź kontener GTM. W trybie podglądu poszukaj tagu typu Custom HTML z odwołaniem do oaiq.min.js. Zweryfikuj, jakie reguły go wyzwalają i czy wśród nich jest warunek zgody marketingowej.
  • Podejrzyj ładunek zdarzeń. W żądaniach do /v1/sdk/events zobaczysz, jakie pola wychodzą z twojej strony. Jeśli widzisz adres e-mail, telefon lub kod pocztowy, których świadomie nie przekazujesz, to skrypt wyciągnął je z warstwy danych.
  • Porównaj z polityką cookies. Jeśli piksel jest aktywny, a polityka cookies i baner CMP go nie wymieniają, masz lukę do zamknięcia niezależnie od tego, co zrobi OpenAI.

Ten sam test warto powtórzyć na urządzeniu z Androidem po zalogowaniu do ChatGPT w Chrome, bo dopiero wtedy w żądaniach pojawi się ciasteczko __obi i będzie widać, że zdarzenie ze sklepu jest spięte z kontem użytkownika.

Reakcje branży

Dyskusja na Hacker News i Lobsters była zdominowana przez sceptycyzm. Według zestawienia serwisu daily.dev około 80 procent komentarzy było krytycznych, 15 procent mieszanych, a tylko 5 procent pozytywnych. Wśród argumentów obrońców pojawiało się przede wszystkim to, że Meta i Google robią to samo od lat i nikt nie pisze o tym z takim oburzeniem. Krytycy odpowiadali, że właśnie kontekst konwersacyjny robi różnicę: pytania o objawy choroby zadane ChatGPT w połączeniu z odsłoną strony kliniki i kodem pocztowym tworzą profil, którego Meta nigdy nie miała.

Drugi wątek dotyczył klasyfikacji ciasteczka. Firmy zajmujące się zgodnością z RODO i ePrivacy, między innymi Captain Compliance i Pandectes, w swoich analizach polityki cookies OpenAI zwracały uwagę, że kategoria analityczna dla identyfikatora reklamowego cross-site jest trudna do obrony przed organem nadzorczym. W Polsce sprawę reguluje zarówno RODO, jak i ustawa Prawo telekomunikacyjne (wkrótce Prawo komunikacji elektronicznej), a obie wymagają zgody na ciasteczka niebędące niezbędnymi.

Trzeci wątek to Komisja Europejska. ChatGPT od września ma status bardzo dużej wyszukiwarki internetowej (VLOSE) na gruncie aktu o usługach cyfrowych, o czym informowaliśmy w artykule o nadaniu ChatGPT statusu VLOSE. DSA nakłada na takie platformy obowiązki przejrzystości reklam i zakaz profilowania reklamowego na podstawie danych wrażliwych. Ustalenia o ścieżkach URL związanych z chorobami i długami mogą więc trafić nie tylko do organów ochrony danych, ale i do zespołu Komisji nadzorującego DSA.

Co dalej

Na moment publikacji OpenAI nie wydało publicznego oświadczenia. Najbardziej prawdopodobne scenariusze na najbliższe tygodnie to trzy równoległe ruchy.

  • Zmiana klasyfikacji w polityce cookies. Przeniesienie __obi do kategorii marketingowej to najtańsza korekta i pozwoliłaby OpenAI twierdzić, że rezygnacja ze śledzenia reklamowego faktycznie wyłącza identyfikator. To jednak nie rozwiązuje kwestii skrobania warstw danych.
  • Ograniczenie SDK. Wyłączenie automatycznego przechwytywania dataLayer.push i pozostawienie tylko jawnie przekazywanych parametrów. Meta przeszła podobną drogę po serii doniesień o zbieraniu danych z formularzy medycznych.
  • Zapytania regulatorów. Irlandzki DPC, który nadzoruje OpenAI w UE, i zespół DSA Komisji dostali gotowy materiał. Precedensy z ostatnich lat pokazują, że takie sprawy kończą się zwykle wymuszoną zmianą domyślnych ustawień, a nie karą.

Dla polskich reklamodawców, którzy testują lub planują kampanie w ChatGPT, rekomendacja jest prosta: przed wdrożeniem piksela sprawdź, co wysyła, spnij go z CMP na tych samych zasadach co inne tagi reklamowe i wyczyść warstwę danych z PII, których nie chcesz oddawać firmom trzecim. Sam mechanizm atrybucji jest wartościowy, ale odpowiedzialność za zgodę na stronie sklepu ponosi sklep, nie OpenAI.

FAQ

Czy ciasteczko __obi działa u mnie, jeśli korzystam z ChatGPT na iPhonie?

Nie w przeglądarce. Safari i Chrome na iOS blokują ciasteczka firm trzecich, więc synchronizacja identyfikatora nie dochodzi do skutku. Aplikacja mobilna ChatGPT też nie uruchamia tego mechanizmu. Potwierdzone działanie dotyczy Chrome na Androidzie, a Chrome na komputerze nie został przetestowany.

Czy wyłączenie śledzenia reklamowego w ustawieniach ChatGPT usuwa to ciasteczko?

Według ustaleń badacza nie. OpenAI klasyfikuje __obi jako ciasteczko analityczne, a nie marketingowe, więc rezygnacja ze śledzenia reklamowego go nie obejmuje. Firma nie odpowiedziała na pytanie o tę klasyfikację.

Jakie dane trafiają do OpenAI ze strony reklamodawcy?

Ścieżka odwiedzanej strony (bez parametrów wyszukiwania), zdarzenia takie jak odsłona, wyszukiwanie produktu czy zakup, zahaszowane e-mail, telefon i imię, a także kraj, region, miasto i kod pocztowy jawnym tekstem. Część danych tożsamościowych skrypt sam wyciąga z warstwy danych GTM lub Adobe.

Czy jako sklep mogę wdrożyć piksel ChatGPT Ads zgodnie z RODO?

Tak, pod warunkiem, że uruchamia się dopiero po zgodzie marketingowej użytkownika, jest wymieniony w polityce cookies sklepu i nie ma dostępu do danych osobowych, na których przetwarzanie użytkownik nie wyraził zgody. W praktyce oznacza to spięcie go z CMP i przegląd tego, co trzymasz w dataLayer.

Czym ten mechanizm różni się od Meta Pixel?

Technicznie niewiele: identyfikator cross-site, piksel konwersji i dopasowanie tożsamości to standard adtechu. Różnica leży w kontekście (rozmowy z AI zawierają bardziej wrażliwe informacje niż aktywność w mediach społecznościowych) oraz w skali automatycznego skrobania warstw danych, które w badaniu przewyższało dane przekazane przez reklamodawców.