Session timeout
The UI signs a user out after a period without activity, and again after a maximum session length however active they are. Both limits are on by default and set on the UI deployment.
| Limit | Default | What happens |
|---|---|---|
| Idle timeout | 15 minutes | A warning appears one minute before, then the user is signed out |
| Maximum session | 5 hours | The user is signed out when the time is up, whether or not they are active |
The current values appear under Configure → Settings, in the Web UI group.
Quick start
The example sets the idle timeout to 30 minutes and the maximum session to 8 hours.
-
Set the values. Add them to
enterpriseWeb.envin the values file you installed with. Every value is in milliseconds.my-values.yamlenterpriseWeb:
env:
- name: NEXTAUTH_URL
value: ""
- name: NEXT_PUBLIC_IDLE_TIMEOUT_MS
value: "1800000"
- name: NEXT_PUBLIC_MAX_SESSION_DURATION_MS
value: "28800000"enterpriseWeb.envis a list, and a list in a values file replaces the chart's list rather than adding to it. Keep theNEXTAUTH_URLentry, with the value you installed with. -
Apply them. Run the install command from Install with Helm again. The UI pods restart with the new values, which signs everyone out.
-
Check them. Open Configure → Settings and read the Web UI group.
Settings
| Variable | Meaning | Default |
|---|---|---|
NEXT_PUBLIC_IDLE_TIMEOUT_MS | Time without activity before the user is signed out | 900000 (15 min) |
NEXT_PUBLIC_IDLE_WARNING_LEAD_MS | How long before the idle timeout the warning appears | 60000 (1 min) |
NEXT_PUBLIC_MAX_SESSION_DURATION_MS | Longest a session lasts from sign-in, active or not | 18000000 (5 h) |
A value that is not a positive number falls back to its default. A warning lead longer than the idle timeout shows the warning as soon as the user goes idle.
The idle timeout cannot be turned off. To make it rarely matter, set it close to the maximum session length.
What counts as activity
Moving the mouse, clicking, typing, touching the screen, and scrolling in the UI reset the idle timer, as does returning to a UI tab. Nothing in a tab that is hidden behind another tab or window counts, and neither does a page refreshing its own data.
The warning
When the warning lead is reached, a dialog titled Session expiring soon counts down the seconds left. While it is open, moving the mouse no longer counts as activity:
- Stay signed in resets the idle timer and closes the dialog.
- Sign out now signs the user out at once.
If the countdown reaches zero, the user is signed out.
The maximum session length has no warning.
Several tabs
The UI tabs open in one browser share one session:
- Activity in any tab keeps every tab signed in, and dismisses a warning open in another tab.
- Signing out in one tab, or being signed out by either limit, signs out every tab.
- Signing in again in one tab reloads the others under the new session.
After a timeout
The user is taken straight to the sign-in page, which says why: the session expired through inactivity, or it reached the maximum duration. Signing in again starts a new session.
The limits are also enforced by the UI's server, not only in the browser. A request from a session past either limit is refused and sends the user to sign in, even if the browser was closed or asleep when the time ran out.
Restarting the UI pods signs every user out.
Scope
Both limits apply only to sign-in sessions in the UI. They do not affect:
- the REST API, the Java and Python clients, or the MCP server;
- engines connected through the Gravitino connectors or the Iceberg REST service;
- jobs that are running.
An OAuth access token keeps the lifetime your identity provider gives it, independent of these limits; see Authentication.
The server property gravitino.server.webserver.idleTimeout is a different setting: it closes idle
HTTP connections to the server after 30 seconds by default, and has nothing to do with sign-in
sessions. See Server configuration.