ChatGPT cookie __obi links your activity on other sites to your account
A traffic analysis published on 20 September describes how OpenAI's ad collector sends the __obi cookie from advertisers' websites back to OpenAI and ties the visitor to a ChatGPT account.
The newsletter Buchodi's Threat Intel published a traffic analysis on 20 September describing how OpenAI's advertising collector links activity on third-party websites to ChatGPT accounts. A cookie named __obi, set on the .openai.com domain, is sent back to OpenAI from commercial sites that install OpenAI's conversion pixel, the way retailers already load Meta and Google tracking code. The researcher says he reproduced the mechanism on his own phone, verified it with two capture methods and compared it against months of traffic covering 936 advertiser pixels on 1,029 hostnames.
How the identifier is built
On chatgpt.com the client generates 16 random bytes and calls POST /backend-api/bazaar/obi/sync-token, which returns a signed RS256 JWT whose audience is bzr.openai.com and whose subject is the ChatGPT account; bzr stands for bazaar, OpenAI's internal name for the ads platform. The token is posted cross-site to bzr.openai.com/v1/obi/sync, and the response sets __obi with Domain=.openai.com, HttpOnly, SameSite=None, Secure and a one-year expiry.
What comes back
Cookies rode along on three request classes from an advertiser's page, including the loading of the SDK script itself: the browser attaches them to that request before any OpenAI code runs, so the SDK's "no credentials" path changes nothing. The SDK also lifts identity off the page, where OpenAI's own labels separate in, for values the advertiser supplies, from fm, ht and js, scraped from forms, page text and the tag-manager bus. Scraped identity outnumbered supplied identity 685 events to 255. Email, phone and names are hashed with SHA-256 before transmission, while country, city and postal code travel in the clear.
Reach, consent and limits
On the researcher's device one __obi value reached OpenAI from 12 commercial sites under 13 pixel IDs and every request was accepted with HTTP 202; logged-out visitors are not excluded either, with 196 of 932 decoded sync tokens carrying an anonymous subject stable for at least 27 days. OpenAI's cookie policy lists __obi as an analytics cookie, the only entry in that section, and every token decoded carried the consent decision analytics_allowed — allowing analytics while refusing marketing is enough. OpenAI Support acknowledged the researcher's questions without answering them. The mechanism was observed on Chrome for Android and does not work on iOS browsers.
SiTech — AI-powered web development
We build fast, modern websites and bring AI into real business workflows. Have a project or a question? We'd love to help.