Skip to content

Privacy Policy

Last updated: 28 September 2026

The short version

The AI Tab Switch browser extension is local-first: your tabs’ statuses, the prompts you stage, your notes and your settings are kept in your browser, and it sends no telemetry. It does talk to our servers — for its licence check, the update check and saved prompts; and, once you switch on the LLM triage, for the list of free models if you use your own OpenRouter key, or for the triage included in your subscription if you don’t, which sends us the text of a finished reply. Each is described below, with what it carries. This website runs without analytics or tracking cookies. If you have an account — the extension’s licence needs one — we store the minimum needed to run it, and deleting it erases that, apart from the few records listed under Retention. We do not sell or rent any data.

Who is responsible

The data controller is the operator of aitabswitch.com. For any privacy request, use the contact form.

The browser extension

The extension reads the pages of the AI chat tabs you already have open, solely to show their status (generating, finished, waiting on you) and to deliver prompts you stage yourself. Both happen inside your browser.

What stays on your device. Statuses, previews, queued prompts, screenshots you paste, notes, and settings are kept in the browser’s extension storage on your device. The extension sends no telemetry and contains no analytics. It talks to our servers for the licence check, the update check and saved prompts, none of which carries your tabs, statuses or conversations; and, once the LLM triage is on, for the list of free models (with your own key) or for the triage included in your subscription (without one), which sends the text of a finished reply. It talks to a third party for the usage meters, and if you switch on the LLM triage with your own key, off-desk alerts, or replies from your phone. Each is described below. Its Firefox listing declares no required data collection, and website content as optional. Notifications are generated locally by your browser. Uninstalling the extension deletes its stored data.

Optional LLM triage (off by default). If you switch on “Use LLM” in the extension settings, the text of a finished AI reply is sent to a language model so it can be classified (undone work, waiting on your approval, or work on your side). Where that text goes depends on whether you have entered your own OpenRouter API key, and the two routes are genuinely different:

  • With your own OpenRouter API key. The reply text and your key travel directly from your browser to OpenRouter (openrouter.ai) — we never receive, store, or see either — and OpenRouter processes them under its own privacy policy. Your key is stored only in this browser’s extension storage and is excluded from settings exports.
  • Without a key, using the triage included in your subscription. The reply text is sent to our server at aitabswitch.com, which passes it to OpenRouter on our own key and returns only the verdict. On this route we do receive the reply text. We do not store it: it exists in memory for the length of that one request and is never written to our database or our logs, and we do not train anything on it. We do record that a classification happened, and how many you have made in the last hour, to enforce a per-subscription rate limit. OpenRouter still processes the text under its own privacy policy. If you would rather your replies never reached us, enter your own OpenRouter key and the route above applies instead.

With your own key, the extension also fetches the list of currently free models from our public API and from openrouter.ai; on the included route our server picks the model. Turn the setting off and no such request is ever made.

Off-desk alerts (off by default). If you switch on “Send alerts to my phone” in the extension settings and enter an ntfy server and topic, the extension posts a short notification tothat server whenever one of your tabs needs you: the provider name, the state, the tab title, the conversation link, and — unless you switch that off — part of the model’s reply: 240 characters by default, and anywhere from 40 to 2,000 if you change “Answer text in the alert” under Tuning (never more than the card’s own preview, “Answer preview”, holds). It goes directly from your browser to the endpoint you named (ntfy.sh or an ntfy server you host yourself); nothing is routed through aitabswitch.com, and we never receive, store, or see any of it. Your topic and access token are stored only in this browser’s extension storage and are excluded from settings exports. Whoever operates that endpoint processes the alert under their own terms — on ntfy.sh, anyone who knows your topic name can read your alerts, which is why the extension treats it as a secret. Turn the setting off and no such request is ever made.

Replies from your phone (off by default). If you also switch on answering from the alert, the extension reads your answers from a second topic on that same server — checking it every minute, and more often for a while after an alert (how often, and how long, are settings) — and types each one into its tab, just like Reply on the radar. Once an answer has landed, it posts a short confirmation back to your alert topic. The reply topic is a secret like the alert topic, kept only in this browser’s extension storage and excluded from settings exports; nothing of this passes through aitabswitch.com. Turn replies off and the extension stops reading the topic.

