# 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.&#x20;
* 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 %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.instruqt.com/tracks/manage/time-limits-and-idle-timeouts.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
