Legal
Cookie policy
Last updated: July 10, 2026
In one sentence
We use cookies + localStorage for login state (essential), product analytics, and browser error diagnostics (optional — off by default until you accept). No advertising cookies, no cross-site tracking.
This page explains the cookies and local-storage keys Hatcher (HHX Technology SRL) uses, why, and how to control them. It supplements our Privacy Policy.
1. What is a cookie?
A cookie is a small text file stored in your browser that lets a site remember something between visits. Modern sites also use localStorage and sessionStorage for the same purpose. We use both interchangeably in this policy — the legal treatment is identical in the EU.
2. Categories we use
Strictly necessary (always on)
Without these the Service can't authenticate you or remember your theme / wallet choice. They don't require consent under GDPR + ePrivacy Directive.
| Key | Type | Purpose | Lifetime |
|---|---|---|---|
| hatcher_jwt | Secure HttpOnly cookie | Authentication session | Up to 7 days |
| hatcher_refresh | Secure HttpOnly cookie | Rotate and renew the session | 30 days |
| hatcher-cookie-consent | localStorage | Remember your consent choice | 6 months |
| hatcher_analytics_consent | First-party cookie | Enforce analytics consent in server middleware | 6 months |
| theme | localStorage | Dark / light theme | Persistent |
| walletName | localStorage | Remember selected Solana wallet | Until disconnect |
| __cf_bm | Cookie (Cloudflare) | Bot protection | 30 min |
Analytics (optional)
Off by default. Only set after you click “Accept” on our cookie banner. Used to understand which features are useful in aggregate and diagnose browser errors.
| Key / Provider | Type | Purpose | Lifetime |
|---|---|---|---|
| ph_* | PostHog (localStorage) | Anonymized page views, feature usage | 1 year |
| sentryReplaySession | Sentry (sessionStorage) | Error-replay capture on opt-in | Session |
Functional (set as you use the app)
Written only when you interact with a specific feature. Strictly necessary for that feature, still part of the normal use of the Service.
| Key | Purpose | Lifetime |
|---|---|---|
| recent_agents | Remember your last-opened agents for quick-switcher | Persistent |
| tour_seen | Dismiss onboarding tour after first time | Persistent |
| dashboard:* | Cache dashboard shape for fast reload | 24h |
| hatcher-terminal-sessions:* | Remember terminal tab names; terminal credential values are memory-only and cleared on logout | Persistent |
| hatcher:public-chat:* | Keep the selected public-chat session and recent local message history | Until chat reset or site data is cleared |
| hatcher:agent:*:draft | Recover an unsent agent-chat draft | Until sent or cleared |
| hatcher.pendingCryptoSettlements.v1 | Retry finalization after an on-chain payment was submitted | Until settled or manually cleared |
3. How to control cookies
- In-app: the cookie banner on your first visit lets you accept or reject analytics. Change your mind later from Settings → Privacy.
- Browser settings: every major browser lets you view, block, or delete cookies per-site. Do-Not-Track is respected — if your browser sends it, we skip the analytics banner and default to “reject”.
- localStorage: clearing site data in your browser removes all non-cookie keys. You'll be logged out.
Disabling strictly-necessary storage will break login and can't be opted out of — only the analytics category is optional.
4. Third-party cookies
When you interact with a Stripe checkout or authorize a Solana wallet (Phantom, Solflare), those services may set their own cookies on their domains. We don't control those; consult Stripe and your wallet provider's policies.
5. Changes
We update this page whenever we change which cookies we set. Bigger changes (new analytics provider, new category) re-trigger the consent banner so you can confirm your preferences.
6. Contact
Questions? Email [email protected]. Related pages: Privacy Policy · Terms of Service · Impressum.