Within hours of publication, a browser trace of one cookie had reached 592 points and 294 comments on Hacker News. The trace found OpenAI's one-year __obi identifier attached to requests from 12 commercial sites on one Android phone. For developers, the first request is the surprise. The cookie can travel when an advertiser page loads OpenAI's JavaScript, before that script gets a chance to process its own consent setting.
OpenAI's public material confirms much of the surrounding machinery. Its Measurement Pixel documentation tells advertisers to load oaiq.min.js from bzrcdn.openai.com, send conversion events to bzr.openai.com, and optionally match those events with customer information. What the documentation does not describe is the cross-site role of __obi, or the account-bearing token that the researcher says creates it. That gap is the story.
A cookie built to travel
The sequence starts on ChatGPT, according to Buchodi's technical report. The web client generates a random identifier and requests a signed token from a Bazaar endpoint. In the researcher's captured token, sub held an account subject, obi held the browser identifier, and aud named bzr.openai.com. Signed-out sessions used an anonymous subject instead. The token expired after 60 seconds, but the cookie it authorized lasted much longer.
The collector then set __obi for .openai.com with a one-year maximum age. Its flags included HttpOnly, Secure, and SameSite=None, the combination that lets a browser attach the cookie to eligible cross-site HTTPS requests while preventing page JavaScript from reading it. The report's captured response showed that the identifier in the signed token and the value written to the cookie were the same.
An advertiser's page loads the pixel SDK from an OpenAI subdomain. In the Android Chrome test, that script request carried __obi; later event posts carried it too. This first hop changes the consent calculation. A queued oaiq("consent", false) call can tell the SDK not to send measurement events after it runs, but it cannot rewrite the HTTP request that already fetched the SDK. The researcher observed the cookie on that fetch. A separate event path intended to omit credentials carried it as well.
The observed reach was specific, not universal. One phone sent the same __obi value from 12 shopping, ticketing, food, and education sites under 13 pixel IDs. In a larger traffic sample, the researcher counted 936 advertiser pixels across 1,029 hostnames; 12 of 30 distinct __obi values appeared under more than one advertiser, and one appeared under ten. All observed event requests returned HTTP 202, which shows that the collector accepted them. It does not show the private server-side join being performed. The author states that limit directly.
The pixel can collect more than a purchase event
OpenAI describes the Pixel as a way to attribute actions such as a page view, checkout, registration, or completed order to a ChatGPT ad. Its developer guide says the SDK adds the current page origin as source_url, timestamps events, and stores separate first-party attribution cookies on the advertiser's domain. One lasts 30 days after an ad reference is captured. Another browser reference lasts 365 days. These are distinct from the OpenAI-domain __obi examined in the report.
Advertisers can also pass a user object containing hashed email, phone number, external ID, and name. Country, city, region, and postal code are sent as ordinary fields. With automatic advanced matching enabled, OpenAI says its Pixel detects supported customer information on the page, normalizes it, hashes identity fields with SHA-256 in the browser, and includes those hashes in conversion events. Raw customer information is not sent through that automatic feature, according to the documentation.
Buchodi's traffic sample adds a less tidy view of matching in practice. The report counted 685 events with identity gathered by the SDK, compared with 255 where an advertiser supplied it deliberately. It says the SDK inspected form fields, rendered text, and tag-manager data. Email, phone, and names were hashed before transmission, while location fields remained clear text. Of 23,929 observed URLs, query strings were removed, but paths remained. Some paths contained terms associated with a medical condition, debt help, or a legal intake form.
There is also a personalization switch at the event level. The Pixel reference documents an opt_out option that excludes an event from future user-level personalization when set to true; its default is false. The page does not say which user profile receives that signal or how __obi participates. The cookie trace supplies a plausible transport path, while the unobserved server-side resolution remains an inference.
The analytics label creates the policy problem
OpenAI's cookie policy lists __obi as an analytics cookie for chatgpt.com and openai.com, with a one-year duration. It defines analytics cookies as tools for understanding how OpenAI's services perform and how people use them. The same policy puts marketing-performance cookies in a separate section. It does not explain that __obi may arrive with requests initiated by advertiser websites.
That classification matters because the captured sync tokens recorded consent_decision: analytics_allowed. The researcher says the cookie was still issued when analytics consent was allowed and marketing consent was refused. Buchodi sent the mechanism and two questions to OpenAI's press and privacy addresses on September 14, asking why the cookie was classed as analytics and whether that consent combination still produces it. OpenAI Support acknowledged the inquiry but did not answer those questions before publication.
OpenAI's user-facing promises address a neighboring issue. Its ChatGPT ads FAQ says advertisers do not receive chats, memories, personal details, or raw user identities. Advertisers get aggregate results such as views and clicks. That statement can coexist with the observed requests because the collector belongs to OpenAI. The unresolved question concerns what OpenAI can connect inside its ad system, rather than what it returns to an advertiser.
Eligible Free and Go users can turn off ad personalization and clear ad data under ChatGPT's Ads controls. OpenAI says disabling personalization stops other chat threads, ad history, and topics from informing ad selection, while the current thread can still shape an ad. Neither that FAQ nor the Pixel documentation says whether the switch prevents creation or use of __obi for conversion measurement. Clearing ad data can take up to 30 days, and the help page does not connect that deletion process to the one-year cookie.
Site owners should gate the script itself
OpenAI tells sites that need consent to set it before initializing the Pixel. The documented pattern is short:
oaiq("consent", false);
oaiq("init", { pixelId: "<YOUR-PIXEL-ID>" });
The same guide says consent starts as true unless a site sets it to false or the SDK finds a stored denial. When false, future measurement pings stop and blocked events are not replayed. A site that relies on this queue should still inspect the initial network request. If the legal or product requirement is to avoid any OpenAI request before consent, the script element itself has to wait. That conclusion follows from the report's finding that the browser attached __obi while fetching the SDK.
The current evidence also has browser limits. Buchodi reproduced the flow on Chrome for Android, while desktop Chrome was untested. The report says Safari's tracking protections blocked the third-party cookie path, which also covers iOS browsers because they use WebKit. Roughly one in five ChatGPT sessions in the sample generated a sync token, so another test may show a pixel request without __obi. Those constraints make the finding narrower than universal tracking across every browser, yet broad enough for site owners using the Pixel to audit their own pages.
OpenAI can answer the unresolved part with a precise data-flow document that extends its current Pixel guide: when __obi is created, which consent choice controls it, whether a conversion event is joined to an account, and what the ad-personalization switch removes from that path. Until then, the most useful check is visible in a browser's network panel. Load an advertiser page after using ChatGPT, filter for bzr.openai.com and bzrcdn.openai.com, and inspect whether the one-year identifier leaves before the site's consent code can act. The 592-point argument began with that single request. The next answer should come from OpenAI's documentation or a changed response header.