---
title: "Cookie Policy | roji.ai"
description: "Every cookie roji.ai sets, what it is for, and how long it lasts. We set five cookies. None of them are for analytics or advertising, because we run neither."
doc_version: bbd175254031
last_updated: 2026-09-10
---
# Cookie Policy | roji.ai

Cookie Policy

## The short version

ROJI Inc. ("ROJI," "we," "us," or "our") sets **five cookies** across roji.ai and the ROJI console. Three keep you signed in and remember which account you are working in, one records your cookie choice, and one remembers whether the console sidebar is open.

We run **no analytics, no advertising, no pixels, no tag manager, and no session replay**. There is no Google Analytics, no PostHog, no Meta or LinkedIn pixel, and no cross-site tracking of any kind on this site. That is not a promise about the future — it is a description of the code that is deployed today, and this page is rewritten when that changes.

This policy sits alongside our [Privacy Policy](/privacy).

## What cookies are

Cookies are small text files a site stores in your browser. A **session cookie** is discarded when you close the browser; a **persistent cookie** survives until it expires or you delete it. A **first-party** cookie is set by roji.ai; a **third-party** cookie is set by another domain whose code runs on the page.

## Cookies we set

### Strictly necessary

These are required for sign-in, for the console to work at all, and for us to remember your cookie choice. They carry no advertising identifier and are not shared with anyone. The three session cookies are `HttpOnly` (JavaScript on the page cannot read them), `Secure` (sent only over HTTPS), and `SameSite=Lax`. `c15t` is `Secure` and `SameSite=Lax` but not `HttpOnly`, because the consent banner has to be able to read your choice back.

| Cookie | What it holds | Set on | Lifetime | Flags |
|---|---|---|---|---|
| `session` | Your signed-in session, as a Firebase Authentication session token | `.roji.ai` | 14 days | HttpOnly, Secure, SameSite=Lax |
| `api_token` | The access token the console uses to call the ROJI API on your behalf | `.roji.ai` | Expires with the token (14 days by default) | HttpOnly, Secure, SameSite=Lax |
| `current_account` | The URL slug of the account you are currently working in, so a page load lands in the right workspace | `.roji.ai` | 1 year | HttpOnly, Secure, SameSite=Lax |
| `c15t` | Your cookie choice, so the consent banner does not ask again | `roji.ai` | 1 year | Secure, SameSite=Lax (readable by the banner) |

`session`, `api_token` and `current_account` only exist once you sign in, and all three are deleted when you sign out. If you have never signed in, `c15t` is the only cookie on your machine from us.

### Functional

| Cookie | What it holds | Set on | Lifetime | Flags |
|---|---|---|---|---|
| `sidebar_state` | Whether the console's left sidebar is expanded or collapsed | `roji.ai` | 7 days | SameSite=Lax (written by the page, so not HttpOnly) |

This one is set inside the signed-in console only. It never appears on a marketing page.

### Analytics cookies

None. We do not set any.

### Advertising and marketing cookies

None. We do not set any, and we do not embed any third-party advertising or measurement tag.

## Similar technologies

Two things we use are not cookies but do store data in your browser, so they belong here:

- **Firebase Authentication (IndexedDB).** After you sign in with Google, the Firebase client library keeps your refresh token in your browser's IndexedDB store (`firebaseLocalStorageDb`). This is what stops you being asked to sign in on every page. Signing out clears it. It exists only for signed-in users.
- **Consent record (local storage).** The consent manager mirrors the contents of the `c15t` cookie into local storage under the key `c15t`, so your choice survives a cookie-only clear.

We do not use pixel tags, web beacons, or tracking images — in the site or in email.

## Third parties whose code runs on our pages