Usage meters (on by default). To show how much of each AI service’s limit you have used, the extension asks that service for your usage numbers from inside its own tab, with the session you are already signed in with — the same request the page itself makes, answered by the service, not by us. If you give the extension a Poe or OpenRouter API key, it also asks that service for your balance. Switch off “Track usage & limits” in the extension settings and no such request is made.

Update check (on by default). Once a day the extension asks aitabswitch.com for the newest version number so it can tell you when an update is out. The request is a plain GET that carries no identifiers, no cookies, and nothing about your tabs; only our hosting provider’s ordinary connection logs apply (see Hosting above). Switch it off any time under extension settings → Data → “Check for updates”.

Licence check. Each time the extension starts in your browser, and every six hours while it runs, it asks aitabswitch.com whether its licence is still active. It sends only the licence token it was issued when you signed in; the answer is whether your subscription is active, and its plan. Against that token we record the device identifier the extension created when you signed in, when the token was last used, and the IP address, country and city its last check came from — so that one licence runs on three devices at a time and a licence shared across countries can be spotted. A token expires seven days after it is issued, and expired tokens are cleared whenever a new one is issued; all of them go with the account.

Saved prompts (on by default). When you open the saved-prompts list in the radar, the extension fetches the prompts on your Repo Prompts board from aitabswitch.com, using the same licence token to say whose they are. The list is shown and then discarded — it is never written to the extension’s storage. When you pick or send one, the extension tells aitabswitch.com which prompt you used, so the board can show when each was last used, just as the board’s own Copy button does. Switch it off under extension settings → Behavior → “Saved prompts in the radar” and no such request is ever made.

The extension is not affiliated with the AI services it observes (ChatGPT, Claude, Gemini and others). Whatever you submit to those services is governed by their own privacy policies. That includes what Fork and the rate-limit switch hand over when you use them: the conversation (or, if you choose, only your staged prompts) is typed into a new chat on the service you picked, inside your browser. It never passes through aitabswitch.com.

This website

Hosting. aitabswitch.com runs on Cloudflare Workers. Cloudflare processes connection data (such as IP address and user agent) as our hosting provider to deliver and secure the site. Our database (Cloudflare D1) is located in Western Europe.

Accounts. You can browse the site without an account. The extension is licensed, so activating it needs one — buying creates it for you at checkout, with no separate registration step, and you can delete it at any time from the account page. If you have an account, we store: your email address, the display name you choose, a salted password hash (we never see or store your plain password), an email-verification flag, session records (a session token with expiry, plus the IP address and user agent of the sign-in, kept for account security), any presets you save (a preset name and its settings payload), and what you write on your boards: to-dos, the prompts you keep for each repository, how you arranged them into columns, and when each prompt was last used. If you connect GitHub, we also store your GitHub login and an access token that can only list the repositories you chose — it cannot read their contents — kept encrypted. This data is used only to provide sign-in, saved presets and the boards — the legal basis is the performance of that service at your request.

Payments. Stripe processes payments as our payment provider; we never see or store your card number. We store your Stripe customer id, your plan, its status, when it renews or its trial ends, and for a lifetime purchase the id of that payment. Stripe also sends us a record of every change to your subscription or payment (it names your account in the subscription’s details); we keep those records for accounting and to answer disputes, also after the account is deleted. Deleting the account cancels a live subscription first, and we then keep your Stripe customer id on its own — no account, no address — so that what Stripe sends about it afterwards (the cancellation itself, a late invoice) cannot create the account again. Stripe keeps its own records under its own privacy policy.

Account lifecycle. To see whether the product works for the people who pay for it, we keep a small record per account: whether the extension was ever activated and when its licence was last checked, your billing status and trial end, the billing events that changed them (a trial starting, a payment failing or recovering, a cancellation — with the reason and any comment you give in Stripe’s cancellation form), and whether a reminder email qualified for you or was sent. The legal basis is our legitimate interest in running and improving the service. It is deleted with the account.

