1. This website stores almost nothing
The Cofleet marketing site runs no analytics and no advertising pixels, which is why there is no banner on it. The current demo and waitlist forms ask only for your email address. It is sent when you submit and is not saved to browser storage. Earlier questionnaires also asked for company size and needs. What we do with it is in the Privacy Policy. A few things still touch your browser here, and none of them needs your permission:
- If you switch these pages between light and dark, we remember which one you chose so the next page you open matches. Until you press that switch nothing is written at all — the site simply follows your device's own light or dark setting.
- If you unlock the private preview, we remember it for the rest of the tab so the next preview page does not ask again. Closing the tab forgets it.
- Our network provider, Cloudflare, may set a security cookie when it checks whether traffic is automated. We do not control when that happens, and at the time of writing no such cookie is issued on this site.
The site also loads fonts from Google's font service, which means Google receives your IP address and user agent as part of that request. That sets no cookie, but it is a transfer, so it is named on the trust page.
The remaining register describes application browser storage. The desktop app also keeps local session and interface settings. Earlier Cofleet versions used other storage names, including cofleet_session, cofleet_oauth_csrf, google_oauth_state, pending_google, cofleet_board_share and graph.* preferences; old browser profiles may retain those until cleared.
2. The full register
Local and session storage do the same job as a cookie and the law treats them the same way, so they are listed alongside them. Where a family of keys shares a prefix it gets one row; the prefix is exact, so you can find every member in your browser's developer tools. This table is meant to be complete — if Cofleet set something it does not describe, that is a bug in this page, and we would like to hear about it.
| Name | Kind | Purpose | Category | Retention |
|---|---|---|---|---|
| cofleet-theme | Local storage | Website theme selected by the reader; without a saved choice the site follows the device setting. | Strictly necessary | Until cleared |
| cofleet-preview-unlocked | Session storage | Website preview unlock for this tab. | Strictly necessary | Until the tab closes |
| otto:session@<API URL> | Local storage | Web app sign-in token and connection settings. Sign-out clears the token. The desktop app stores its session through native storage instead. | Strictly necessary | Until sign-out or storage is cleared; the server session expires after 30 days |
| otto:session@<API URL>#tab | Session storage | Web app workspace/brain selection for the current tab and a sign-in fingerprint to clear that selection when the account changes. | Strictly necessary | Until the tab closes or selection is cleared |
| otto_oidc_state | Cookie | Google/Microsoft sign-in state, nonce and verifier to protect the sign-in or identity-linking flow. | Strictly necessary | 10 minutes; cleared on callback |
| otto_microsoft_profile | Cookie | Verified Microsoft identity and suggested contact details while completing sign-in. | Strictly necessary | 10 minutes; cleared on completion |
| otto_session | Cookie | Short-lived authentication for the app’s OAuth authorisation pages. | Strictly necessary | 10 minutes |
| otto_mcp_request | Cookie | Pending connected-tool authorisation request. | Strictly necessary | 10 minutes |
| otto_drive_consent, otto_sharepoint_consent, otto_notion_consent, otto_slack_consent, otto_github_consent | Cookie | Bind an explicitly requested connector authorisation to the signed-in user and anti-forgery state. | Strictly necessary | 10 minutes |
| otto:signin-nonce, otto:signin-next | Session storage | Protect web sign-in and return to the requested page. | Strictly necessary | Until consumed or the tab closes |
| otto.chunk-reload-at | Session storage | Prevent repeated reloads when an application update changes asset files. | Strictly necessary | Until the tab closes |
| cofleet:connector-return:<workspace ID> | Session storage | Return to the selected app page after connecting a source. | Strictly necessary | Until consumed or the tab closes |
| otto:theme, cofleet:recent-chats-expanded, cofleet:chat-context:<user ID>:<workspace ID> | Local storage | App theme, recent-chat expansion and chosen chat context; selected context can include brain/source references. | Strictly necessary | Until replaced or cleared |
| ["cofleet:brain-creation", <API URL>, <user ID>, <workspace ID>] | Local storage | Track requested brain creation and show completion notifications; the key is a JSON array. | Strictly necessary | Entries removed when acknowledged; otherwise until cleared |
| __cf_bm, cf_clearance, _cfuvid | Cookie | Cloudflare security checks when enabled. These are conditional provider cookies, not analytics. | Strictly necessary | Provider/configuration-dependent; __cf_bm typically 30 minutes, _cfuvid for the browser session, cf_clearance for the configured challenge-passage period |
Strictly necessary means it exists to deliver something you asked for: staying signed in, not being asked the same question twice, keeping the interface the way you left it, or letting a security check tell you apart from a bot. Under the ePrivacy rules these do not need your consent. You should still know they exist, which is why they are listed.
There is no second category. Every row above is strictly necessary: this site and the app set no analytics cookie, run no session replay, and load no third-party analytics script, which is why neither surface shows a banner. Our servers separately record which features ran and what our AI calls cost, using identifiers and counts and no browser storage at all. Section 3 and the Privacy Policy cover that.
The GitHub consent cookie supports the GitHub connection flow when that connector is enabled. Its presence in this register does not represent availability in a particular deployment.
3. What our servers record, without touching your browser
Our servers separately record which features ran for your account: identifiers and counts, no cookies involved. They use no analytics cookie or other browser storage, so there is no analytics consent banner. These records are still covered by the Privacy Policy.
When enabled, our servers send product usage events, AI call metadata and daily and month-to-date model-cost totals per workspace to PostHog's EU cloud (eu.i.posthog.com), and use user identifiers for feature availability checks. DPA 1.3 limits these analytics to service operation, reliability, service improvement and customer usage/cost understanding where offered; an organisation’s previously accepted DPA continues to control until it expressly accepts a new version. They describe which features ran, which model was used, token counts, latency and model cost, with identifiers and fixed category labels. They contain no documents, source text, prompts, outputs, memory content, names, email addresses, URLs, window titles or raw error messages. There is no browser analytics SDK or session replay.
There is no optional product-analytics opt-out at launch. Clearing browser storage does not disable server-side telemetry. Applicable rights, including the right to object to legitimate-interest processing, remain available through markus@cofleet.app as described in the Privacy Policy.
4. Changing your mind
Every entry in the table above is strictly necessary, so there is nothing here to consent to and nothing to withdraw. That is why the app shows no cookie banner: we set no analytics cookie to ask about.
Your browser can still block or delete cookies and storage for a site. That works, though clearing the strictly necessary ones will sign you out and forget how you had the interface set up.
The server-side records in section 3 sit outside browser controls. Your rights over them, including the right to object, are in the Privacy Policy.