Privacy policy

Your notes are yours. Here's how we handle them.

LAST UPDATED · NOVEMBER 7, 2026

What we collect

We collect only what Kinjot needs: your email, optional display name, notes, folders, tags, and API-key metadata: each key’s name, prefix, creation date, and last-used date. Keys are stored only as one-way hashes; we can never read them back. For Pro accounts, we also store plan status, a payment-provider customer reference, AI usage counts, and Recall history. Recall history contains your saved questions and answers until you delete them. While version history is on (the default for new accounts, and you can turn it off), past versions of your notes are kept too. When an agent saves or changes a note with one of your API keys, we keep a record of it (the key, the note, the time and what changed, with text changes counted in characters rather than copied), which only you can read in full (the operator sees only the days on which changes were made) and which is deleted with your account. Agents can also leave short messages in your Inbox, such as a question or the work left for later: a title, a few sentences, and the repository, branch and pull requests they concern. Common secret formats, such as API keys and tokens, are redacted before a message is stored; only you can read your messages (the operator sees only the days on which messages arrived, or you read or resolved them), and they are deleted with your account. Settings → Inbox chooses which kinds of message agents may send, which of your keys may send at all, and whether agents may read your open messages. If you set up a webhook, Kinjot also sends your Inbox messages, or only their titles, to the HTTPS address you choose, signed so your receiver can verify them; the copy kept for retries is erased once each delivery ends, and your webhook and its delivery records are deleted with your account. Separately, kinjot.com and the blog use Cloudflare Web Analytics, a cookieless page-view counter that records the page URL, referrer and load timings and does not identify you. The operator can see your account details (email, signup date, plan), usage counts, the days on which your account was active — including days when an agent saved or changed a note with one of your keys or left a message in your Inbox — the time of your latest activity, and whether the emails Kinjot sends you were delivered, to run the service and handle support and abuse; never your notes, messages, questions or answers. Supabase Auth, which handles sign-in, keeps a security log of sign-ins and session renewals with the time, the account and, where available, the IP address of the request, for 90 days — including after you close your account — and keeps each signed-in session, with the browser type and address it was opened from, until you sign out. The operator reads only the dates from these, to know on which days you signed in or had the app open, never the addresses.

Where it lives

Your data is stored with Supabase (Postgres), encrypted at rest and in transit. Access is enforced per-account at the database level. Every query runs under row-level security, so one account can never read another’s notes. Your browser also keeps a copy so the app stays fast and works offline. Images you or your agents add to notes are the one exception: on a Pro account they are stored in Cloudflare R2 and served from a permanent public URL that anyone holding it can open, with no sign-in and no expiry. Image metadata (EXIF, GPS and embedded text) is removed before upload on both paths. Nothing removes them on its own — there is no expiry and no cleanup. You can delete them yourself at any time from Settings → Usage → Open images, on any plan, and deleting your account deletes them. Local-mode notes exist only in your browser, and we can’t see them. They reach our servers only if you later create an account and choose to bring them along.

What Kinjot is not

Kinjot is not end-to-end encrypted. Server-side encryption protects your data from outsiders, but the service can technically access note content. That access is what makes features like AI recall possible. Treat Kinjot like a notebook, not a vault. Don’t store passwords, keys or other secrets in it.

What we don't do

We don’t sell your data, show ads, or use your notes to train AI models. There is no analytics profile of you built from note content. Our service providers are Supabase for data and authentication, Cloudflare for hosting and for storing pasted images, Lemon Squeezy for payments, Maileroo for delivering sign-in and account emails, and Voyage AI, Anthropic and OpenAI for hosted AI features (OpenAI also transcribes the voice recordings of cloud dictation). Bring-your-own-key Recall can also send data directly from your browser to OpenAI or Anthropic, and own-key dictation sends voice recordings directly from your browser to OpenAI, as described below. For a signed-in Free account, note content leaves Supabase and Cloudflare only when you use bring-your-own-key Recall or own-key dictation.

AI features

Hosted AI features send note content to these providers. Voyage AI creates embeddings for meaning-based search. It receives note text when a note changes, questions when you ask them, saved Recall questions and answers so you can search your history, and page text when you ask the browser extension for related notes. Voyage receives only text, with no identifier. A language model from Anthropic or OpenAI writes one-line search gists and generates Recall answers from your question and matched notes. AI Tidy sends note titles, gists, and folder and tag names to a language model from Anthropic or OpenAI, which may differ from the one Recall uses; it sends a note body only when no current gist exists. We choose each model and may switch between them. Kin chat sends your messages, the notes and Inbox items Kin reads to answer them, the note you have open (its text when it is 12,000 characters or less), and your local time and time zone with each message, to the provider of the model that chat uses, Anthropic or OpenAI. The only identifier these model providers receive is a one-way hash of your account ID, never your email. When OpenAI is in use, we ask it not to retain the response.