Email log. For every email we send we log its purpose, a one-way hash of the recipient’s address, the account that asked for it, and whether it went out, so we can tell whether a message reached you and notice anyone using our forms against an inbox. Each entry is deleted after 30 days. Deleting the account takes you out of the entries without deleting them — the hash of your (verified) address and the link to your account are removed — because their counts are what warns us of an inbox under attack, and an entry another account asked for is that account’s record. The limits on how much mail can go to one address are counters keyed by the same hash; they expire within the hour. The legal basis is our legitimate interest in running the service and keeping it from being abused.

Operational log. Errors and refused actions are logged for 90 days to keep the service running. An entry can name the account involved and a masked address (like a***@example.com); deleting the account removes its id from them.

Password screening. When you set or change a password, we check it against Have I Been Pwned’s Pwned Passwords service, a public list of passwords that have appeared in data breaches, and refuse it if it has. The password itself never leaves our server: it is hashed here and only the first five characters of that hash are sent, which the service answers with every match in that range for us to compare on our side. It cannot tell which password, or whose, was checked.

Passkeys (optional). If you set up a passkey, we store its public key, a credential identifier, the name you give it on the account page (a new passkey has none; until you name it, the page shows the password manager or platform that made it when it recognises the model, or “Passkey”), which kind of authenticator made it (a model identifier, not a serial number), how it can connect (such as built in, USB, NFC, Bluetooth or a phone nearby), whether it can sync between your devices, and a use counter that lets us detect a cloned credential. The private key never leaves your device and we never receive it, so nothing stored here can be used to sign in. Passkeys are deleted with the account, or individually from the account page.

Referral links (optional). If you share your personal invite link, we count how many people visited it and how many signed up, so we can credit your free months. Visits are deduplicated using a salted hash of the visitor’s IP address — the raw IP is never stored and the hash cannot be reasonably reversed. Opening an invite link sets one cookie holding only the invite code (no identifier of you or the visitor), kept for 90 days so the signup can credit the inviter. To keep the program fair we also compare an opaque payment-method fingerprint provided by Stripe across signups — a one-way token, never a card number, used for nothing but preventing duplicate credits. Deleting your account deletes your invite link and its visit counts. A referral you were part of is also the other person’s record — the free month it earned whoever invited you, or the fact that a friend of yours was invited — so it stays, with your account removed from it; if you were the one invited, the payment-method fingerprint stays on it too, or the same card could earn the same credit again.

Cookies. The site sets a single session cookie when you sign in. It is strictly necessary for authentication. There are no advertising, analytics, or cross-site tracking cookies.

Fonts. The IBM Plex typefaces are served from our own domain. Pages embed no third-party resources at all — no CDNs, no font services, no trackers.

Contact form. If you write to us via /contact, we store the name you optionally give, your email address, and your message — solely to answer you. The legal basis is our legitimate interest in handling your request; messages are deleted once the matter is settled and nothing requires keeping them.

Retention

Account data is kept until you delete your account or ask us to remove it. Deleting it erases everything described above at once, with these exceptions, each explained above: Stripe’s billing records and your Stripe customer ids (accounting and disputes, and so the account cannot come back); referrals you were part of, with your account removed from them; the email log’s entries, for the rest of their 30 days, with your address and your account taken out; the operational log (90 days, with your account taken out of it); and the limits that protect your address — how many contact-form messages and emails it can send or receive — which expire within the hour. What was filed under your address without signing in (contact messages, mail we sent to it) is only tied to your account once you have verified the address; until then it may be someone else’s, so it is not deleted with the account — write to us to have it removed. Sessions expire automatically. Operational logs at our hosting provider are retained only for the short windows Cloudflare uses for security and abuse prevention.

Your rights

Where the GDPR or similar laws apply, you have the right to access, correct, delete, and receive a copy of your personal data, to restrict or object to its processing, and to lodge a complaint with a supervisory authority. Export and deletion are self-serve on your account page — download a machine-readable copy of your data (everything described here, except secrets such as your password hash and sign-in tokens) or delete the account outright, no request needed. For anything else, reach us through the contact form and we will act on your request without undue delay.

Changes

If we change this policy, the new version is published here with an updated date. Material changes will be announced on the site.