Cookie and device storage information
Information updated 20 September 2026
Necessary storage
ChatGPT Sites controls sign-in and platform security storage. The app’s __Host-lm-visit cookie groups authenticated activity and expires after 30 days. __Host-lm-consent and lm.consent remember a versioned privacy choice for 180 days. Platform-controlled cookie names and lifetimes are not represented as app-controlled settings.
Learning preferences and drafts
lm.progress stores reader bookmarks. lm.audio.positions.<learner-scope> stores guided playback positions and answer drafts. lm.theme, lm.script-preferences, lm.audio.speed, lm.second-opinion and lm.tutor store preferences. lm.tutor must not retain API keys. lm.account-event coordinates account changes. These values have no automatic expiry. Device-level reader history is shared by people using that browser; account-scoped audio drafts remain separate.
Onboarding and installation
lm.onboarding.v1 remembers onboarding dismissal. lm.install.dismissed-until suppresses the install invitation for seven days; the stored timestamp has no separate deletion timer. Installation is optional and does not create another account.
Offline storage
The service worker stores public application assets and opened written courses in lingomitra@<scope> shell and course caches. Old unscoped lingomitra caches can remain after an upgrade. Public documents use a separate cache. Private API responses and admin pages are excluded. No IndexedDB database is opened by the current application; a browser or platform may use its own internal storage.
Optional statistics
After an affirmative choice, __Host-lm-browser expires after 30 days and __Host-lm-product-session after 30 minutes. They are refreshed when statistics are recorded. lm.usage-metrics is retained only for compatibility with the previous opt-out setting. These are first-party analytics, not advertising cookies. The app has no advertising pixel, session replay or marketing SDK.
Change or withdraw
Choose Cookie settings in the footer or account settings. Accept optional, Reject optional and Manage preferences are available. Analytics starts off; Global Privacy Control and Do Not Track also disable it. Withdrawal stops future optional collection and expires the two first-party analytics cookies. Learning progress is preserved. Browser settings and Clear this device provide separate storage controls. Platform-controlled storage remains subject to the platform’s own controls.
Purpose and local control
Necessary storage supports features you request. Optional consent is a privacy-first product choice, separate from any jurisdiction-specific exemption. Do not clear all browser data to reject analytics; use Cookie settings. Export device data before changing domains or clearing learning records.
| Name or pattern | Provider | Purpose | Category | Lifespan |
|---|---|---|---|---|
| __Host-lm-consent; lm.consent | LingoMitra | Remember versioned privacy choice | Necessary preference | 180 days; expired local value replaced on next choice |
| __Host-lm-visit | LingoMitra | Group authenticated visits without granting access | Necessary account activity | 30-day cookie; server record schedule awaits approval |
| lm.progress | LingoMitra | Reader bookmarks, practice/review history | Necessary learning | Until user clears it or browser evicts it |
| lm.audio.positions.<scope> | LingoMitra | Account-scoped playback position and answer drafts | Necessary learning | Until clearing, deletion on this device or browser eviction |
| lm.theme; lm.script-preferences; lm.audio.speed | LingoMitra | Display, script and playback preferences | Necessary preference | No automatic expiry |
| lm.second-opinion; lm.tutor | LingoMitra | Optional feature preferences; no stored API keys | Necessary for selected feature | No automatic expiry; keys held in tab memory by legacy optional mode |
| lm.account-event | LingoMitra | Notify other tabs of an account change | Necessary isolation | Latest event retained until device clearing |
| lm.onboarding.v1 | LingoMitra | Remember onboarding dismissal | Necessary preference | No automatic expiry |
| lm.install.dismissed-until | LingoMitra | Suppress installation invitation | Necessary preference | Seven-day suppression; timestamp remains until clearing |
| lm.usage-metrics | LingoMitra | Legacy compatibility for privacy choice | Necessary preference | No automatic expiry; replaced by current choices |
| __Host-lm-browser | LingoMitra | Pseudonymous optional visit statistics | Optional analytics | 30 days, renewed by accepted statistics; expired on withdrawal |
| __Host-lm-product-session | LingoMitra | Pseudonymous optional session statistics | Optional analytics | 30 minutes, renewed by accepted statistics; expired on withdrawal |
| lingomitra@<scope>shell-*, courses-v1, public-v1; legacy lingomitra-v* | LingoMitra / browser Cache API | App shell, public documents and opened written courses | Necessary offline feature | Until update, clear-device action or browser eviction; legacy copies may persist |
| Hosting sign-in/security cookies (names unverified) | ChatGPT Sites / hosting platform | Identity and platform security | Platform-controlled | Exact names, triggers and lifetimes require platform/live-network verification |