- **Consent management (c15t).** The consent banner is provided by [c15t](https://c15t.com). It runs in your browser and records your choice in the first-party `c15t` cookie described above.
- **Google / Firebase Authentication.** Signing in opens a Google sign-in window. Google sets its own cookies on **Google's** domains during that flow, governed by the [Google Privacy Policy](https://policies.google.com/privacy). We do not set or read them.
- **Stripe.** Stripe's JavaScript loads on **one** page — the billing settings page inside the signed-in console — so that you can add a payment method without card details ever reaching our servers. Stripe sets its own fraud-prevention cookies there, described in the [Stripe Privacy Policy](https://stripe.com/privacy). Stripe's code does not run on any public page of this site.

Our fonts are self-hosted at build time, so loading a page on roji.ai makes no request to a font CDN.

## Managing your choices

**The consent banner.** It appears on your first visit and records your choice in the `c15t` cookie. Because we set no analytics or advertising cookies, declining the optional categories does not change what is stored — there is nothing in those categories to switch off. To bring the banner back, delete the `c15t` cookie for roji.ai.

### Our Record of Your Consent Choice

Separately from the copy stored in your browser, we keep a record on our own servers of the consent choices made on our website. We do this because we are required to be able to demonstrate that consent was obtained, and because a copy that lives only on your device — which you can clear or change at any time — cannot serve that purpose.

**What the record contains:**

| Field | What it is |
|---|---|
| Your choice per category | Which categories (necessary, functionality, experience, analytics/measurement, marketing) you granted and which you declined — the full choice, not simply "accepted" |
| Policy version | The version of this Cookie Policy that was in force when you chose, so it is always clear what you were told |
| Time | The date and time the choice was recorded, taken from our server's clock |
| A one-way hash of your IP address | Your IP address is **not stored**. We store only a salted SHA-256 hash of it, from which the original address cannot be recovered. It exists so that a record can be located if you ask us about it |
| Browser user agent | The browser identification string your browser sends with every request, truncated |
| Consent identifier | If the consent tool has generated a local identifier for your browser, it is stored so that a later change can be linked to an earlier choice |
| Account details | Only if you happened to be signed in at the time. Most consent choices are made before any account exists, and this field is then empty |

**What the record does not contain:** your IP address in readable form, the page you were on, where you came from, your location, or any identifier we created in order to recognise you again.

**The record is append-only.** If you change your mind, we add a new entry — we never overwrite the old one. This is deliberate: the history of your choices is the point of keeping the record at all.

**Where it is kept and for how long.** The record is stored on infrastructure we operate ourselves and is not shared with any third-party consent-management provider. We retain consent records for seven years from the date of the choice, because a record of consent has to outlive the consent itself in order to evidence it.

To ask what we hold, or to raise a concern about it, contact us at [privacy@roji.ai](mailto:privacy@roji.ai).

**Your browser.** Every major browser lets you inspect, delete, and block cookies:

- [Google Chrome](https://support.google.com/chrome/answer/95647)
- [Mozilla Firefox](https://support.mozilla.org/en-US/kb/cookies-information-websites-store-on-your-computer)
- [Safari](https://support.apple.com/guide/safari/manage-cookies-and-website-data-sfri11471)
- [Microsoft Edge](https://support.microsoft.com/en-us/microsoft-edge/manage-cookies-in-microsoft-edge-168dab11-0753-043d-7c16-ede5947fc64d)

Blocking the strictly necessary cookies will stop you from signing in. Blocking `sidebar_state` costs you nothing but a sidebar that forgets its width.

**Do Not Track.** Browsers that send a DNT header are asking not to be tracked across sites. We do not track anyone across sites, with or without the header, so there is no behaviour for it to change.

## Changes to this policy

We update this page when the cookies change, not on a schedule. The "Last updated" date at the top is the date of the most recent change.

## Contact

**ROJI Inc.**
Email: [privacy@roji.ai](mailto:privacy@roji.ai)
Website: [https://roji.ai](https://roji.ai)

## Sitemap

- [Every public page, as markdown](/sitemap.md)
- [llms.txt](/llms.txt) · [AGENTS.md](/AGENTS.md) · [auth.md](/auth.md)
