> For the complete documentation index, see [llms.txt](https://docs.instruqt.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.instruqt.com/tracks/manage/time-limits-and-idle-timeouts.md).

# Track time limits

## Overview

Every Instruqt track has two parameters that cause a user's session to expire: a **track time limit** and an **idle timeout**. The track time limit is *required* and restricts how long a user can interact with your track. The idle timeout is *optional* **but highly encouraged** and restrict how long a user can be away from the track (in a different window, etc.) before their session expires.

## Track time limits

You can configure a track time limit using the Instruqt web UI or CLI:

{% tabs %}
{% tab title="🌐 Web UI" %}

1. Select the track you wish to modify the time limit of.
2. In the *Settings* section, click **Edit**.
3. In the **Time limit** field, enter the desired value in minutes.
4. Click **Save**.
   {% endtab %}

{% tab title="💻 Instruqt CLI" %}

1. If you have not already done so, pull the track you wish to modify the time limit of:

   ```
   instruqt track pull <track-slug>
   ```
2. Open the `track.yml` file and add a `timelimit` parameter.

   ```yaml
   timelimit: <value-in-seconds>
   ```

   As an example, the file might look like the following:

   ```yaml
   slug: example-track
   id: xnlauwy2zewf
   title: Example Track
   ...
   timelimit: 3600
   ```
3. From within the track directory, push the update to Instruqt:

   ```yaml
   instruqt track push 
   ```

{% endtab %}
{% endtabs %}

### Extend the time limit

You can allow users to increase their time limit themselves. When enabled, a prompt will appear when a track reaches its limit, allowing users to add more minutes. The maximum amount of extra time that users can add is customized for each track.

You can allow users to extend the time limit using the Instruqt web UI or CLI:

{% tabs %}
{% tab title="🌐 Web UI" %}

1. Select the track you wish to allow users to extend the time limit for.
2. In the *Settings* section, click **Edit**.
3. Click **Additional settings**.
4. Toggle **Allow users to extend their session** on, and input the desired value in minutes.
5. Click **Save**.
   {% endtab %}

{% tab title="💻 Instruqt CLI" %}

1. If you have not already done so, pull the track you wish to modify the extend ttl of:

   ```
   instruqt track pull <track-slug>
   ```
2. Open the `track.yml` file and add an `extend_ttl` parameter.

   ```yaml
   lab_config:
     extend_ttl: <value-in-seconds>
   ```

   As an example, the file might look like the following:

   ```yaml
   slug: example-track
   id: xnlauwy2zewf
   title: Example Track
   ...
   timelimit: 3600
   lab_config:
     extend_ttl: 600
   ```
3. From within the track directory, push the update to Instruqt:

   ```yaml
   instruqt track push
   ```

{% endtab %}
{% endtabs %}

## Idle timeouts

There are two ways to configure a track's idle timeout:

* Within the **Track details** page.
* Using the Instruqt CLI and configuring the `idle_timeout` parameter.

{% hint style="danger" %}
Websites or applications opened in external tabs or browser windows (outside of the Instruqt lab UI) are **not considered by the idle timer**. This means that activity in those external tabs will not reset the timer, and the track may time out even if the user is active there.
{% endhint %}

### Configure idle timeouts

You can configure a track's idle timeout using the Instruqt web UI or CLI:

{% tabs %}
{% tab title="🌐 Web UI" %}

1. Select the track you wish to modify the idle timeout of.
2. In the *Settings* section, click **Edit**.
3. Click **Additional settings**.
4. Toggle **Time out idle users** on, and input the desired value in minutes.
5. Click **Save**.
   {% endtab %}

{% tab title="💻 Instruqt CLI" %}

1. If you have not already done so, pull the track you wish to modify the idle timeout of:

   ```
   instruqt track pull <track-slug>
   ```
2. Open the `track.yml` file and add a `idle_timeout` parameter.

   ```yaml
   idle_timeout: <value-in-seconds>
   ```

   As an example, the file might look like the following:

   ```yaml
   slug: example-track
   id: xnlauwy2zewf
   title: Example Track
   ...
   timelimit: 3600
   idle_timeout: 300
   ```
3. From within the track directory, push the update to Instruqt:

   ```yaml
   instruqt track push 
   ```

{% endtab %}
{% endtabs %}
