Skip to content
TDACorpIDENTITYSign in

Cookies and local storage

Every cookie and browser storage key the TDACorp Identity web app and identityd set, what each is for, how long it lasts and what protects it. This list was read off the code that sets each one.

Last reviewed October 15, 2026
On this page

Status

Last reviewed 15 October 2026. TDACorp Identity is pre-production. The names, lifetimes and attributes below are quoted from the source files that set them. Each cookie is host-only, so it is sent only to the identity host that set it.

Summary

QuestionAnswer
How many cookies does the identity host set?Ten. Eight are essential to signing in. The other two are preferences you set yourself, by choosing a language or an organization
Does the admin console set any?Two, both encrypted: its session cookie and a short-lived sign-in attempt cookie
Are any set by a third party?No. All are first party
Are there analytics, advertising or tracking cookies?No. None is set by any code in the identity web app, identityd or the admin console
Does the platform use localStorage, sessionStorage or IndexedDB?No. A search of the web app, admin console and UI package finds no use of any of them
Does it use document.cookie?Once: the language switcher on the sign-in pages writes its own cookie from the browser when you pick a language. Every other cookie is set by the server and is HttpOnly, so no script can read it
Is a cookie banner shown?No. The only cookies that are not essential to signing in are the language preference and the remembered organization, which you set yourself by choosing a language or switching organization. The basis is described below

Cookies set by the identity host

All ten carry the __Host- prefix. That prefix is enforced by the browser: the cookie must be Secure, must have Path=/, and must not carry a Domain attribute, so it cannot be set over plain HTTP or scoped to a parent domain. All ten are SameSite=Lax. Nine are HttpOnly. The language cookie is not, because the browser writes it when you pick a language.

NamePurposePartyDurationAttributesEssential
__Host-tdaid_sidKeeps you signed in. The value is a session secret. Only a SHA-256 digest of it is storedFirstMax-Age equal to the session's absolute lifetime, 14 days by default. The session also ends after 12 hours idlePath=/; HttpOnly; Secure; SameSite=Lax, no DomainYes
__Host-tdaid_ltxTracks a sign-in in progress. Holds only the login transaction id. A magic link or email code works only in the browser that holds itFirst10 minutes (600 seconds)Path=/; HttpOnly; Secure; SameSite=Lax, no DomainYes
__Host-device_idLets the account recognise a browser it has seen before and show you your devices. A random 32-byte value, not personal data. Only a hash is storedFirst400 daysPath=/; HttpOnly; Secure; SameSite=Lax, no DomainYes, for new-browser detection and the devices list
__Host-tdaid_rdevSet only when you start account recovery, so a recovery link opens only in the browser that asked for itFirst30 daysPath=/; HttpOnly; Secure; SameSite=Lax, no DomainYes, during recovery
__Host-tdaid_regbRegistration binding. Set on every registration request, whether or not the address already has an account, so setting it reveals nothing. A resend request reads it and does not set it. Holds a random 32-byte value. Its hash is stored beside the mailed code, so an 8-digit code typed anywhere else matches nothingFirst30 minutesPath=/; HttpOnly; Secure; SameSite=LaxYes, during registration
__Host-tdaid_regvRegistration verified link. Set once a link or code has been checked, and carries that link's secret so the passkey and password steps need no secret in a request bodyFirst15 minutes. The emailed link itself is valid for 24 hoursPath=/; HttpOnly; Secure; SameSite=LaxYes, during registration
__Host-tdaid_fedFederated sign-in or account-link state. Holds a signed payload: version, provider id, mode, transaction or session ids, expiry and random bytes. Nothing in it is secret from the browser that holds it, and it cannot be forged without the server keyFirst10 minutes (600 seconds)Path=/; HttpOnly; Secure; SameSite=LaxYes, only if you choose federated sign-in
__Host-tdaid_pk_offerRemembers that you skipped the optional passkey offer, so you are not asked again for 7 days. Holds the value 1First7 daysPath=/; HttpOnly; Secure; SameSite=Lax, no DomainYes, for the passkey offer
__Host-tdaid_orgRemembers the organization you last switched to in your account, on this browser, so your next visit opens it by default. The value is the organization's id. It is only a hint: it is re-checked against your active memberships every time and grants nothing. Only identity reads it. It is set by the server only after you successfully switch organization in your account, never on a plain sign-in and never by your browser's scriptFirst365 days by default (Max-Age 31536000). The setting account.last_org_cookie_max_age_s adjusts it, from 1 day up to a maximum of 400Path=/; HttpOnly; Secure; SameSite=Lax, no DomainNo, a convenience preference. Without it the account opens your personal workspace or your first organization
__Host-tdaid_langRemembers the language you chose with the language switcher on the sign-in pages: one of en, fr or es and nothing else. It is written by your browser, only when you pick a language. A language saved in your profile, and the ui_locales of an application that sent you here, are used before itFirst1 year (Max-Age 31536000)Path=/; Secure; SameSite=Lax, no Domain, not HttpOnlyNo, functional. Without it the pages follow your browser's language list, then English
DetailValue
Cookie lifetimeThe session's absolute expiry, never below 1 second. The browser stops sending it at that time
Server-side idle limit12 hours
Server-side absolute limit14 days
Longer sessionsA "keep me signed in" option exists in code behind a feature flag. It is not enabled in the production configuration
RevocationEvery account request looks the session up in the database. Revoking a session or deactivating an account takes effect on the next request
ClearingSigning out sends the same cookie with Max-Age=0 and the same attributes
MomentCookies set or read
Visiting a public page such as this oneNone
Starting to sign in__Host-tdaid_ltx
Completing sign in__Host-tdaid_sid and __Host-device_id set. __Host-tdaid_ltx cleared
Registering__Host-tdaid_regb, then __Host-tdaid_regv
Starting account recovery__Host-tdaid_rdev
Choosing Google or GitHub sign-in (if offered)__Host-tdaid_fed
Skipping the optional passkey offer during sign-in__Host-tdaid_pk_offer
Picking a language with the switcher on a sign-in page__Host-tdaid_lang set, by the browser
Switching organization in your account__Host-tdaid_org set
Signing out__Host-tdaid_sid and __Host-tdaid_org cleared

