> For the complete documentation index, see [llms.txt](https://docs.balkan.id/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.balkan.id/lifecycle-management/incomplete-request-expiration.md).

# Incomplete Request Expiration

Access requests that sit pending for too long can become a compliance and security risk — the longer a request waits for action, the longer the requester or target user is left in limbo, and the harder it is to reason about what's outstanding. **Incomplete Request Expiration** lets you set a tenant-wide limit on how long an access request can remain incomplete before it is automatically denied.

{% hint style="info" %}
This capability is enabled per tenant. If you don't see **Incomplete Request Expiration** in your access request preferences, reach out to your BalkanID contact to have it turned on.
{% endhint %}

### What it does

When enabled, BalkanID tracks every access request that is still **pending** or **awaiting consent**. If a request stays in one of these states past the number of days you configure, BalkanID automatically denies it — no reviewer action required.

{% hint style="info" %}
This applies tenant-wide, across all access request types. It does not affect requests that have already been approved, denied, or otherwise completed.
{% endhint %}

### How it works

* The expiration threshold is configured in **days** from the request's creation date.
* Requests that are still **Pending** or **Awaiting Consent** once that many days have elapsed are automatically denied.
* The automatic denial is recorded in the request's **Activity Log**, attributed to **System**, with the message:

  > Automatically rejected: request incomplete past the configured expiry threshold
* Setting the threshold to **0** disables automatic expiration — requests will remain pending indefinitely until a reviewer acts on them.

{% hint style="warning" %}
Automatic denial is final. Once a request is auto-denied, the requester must submit a new access request if access is still needed.
{% endhint %}

#### Seeing the countdown before a request expires

Once Incomplete Request Expiration is configured, a pending request's deadline is surfaced directly where reviewers act on it, if [access request context](/lifecycle-management/peer-access-context.md) is enabled for your tenant:

* In **BalkanID for Slack**, the reviewer's card shows a line like *"⏳ Auto-denies in 2 days if undecided — Sep 10, 2026, 2:00 PM CDT"*. Selecting **Refresh** on the card recalculates this.
* In the web app, the request detail page shows a **Decision due by** field, with a warning indicator once the deadline is within 24 hours.

### Configuring the expiration threshold

1. Go to **Access Requests**.
2. Click the **settings (gear)** icon in the top-right corner to open **Access Request Preferences**.
3. Under **Security & Approval Controls**, find **Incomplete Request Expiration**.
4. Enter the number of **days** before pending requests should auto-expire and get denied. Set this to **0** to disable the feature.
5. Click **Save Preferences**.

<div data-with-frame="true"><figure><img src="https://2975852473-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbVGYwk8aSk5yI1GDPEW9%2Fuploads%2FFQzdVvfMhznONCuW6wjU%2FScreenshot%202026-08-19%20at%203.58.51%E2%80%AFPM.png?alt=media&amp;token=6e55f87d-eaad-44fb-a2e5-c2aacb8b1be9" alt=""><figcaption></figcaption></figure></div>

### Viewing an auto-denied request

Once a request has been automatically denied, you can confirm this from its **Activity Log**:

1. Open the access request from the **Access Requests** list.
2. Click the **activity log (under column 'Details')** icon next in the access table review.
3. Look for an entry attributed to **System** with the action **Access request denied** and the message **Automatically rejected: request incomplete past the configured expiry threshold**.

<div data-with-frame="true"><figure><img src="https://2975852473-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbVGYwk8aSk5yI1GDPEW9%2Fuploads%2FUl4LvzECgiWntLOieKeE%2FScreenshot%202026-08-19%20at%204.00.26%E2%80%AFPM.png?alt=media&amp;token=db0fe2c7-4c42-4a0d-80b6-706e4c51d725" alt=""><figcaption></figcaption></figure></div>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

```
GET https://docs.balkan.id/lifecycle-management/incomplete-request-expiration.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