Bring-your-own-key Recall sends your question, up to four matching note titles with excerpts and internal IDs, and your provider key directly from your browser to OpenAI or Anthropic. Kinjot receives neither the request nor the key. Before the first send of each browser session, Kinjot shows the exact payload and asks for approval. The key stays in memory for that browser session and is never stored.

Dictation. On-device dictation turns your speech into text in your browser and sends nothing anywhere. Cloud dictation, a Pro feature paid from your AI credits, sends only the recording to OpenAI through Kinjot to be transcribed, with no note titles, tags or other note content; Kinjot relays the audio and keeps no copy of it. Own-key dictation, on any plan in a signed-in account, sends the recording directly from your browser to OpenAI with your own OpenAI key, and Kinjot receives neither the recording nor the key; OpenAI’s terms and your account settings apply. The key stays in memory for that browser session and is never stored.

No AI folders. You can mark a folder No AI. Kinjot then does not send the notes in it, or in its subfolders, to the AI providers, bring-your-own-key Recall included, and does not serve them to your agents through Kinjot. Kinjot still stores them, unencrypted, like every note. Marking a folder cannot call back what was already sent, and Recall answers you saved keep what they quoted. Images in those notes keep their public links, and exports include the notes. An agent with shell access to your computer can still read the files Kinjot keeps on it.

Safety-filter declines. The model providers run safety filters, and a filter can decline a hosted request. When one does, Kinjot records that it happened: the feature (Recall, Tidy or a gist), the provider, the category the provider gave, and the time. It records nothing that was sent. Repeated declines pause hosted AI for your account, for up to a day or, after many, up to thirty days; the tips page gives the numbers. Deleting your account deletes this record.

What the AI providers may do with it

For hosted features, none of Voyage AI, Anthropic or OpenAI trains on your notes or recordings. We opted out of Voyage AI model training; under its terms, your content is deleted after processing. Anthropic says it does not train on API data and deletes API inputs and outputs within 30 days, except content its automated safety systems flag, which it may keep for up to two years. OpenAI’s API policy says API data is not used for training and may be retained for up to 30 days for abuse monitoring. Those are provider commitments, not guarantees Kinjot can enforce. For bring-your-own-key Recall and own-key dictation, your provider’s terms and account settings apply. If provider access concerns you, do not use Pro’s hosted AI features, bring-your-own-key Recall or an OpenAI dictation engine; on-device dictation sends nothing. A note’s embedding and gist are erased as soon as the note is deleted for good.

Payments (Pro)

Checkout and card handling happen entirely on Lemon Squeezy, our payment provider. To link the subscription we share your email address and account ID with them; Kinjot stores only your plan status and a customer reference. Card details never touch Kinjot.

Self-hosted deployments

A self-hosted app uses the operator’s Supabase project, static host, and provider accounts. The running app makes no license request to Kinjot. Kinjot does not receive the deployment’s notes, database credentials, Supabase access token, or OpenAI and Voyage API keys. The operator controls that environment and is responsible for its privacy, security, backups, migrations, and user disclosures.

When AI features run, each user’s note titles and bodies may be sent to the operator’s OpenAI and Voyage accounts. Those providers process the data under the operator’s account settings and agreements. Initial setup may queue existing users’ notes for this processing, including notes belonging to users who are not the operator.

Self-host purchase and update data

For the upcoming product, Self-host checkout will happen on Lemon Squeezy without a Kinjot account or Kinjot account ID. Lemon Squeezy will collect the buyer and transaction details needed for the purchase and receipt. The license key will be delivered in that receipt email and will never be included in a Kinjot setup URL. Kinjot may use order and contact details available in Lemon Squeezy to provide purchase, refund, and license support.

When distribution opens, the updater will contact Kinjot on its update schedule with the license key, linked deployment instance, installed version, source IP, and request timestamp. Kinjot will send the license key and linked instance to Lemon Squeezy for validation. The check will not send note content. The planned byo.kinjot.com option separately uses a functional HTTP cookie and an edge license check before serving app files; Cloudflare therefore receives ordinary request data such as IP address and user agent. The app runtime itself does not call a Kinjot license service. Refund and license changes are handled manually, and disabling a license stops future downloads rather than an installed app.

Agents and API keys

When you connect Claude Code, Codex or the CLI, they act with an API key you create. Each Kinjot key is scoped to your account, revocable at any time in Settings, and limited to the level you choose when you create it: Read only, Read and create, or Full access. Saves, searches and Recall through a key are rate-limited (listing open tasks counts as a search); reading a note, your recent notes, folders, tags or Inbox is not. A key can also read your account’s email address and your Inbox’s unread count, whatever you allow agents to do with the Inbox. The tools are designed so nothing is saved to your notes or changed from an agent session unless you explicitly tell the agent to; the one thing an agent may do on its own is send a short message to your Inbox when it stops with a question, a blocker or work left for later. Every change an agent makes to a note’s text through the MCP tools is kept in that note’s version history. One exception: an append sent from the CLI with --no-snapshot, which any of your keys with Full access can send, follows your own history setting instead. An append only adds text, so nothing already in the note is lost.