Cookies set by the admin console

The admin console is a separate Next.js application that signs in through identityd over OpenID Connect. It keeps its own session.

NamePurposePartyDurationAttributesEssential
__Host-tdaid_admin_sessionThe console's own session: encrypted tokens obtained from the sign-in, a few ID-token claims, and a flag showing a break-glass session. The cookie value is an encrypted tokenFirst7 days (Max-Age 604800)Path=/; HttpOnly; Secure; SameSite=Lax, no DomainYes, for operators only
tdaid_admin_login_attemptState of an administrator sign-in in progress: a one-time code verifier, state and nonce for the redirect to identityd, and where to return to. Cleared when the sign-in completes or is refusedFirst10 minutes (Max-Age 600)Path=/; HttpOnly; SameSite=Lax, Secure in production, no __Host- prefix, encrypted valueYes, for operators only

In local development over plain HTTP the session cookie is named tdaid_admin_session without the prefix and without Secure, because a browser refuses a Secure cookie there. That variant is never used in production builds.

Browser storage

StoreUsedDetail
localStorageNoNo code in the web app, admin console or UI package reads or writes it
sessionStorageNoNo use found
IndexedDBNoNo use found
Service workersNoNone registered: no use found in the code
Cache headersNot storageResponses without an explicit Cache-Control are no-store
document.cookieOnceOnly the language switcher uses it, to write __Host-tdaid_lang when you pick a language. Every other cookie is set by the server
Theme and language preferencesLanguage onlyThe theme is not stored. The language is the __Host-tdaid_lang cookie above, set only when you pick one. Your language saved in your account profile is stored on the server, not in the browser

What is not used

Not usedBasis for the statement
Analytics cookies or scriptsNo analytics or third-party script is loaded on any page served by this platform. The pages are served with a content security policy that allows only this site's own scripts and styles
Advertising or tracking cookiesNone exist in the code. There is no such feature to opt out of
Third-party cookiesNo third-party content is loaded. The pages load no third-party scripts, fonts or images
Device recognition beyond the listed cookieThe only device cookie is the random __Host-device_id value. Sessions also record a hash of the user-agent and the network address, as described in the privacy policy
A separate CSRF cookieNone. Protection is SameSite=Lax plus a same-origin check on every request that changes state

How to manage cookies

GoalHow
End your sessionSign out from the account menu. The session cookie is cleared and the session is revoked on the server
End every other sessionOpen Sessions in your account and revoke them individually or all at once
Make the account forget a browserRemove the device from the Devices list in your account. The __Host-device_id cookie in that browser then no longer matches a device, though the browser may keep the cookie until it expires
Clear cookies in your browserUse your browser's settings. Clearing the session cookie signs you out of the browser. Clearing __Host-device_id makes the next sign-in look like a new browser, which sends a new-sign-in alert email
Forget your remembered organizationClear __Host-tdaid_org in your browser settings, or switch organization again. The account then opens your personal workspace or your first organization
Forget your language choiceClear __Host-tdaid_lang in your browser settings, or pick the language again. The pages then follow your account language, an application's request, or your browser's language list
Block cookiesSign-in will not work, because the login transaction and session cannot be held. There is no cookie-free mode

What this page does not claim

Not claimedDetail
A complete picture of every TDACorp siteThis covers the identity web app, identityd and the admin console. The marketing website tdacorp.in has its own policy
Cookies set by products that sign you inA product built on this platform sets its own cookies. They are not listed here
That no cookie will ever be addedThe list is read from the code on the review date. A change in code changes the list, and this page is updated when the copy is reviewed
A legal opinion on consentThe consent basis above describes how the platform behaves. It is not legal advice
A cookie banner or preference centreNone exists. The language switcher and the organization switcher are the two preferences, and each writes its cookie only when you use it
Third-party cookies from federation providersIf Google or GitHub sign-in is ever offered, the provider's own cookies on its own domain are outside this platform's control