Cookie Policy
Last updated: 19 October 2026
What changed on 19 October 2026
- We name the browser's private file system (OPFS) for the first time: imported footage too large for the browser database is kept there, per account, and a signed-out visitor's copies are erased the first time the media library is used after signing in.
- We say our one-byte capability check writes a test file to the private file system and deletes it right away.
- We removed unpkg.com from the list of outside addresses our pages load content from: the video-processing engine now ships with the application instead of being downloaded from a third party while you use it.
- We now say that we use Vercel Web Analytics, how its consent works in your region, and what it records.
- We list a third cookie, for Build previews, and say that signing out does not remove it.
- Cookie lifetimes are our default settings: the session cookie lasts 90 days, not 30.
- Global Privacy Control and Do Not Track now always stop analytics.
- We list more of the browser storage we use, with examples, including your cookie choice, a trading-agent device id and per-feature consents.
- We list the outside addresses our pages load content from, and why.
- We no longer say our session cookies are marked Secure in production: that is a server setting we do not assert.
- We no longer say our cookies never follow you to another site: the session cookie may be shared across poly.inc subdomains.
- We removed the section explaining why you had not seen a consent banner: a consent banner now appears where consent is required.
- We no longer say browser storage is never sent to a server: research sessions and canvases sync to your account while you are signed in.
- The Build preview cookie's lifetime now says the sign-in token it carries can last up to 90 days by default.
- Blocking our cookies also stops Build previews from opening; we no longer say nothing else breaks.
- We group the browser storage list by where it lives — localStorage, sessionStorage, IndexedDB and Cache Storage — and say which kind uses which.
- We name Cache Storage for the first time: on-device models and Office's offline pages are kept there so they do not have to be downloaded again.
- We list more of the browser storage we use: device ids for tickets, on-device usage counters, housekeeping markers and sync queues, per-tab session state, encryption keys, journal unlock keys, chat-agent run state, your projects hub, and the list of documents you deleted in Office.
- We say that if IndexedDB fails, a fallback copy of some of what a database holds is written to localStorage.
- We say Psyche's records are deleted when you sign out, and we name downloaded tools, models and offline pages.
- We say more of what is sent to us: how the chat agent picked models during a run (in batches) and your projects hub.
Our application sets three cookies, all strictly necessary, and no tracking cookies. This page lists them, the main kinds of browser storage we use, and the one third-party analytics service we use. It forms part of the Privacy Policy.
Analytics, and the consent banner
In the EEA, the UK and Switzerland, or when we cannot tell where you are, analytics runs only if you accept it. Elsewhere it runs unless you turn it off. It never runs while your browser sends Global Privacy Control or Do Not Track. Use Cookie settings (below, and in the footer of our marketing and legal pages) or Settings › Privacy & Safety to change your choice; the change takes effect in every open tab, without reloading.
The analytics service is Vercel Web Analytics, which sets no cookies. By its own published description, each page view it records can carry:
- the time of the page view
- the page address (URL) and its route pattern
- the referring page
- filtered query parameters
- country, region and city
- operating system and version
- browser and version
- device type (mobile, tablet or desktop)
- the analytics script version
- a hash of the request, used to count visitors, which is discarded after 24 hours
Cookies we set
| Name | Purpose | Lifetime |
|---|---|---|
poly_session | Keeps you signed in, and may be shared across poly.inc subdomains. HttpOnly; SameSite=Lax (our default setting). | 90 days (our default setting) |
poly_access | Carries your API credential, so requests you make are signed in. HttpOnly; SameSite=Strict. | 1 hour (our default setting) |
poly_build_token | Lets a Build preview you opened load its files. It carries your sign-in token. HttpOnly, SameSite=Lax, sent only to that preview's address, and marked Secure when the page is served over HTTPS. | Until the sign-in token inside it expires (up to 90 days, our default setting), or sooner if your browser ends the session. Signing out does not remove it. |
All three are set by our own application, used only to keep you signed in and to load your own previews. None is used for analytics or advertising, and none is shared with another company.
Browser storage, which is the bigger part
Most of what Poly keeps in your browser is in localStorage, sessionStorage, IndexedDB, the browser's Cache Storage or the browser's private file system (OPFS) rather than in cookies. Unlike a cookie, the browser does not attach it to requests by itself. Cache Storage holds downloaded copies — on-device models and Office's offline pages — so they do not have to be downloaded again. If IndexedDB fails, a fallback copy of some of what an IndexedDB database holds is written to localStorage instead. Some of it is sent to our servers by the feature that uses it: your sign-in tokens with each request, research sessions and canvases (which sync to your account while you are signed in), how the chat agent picked models during a run (sent in batches), your projects hub (which saves to your account), a device id when you sync trading agents, and stored Psyche records only after you turn on sync.
These are the main kinds of browser storage we use, with examples:
localStorage
| What | Why | Cleared when | Examples |
|---|---|---|---|
| Sign-in tokens | Keeping you signed in within this browser | You sign out | access_token, refresh_token |
| Cached profile | Showing your name and avatar before the server answers | You sign out | user |
| Your cookie choice | Remembering whether you accepted analytics, so we do not ask again | You clear site data | polychat-cookie-consent |
| Device ids | Telling this browser apart from your others when you sync trading agents, and marking ticket and chat-agent records as coming from this device | You clear site data | polychat-finance-device-id, polychat-tickets-device-id |
| Per-feature consents | Remembering whether you turned on a feature's sync, such as Psyche sync, or agreed to a feature working on this device rather than on our servers | You sign out, or clear site data | psyche-sync-consent-granted, polychat-draw-ondevice-v1 |
| Feature settings | Features you switched on or off in this browser | You clear site data | polychat-feature-flags |
| Interface preferences | Theme, layout, open tabs and which section you were in | You clear site data | theme, polychat-open-tabs |
| On-device usage counters | Which features get used, counted on this device so we can decide what to build next. The features that write these counts do not send them to us. | You clear site data | polychat-handoff-census, polychat-preference-learner, polychat-tier-pick-telemetry |
| Housekeeping markers and sync queues | One-time "already done" markers and the queues that replay your changes when you are back online | You sign out (only the Psyche ones), or clear site data | polychat-storage-migrated, polychat-delete-tombstones, research-sync-queue, psyche-sync-consent-migrated-v1 |
| Content you keep on this device | Drafts and local copies of your work, a log of what you did in Office, and the list of documents you deleted there, kept so you can undo it. The deleted document itself stays on our servers until you empty it from trash. | You delete them, or clear site data | polychat-office-trash, polychat-office-activity |
| Psyche records | Your journal draft and Psyche's own records: check-in reminders, your data story and season summaries | You sign out, delete them, or clear site data | psyche-journal-draft, psyche-weekly-digest-v1, psyche-season-arc-v1, psyche-checkin-reminder, psyche-game-reflection-hides-v1 |
sessionStorage
| What | Why | Cleared when | Examples |
|---|---|---|---|
| Per-tab session state | Remembers where you were mid-task — where to return you after a sign-in redirect, and a search or draft you were taking somewhere — so a reload or going away and back puts you back | You close the tab | auth_return_to, wire_return_to, polychat-build-ephemeral:v1, pending_map_context, info-hub-restore, psyche:mind-page:arrived, research-prefill, __next_scroll_… — kept by Next.js, the page framework |
| Incognito chat state | Held in sessionStorage deliberately, so it ends with the tab | You close the tab | incognito |
IndexedDB
| What | Why | Cleared when | Examples |
|---|---|---|---|
| Feature settings | Features you switched on or off in this browser | You clear site data | polychat-trading-automations, polychat-voice-profiles |
| Interface preferences | Theme, layout, open tabs and which section you were in | You clear site data | polychat-canvas-windows, polychat-app-zustand |
| On-device usage counters | Which features get used, counted on this device so we can decide what to build next. The features that write these counts do not send them to us. | You clear site data | polychat-research-telemetry, polychat-telemetry |
| Drafts and local documents | So a half-finished document, research session or video survives a reload | You delete them, or clear site data | polychat-research, polychat-video-drafts |
| Psyche records | Therapy sessions and their transcripts, and your journal's observations records | You sign out, delete them, or clear site data | polychat-therapy, polychat-chat-observations |
| Encrypted wallet vault | Your recovery phrase, encrypted under a passphrase we have never seen | You remove the wallet from the device | polychat-wallet |
| Encryption keys | Keys for encrypted mail and trading-agent sync, wrapped by a key your browser cannot export | You clear site data, lock or reset encryption, or when your session expires | polychat-e2ee-keyring |
| Chat agent run state | Where a background chat-agent run keeps its steps and its per-device lock | You clear site data | polychat-saga, polychat-saga-locks |
| Journal unlock tokens | Keys that keep an unlocked journal open across a reload; each one expires within a day at most | They expire, you remove the journal's PIN, or you clear site data | polychat-journal-unlock |
| Your projects hub | Your cross-section project lists, saved to your account and kept on this device | You delete the project, or clear site data (clearing site data leaves the account copy — sign back in and it returns) | polychat-projects-hub |
| Downloaded tools, models and offline pages | Copies of on-device models, so they do not have to be downloaded again | You clear site data | tensorflowjs — kept by the on-device model library @vladmandic/human |
| Chat routing telemetry | How the chat agent picked models during a run, so we can study cost and reliability. These records are sent to us in batches. | You clear site data | polychat-routing-telemetry |
Cache Storage
| What | Why | Cleared when | Examples |
|---|---|---|---|
| Downloaded tools, models and offline pages | Copies of on-device models and the Office shell, so they work without re-downloading | You clear site data (Office also removes its old offline-page copies when it updates them) | poly-draw-models-v1, poly-photo-models-v1, poly-ffmpeg-core-v1, office-shell-v1, transformers-cache — kept by the on-device AI model library @huggingface/transformers |
OPFS
| What | Why | Cleared when | Examples |
|---|---|---|---|
| Imported video source files | Imported footage too large for the browser-database budget, kept in the browser's private file system (OPFS) so a large source opens without re-importing. Copies are kept per account: a signed-out visitor's copies are erased the first time the media library is used after an account signs in | You clear site data, or you remove the source from your library; a signed-out visitor's copies are erased the first time the media library is used after signing in | polychat-media-opfs |
| Capability probe artifacts | A one-byte test write that checks this browser supports the private file system (OPFS), so features that need it can say so honestly instead of failing silently. The test file is deleted immediately | Right after the probe runs — though a browser killed mid-probe can leave the folder until the next probe run cleans it | .poly-capability-probe |
⚠ Clearing site data can destroy your wallet. If you clear browser storage for Poly without having written down your recovery phrase, the vault goes with it and nobody — us included — can restore it. That is the price of us not holding your keys.
Controlling all of it
- Sign out to clear the session cookies and the tokens. Signing out does not clear the Build preview cookie; it ends when its token expires.
- Your browser settings can block or delete cookies and site data for poly.inc at any time. Blocking our cookies means you cannot stay signed in or open Build previews.
- Global Privacy Control and Do Not Track: while your browser sends either signal, analytics does not run — whatever you chose in the banner or Cookie settings.
Embedded third parties
Some features load content from other services — model providers, RPC endpoints for wallet and market data, media you paste in. Those requests reach the service concerned and are subject to its own practices. We do not embed advertising or social widgets.
The addresses outside poly.inc that our security policy lets our pages load from, and why:
https://*.up.railway.app— Our API servers' hosting addresswss://*.up.railway.app— Live updates from our API servershttps://api.openai.com— Allowed by our security policy for requests to OpenAI; no page currently calls it from your browser (OpenAI)https://va.vercel-scripts.com— The page-view analytics script, when analytics runs (Vercel)https://images.unsplash.com— Stock photos used in some featureshttps://avatars.githubusercontent.com— Profile pictures from accounts you sign in withhttps://lh3.googleusercontent.com— Profile pictures from accounts you sign in withhttps://platform-lookaside.fbsbx.com— Profile pictures from accounts you sign in withhttps://cdn.discordapp.com— Profile pictures from accounts you sign in withhttps://coin-images.coingecko.com— Coin and token logos from our market-data providershttps://assets.coingecko.com— Coin and token logos from our market-data providershttps://assets.geckoterminal.com— Coin and token logos from our market-data providershttps://cdn.dexscreener.com— Coin and token logos from our market-data providershttps://dd.dexscreener.com— Coin and token logos from our market-data providershttps://static.jup.ag— Coin and token logos from our market-data providershttps://assets.parqet.com— Stock and fund logos from our market-data providershttps://www.youtube-nocookie.com— Videos embedded on the community page, in YouTube's privacy-enhanced mode (YouTube)
Changes
If we ever add a cookie that is not strictly necessary, we will add it to the table above, ask for your consent first, and date the change here. privacy@poly.inc.