Privacy Policy

Last updated November 5, 2026

Bag Check is a browser extension for X. When someone posts about a company they have a publicly reported financial stake in, like a board seat, an investment, or a founder or employee role, Bag Check adds a tag to the post with a link to the public source. It does the same when a post shares that person's words, like a quote of their post, a clip or an interview.

In short

What Bag Check collects

  • Some public posts. When a post is by someone Bag Check covers, or quotes or names them, its text or ID may go to Bag Check's server to be checked. Nothing about you goes with it.
  • An install ID with each check. A random ID made when you install goes with each post the extension asks the server to check. Bag Check runs on paid checks, so it limits how many each install can make in a day and adds up what each costs. It never keeps which posts were checked.
  • An install count. The same ID, your browser and the extension's version, sent at most once a day (not by the Mac App Store or TestFlight version).
  • What you send it. Requests, disputes and feedback. They're deleted 180 days after they're closed.
  • A one-way hash of your IP address. To stop anyone running up its costs. The address itself isn't kept, and the hash goes after 2 days unless that address was blocked for abuse.
  • Public information about the people it covers. Their public posts, who they follow and their profile photos.

What Bag Check never collects

  • Your messages. It doesn't read your DMs at all.
  • Your browsing. It reads x.com and nothing else, and keeps no browsing history.
  • Who you are. No account details, no cookies, nothing that identifies you, unless you type it into a request or feedback yourself.
  • Anything for ads. No ads, no tracking, no third-party analytics. Nothing is sold or shared.

How it works

  1. It runs in your browser. The list of people and their stakes comes with the extension, so matching happens on your device. Updates to the list are one public file, the same for everyone.
  2. Some posts get a second look. For posts by people it covers, a model on Bag Check's server answers yes-or-no and multiple-choice questions, like whether a post is about a company the person has a stake in. It never writes a tag.
  3. Every tag shows its source. If the sources don't support a tag, a dispute takes it down for everyone.

What runs on your device

Bag Check does its work in your browser.

Your messages

Bag Check doesn't read your direct messages. Nothing from them is collected, kept or sent anywhere.

On X's Messages pages (x.com/i/chat, and x.com/messages before it), the extension looks only at the page's address, so it knows to stay out. It doesn't read anything on the page, tags nothing there, and selection mode doesn't run there. It never attaches a Messages page's link to feedback or a request, since the link shows who the conversation is with. The same goes for the messages panel X can open beside the timeline.

What leaves your device

Apart from the install count and anything you choose to send (both below), the extension sends something to Bag Check's server in only four cases. Each one is about a public post by someone in the dataset (investors, and founders of companies in it), or a post by someone else that quotes or names them (a quote of their post, a clip, an interview, "X says…").

  1. Checking what a post is about. When one of these posts names a company the person has a stake in, or a close rival of one, the extension may send the post's text and ID, the text of any post it quotes or replies to, the names it matched, and short facts from Bag Check's own data about the companies and people involved. A classification model (Jev, by TypeSafe) then answers a few set questions. Does a name that's also an ordinary word ("Ramp", "Cursor") mean the company? Is the post about the company (or about an investor in the dataset), or does it take a shot at it? Is a post by someone else sharing what the person said? The model only answers. It never writes a tag.
  2. Checking what a post is reacting to. When one of these posts goes up while tech X is talking about something involving a company the person has a stake in (a moment, like a fight, a filing or a launch lots of people are posting about), the extension may send the post's text and ID, the text of any post it quotes or replies to, and the IDs of up to five moments. The server reads the post's public text, the posts above it in its thread and the author's public bio (through FxTwitter, a public X viewer). It asks the model which moment, if any, the post weighs in on, and whether it's about the author's own company. Nobody's stakes are sent. Versions from before October 28, 2026 send short descriptions of up to five news stories, with the companies in them, instead of moment IDs. The model is asked which story, if any, the post reacts to, and which companies each story is about.
  3. X Articles. When a post by someone in the dataset shares an X Article, the extension sends the post's ID. The server reads the article's public text (through FxTwitter) so the tag can reflect what the article says.
  4. Long posts. X cuts long posts short ("Show more") in timelines and profiles, and long quoted posts everywhere. It can also show a reply without the post it answers. When that happens, the extension sends the post's ID (or the ID of the post it replies to), and the server reads the full public text, and the post it answers, through FxTwitter. That way the tag is the same wherever the post appears.

None of this includes anything about you: no account details, no browsing history, no cookies, nothing that says who is looking. Each check carries the extension's random install ID, so the server can limit what each install's checks cost (see "The install ID" below). The server keeps each answer for up to 7 days, so each post is checked once for everyone.

To stop anyone running up its costs, the server looks at each request's IP address:

The address itself isn't kept in any of this. Cloudflare, which runs the server, may log requests with their address for up to 7 days, and only Bag Check's maintainer can see those logs.

The install ID

When you install the extension, it makes a random ID. It isn't tied to you, your browser profile or your X account.

The ID goes with each check described above. Bag Check runs on paid checks, and one copy running them up, through a fault or a script, could use up what keeps them on for everyone. So when a check costs money (the server asks the model, rather than reusing an answer it already has):

The install count

When you install the extension, and then at most once a day while it runs, it sends:

Bag Check uses this only to count installs and see which versions are in use. Nothing about you or the pages you read goes with it. Bag Check for Safari from the Mac App Store or TestFlight doesn't send it, because Apple counts those installs.

What you choose to send

How long it's kept

What Bag Check's server reads on its own

To keep the dataset current, Bag Check's server reads public information about the people and firms in it. This involves no one's browsing. It happens the same way whether or not anyone uses the extension, and nothing the extension sends is kept for it.

What Bag Check never does

Chrome Web Store User Data Policy

Bag Check's use of the information described here adheres to the Chrome Web Store User Data Policy, including the Limited Use requirements: it is used only to provide and improve Bag Check's single purpose (showing publicly reported stakes on posts), never transferred except as described here, never used for advertising, credit-worthiness or lending, and never read by people except Bag Check's maintainer acting on what you sent, for security, or as the law requires.

Corrections

Every tag's details have a "Dispute this tag" form. Disputes are checked against the public sources, and a tag the sources don't support is taken down for everyone.

Contact: hmu@mikemillmade.it