The browser extension

The Kinjot browser extension, made for Microsoft Edge, Chrome and Firefox, reads a tab only when you act: when you click its toolbar button, choose one of its menu items, or press one of its shortcuts. It then acts on that one tab, to save what you chose, to find notes related to it, or to put a note you chose into the page’s text box. It holds no standing permission on any website, and runs nothing in the pages you visit until you act.

When you save, the extension sends Kinjot the text you chose (a selection, a page, an AI chat answer or conversation, or a link), with the URL, title and site of the page, or of the link when you save a link from the menu, and the time you saved it; an AI chat answer or conversation also carries the model’s name when the page shows it. It becomes a note like any other and is handled as this policy describes. Common secret formats, such as API keys and tokens, are redacted before a save leaves your browser, in the saved URL too. What you type into its search box, or after kj in the address bar, goes to Kinjot as you type, to search your notes. When you click Find related jots in the Related tab, it sends up to 1,000 characters of the open page’s text to Kinjot. On Pro, Kinjot passes that text to Voyage AI to find related notes, as Recall does with a question; on a free account, Kinjot refuses it and passes nothing on. Kinjot does not keep that text. While connected, the extension also asks Kinjot, with its key, for your Inbox’s unread count every five minutes, whenever you open it and when your browser starts, to show the count on its toolbar button; that request sends nothing about the pages you visit.

Connecting opens a kinjot.com sign-in window. Once you are signed in there, you type the short code the extension shows, name the key and create it for that browser. The extension then shows the account the key belongs to, and keeps the key only after you confirm that account is yours. It keeps that account’s email address in its own storage, with the key and on any save waiting to be sent, to show which account is connected and to send waiting saves only to that account; it never sends the address anywhere. The key has the same levels and limits as any other key, and Settings → Agent connections lists it. You can also paste a key you created yourself. The extension keeps the key in its own storage in your browser, which web pages cannot read, and never puts it in a web page. Disconnect removes the key from the browser. A key the connect window created is also revoked, when Kinjot can be reached; a pasted key keeps working wherever else you use it until you revoke it in Settings → Agent connections, where you can revoke any key at any time. You can also have the extension forget the key whenever the browser closes. The same storage keeps your per-site defaults (a list of site hostnames, each with a folder and tags), which stay in the extension (a site’s folder and tags go with each save from that site), and any save that cannot reach Kinjot, which waits on this device. A waiting save is retried a few times, then waits for you to retry or discard it; it is never dropped silently. Disconnect asks whether to discard waiting saves or keep them for your next connection. A save from a private window never waits.

The extension never keeps a list of the pages you visit: it sends a page’s URL only when you save that page, and never reads a page you haven’t acted on. It has no analytics, telemetry or tracking of any kind, and loads no code or configuration from anywhere: everything it runs ships inside it. It sends nothing to anyone but Kinjot. What it sends is used only to keep and find your notes as this policy describes, and is never sold, used for ads, or shared beyond the service providers named above.

On Firefox, the extension declares what it handles through Firefox’s data-collection consent: website content, authentication information, search terms, browsing activity (the address, site and time of each page you save) and personal communications (an AI chat answer, or a saved page or selection that shows messages, such as email or chat). Firefox shows all five when you install it.

The use of information received from Google APIs will adhere to the Chrome Web Store User Data Policy, including the Limited Use requirements.

Questions or problems with the extension: [email protected].

Deleting your data

Notes you move to the trash can be recovered until you empty it. Emptying the trash removes those notes from your account for good. Their AI embeddings and gists are erased immediately, but a residual copy of the text remains in our database until you close your account. Saved recall answers work the same way: delete one and it leaves your history. Closing your account permanently deletes your notes and versions, folders, tags, API keys, agent activity, Inbox messages, embeddings, Recall history, and billing records. It also cancels active subscriptions, though the payment provider retains legally required transaction records. Supabase Auth’s sign-in log entries are kept for up to 90 days after you close your account, then deleted. Closing the account clears the browser copy on that device too. Clearing site data deletes local-mode notes. You can export everything before you go.

Cookies and local storage

We store an auth session, your notes, and a few UI preferences in your browser so the app stays fast and works offline. We also keep a history of the notes and folders you open; it stays on your device and is never sent to us, and you can pause or clear it in Settings. Text you share to the installed app from another app waits on your device until you save or discard it. Unsaved, it is deleted the first time Kinjot opens after 24 hours; saved, it becomes a note when its library next opens, or is deleted the first time Kinjot opens after 30 days. No tracking cookies, and no third-party tracker beyond the cookieless page-view counter described above, which sets nothing in your browser.

Changes and contact

If this policy changes in a way that matters, we’ll note it in the changelog before it takes effect. Questions: [email protected].